コード例 #1
0
ファイル: Report.php プロジェクト: jakedorst/ch3-dev-preview
 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;
     }
 }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
 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;
 }
コード例 #5
0
 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');
 }
コード例 #6
0
 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' => '&amp;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);
 }
コード例 #7
0
 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'));
     }
 }
コード例 #8
0
ファイル: ReportBase.php プロジェクト: dragonlet/clearhealth
 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;
 }
コード例 #9
0
 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;
 }