function populate() { parent::populate(); $db = Zend_Registry::get('dbAdapter'); $repSelect = $db->select()->from('reportQueries')->joinUsing('reportsToQueries', "reportQueryId")->where('reportsToQueries.reportId =' . (int) $this->id); foreach ($db->query($repSelect)->fetchAll() as $row) { $rq = new ReportQuery(); $rq->populateWithArray($row); $this->reportQueries[] = $rq; } $repSelect = $db->select()->from('reportTemplates')->joinUsing('reportsToTemplates', "reportTemplateId")->where('reportsToTemplates.reportId =' . (int) $this->id); foreach ($db->query($repSelect)->fetchAll() as $row) { $rt = new ReportTemplate(); $rt->populateWithArray($row); $this->reportTemplates[] = $rt; } }
private function addReport($options, $connection) { $report = new Report(); $report->setDescription(self::generateDescription()); $report->setTitle(implode(', ', array_keys($options['queries']))); $report->save(); foreach ($options['queries'] as $key => $value) { $query = new Query(); $query->setQuery($key); $query->save(); $report_query = new ReportQuery(); $report_query->setQuery($query); $report_query->setTitle($key); $report_query->setReport($report); $report_query->save(); $date_start = strtotime($options['start_date']); $date_end = strtotime($options['end_date']); $start = $value['rand_start']; while ($date_start < $date_end) { if (rand(0, 100) > $value['rand']) { $query_result = new QueryResultBulk(); $query_result->setQuery($query); $start += rand($value['rand_min'], $value['rand_max']) * $value['rand_diff']; $query_result->setResultSize($start); $query_result->setCreatedAt($date_start); $query_result->save(); } $date_start = strtotime(date('Y-m-d', $date_start) . ' +1 days'); } $sql = "DELETE FROM %s where date(%s) = '%s' and %s = %s"; $sql = sprintf($sql, QueryResultPeer::TABLE_NAME, QueryResultPeer::RESULT_DATE, date('Y-m-d'), QueryResultPeer::QUERY_ID, $query->getId()); $statement = $connection->prepareStatement($sql); $statement->executeQuery(); } $tags = self::generateTags(); foreach ($tags as $tag) { $tag->setReport($report); $tag->save(); } }
public function getReportAction() { $baseId = (int) $this->_getParam('baseId'); $data = array('filters' => array(), 'views' => array()); $reportBase = new ReportBase(); $reportBase->reportBaseId = $baseId; $reportBase->populate(); foreach ($reportBase->reportFilters as $reportFilter) { $filter = array(); $filter['id'] = $reportFilter->id; $filter['name'] = $reportFilter->name; $filter['defaultValue'] = $reportFilter->defaultValue; $filter['type'] = $reportFilter->type; $filter['options'] = $reportFilter->options; if ($reportFilter->type == ReportBase::FILTER_TYPE_ENUM) { $enumerationClosure = new EnumerationClosure(); $filter['enums'] = array(); $paths = $enumerationClosure->generatePaths($reportFilter->enumName['id']); foreach ($paths as $id => $name) { $filter['enums'][] = array('id' => $id, 'name' => $name); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_QUERY) { $reportQuery = new ReportQuery(); $reportQuery->reportBaseId = (int) $reportBase->reportBaseId; $reportQueryIterator = $reportQuery->getIteratorByBaseId(null, ReportQuery::TYPE_SQL); $filter['queries'] = array(); foreach ($reportQueryIterator as $query) { $filter['queries'][] = array('id' => $query->reportQueryId, 'name' => $query->displayName); } } } $data['filters'][] = $filter; } $reportView = new ReportView(); $filters = array('reportBaseId' => $reportBase->reportBaseId, 'active' => 1); $reportViewIterator = $reportView->getIteratorByFilters($filters); foreach ($reportViewIterator as $view) { $row = array(); $row['id'] = $view->reportViewId; $row['data'] = array(); $row['data'][] = $view->displayName; $row['data'][] = $view->runQueriesImmediately; $row['data'][] = strlen($view->showResultsIn) > 0 ? $view->showResultsIn : 'grid'; $data['views'][] = $row; } $this->view->filterTypes = ReportBase::getFilterTypes(); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }
public function generateMetaDataFromQueries(array $queries) { $ret = array(); $config = Zend_Registry::get('config'); $dbName = $config->database->params->dbname; $db = Zend_Registry::get('dbAdapter'); $reportQuery = new ReportQuery(); $reportQuery->reportBaseId = $this->reportBaseId; $reportQueryIterator = $reportQuery->getIteratorByBaseId(); foreach ($reportQueryIterator as $query) { $content = $query->query; if (isset($queries[$query->reportQueryId])) { $content = $queries[$query->reportQueryId]; } switch ($query->type) { case ReportQuery::TYPE_SQL: try { $stmt = $db->query($content, array(), Zend_Db::FETCH_NUM); $columns = $stmt->columnCount(); for ($i = 0; $i < $columns; $i++) { $row = self::generateMappingObject($query->displayName); $row->queryId = $query->reportQueryId; $columnMeta = $stmt->getColumnMeta($i); $row->resultSetName = $dbName . '.' . $columnMeta['table'] . '.' . $columnMeta['name']; $row->displayName = self::metaDataPrettyName($row->resultSetName); $ret[$row->id] = $row; } } catch (Exception $e) { trigger_error($content . $e->getMessage(), E_USER_NOTICE); throw $e; return false; } break; case ReportQuery::TYPE_NSDR: $nsdr = explode("\n", $content); foreach ($nsdr as $value) { $row = self::generateMappingObject($query->displayName); $row->queryId = $query->reportQueryId; $row->resultSetName = self::extractNamespace($value); $row->displayName = self::metaDataPrettyName($row->resultSetName); $ret[$row->id] = $row; } break; } } return $ret; }
public function loadColumnMetaDataFromQueriesAction() { $viewId = (int) $this->_getParam('viewId'); $this->view->viewId = $viewId; $reportView = new ReportView(); $reportView->reportViewId = $viewId; $reportView->populate(); $reportQuery = new ReportQuery(); $reportQuery->reportBaseId = $reportView->reportBaseId; $reportQueryIterator = $reportQuery->getIteratorByBaseId(); $sql = array(); foreach ($reportQueryIterator as $query) { if ($query->type != ReportQuery::TYPE_SQL) { continue; } $sql[$query->reportQueryId] = preg_replace('/WHERE (.*)/i', 'WHERE 1', $query->query) . ' LIMIT 1'; } $this->view->queries = $sql; $this->render('load-column-meta-data-from-queries'); }
public function getReportAction() { $baseId = (int) $this->_getParam('baseId'); $data = array('filters' => array(), 'views' => array()); $reportBase = new ReportBase(); $reportBase->reportBaseId = $baseId; $reportBase->populate(); foreach ($reportBase->reportFilters as $reportFilter) { $filter = array(); $filter['id'] = $reportFilter->id; $filter['name'] = $reportFilter->name; $filter['defaultValue'] = $reportFilter->defaultValue; $filter['type'] = $reportFilter->type; $filter['options'] = $reportFilter->options; $list = null; if ($reportFilter->type == ReportBase::FILTER_TYPE_ENUM) { $enumerationClosure = new EnumerationClosure(); $filter['enums'] = array(); $paths = $enumerationClosure->generatePaths($reportFilter->enumName['id']); foreach ($paths as $id => $name) { $filter['enums'][] = array('id' => $id, 'name' => $name); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_QUERY) { $reportQuery = new ReportQuery(); $reportQuery->reportQueryId = (int) $reportFilter->query; $reportQuery->populate(); $filter['queries'] = $reportQuery->executeQuery(); if ($reportFilter->includeBlank) { array_unshift($filter['queries'], array('id' => '', 'name' => '&nbsp;')); } } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING) { $orm = new Building(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'buildingId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_PRACTICE) { $orm = new Practice(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'practiceId', 'name' => 'name'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_PROVIDER) { $orm = new Provider(); $list = array('ormIterator' => $orm->getIter(), 'id' => 'personId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM) { $orm = new Room(); $list = array('ormIterator' => $orm->getIterator(), 'id' => 'roomId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING_PREF || $reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM_PREF || $reportFilter->type == ReportBase::FILTER_TYPE_LIST_PROVIDER_PREF) { $room = User::myPreferencesLocation(); $practiceId = (int) $room->building->practiceId; $buildingId = (int) $room->buildingId; if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_BUILDING_PREF) { $orm = new Building(); $orm->practiceId = $practiceId; $list = array('ormIterator' => $orm->getIteratorByPracticeId(), 'id' => 'buildingId', 'name' => 'displayName'); } else { if ($reportFilter->type == ReportBase::FILTER_TYPE_LIST_ROOM_PREF) { $orm = new Room(); $orm->buildingId = $buildingId; $list = array('ormIterator' => $orm->getIteratorByBuildingId(), 'id' => 'roomId', 'name' => 'displayName'); } else { $orm = new Provider(); $list = array('ormIterator' => $orm->getIteratorByPracticeId($practiceId), 'id' => 'personId', 'name' => 'displayName'); } } } } } } } } } if ($list !== null) { $filter['lists'] = array(); foreach ($list['ormIterator'] as $row) { $filter['lists'][] = array('id' => $row->{$list['id']}, 'name' => htmlspecialchars($row->{$list['name']})); } } $data['filters'][] = $filter; } $reportView = new ReportView(); $filters = array('reportBaseId' => $reportBase->reportBaseId, 'active' => 1); $reportViewIterator = $reportView->getIteratorByFilters($filters); foreach ($reportViewIterator as $view) { $row = array(); $row['id'] = $view->reportViewId; $row['data'] = array(); $row['data'][] = $view->displayName; $row['data'][] = $view->runQueriesImmediately; $row['data'][] = strlen($view->showResultsIn) > 0 ? $view->showResultsIn : 'grid'; $data['views'][] = $row; } $this->view->filterTypes = ReportBase::getFilterTypes(); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }
protected function updateObjectFromForm() { if ($this->object->getId()) { foreach ($this->object->getReportQuerys() as $report_query) { $report_query->delete(); } foreach ($this->object->getReportTags() as $tag) { $tag->delete(); } } $this->object->setTitle($this->getValue('title')); $this->object->setDescription($this->getValue('description')); $this->object->setMailFrequency($this->getValue('frequency')); if ($this->getValue('private') == 'on') { $this->object->setPublicRecord(false); } else { $this->object->setPublicRecord(true); } $tag_names = explode(',', $this->getValue('tags')); foreach ($tag_names as $tag_name) { if (!($tag_name = strtolower(trim($tag_name)))) { continue; } $tag = new ReportTag(); $tag->setName($tag_name); $this->object->addReportTag($tag); } $query_texts = explode("\n", str_replace("\r", "", $this->getValue('query_texts'))); $query_titles = explode("\n", str_replace("\r", "", $this->getValue('query_titles'))); for ($i = 0; $i < sizeof($query_texts); $i++) { $query_text = $query_texts[$i]; $query_title = $query_titles[$i]; if ($query_text) { $query = QueryPeer::retrieveByQUERY($query_text); if (!$query) { $query = new Query(); $query->setQuery($query_text); } $report_query = new ReportQuery(); $report_query->setQuery($query); $report_query->setTitle($query_title); $this->object->addReportQuery($report_query); } } if ($this->getValue('user_id')) { $this->object->setUserId($this->getValue('user_id')); } }
public function executeQueries(array $filters, ReportView $view) { $config = Zend_Registry::get('config'); $dbName = $config->database->params->dbname; $db = Zend_Registry::get('dbAdapter'); $ret = array(); $filterQueries = array(); $reportFilters = array(); foreach ($this->reportFilters as $key => $filter) { if ($filter->type == 'QUERY') { $filterQueries[$filter->query] = $filter->query; } $reportFilters['{{' . $filter->name . '}}'] = $filter; } //trigger_error(print_r($reportFilters,true),E_USER_NOTICE); $reportQuery = new ReportQuery(); $reportQueryIterator = $reportQuery->getIteratorByBaseId($this->reportBaseId); $viewColumnDefinitions = array(); $unserializedColumnDefinitions = $view->unserializedColumnDefinitions; if ($unserializedColumnDefinitions === null) { $unserializedColumnDefinitions = array(); } foreach ($unserializedColumnDefinitions as $id => $value) { $viewColumnDefinitions[$value->queryId][$id] = $value; } //file_put_contents('/tmp/columns.txt',print_r($columnDefinitions,true)); foreach ($reportQueryIterator as $query) { if (isset($filterQueries[$query->reportQueryId])) { continue; } // report query associated with filter not included $row = array(); $row['reportQuery'] = $query->toArray(); $row['reportQuery']['customColNames'] = (bool) $view->customizeColumnNames; $queryValue = $query->query; $tokens = $this->_extractTokens($queryValue); if (isset($tokens[0])) { // tokens defined // check for undefined/orphaned filter $undefinedTokens = array(); foreach ($tokens as $token) { if (!isset($reportFilters[$token])) { $undefinedTokens[] = $token; } } if (isset($undefinedTokens[0])) { $error = 'Query "' . $query->displayName . '" contains undefined tokens: ' . implode(', ', $undefinedTokens); $row['error'] = $error; trigger_error($error, E_USER_NOTICE); $ret[] = $row; continue; } $queryValue = $this->_applyFilters($filters, $queryValue); } $columnDefinitions = array(); if (isset($viewColumnDefinitions[$query->reportQueryId])) { $columnDefinitions = $viewColumnDefinitions[$query->reportQueryId]; } else { foreach ($viewColumnDefinitions as $id => $value) { foreach ($value as $i => $v) { if ($v->queryId != 0 || $v->queryName != $query->reportQueryId) { continue; } $columnDefinitions[$i] = $v; } } } //file_put_contents('/tmp/columns.txt',$query->reportQueryId.' = '.print_r($columnDefinitions,true),FILE_APPEND); $columnDefinitionLen = count($columnDefinitions); switch ($query->type) { case ReportQuery::TYPE_SQL: //file_put_contents('/tmp/query.sql',$queryValue); trigger_error($queryValue, E_USER_NOTICE); // extract and execute defined SQL variables $tmp = explode(';', $queryValue); if (count($tmp) > 0) { foreach ($tmp as $key => $line) { $line = trim($line); if (substr($line, 0, 5) == 'SET @') { unset($tmp[$key]); trigger_error('EXECUTING SQL: ' . $line); $db->query($line); } } $queryValue = implode(';', $tmp); } try { $results = array(); $headers = array(); $stmt = $db->query($queryValue, array(), Zend_Db::FETCH_NUM); $columnInfo = array(); $rowCount = $stmt->rowCount(); for ($i = 0; $i < $rowCount; $i++) { $fetchRow = $stmt->fetch(Zend_Db::FETCH_NUM, null, $i); if ($i == 0) { for ($ctr = 0, $rowLen = count($fetchRow); $ctr < $rowLen; $ctr++) { $columnMeta = $stmt->getColumnMeta($ctr); if ($view->customizeColumnNames && $columnDefinitionLen > 0) { $resultSetName = $dbName . '.' . $columnMeta['table'] . '.' . $columnMeta['name']; foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform if ($mapping->resultSetName == $resultSetName) { $headers[$ctr] = $mapping->displayName; $columnInfo[$ctr] = $mapping; break; } } } else { $headers[$ctr] = $columnMeta['name']; } } } $tmpResult = array('id' => $i, 'data' => array()); if ($view->customizeColumnNames && $columnDefinitionLen > 0) { $tmp = array(); foreach ($columnInfo as $index => $mapping) { $tmp[$mapping->displayName] = $this->_applyTransforms($mapping->transforms, $fetchRow[$index]); } $tmpHeaders = $headers; $headers = array(); foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform $tmpResult['data'][] = $tmp[$mapping->displayName]; foreach ($tmpHeaders as $key => $header) { if ($header != $mapping->displayName) { continue; } $headers[] = $header; unset($tmpHeaders[$key]); break; } } } else { foreach ($headers as $index => $header) { $tmpResult['data'][] = $fetchRow[$index]; } } $results[] = $tmpResult; } $row['headers'] = $headers; $row['rows'] = $results; } catch (Exception $e) { $uniqErrCode = uniqid(); $row['error'] = 'There was a problem executing query: ' . $query->displayName . '. Contact your administrator with error code: ' . $uniqErrCode; trigger_error('Exception error (' . $uniqErrCode . '): ' . $e->getMessage(), E_USER_NOTICE); trigger_error('SQL Query (' . $uniqErrCode . '): ' . $queryValue, E_USER_NOTICE); } $ret[] = $row; break; case ReportQuery::TYPE_NSDR: $nsdr = explode("\n", $queryValue); $nsdrResults = array(); $allDefaults = true; foreach ($nsdr as $key => $value) { $value = $this->_applyFilters($filters, $value); $resultSetName = ReportView::extractNamespace($value); //$displayName = ReportView::metaDataPrettyName($resultSetName); $nsdrResult = NSDR2::populate($value); // NOTE: return of NSDR2::populate() can be either of the following: string, associative array (all keys are treated as column names and values as row/ cell values), and multidimensional array (contains multiple associative arrays) $data = array($resultSetName, $nsdrResult); if (is_array($nsdrResult)) { if (array_key_exists(0, $nsdrResult)) { if (!is_array($nsdrResult[0])) { $data[1] = implode("\n", $nsdrResult); } else { // multi dimensional array $allDefaults = false; foreach ($nsdrResult as $index => $results) { $data = array(); $row['headers'] = array(); foreach ($results as $k => $v) { $row['headers'][] = ReportView::metaDataPrettyName($k); $data[] = $v; } $nsdrResults[$resultSetName][] = array('id' => $key . $index, 'data' => $data); } continue; } } else { $allDefaults = false; $row['headers'] = array(); $data = array(); foreach ($nsdrResult as $k => $v) { $row['headers'][] = ReportView::metaDataPrettyName($k); $data[] = $v; } } } $nsdrResults[$resultSetName][] = array('id' => $key, 'data' => $data); } if ($allDefaults) { $row['headers'] = array('Name', 'Value'); } /*else { if (isset($row['headers'][0]) && $row['headers'][0] != 'Name') $row['headers'][0] .= ' / Name'; if (isset($row['headers'][1]) && $row['headers'][1] != 'Value') $row['headers'][1] .= ' / Value'; }*/ if ($view->customizeColumnNames && $columnDefinitionLen > 0) { foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform $displayName = $mapping->resultSetName; if (!isset($nsdrResults[$displayName]) || ($mapping->queryId != 0 && $mapping->queryId != $query->reportQueryId || $mapping->queryId == 0 && $mapping->queryName != $query->reportQueryId) && $mapping->queryName != $query->displayName) { continue; } //$displayName = ReportView::metaDataPrettyName($mapping->resultSetName); foreach ($nsdrResults[$displayName] as $key => $value) { $data = $nsdrResults[$displayName][$key]['data']; if (!array_key_exists(0, $data)) { continue; } foreach ($data as $k => $v) { if ($k == 0 && $v == $displayName) { $v = $mapping->displayName; } else { $v = $this->_applyTransforms($mapping->transforms, $v); } $nsdrResults[$displayName][$key]['data'][$k] = $v; } $data = $nsdrResults[$displayName][$key]['data'][1]; } } } $results = array(); foreach ($nsdrResults as $result) { foreach ($result as $key => $value) { $results[] = $value; } } $row['rows'] = $results; $ret[] = $row; break; } } return $ret; }
public function executeQueries(array $filters, ReportView $view) { $config = Zend_Registry::get('config'); $dbName = $config->database->params->dbname; $db = Zend_Registry::get('dbAdapter'); $ret = array(); $reportFilters = array(); foreach ($this->reportFilters as $key => $filter) { $reportFilters['{{' . $filter->name . '}}'] = $filter; } //trigger_error(print_r($reportFilters,true),E_USER_NOTICE); $reportQuery = new ReportQuery(); $reportQueryIterator = $reportQuery->getIteratorByBaseId($this->reportBaseId); foreach ($reportQueryIterator as $query) { $row = array(); $row['reportQuery'] = $query->toArray(); $queryValue = $query->query; $tokens = $this->_extractTokens($queryValue); if (isset($tokens[0])) { // tokens defined // check for undefined/orphaned filter $undefinedTokens = array(); foreach ($tokens as $token) { if (!isset($reportFilters[$token])) { $undefinedTokens[] = $token; } } if (isset($undefinedTokens[0])) { $error = 'Query "' . $query->displayName . '" contains undefined tokens: ' . implode(', ', $undefinedTokens); $row['error'] = $error; trigger_error($error, E_USER_NOTICE); $ret[] = $row; continue; } $queryValue = $this->_applyFilters($filters, $queryValue, $tokens); } $columnDefinitions = $view->unserializedColumnDefinitions; switch ($query->type) { case ReportQuery::TYPE_SQL: trigger_error($queryValue, E_USER_NOTICE); try { if ($view->customizeColumnNames) { $results = array(); $stmt = $db->query($queryValue, array(), Zend_Db::FETCH_NUM); $columnInfo = array(); $rowCount = $stmt->rowCount(); for ($i = 0; $i < $rowCount; $i++) { $fetchRow = $stmt->fetch(Zend_Db::FETCH_NUM, null, $i); if ($i == 0) { for ($ctr = 0, $rowLen = count($fetchRow); $ctr < $rowLen; $ctr++) { $columnMeta = $stmt->getColumnMeta($ctr); $resultSetName = $dbName . '.' . $columnMeta['table'] . '.' . $columnMeta['name']; foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform if ($mapping->resultSetName == $resultSetName) { $columnInfo[$ctr] = $mapping; break; } } } } $tmp = array(); foreach ($columnInfo as $index => $mapping) { $tmp[$mapping->displayName] = $this->_applyTransforms($mapping->transforms, $fetchRow[$index]); } $tmpResult = array(); foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform $tmpResult[$mapping->displayName] = $tmp[$mapping->displayName]; } $results[] = $tmpResult; } } else { $results = $db->fetchAll($queryValue); } $row['rows'] = $results; } catch (Exception $e) { $uniqErrCode = uniqid(); $row['error'] = 'There was a problem executing query: ' . $query->displayName . '. Contact your administrator with error code: ' . $uniqErrCode; trigger_error('Exception error (' . $uniqErrCode . '): ' . $e->getMessage(), E_USER_NOTICE); trigger_error('SQL Query (' . $uniqErrCode . '): ' . $queryValue, E_USER_NOTICE); } $ret[] = $row; break; case ReportQuery::TYPE_NSDR: $nsdr = explode("\n", $queryValue); $results = array(); foreach ($nsdr as $key => $value) { $tokens = $this->_extractTokens($queryValue); if (isset($tokens[0])) { $value = $this->_applyFilters($filters, $value); } $resultSetName = ReportView::extractNamespace($value); $displayName = ReportView::metaDataPrettyName($resultSetName); $nsdrResult = NSDR::populate($value); $tmp = array('Name' => $displayName, 'Value' => ''); $tmp['Value'] = $nsdrResult[$value]; $results[] = $tmp; } if ($view->customizeColumnNames) { $tmpResults = $results; $results = array(); foreach ($columnDefinitions as $id => $mapping) { // id, queryId, queryName, resultSetName, displayName, transform if ($mapping->queryId != $query->reportQueryId && $mapping->queryName != $query->displayName) { continue; } $displayName = ReportView::metaDataPrettyName($mapping->resultSetName); $tmp = array('Name' => $displayName, 'Value' => ''); if (isset($tmpResults[$displayName])) { $tmp['Value'] = $this->_applyTransforms($mapping->transforms, $tmpResults[$displayName]); } $results[] = $tmp; } } $row['rows'] = $results; $ret[] = $row; break; } } return $ret; }