groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', self::REPORT_GROUP_NAME, 'id', 'name' ); } /** * @param CRM_Extension_Info $info * * @throws Exception */ public function onPreInstall(CRM_Extension_Info $info) { $customReports = $this->getCustomReportsByName(); if (array_key_exists($info->key, $customReports)) { CRM_Core_Error::fatal('This report is already registered.'); } if ($info->typeInfo['component'] === 'Contact') { $compId = 'null'; } else { $comp = CRM_Core_Component::get($info->typeInfo['component']); $compId = $comp->componentID; } if (empty($compId)) { CRM_Core_Error::fatal("Component for which you're trying to install the extension (" . $info->typeInfo['component'] . ") is currently disabled."); } $weight = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_OptionValue', ['option_group_id' => $this->groupId] ); $ids = []; $params = [ 'label' => $info->label . ' (' . $info->key . ')', 'value' => $info->typeInfo['reportUrl'], 'name' => $info->key, 'weight' => $weight, 'description' => $info->label . ' (' . $info->key . ')', 'component_id' => $compId, 'option_group_id' => $this->groupId, 'is_active' => 1, ]; $optionValue = CRM_Core_BAO_OptionValue::add($params, $ids); } /** * @param CRM_Extension_Info $info * * @return bool */ public function onPreUninstall(CRM_Extension_Info $info) { // if( !array_key_exists( $info->key, $this->customReports ) ) { // CRM_Core_Error::fatal( 'This report is not registered.' ); // } $customReports = $this->getCustomReportsByName(); $cr = $this->getCustomReportsById(); $id = $cr[$customReports[$info->key]]; $optionValue = CRM_Core_BAO_OptionValue::del($id); return $optionValue ? TRUE : FALSE; } /** * @param CRM_Extension_Info $info */ public function onPreDisable(CRM_Extension_Info $info) { $customReports = $this->getCustomReportsByName(); $cr = $this->getCustomReportsById(); $id = $cr[$customReports[$info->key]]; $optionValue = CRM_Core_BAO_OptionValue::setIsActive($id, 0); } /** * @param CRM_Extension_Info $info */ public function onPreEnable(CRM_Extension_Info $info) { $customReports = $this->getCustomReportsByName(); $cr = $this->getCustomReportsById(); $id = $cr[$customReports[$info->key]]; $optionValue = CRM_Core_BAO_OptionValue::setIsActive($id, 1); } /** * @return array */ public function getCustomReportsByName() { return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, TRUE, FALSE, FALSE, NULL, 'name', FALSE, TRUE); } /** * @return array */ public function getCustomReportsById() { return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, FALSE, FALSE, FALSE, NULL, 'id', FALSE, TRUE); } }