+
+ /**
+ * @return array<string> symbolic names of case-types
+ */
+ public function getAllCaseTypes() {
+ if ($this->allCaseTypes === NULL) {
+ $this->allCaseTypes = CRM_Case_PseudoConstant::caseType("name");
+ }
+ return $this->allCaseTypes;
+ }
+
+ /**
+ * @return array<string> symbolic-names of activity-types
+ */
+ public function getAllDeclaredActivityTypes() {
+ $result = array();
+
+ $p = new CRM_Case_XMLProcessor_Process();
+ foreach ($this->getAllCaseTypes() as $caseTypeName) {
+ $caseTypeXML = $this->retrieve($caseTypeName);
+ $result = array_merge($result, $p->getDeclaredActivityTypes($caseTypeXML));
+ }
+
+ $result = array_unique($result);
+ sort($result);
+ return $result;
+ }
+
+ /**
+ * @return array<string> symbolic-names of relationship-types
+ */
+ public function getAllDeclaredRelationshipTypes() {
+ $result = array();
+
+ $p = new CRM_Case_XMLProcessor_Process();
+ foreach ($this->getAllCaseTypes() as $caseTypeName) {
+ $caseTypeXML = $this->retrieve($caseTypeName);
+ $result = array_merge($result, $p->getDeclaredRelationshipTypes($caseTypeXML));
+ }
+
+ $result = array_unique($result);
+ sort($result);
+ return $result;
+ }
+
+ /**
+ * Determine the number of times a particular activity-type is
+ * referenced in CiviCase XML.
+ *
+ * @param string $activityType symbolic-name of an activity type
+ * @return int
+ */
+ function getActivityReferenceCount($activityType) {
+ $p = new CRM_Case_XMLProcessor_Process();
+ $count = 0;
+ foreach ($this->getAllCaseTypes() as $caseTypeName) {
+ $caseTypeXML = $this->retrieve($caseTypeName);
+ if (in_array($activityType, $p->getDeclaredActivityTypes($caseTypeXML))) {
+ $count++;
+ }
+ }
+ return $count;
+ }
+
+ /**
+ * Determine the number of times a particular activity-type is
+ * referenced in CiviCase XML.
+ *
+ * @param string $relationshipTypeName symbolic-name of a relationship-type
+ * @return int
+ */
+ function getRelationshipReferenceCount($relationshipTypeName) {
+ $p = new CRM_Case_XMLProcessor_Process();
+ $count = 0;
+ foreach ($this->getAllCaseTypes() as $caseTypeName) {
+ $caseTypeXML = $this->retrieve($caseTypeName);
+ if (in_array($relationshipTypeName, $p->getDeclaredRelationshipTypes($caseTypeXML))) {
+ $count++;
+ }
+ }
+ return $count;
+ }
+