示例#1
0
 /**
  * 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();
 }