/** * takes an associative array and creates a Case Type object * * the function extract all the params it needs to initialize the create a * case type object. the params array could contain additional unused name/value * pairs * * @param array $params (reference ) an assoc array of name/value pairs * * @internal param array $ids the array that holds all the db ids * * @return object CRM_Case_BAO_CaseType object * @access public * @static */ static function add(&$params) { $caseTypeDAO = new CRM_Case_DAO_CaseType(); // form the name only if missing: CRM-627 $nameParam = CRM_Utils_Array::value('name', $params, NULL); if (!$nameParam && empty($params['id'])) { $params['name'] = CRM_Utils_String::titleToVar($params['title']); } // Old case-types (pre-4.5) may keep their ucky names, but new case-types must satisfy isValidName() if (empty($params['id']) && !empty($params['name']) && !CRM_Case_BAO_CaseType::isValidName($params['name'])) { throw new CRM_Core_Exception("Cannot create new case-type with malformed name [{$params['name']}]"); } $caseTypeName = isset($params['name']) ? $params['name'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $params['id'], 'name', 'id', TRUE); // function to format definition column if (isset($params['definition']) && is_array($params['definition'])) { $params['definition'] = self::convertDefinitionToXML($caseTypeName, $params['definition']); CRM_Core_ManagedEntities::scheduleReconcilation(); } $caseTypeDAO->copyValues($params); return $caseTypeDAO->save(); }