X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FInfo.php;h=d62a10cbdbcddc6353a8e3c13837a1e30282b541;hb=f2a84e5c7c916f6c0d4c7fce69b844b019c17dd1;hp=b77352ef8f51e21166817b72c583b5cf7c627e22;hpb=0b118900f556f9eacd487990a5ea3902dbd83dcc;p=civicrm-core.git diff --git a/CRM/Case/Info.php b/CRM/Case/Info.php index b77352ef8f..d62a10cbdb 100644 --- a/CRM/Case/Info.php +++ b/CRM/Case/Info.php @@ -42,6 +42,9 @@ class CRM_Case_Info extends CRM_Core_Component_Info { protected $keyword = 'case'; // docs inherited from interface + /** + * @return array + */ public function getInfo() { return array( 'name' => 'CiviCase', @@ -52,54 +55,45 @@ class CRM_Case_Info extends CRM_Core_Component_Info { ); } - // docs inherited from interface - public function getManagedEntities() { - // Use hook_civicrm_caseTypes to build a list of OptionValues - // In the long run, we may want more specialized logic for this, but - // this design is fairly convenient and will allow us to replace it - // without changing the hook_civicrm_caseTypes interface. - $entities = array(); - - $caseTypes = array(); - CRM_Utils_Hook::caseTypes($caseTypes); - - $proc = new CRM_Case_XMLProcessor(); - $caseTypesGroupId = civicrm_api3('OptionGroup', 'getvalue', array('name' => 'case_type', 'return' => 'id')); - if (!is_numeric($caseTypesGroupId)) { - throw new CRM_Core_Exception("Found invalid ID for OptionGroup (case_type)"); - } - foreach ($caseTypes as $name => $caseType) { - $xml = $proc->retrieve($name); - if (!$xml) { - throw new CRM_Core_Exception("Failed to load XML for case type (" . $name . ")"); - } + /** + * {@inheritDoc} + */ + public function getAngularModules() { + $result = array(); + $result['crmCaseType'] = array( + 'ext' => 'civicrm', + 'js' => array('js/angular-crmCaseType.js'), + 'css' => array('css/angular-crmCaseType.css'), + ); - if (isset($caseType['module'], $caseType['name'], $caseType['file'])) { - $entities[] = array( - 'module' => $caseType['module'], - 'name' => $caseType['name'], - 'entity' => 'OptionValue', - 'params' => array( - 'version' => 3, - 'name' => $caseType['name'], - 'label' => (string) $xml->name, - 'description' => (string) $xml->description, // CRM_Utils_Array::value('description', $caseType, ''), - 'option_group_id' => $caseTypesGroupId, - 'filter' => empty($xml->filter) ? 0 : 1, - 'grouping' => $xml->grouping, - 'is_reserved' => 1, - ), - ); - } - else { - throw new CRM_Core_Exception("Invalid case type"); - } - } + CRM_Core_Resources::singleton()->addSetting(array( + 'crmCaseType' => array( + 'REL_TYPE_CNAME' => CRM_Case_XMLProcessor::REL_TYPE_CNAME, + ), + )); + return $result; + } + // docs inherited from interface + /** + * @return array + * @throws CRM_Core_Exception + */ + public function getManagedEntities() { + $entities = array_merge( + CRM_Case_ManagedEntities::createManagedCaseTypes(), + CRM_Case_ManagedEntities::createManagedActivityTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()), + CRM_Case_ManagedEntities::createManagedRelationshipTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()) + ); return $entities; } // docs inherited from interface + /** + * @param bool $getAllUnconditionally + * + * @return array + */ public function getPermissions($getAllUnconditionally = FALSE) { return array( 'delete in CiviCase', @@ -110,12 +104,53 @@ class CRM_Case_Info extends CRM_Core_Component_Info { ); } + /** + * {@inheritdoc} + */ + public function getReferenceCounts($dao) { + $result = array(); + if ($dao instanceof CRM_Core_DAO_OptionValue) { + /** @var $dao CRM_Core_DAO_OptionValue */ + $activity_type_gid = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_type', 'id', 'name'); + if ($activity_type_gid == $dao->option_group_id) { + $count = CRM_Case_XMLRepository::singleton() + ->getActivityReferenceCount($dao->name); + if ($count > 0) { + $result[] = array( + 'name' => 'casetypexml:activities', + 'type' => 'casetypexml', + 'count' => $count, + ); + } + } + } + elseif ($dao instanceof CRM_Contact_DAO_RelationshipType) { + /** @var $dao CRM_Contact_DAO_RelationshipType */ + $count = CRM_Case_XMLRepository::singleton() + ->getRelationshipReferenceCount($dao->{CRM_Case_XMLProcessor::REL_TYPE_CNAME}); + if ($count > 0) { + $result[] = array( + 'name' => 'casetypexml:relationships', + 'type' => 'casetypexml', + 'count' => $count, + ); + } + } + return $result; + } + // docs inherited from interface + /** + * @return array + */ public function getUserDashboardElement() { return array(); } // docs inherited from interface + /** + * @return array + */ public function registerTab() { return array('title' => ts('Cases'), 'url' => 'case', @@ -124,6 +159,9 @@ class CRM_Case_Info extends CRM_Core_Component_Info { } // docs inherited from interface + /** + * @return array + */ public function registerAdvancedSearchPane() { return array('title' => ts('Cases'), 'weight' => 50, @@ -131,11 +169,17 @@ class CRM_Case_Info extends CRM_Core_Component_Info { } // docs inherited from interface + /** + * @return null + */ public function getActivityTypes() { return NULL; } // add shortcut to Create New + /** + * @param $shortCuts + */ public function creatNewShortcut(&$shortCuts) { if (CRM_Core_Permission::check('access all cases and activities') || CRM_Core_Permission::check('add cases') @@ -173,7 +217,6 @@ class CRM_Case_Info extends CRM_Core_Component_Info { ) { $config = CRM_Core_Config::singleton(); CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample.mysql'); - CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample1.mysql'); if (!CRM_Case_BAO_Case::createCaseViews()) { $msg = ts("Could not create the MySQL views for CiviCase. Your mysql user needs to have the 'CREATE VIEW' permission"); CRM_Core_Error::fatal($msg);