diff --git a/include/events/VTEntityData.inc b/include/events/VTEntityData.inc index d53c8f31a41643bc4a897f1fd780a592ed72aedc..7d2ac0b0c72186a2dd221ff5e6bcf412e4aad80b 100644 --- a/include/events/VTEntityData.inc +++ b/include/events/VTEntityData.inc @@ -112,7 +112,7 @@ class VTEntityData{ * @return The entity id. */ function getId(){ - return property_exists($this->focus, "id") ? $this->focus->id : null; + return is_object($this->focus) && property_exists($this->focus, "id") ? $this->focus->id : null; } /** diff --git a/layouts/v7/modules/CustomView/EditView.tpl b/layouts/v7/modules/CustomView/EditView.tpl index 8f96cd6e4a47895925a27d8c24c95a3a95e0d356..1dbdf7a4064cbded7a7d59652ad33ddf9c6f0604 100644 --- a/layouts/v7/modules/CustomView/EditView.tpl +++ b/layouts/v7/modules/CustomView/EditView.tpl @@ -84,6 +84,7 @@ </optgroup> {/foreach} {*Required to include event fields for columns in calendar module advanced filter*} + {if isset($EVENT_RECORD_STRUCTURE) && is_array($EVENT_RECORD_STRUCTURE)} {foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$EVENT_RECORD_STRUCTURE} <optgroup label='{vtranslate($BLOCK_LABEL, 'Events')}'> {foreach key=FIELD_NAME item=FIELD_MODEL from=$BLOCK_FIELDS} @@ -104,6 +105,7 @@ {/foreach} </optgroup> {/foreach} + {/if} </select> <input type="hidden" name="columnslist" value='{Vtiger_Functions::jsonEncode($SELECTED_FIELDS)}' /> <input id="mandatoryFieldsList" type="hidden" value='{Vtiger_Util_Helper::toSafeHTML(ZEND_JSON::encode($MANDATORY_FIELDS))}' /> diff --git a/layouts/v7/modules/Vtiger/AdvanceFilterCondition.tpl b/layouts/v7/modules/Vtiger/AdvanceFilterCondition.tpl index 9d56077f1b84c20325ad47de70c24bc8884abc38..c47c9113cf6becce885b0ea5569b39286d284b7f 100644 --- a/layouts/v7/modules/Vtiger/AdvanceFilterCondition.tpl +++ b/layouts/v7/modules/Vtiger/AdvanceFilterCondition.tpl @@ -26,13 +26,15 @@ {assign var=columnNameApi value=getCustomViewColumnName} {/if} <option value="{$FIELD_MODEL->$columnNameApi()}" data-fieldtype="{$FIELD_MODEL->getFieldType()}" data-field-name="{$FIELD_NAME}" - {if decode_html($FIELD_MODEL->$columnNameApi()) eq decode_html($CONDITION_INFO['columnname'])} + {if isset($CONDITION_INFO['columnname']) && decode_html($FIELD_MODEL->$columnNameApi()) eq decode_html($CONDITION_INFO['columnname'])} {assign var=FIELD_TYPE value=$FIELD_MODEL->getFieldType()} {assign var=SELECTED_FIELD_MODEL value=$FIELD_MODEL} {if $FIELD_MODEL->getFieldDataType() == 'reference' || $FIELD_MODEL->getFieldDataType() == 'multireference'} {$FIELD_TYPE='V'} {/if} + {if isset($CONDITION_INFO['value'])} {$FIELD_INFO['value'] = decode_html($CONDITION_INFO['value'])} + {/if} selected="selected" {/if} {if ($MODULE_MODEL->get('name') eq 'Calendar' || $MODULE_MODEL->get('name') eq 'Events') && ($FIELD_NAME eq 'recurringtype')} @@ -67,6 +69,7 @@ </optgroup> {/foreach} {* Required to display event fields also while adding conditions *} + {if isset($EVENT_RECORD_STRUCTURE) && is_array($EVENT_RECORD_STRUCTURE)} {foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$EVENT_RECORD_STRUCTURE} <optgroup label='{vtranslate($BLOCK_LABEL, 'Events')}'> {foreach key=FIELD_NAME item=FIELD_MODEL from=$BLOCK_FIELDS} @@ -114,27 +117,30 @@ {/foreach} </optgroup> {/foreach} + {/if} </select> </div> <div class="conditionComparator col-lg-3 col-md-3 col-sm-3"> <select class="{if empty($NOCHOSEN)}select2{/if} col-lg-12" name="comparator"> <option value="none">{vtranslate('LBL_NONE',$MODULE)}</option> - {assign var=ADVANCE_FILTER_OPTIONS value=$ADVANCED_FILTER_OPTIONS_BY_TYPE[$FIELD_TYPE]} - {if $FIELD_TYPE eq 'D' || $FIELD_TYPE eq 'DT'} - {assign var=DATE_FILTER_CONDITIONS value=array_keys($DATE_FILTERS)} - {assign var=ADVANCE_FILTER_OPTIONS value=array_merge($ADVANCE_FILTER_OPTIONS,$DATE_FILTER_CONDITIONS)} - {/if} - {foreach item=ADVANCE_FILTER_OPTION from=$ADVANCE_FILTER_OPTIONS} - <option value="{$ADVANCE_FILTER_OPTION}" - {if $ADVANCE_FILTER_OPTION eq $CONDITION_INFO['comparator']} - selected + {if isset($FIELD_TYPE) && isset($ADVANCED_FILTER_OPTIONS_BY_TYPE[$FIELD_TYPE])} + {assign var=ADVANCE_FILTER_OPTIONS value=$ADVANCED_FILTER_OPTIONS_BY_TYPE[$FIELD_TYPE]} + {if $FIELD_TYPE eq 'D' || $FIELD_TYPE eq 'DT'} + {assign var=DATE_FILTER_CONDITIONS value=array_keys($DATE_FILTERS)} + {assign var=ADVANCE_FILTER_OPTIONS value=array_merge($ADVANCE_FILTER_OPTIONS,$DATE_FILTER_CONDITIONS)} {/if} - >{vtranslate($ADVANCED_FILTER_OPTIONS[$ADVANCE_FILTER_OPTION])}</option> - {/foreach} + {foreach item=ADVANCE_FILTER_OPTION from=$ADVANCE_FILTER_OPTIONS} + <option value="{$ADVANCE_FILTER_OPTION}" + {if $ADVANCE_FILTER_OPTION eq $CONDITION_INFO['comparator']} + selected + {/if} + >{vtranslate($ADVANCED_FILTER_OPTIONS[$ADVANCE_FILTER_OPTION])}</option> + {/foreach} + {/if} </select> </div> <div class="col-lg-4 col-md-4 col-sm-4 fieldUiHolder"> - <input name="{if $SELECTED_FIELD_MODEL}{$SELECTED_FIELD_MODEL->get('name')}{/if}" data-value="value" class=" inputElement col-lg-12" type="text" value="{$CONDITION_INFO['value']|escape}" /> + <input name="{if isset($SELECTED_FIELD_MODEL)}{$SELECTED_FIELD_MODEL->get('name')}{/if}" data-value="value" class=" inputElement col-lg-12" type="text" value="{if isset($CONDITION_INFO['value'])}{$CONDITION_INFO['value']|escape}{/if}" /> </div> <span class="hide"> <!-- TODO : see if you need to respect CONDITION_INFO condition or / and --> diff --git a/layouts/v7/modules/Vtiger/Header.tpl b/layouts/v7/modules/Vtiger/Header.tpl index cd72c18daa43c2b5a01c4e5733f99f1780c9e42b..070cfbf2b3afabd705f3499952998cc03cb77d13 100644 --- a/layouts/v7/modules/Vtiger/Header.tpl +++ b/layouts/v7/modules/Vtiger/Header.tpl @@ -31,8 +31,9 @@ <link type='text/css' rel='stylesheet' href='{vresource_url("layouts/v7/lib/jquery/daterangepicker/daterangepicker.css")}'> <input type="hidden" id="inventoryModules" value={ZEND_JSON::encode($INVENTORY_MODULES)}> - + {if isset($SELECTED_MENU_CATEGORY)} {assign var=V7_THEME_PATH value=Vtiger_Theme::getv7AppStylePath($SELECTED_MENU_CATEGORY)} + {/if} {if strpos($V7_THEME_PATH,".less")!== false} <link type="text/css" rel="stylesheet/less" href="{vresource_url($V7_THEME_PATH)}" media="screen" /> {else} @@ -53,7 +54,7 @@ <script src="{vresource_url('layouts/v7/lib/jquery/jquery.min.js')}"></script> <script src="{vresource_url('layouts/v7/lib/jquery/jquery-migrate-1.4.1.js')}"></script> <script type="text/javascript"> - var _META = { 'module': "{$MODULE}", view: "{$VIEW}", 'parent': "{$PARENT_MODULE}", 'notifier':"{$NOTIFIER_URL}", 'app':"{$SELECTED_MENU_CATEGORY}" }; + var _META = { 'module': "{$MODULE}", view: "{$VIEW}", 'parent': "{$PARENT_MODULE}", 'notifier':"{$NOTIFIER_URL}", 'app':"{if isset($SELECTED_MENU_CATEGORY)} {$SELECTED_MENU_CATEGORY}{/if}" }; {if $EXTENSION_MODULE} var _EXTENSIONMETA = { 'module': "{$EXTENSION_MODULE}", view: "{$EXTENSION_VIEW}"}; {/if} diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php index d582d781b3be99c8989e6101a610aebbfefa5603..eca43b6b0933e391b8cbd13dc703bf900e7f96dc 100644 --- a/modules/CustomView/CustomView.php +++ b/modules/CustomView/CustomView.php @@ -1022,6 +1022,9 @@ class CustomView extends CRMEntity { } $advfilterval = implode(",", $val); } + if(!is_array($criteria)) { + $criteria = []; + } $criteria['value'] = $advfilterval; $criteria['column_condition'] = $relcriteriarow["column_condition"]; diff --git a/modules/CustomView/models/Record.php b/modules/CustomView/models/Record.php index d2999f367cbb68f4299648a2c335de923174da95..b1fc12ef9b4fe545b335f99d2ad8d93a5e56a3aa 100644 --- a/modules/CustomView/models/Record.php +++ b/modules/CustomView/models/Record.php @@ -356,7 +356,7 @@ class CustomView_Record_Model extends Vtiger_Base_Model { if(empty($groupInfo)) continue; $groupColumns = $groupInfo['columns']; - $groupCondition = $groupInfo['condition']; + $groupCondition = isset($groupInfo['condition']); foreach($groupColumns as $columnIndex => $columnCondition) { if(empty($columnCondition)) continue; @@ -446,7 +446,7 @@ class CustomView_Record_Model extends Vtiger_Base_Model { $advFilterList[$groupIndex]["conditionexpression"] = $groupConditionExpression; } - $groupConditionExpression = $advFilterList[$groupIndex]["conditionexpression"]; + $groupConditionExpression = isset($advFilterList[$groupIndex]["conditionexpression"]); if(empty($groupConditionExpression)) continue; // Case when the group doesn't have any column criteria $advGroupSql = 'INSERT INTO vtiger_cvadvfilter_grouping(groupid,cvid,group_condition,condition_expression) VALUES (?,?,?,?)'; diff --git a/modules/Vtiger/views/List.php b/modules/Vtiger/views/List.php index 09045baa05965c32548680ee4ce40c2e626067fd..324d7daa5c53919481285db71058b7d1618d6b42 100644 --- a/modules/Vtiger/views/List.php +++ b/modules/Vtiger/views/List.php @@ -57,7 +57,7 @@ class Vtiger_List_View extends Vtiger_Index_View { $this->listViewModel = Vtiger_ListView_Model::getInstance($moduleName, $cvId, $listHeaders); $orderParams = $this->listViewModel->getSortParamsSession($listViewSessionKey); - if(empty($listHeaders) && is_array($orderParams)) { + if(empty($listHeaders) && is_array($orderParams) && array_key_exists('list_headers', $orderParams)) { $listHeaders = $orderParams['list_headers']; } @@ -221,7 +221,7 @@ class Vtiger_List_View extends Vtiger_Index_View { $orderBy = ''; $sortOrder = ''; } - if(empty($listHeaders) && is_array($orderParams)) { + if(empty($listHeaders) && is_array($orderParams) && array_key_exists('list_headers', $orderParams)) { $listHeaders = $orderParams['list_headers']; } @@ -232,21 +232,21 @@ class Vtiger_List_View extends Vtiger_Index_View { if(empty($orderBy) && empty($searchValue) && empty($pageNumber)) { if($orderParams) { - $pageNumber = $orderParams['page']; - $orderBy = $orderParams['orderby']; - $sortOrder = $orderParams['sortorder']; - $searchKey = $orderParams['search_key']; - $searchValue = $orderParams['search_value']; - $operator = $orderParams['operator']; + $pageNumber = $orderParams['page'] ?? ""; + $orderBy = $orderParams['orderby'] ?? ""; + $sortOrder = $orderParams['sortorder'] ?? ""; + $searchKey = $orderParams['search_key'] ?? ""; + $searchValue = $orderParams['search_value'] ?? ""; + $operator = $orderParams['operator'] ?? ""; if(empty($tagParams)){ - $tagParams = $orderParams['tag_params']; + $tagParams = $orderParams['tag_params'] ?? ""; } if(empty($searchParams)) { - $searchParams = $orderParams['search_params']; + $searchParams = $orderParams['search_params'] ?? ""; } if(empty($starFilterMode)) { - $starFilterMode = $orderParams['star_filter_mode']; + $starFilterMode = $orderParams['star_filter_mode'] ?? ""; } } } else if($request->get('nolistcache') != 1) { diff --git a/modules/com_vtiger_workflow/tasks/VTUpdateFieldsTask.inc b/modules/com_vtiger_workflow/tasks/VTUpdateFieldsTask.inc index ca2acd6f96a63169d2b31967bab1a197cd6721a7..d873effa0ec7ee856b6805e85307d6b25773d133 100644 --- a/modules/com_vtiger_workflow/tasks/VTUpdateFieldsTask.inc +++ b/modules/com_vtiger_workflow/tasks/VTUpdateFieldsTask.inc @@ -10,6 +10,7 @@ require_once('modules/com_vtiger_workflow/VTEntityCache.inc'); require_once('modules/com_vtiger_workflow/VTWorkflowUtils.php'); +#[\AllowDynamicProperties] class VTUpdateFieldsTask extends VTTask { public $executeImmediately = true; diff --git a/pkg/vtiger/modules/Projects/Project/modules/Project/Project.php b/pkg/vtiger/modules/Projects/Project/modules/Project/Project.php index cc9b421278824dae39a9b66cd7079c15d5a99614..1ffe087157e17e332de38696f8f1d72fd82bcfe8 100644 --- a/pkg/vtiger/modules/Projects/Project/modules/Project/Project.php +++ b/pkg/vtiger/modules/Projects/Project/modules/Project/Project.php @@ -637,6 +637,7 @@ class Project extends CRMEntity { } function get_emails($recordId, $currentTabId, $relTabId, $actions=false) { + $button = ''; global $currentModule,$single_pane_view; $relModuleName = vtlib_getModuleNameById($relTabId); $singularRelModuleName = vtlib_tosingular($relModuleName); @@ -693,6 +694,7 @@ class Project extends CRMEntity { * @return <Array> - $projectTasks */ public function getProjectTasks($recordId) { + $projectTasks = array(); $db = PearDatabase::getInstance(); $sql = "SELECT projecttaskid FROM vtiger_projecttask INNER JOIN vtiger_crmentity ON vtiger_projecttask.projecttaskid = vtiger_crmentity.crmid diff --git a/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/models/Module.php b/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/models/Module.php index b98677be541b6c67911814ba52cae8817f32833a..f9e84feca2ce3d369d25217868c6ef0196cce800 100644 --- a/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/models/Module.php +++ b/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/models/Module.php @@ -77,7 +77,7 @@ class ProjectTask_Module_Model extends Vtiger_Module_Model { } } //ProjectTask Progress and Status should show in Projects summary view - if(!$relatedListFields['projecttaskstatus']) { + if (!isset($relatedListFields['projecttaskstatus']) || !$relatedListFields['projecttaskstatus']) { $fieldModel = Vtiger_Field_Model::getInstance('projecttaskstatus', $this); if($fieldModel && $fieldModel->isViewableInDetailView()) { $relatedListFields['projecttaskstatus'] = 'projecttaskstatus';