} $mods = $template->query("ancestor-or-self::*[@type='module'][1]", $li); if ($mods->length == 1 && ($mod = $mods->item(0)->getAttribute('name'))) { $qry['mods'] = $mod; } $qry['text'] = $a->textContent; $data[$type] = $qry; } $list_storage = I2CE_MagicData::instance("temp_lists"); $list_storage->modules->Lists->auto_list = $data; foreach ($list_storage->modules->Lists->auto_list as $type => $listConfig) { $listConfig->traverse('text', true, false)->setTranslatable(); } I2CE::setupFileSearch(array('XML' => array(dirname(dirname(__FILE__) . "/../modules/MagicDataExport/xml/export_magicdata.xml")))); echo $list_storage; $export = new I2CE_MagicDataExport_Template(); $export->loadRootFile(dirname(dirname(__FILE__) . "/../modules/MagicDataExport/xml/export_magicdata.xml") . "/export_magicdata.xml"); $configNodes = $export->query('/I2CEConfiguration/configurationGroup'); $configNode = $configNodes->item(0); $configNode->setAttribute('name', 'auto_list'); $configNode->setAttribute('path', '/modules/Lists/auto_list'); $export->createExport($configNode, $list_storage->modules->Lists->auto_list); foreach ($export->query('//displayName', $configNode) as $dp) { $dp->parentNode->removeChild($dp); //condense the .xml export } foreach ($export->query('//*[@name="category"] | //*[@name="subcategory"] | //*[@name="text"]') as $t) { $t->setAttribute('locale', 'en_US'); //shouldn't have to do this because we set the nodes as translatbale above. there is a bug in magic data export } $out = $export->getDisplay();
protected function _getReportViewDisplayedFieldsWalker($getDisabled, $all_aggregates, $baseConfig, &$field_list, $parent_report, $parent_ref) { if (!$parent_report || !($reportConfig = I2CE::getConfig()->traverse("/modules/CustomReports/reports/{$parent_report}")) instanceof I2CE_MagicDataNode) { return; } if (!$baseConfig instanceof I2CE_MagicDataNode || !$baseConfig->is_parent("fields")) { return; } $fieldBaseConfig = $baseConfig->fields; $sub_field_list = array(); $displayedFields = array(); $seen_forms = array(); $headers = array('sum' => 'Sum', 'maximum' => 'Maximum', 'minimum' => 'Minimum', 'average' => 'Average', 'count_distinct' => 'Total Distinct', 'count' => 'Total'); if (($headerConfig = I2CE::getConfig()->traverse("/modules/CustomReports/text/headers")) instanceof I2CE_MagicDataNode) { foreach ($headers as $k => &$v) { $headerConfig->setIfIsSet($v, $k); } } foreach ($fieldBaseConfig as $formfield => $formFieldConfig) { //cyclying on feilds in report view if (!$formFieldConfig instanceof I2CE_MagicDataNode) { continue; } list($form, $field_agg) = array_pad(explode('+', $formfield), 2, ''); list($field, $aggregate) = array_pad(explode('+', $field_agg), 2, ''); $link = false; $link_append = ''; $link_target = false; $link_type = 'link'; $rep_enabled = false; if (!$field_agg && $form == $formfield) { //this is an internal field and the header is stored in $rep_enabled = true; $header = I2CE_MagicDataExport_Template::humanText($formfield); $reportConfig->setIfIsSet($header, "reporting_internals/{$formfield}/header"); } elseif (!$form) { //this is function field and the name of the field is stored in $header = I2CE_MagicDataExport_Template::humanText($field); $reportConfig->setIfIsSet($header, "reporting_functions/{$field_agg}/header"); $reportConfig->setIfIsSet($rep_enabled, "reporting_functions/{$field_agg}/enabled"); } else { //this is a reportform+field $header = I2CE_MagicDataExport_Template::humanText($form) . ' ' . I2CE_MagicDataExport_Template::humanText($field); $reportConfig->setIfIsSet($header, "reporting_forms/{$form}/fields/{$field_agg}/header"); $reportConfig->setIfIsSet($link, "reporting_forms/{$form}/fields/{$field_agg}/link"); $reportConfig->setIfIsSet($link_append, "reporting_forms/{$form}/fields/{$field_agg}/link_append"); $reportConfig->setIfIsSet($link_type, "reporting_forms/{$form}/fields/{$field_agg}/link_type"); $reportConfig->setIfIsSet($link_target, "reporting_forms/{$form}/fields/{$field_agg}/target"); $reportConfig->setIfIsSet($rep_enabled, "reporting_forms/{$form}/fields/{$field_agg}/enabled"); } if (!$field_agg && $form == $formfield) { $aggs = array(''); $displayedField = $formfield; } elseif ($all_aggregates === true) { $aggs = array('sum', 'maximum', 'minimum', 'average', 'count', 'count_distinct', ''); $displayedField = $form . '+' . $field; } elseif (is_array($all_aggregates)) { $aggs = $all_aggregates; $displayedField = $form . '+' . $field; } else { // get default aggregate stuff if (!$aggregate) { $aggreate = ''; $formFieldConfig->setIfIsSet($aggregate, "aggregate"); } if ($aggregate == 'none') { $aggregate = ''; } $aggs = array($aggregate); $displayedField = $formfield; } if ($getDisabled) { $enabled = true; } else { $enabled = false; $formFieldConfig->setIfIsSet($enabled, "enabled"); } $enabled &= $rep_enabled; if ($enabled) { if ($form && $form != $formfield) { if (!array_key_exists($form, $seen_forms)) { $seen_forms[$form] = array('parent' => false, 'id' => false); } if ($field == 'id') { $seen_forms[$form]['id'] = true; } else { if ($field == 'parent') { $seen_forms[$form]['parent'] = true; } } } foreach ($aggs as $agg) { $t_link = false; $t_link_append = false; $t_link_type = false; $t_link_target = false; $t_header = $header; $t_field = $displayedField; if (array_key_exists($agg, $headers)) { $t_header .= ' (' . $headers[$agg] . ')'; } else { $agg = ''; $t_link = $link; $t_link_append = $link_append; $t_link_type = $link_type; $t_link_target = $link_target; } if ($agg) { $t_field .= '+' . $agg; } $displayedFields[$parent_ref . $t_field] = array('header' => $t_header, 'link' => $t_link, 'target' => $t_link_target, 'link_append' => $t_link_append, 'link_type' => $t_link_type); } } else { if (!array_key_exists($displayedField, $displayedFields)) { $displayFields[$parent_ref . $displayedField] = false; } } $additional = false; $add_reportfield = false; if ($formFieldConfig->setIfIsSet($additional, 'merge_additional')) { // something like /$report_view/fields/primary_form+job_cadre or /$report_views $additional = explode('/', ltrim($additional, '/')); if (count($additional) == 3) { //it is a report view $add_reportfield = array_pop($additional); //array_pop($additional); //fields //array_pop($additional); //reportview $add_merge = 'primary_table:'; } else { if (count($additional) > 3) { $add_reportfield = array_pop($additional); array_pop($additional); $add_merge = array_pop($additional) . ':'; } } } if ($add_reportfield) { if (!array_key_exists($displayedField, $displayedFields)) { $displayedFields[$parent_ref . $displayedField] = false; } if (!array_key_exists($add_merge . $add_reportfield, $displayedFields)) { $displayedFields[$add_merge . $add_reportfield] = false; } } if (!$formFieldConfig->is_parent("merges")) { continue; } $sub_field_list[$displayedField] = array(); foreach ($formFieldConfig->merges as $mergekey => $mergeConfig) { $enabled = false; $mergeConfig->setIfIsSet($enabled, 'enabled'); if (!$enabled) { continue; } $merge_report = false; $reportConfig->setIfIsSet($merge_report, "reporting_forms/{$form}/fields/{$field}/merges/{$mergekey}/report"); if (!I2CE_MagicDataNode::checkKey($merge_report)) { continue; } if (in_array($merge_report, $this->seen_merges)) { //don't allow report to be merged in more than once continue; } $this->seen_merges[] = $merge_report; if (!($merge_report_config = I2CE::getConfig()->traverse("/modules/CustomReports/reports/{$merge_report}")) instanceof I2CE_MagicDataNode) { continue; } $child_ref = "{$mergekey}:{$merge_report}:"; $this->_getReportViewDisplayedFieldsWalker($getDisabled, $all_aggregates, $mergeConfig, $sub_field_list[$displayedField], $merge_report, $child_ref); } } foreach ($seen_forms as $form => $seen) { if (!$seen['id']) { $displayedFields[$parent_ref . "{$form}+id"] = false; } if (!$seen['parent']) { $displayedFields[$parent_ref . "{$form}+parent"] = false; } } $displayOrder = ''; if (array_key_exists('display_order', $this->defaultOptions) && $this->defaultOptions['display_order']) { $displayOrder = $this->defaultOptions['display_order']; } else { $baseConfig->setIfIsSet($displayOrder, 'display_order'); } $displayOrder = explode(',', $displayOrder); foreach ($displayOrder as $field) { if (!$field) { continue; } $field = $parent_ref . $field; foreach ($displayedFields as $fieldName => $details) { if (strpos($fieldName, $field) !== 0) { continue; } if (strlen($fieldName) == strlen($field) || $fieldName[strlen($field)] == '+') { $field_list[$fieldName] = $details; unset($displayedFields[$fieldName]); if (array_key_exists($displayedField, $sub_field_list)) { $field_list = array_merge($field_list, $sub_field_list[$displayedFields]); unset($sub_field_list[$displayedFields]); } } } } while (count($displayedFields) > 0) { reset($displayedFields); $key = key($displayedFields); $details = array_shift($displayedFields); $field_list[$key] = $details; if (array_key_exists($displayedField, $sub_field_list)) { $field_list = array_merge($field_list, $sub_field_list[$displayedFields]); unset($sub_field_list[$displayedFields]); } } while (count($sub_field_list) > 0) { $field_list = array_merge($field_list, array_shift($sub_field_list)); } }