diff --git a/module/pivot/model.php b/module/pivot/model.php index 42865f2ec6..51ae2b26b8 100644 --- a/module/pivot/model.php +++ b/module/pivot/model.php @@ -212,85 +212,94 @@ class pivotModel extends model */ public function processFieldSettings($pivot) { - $this->loadModel('chart'); - $this->loadModel('dataview'); + if(isset($pivot->fieldSettings)) + { + $fieldSettings = $pivot->fieldSettings; + } + else + { + $fieldSettings = (!empty($pivot->fields) and $pivot->fields != 'null') ? json_decode($pivot->fields) : array(); + } + if(empty($fieldSettings)) return $pivot; - $sql = isset($pivot->sql) ? $pivot->sql : ''; - $filters = isset($pivot->filters) ? $pivot->filters : array(); - $recPerPage = 20; - $pageID = 1; + $this->loadModel('chart'); + $this->loadModel('dataview'); - if(!empty($filters)) - { - foreach($filters as $index => $filter) - { - if(empty($filter['default'])) continue; + $sql = isset($pivot->sql) ? $pivot->sql : ''; + $filters = isset($pivot->filters) ? (is_array($pivot->filters) ? $pivot->filters : json_decode($pivot->filters, true)) : array(); + $recPerPage = 20; + $pageID = 1; - $filters[$index]['default'] = $this->processDateVar($filter['default']); - } - } - $querySQL = $this->chart->parseSqlVars($sql, $filters); + if(!empty($filters)) + { + foreach($filters as $index => $filter) + { + if(empty($filter['default'])) continue; - $columns = $this->dataview->getColumns($querySQL); - $columnFields = array(); - foreach($columns as $column => $type) $columnFields[$column] = $column; + $filters[$index]['default'] = $this->processDateVar($filter['default']); + } + } + $querySQL = $this->chart->parseSqlVars($sql, $filters); - $tableAndFields = $this->chart->getTables($querySQL); - $tables = $tableAndFields['tables']; - $fields = $tableAndFields['fields']; - $querySQL = $tableAndFields['sql']; + $columns = $this->dataview->getColumns($querySQL); + $columnFields = array(); + foreach($columns as $column => $type) $columnFields[$column] = $column; - $moduleNames = array(); - if($tables) $moduleNames = $this->dataview->getModuleNames($tables); + $tableAndFields = $this->chart->getTables($querySQL); + $tables = $tableAndFields['tables']; + $fields = $tableAndFields['fields']; + $querySQL = $tableAndFields['sql']; - list($fieldPairs, $relatedObject) = $this->dataview->mergeFields($columnFields, $fields, $moduleNames); + $moduleNames = array(); + if($tables) $moduleNames = $this->dataview->getModuleNames($tables); - /* Use fieldPairs, columns, relatedObject, objectFields refresh pivot fieldSettings .*/ + list($fieldPairs, $relatedObject) = $this->dataview->mergeFields($columnFields, $fields, $moduleNames); - $fieldSettings = $pivot->fieldSettings; - $objectFields = array(); - foreach($this->lang->dataview->objects as $object => $objectName) $objectFields[$object] = $this->dataview->getTypeOptions($object); + /* Use fieldPairs, columns, relatedObject, objectFields refresh pivot fieldSettings .*/ - $fieldSettingsNew = new stdclass(); + $objectFields = array(); + foreach($this->lang->dataview->objects as $object => $objectName) $objectFields[$object] = $this->dataview->getTypeOptions($object); - foreach($fieldPairs as $index => $field) - { - $defaultType = $columns->$index; - $defaultObject = $relatedObject[$index]; + $fieldSettingsNew = new stdclass(); - if(!empty($objectFields) and isset($objectFields[$defaultObject]) and isset($objectFields[$defaultObject][$index])) $defaultType = $objectFields[$defaultObject][$index]['type'] == 'object' ? 'string' : $objectFields[$defaultObject][$index]['type']; + foreach($fieldPairs as $index => $field) + { + $defaultType = $columns->$index; + $defaultObject = $relatedObject[$index]; - if(!isset($fieldSettings->$index)) - { - $fieldItem = new stdclass(); - $fieldItem->name = $field; - $fieldItem->object = $defaultObject; - $fieldItem->field = $index; - $fieldItem->type = $defaultType; + if(!empty($objectFields) and isset($objectFields[$defaultObject]) and isset($objectFields[$defaultObject][$index])) $defaultType = $objectFields[$defaultObject][$index]['type'] == 'object' ? 'string' : $objectFields[$defaultObject][$index]['type']; - $fieldSettingsNew[$index] = $fieldItem; - } - else - { - if(!isset($fieldSettings->$index->object) or strlen($fieldSettings->$index->object) == 0) $fieldSettings->$index->object = $defaultObject; + if(!isset($fieldSettings->$index)) + { + $fieldItem = new stdclass(); + $fieldItem->name = $field; + $fieldItem->object = $defaultObject; + $fieldItem->field = $index; + $fieldItem->type = $defaultType; - if(!isset($fieldSettings->$index->field) or strlen($fieldSettings->$index->field) == 0) - { - $fieldSettings->$index->field = $index; - $fieldSettings->$index->object = $defaultObject; - $fieldSettings->$index->type = 'string'; - } + $fieldSettingsNew[$index] = $fieldItem; + } + else + { + if(!isset($fieldSettings->$index->object) or strlen($fieldSettings->$index->object) == 0) $fieldSettings->$index->object = $defaultObject; - $object = $fieldSettings->$index->object; - $type = $fieldSettings->$index->type; - if($object == $defaultObject && $type != $defaultType) $fieldSettings->$index->type = $defaultType; + if(!isset($fieldSettings->$index->field) or strlen($fieldSettings->$index->field) == 0) + { + $fieldSettings->$index->field = $index; + $fieldSettings->$index->object = $defaultObject; + $fieldSettings->$index->type = 'string'; + } - $fieldSettingsNew->$index = $fieldSettings->$index; - } - } - $pivot->fieldSettings = $fieldSettingsNew; + $object = $fieldSettings->$index->object; + $type = $fieldSettings->$index->type; + if($object == $defaultObject && $type != $defaultType) $fieldSettings->$index->type = $defaultType; - return $pivot; + $fieldSettingsNew->$index = $fieldSettings->$index; + } + } + $pivot->fieldSettings = $fieldSettingsNew; + + return $pivot; } /** diff --git a/module/screen/model.php b/module/screen/model.php index 2696c636cc..c04843823d 100644 --- a/module/screen/model.php +++ b/module/screen/model.php @@ -361,7 +361,7 @@ class screenModel extends model foreach($yStats as $index => $dataList) { $field = zget($fields, $metrics[$index]); - $fieldName = $field->name; + $fieldName = $field->name; if(isset($langs[$field->field]) and !empty($langs[$field->field][$clientLang])) $fieldName = $langs[$field->field][$clientLang]; $field = $fieldName . '(' . zget($this->lang->chart->aggList, $aggs[$index]) . ')'; $dimensions[] = $field; @@ -514,7 +514,7 @@ class screenModel extends model foreach($yStats as $index => $dataList) { $field = zget($fields, $metrics[$index]); - $fieldName = $field->name; + $fieldName = $field->name; if(isset($langs[$field->field]) and !empty($langs[$field->field][$clientLang])) $fieldName = $langs[$field->field][$clientLang]; $field = $fieldName . '(' . zget($this->lang->chart->aggList, $aggs[$index]) . ')';