/** * Get a list of managed activity-types by searching CiviCase XML files * * @return array * @see CRM_Utils_Hook::managed * @throws CRM_Core_Exception */ public static function createManagedActivityTypes(CRM_Case_XMLRepository $xmlRepo, CRM_Core_ManagedEntities $me) { $result = array(); $validActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name'); $actTypes = $xmlRepo->getAllDeclaredActivityTypes(); foreach ($actTypes as $actType) { $managed = array('module' => 'civicrm', 'name' => "civicase:act:{$actType}", 'entity' => 'OptionValue', 'update' => 'never', 'cleanup' => 'unused', 'params' => array('version' => 3, 'option_group_id' => 'activity_type', 'label' => $actType, 'name' => $actType, 'description' => $actType, 'component_id' => 'CiviCase')); // We'll create managed-entity if this record doesn't exist yet // or if we previously decided to manage this record. if (!in_array($actType, $validActTypes)) { $result[] = $managed; } elseif ($me->get($managed['module'], $managed['name'])) { $result[] = $managed; } } return $result; }
public function testGetAllDeclaredActivityTypes() { $repo = new CRM_Case_XMLRepository(array('CaseTypeWithTwoActivityTypes', 'CaseTypeWithThreeActivityTypes'), array('CaseTypeWithTwoActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithTwoActivityTypes']), 'CaseTypeWithThreeActivityTypes' => new SimpleXMLElement($this->fixtures['CaseTypeWithThreeActivityTypes']), 'CaseTypeWithSingleRole' => new SimpleXMLElement($this->fixtures['CaseTypeWithSingleRole']))); // omitted: 'Single Activity Type' $expected = array('First Activity Type', 'Second Activity Type', 'Third Activity Type'); $actual = $repo->getAllDeclaredActivityTypes(); $this->assertEquals($expected, $actual); }