public static function &info($ovID = null, &$title = null) { $report = ''; if ($ovID) { $report = " AND v.id = {$ovID} "; } $sql = "\n SELECT inst.id, inst.title, inst.report_id, inst.description, v.label, \n ifnull( SUBSTRING(comp.name, 5), 'Contact' ) as compName\n FROM civicrm_option_group g\n LEFT JOIN civicrm_option_value v\n ON v.option_group_id = g.id AND\n g.name = 'report_template'\n LEFT JOIN civicrm_report_instance inst\n ON v.value = inst.report_id\n LEFT JOIN civicrm_component comp \n ON v.component_id = comp.id\n \n WHERE v.is_active = 1 {$report}\n\n ORDER BY v.weight\n "; $dao = CRM_Core_DAO::executeQuery($sql); $config = CRM_Core_Config::singleton(); $rows = array(); $url = 'civicrm/report/instance'; while ($dao->fetch()) { $enabled = in_array("Civi{$dao->compName}", $config->enableComponents); if ($dao->compName == 'Contact') { $enabled = true; } //filter report listings by permissions if (!($enabled && CRM_Report_Utils_Report::isInstancePermissioned($dao->id))) { continue; } if (trim($dao->title)) { if ($ovID) { $title = ts("Report(s) created from the template: %1", array(1 => $dao->label)); } $rows[$dao->compName][$dao->id]['title'] = $dao->title; $rows[$dao->compName][$dao->id]['label'] = $dao->label; $rows[$dao->compName][$dao->id]['description'] = $dao->description; $rows[$dao->compName][$dao->id]['url'] = CRM_Utils_System::url("{$url}/{$dao->id}", "reset=1"); if (CRM_Core_Permission::check('administer Reports')) { $rows[$dao->compName][$dao->id]['deleteUrl'] = CRM_Utils_System::url("{$url}/{$dao->id}", 'action=delete&reset=1'); } } } return $rows; }
/** * Retrieves report instances, optionally filtered by parent report template ($ovID) * or by component ($compID) * * @return array */ public function &info() { $report = ''; if ($this->ovID) { $report .= " AND v.id = {$this->ovID} "; } if ($this->compID) { if ($this->compID == 99) { $report .= " AND v.component_id IS NULL "; $this->_compName = 'Contact'; } else { $report .= " AND v.component_id = {$this->compID} "; $cmpName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Component', $this->compID, 'name', 'id'); $this->_compName = substr($cmpName, 4); if ($this->_compName == 'Contribute') { $this->_compName = 'Contribution'; } } } elseif ($this->grouping) { $report .= " AND v.grouping = '{$this->grouping}' "; } $sql = "\n SELECT inst.id, inst.title, inst.report_id, inst.description, v.label, v.grouping,\n CASE\n WHEN comp.name IS NOT NULL THEN SUBSTRING(comp.name, 5)\n WHEN v.grouping IS NOT NULL THEN v.grouping\n ELSE 'Contact'\n END as compName\n FROM civicrm_option_group g\n LEFT JOIN civicrm_option_value v\n ON v.option_group_id = g.id AND\n g.name = 'report_template'\n LEFT JOIN civicrm_report_instance inst\n ON v.value = inst.report_id\n LEFT JOIN civicrm_component comp\n ON v.component_id = comp.id\n\n WHERE v.is_active = 1 {$report}\n AND inst.domain_id = %1\n ORDER BY v.weight"; $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array(CRM_Core_Config::domainID(), 'Integer'))); $config = CRM_Core_Config::singleton(); $rows = array(); $url = 'civicrm/report/instance'; while ($dao->fetch()) { if (in_array($dao->report_id, self::$_exceptions)) { continue; } $enabled = in_array("Civi{$dao->compName}", $config->enableComponents); if ($dao->compName == 'Contact' || $dao->compName == $dao->grouping) { $enabled = TRUE; } //filter report listings by permissions if (!($enabled && CRM_Report_Utils_Report::isInstancePermissioned($dao->id))) { continue; } //filter report listing by group/role if (!($enabled && CRM_Report_Utils_Report::isInstanceGroupRoleAllowed($dao->id))) { continue; } if (trim($dao->title)) { if ($this->ovID) { $this->title = ts("Report(s) created from the template: %1", array(1 => $dao->label)); } $rows[$dao->compName][$dao->id]['title'] = $dao->title; $rows[$dao->compName][$dao->id]['label'] = $dao->label; $rows[$dao->compName][$dao->id]['description'] = $dao->description; $rows[$dao->compName][$dao->id]['url'] = CRM_Utils_System::url("{$url}/{$dao->id}", "reset=1"); if (CRM_Core_Permission::check('administer Reports')) { $rows[$dao->compName][$dao->id]['deleteUrl'] = CRM_Utils_System::url("{$url}/{$dao->id}", 'action=delete&reset=1'); } } } return $rows; }
/** * Retrieves report instances, optionally filtered. * * Filtering available by parent report template ($ovID) or by component ($compID). * * @return array */ public function info() { $report = ''; if ($this->ovID) { $report .= " AND v.id = {$this->ovID} "; } if ($this->compID) { if ($this->compID == 99) { $report .= " AND v.component_id IS NULL "; $this->_compName = 'Contact'; } else { $report .= " AND v.component_id = {$this->compID} "; $cmpName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Component', $this->compID, 'name', 'id'); $this->_compName = substr($cmpName, 4); if ($this->_compName == 'Contribute') { $this->_compName = 'Contribution'; } } } elseif ($this->grouping) { $report .= " AND v.grouping = '{$this->grouping}' "; } elseif ($this->myReports) { $report .= " AND inst.owner_id = " . CRM_Core_Session::getLoggedInContactID(); } $sql = "\n SELECT inst.id, inst.title, inst.report_id, inst.description, inst.owner_id, v.label, v.grouping, v.name as class_name,\n CASE\n WHEN comp.name IS NOT NULL THEN SUBSTRING(comp.name, 5)\n WHEN v.grouping IS NOT NULL THEN v.grouping\n ELSE 'Contact'\n END as compName\n FROM civicrm_option_group g\n LEFT JOIN civicrm_option_value v\n ON v.option_group_id = g.id AND\n g.name = 'report_template'\n LEFT JOIN civicrm_report_instance inst\n ON v.value = inst.report_id\n LEFT JOIN civicrm_component comp\n ON v.component_id = comp.id\n\n WHERE v.is_active = 1 {$report}\n AND inst.domain_id = %1\n ORDER BY v.weight"; $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array(CRM_Core_Config::domainID(), 'Integer'))); $config = CRM_Core_Config::singleton(); $rows = array(); $url = 'civicrm/report/instance'; $my_reports_grouping = 'My'; while ($dao->fetch()) { if (in_array($dao->report_id, self::$_exceptions)) { continue; } $enabled = in_array("Civi{$dao->compName}", $config->enableComponents); if ($dao->compName == 'Contact' || $dao->compName == $dao->grouping) { $enabled = TRUE; } // filter report listings for private reports if (!empty($dao->owner_id) && CRM_Core_Session::getLoggedInContactID() != $dao->owner_id) { continue; } //filter report listings by permissions if (!($enabled && CRM_Report_Utils_Report::isInstancePermissioned($dao->id))) { continue; } //filter report listing by group/role if (!($enabled && CRM_Report_Utils_Report::isInstanceGroupRoleAllowed($dao->id))) { continue; } if (trim($dao->title)) { if ($this->ovID) { $this->title = ts("Report(s) created from the template: %1", array(1 => $dao->label)); } $report_grouping = $dao->compName; if ($dao->owner_id != NULL) { $report_grouping = $my_reports_grouping; } $rows[$report_grouping][$dao->id]['title'] = $dao->title; $rows[$report_grouping][$dao->id]['label'] = $dao->label; $rows[$report_grouping][$dao->id]['description'] = $dao->description; $rows[$report_grouping][$dao->id]['url'] = CRM_Utils_System::url("{$url}/{$dao->id}", "reset=1&output=criteria"); $rows[$report_grouping][$dao->id]['viewUrl'] = CRM_Utils_System::url("{$url}/{$dao->id}", 'force=1&reset=1'); $rows[$report_grouping][$dao->id]['actions'] = $this->getActionLinks($dao->id, $dao->class_name); } } // Move My Reports to the beginning of the reports list if (isset($rows[$my_reports_grouping])) { $my_reports = $rows[$my_reports_grouping]; unset($rows[$my_reports_grouping]); $rows = array($my_reports_grouping => $my_reports) + $rows; } return $rows; }