/** * Use this API to delete an existing group. * * @param array $params * * @return array */ function civicrm_api3_custom_group_delete($params) { $values = new CRM_Core_DAO_CustomGroup(); $values->id = $params['id']; $values->find(TRUE); $result = CRM_Core_BAO_CustomGroup::deleteGroup($values, TRUE); return $result ? civicrm_api3_create_success() : civicrm_api3_create_error('Error while deleting custom group'); }
/** * When changing the value of an option this is called to update all corresponding custom data * * @param int $optionId * @param string $newValue */ public static function updateValue($optionId, $newValue) { $optionValue = new CRM_Core_DAO_OptionValue(); $optionValue->id = $optionId; $optionValue->find(TRUE); $oldValue = $optionValue->value; if ($oldValue == $newValue) { return; } $customField = new CRM_Core_DAO_CustomField(); $customField->option_group_id = $optionValue->option_group_id; $customField->find(); while ($customField->fetch()) { $customGroup = new CRM_Core_DAO_CustomGroup(); $customGroup->id = $customField->custom_group_id; $customGroup->find(TRUE); if (CRM_Core_BAO_CustomField::isSerialized($customField)) { $params = array(1 => array(CRM_Utils_Array::implodePadded($oldValue), 'String'), 2 => array(CRM_Utils_Array::implodePadded($newValue), 'String'), 3 => array('%' . CRM_Utils_Array::implodePadded($oldValue) . '%', 'String')); } else { $params = array(1 => array($oldValue, 'String'), 2 => array($newValue, 'String'), 3 => array($oldValue, 'String')); } $sql = "UPDATE `{$customGroup->table_name}` SET `{$customField->column_name}` = REPLACE(`{$customField->column_name}`, %1, %2) WHERE `{$customField->column_name}` LIKE %3"; $customGroup->free(); CRM_Core_DAO::executeQuery($sql, $params); } $customField->free(); }
/** * Process the form when submitted * * @return void * @access public */ public function postProcess() { $group = new CRM_Core_DAO_CustomGroup(); $group->id = $this->_id; $group->find(TRUE); $wt = CRM_Utils_Weight::delWeight('CRM_Core_DAO_CustomGroup', $this->_id); CRM_Core_BAO_CustomGroup::deleteGroup($group); CRM_Core_Session::setStatus(ts("The Group '%1' has been deleted.", array(1 => $group->title)), '', 'success'); }
/** * Store and return an array of all active custom fields. * * @param string $customDataType type of Custom Data * @param boolean $showAll If true returns all fields (includes disabled fields) * @param boolean $inline If true returns all inline fields (includes disabled fields) * @param int $customDataSubType Custom Data sub type value * @param int $customDataSubName Custom Data sub name value * @param boolean $onlyParent return only top level custom data, for eg, only Participant and ignore subname and subtype * * @return array $fields - an array of active custom fields. * * @access public * @static */ public static function &getFields($customDataType = 'Individual', $showAll = false, $inline = false, $customDataSubType = null, $customDataSubName = null, $onlyParent = false) { $onlySubType = false; if ($customDataType && !is_array($customDataType)) { if (in_array($customDataType, CRM_Contact_BAO_ContactType::subTypes())) { // This is the case when getFieldsForImport() requires fields // limited strictly to a subtype. $customDataSubType = $customDataType; $customDataType = CRM_Contact_BAO_ContactType::getBasicType($customDataType); $onlySubType = true; } if (in_array($customDataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) { // this makes the method flexible to support retrieving fields // for multiple extends value. $customDataType = array($customDataType); } } if (is_array($customDataType)) { $cacheKey = implode('_', $customDataType); } else { $cacheKey = $customDataType; } $cacheKey .= $customDataSubType ? "{$customDataSubType}_" : "_0"; $cacheKey .= $customDataSubName ? "{$customDataSubName}_" : "_0"; $cacheKey .= $showAll ? "_1" : "_0"; $cacheKey .= $inline ? "_1_" : "_0_"; $cacheKey .= $onlyParent ? "_1_" : "_0_"; $cacheKey .= $onlySubType ? "_1_" : "_0_"; $cgTable = CRM_Core_DAO_CustomGroup::getTableName(); // also get the permission stuff here require_once 'CRM/Core/Permission.php'; $permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, "{$cgTable}."); // lets md5 permission clause and take first 8 characters $cacheKey .= substr(md5($permissionClause), 0, 8); if (strlen($cacheKey) > 40) { $cacheKey = md5($cacheKey); } if (!self::$_importFields || CRM_Utils_Array::value($cacheKey, self::$_importFields) === null) { if (!self::$_importFields) { self::$_importFields = array(); } // check if we can retrieve from database cache require_once 'CRM/Core/BAO/Cache.php'; $fields =& CRM_Core_BAO_Cache::getItem('contact fields', "custom importableFields {$cacheKey}"); if ($fields === null) { $cfTable = self::getTableName(); $extends = ''; if (is_array($customDataType)) { $value = null; foreach ($customDataType as $dataType) { if (in_array($dataType, array_keys(CRM_Core_SelectValues::customGroupExtends()))) { if (in_array($dataType, array('Individual', 'Household', 'Organization'))) { $val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "', 'Contact' "; } else { $val = "'" . CRM_Utils_Type::escape($dataType, 'String') . "'"; } $value = $value ? $value . ", {$val}" : $val; } } if ($value) { $extends = "AND {$cgTable}.extends IN ( {$value} ) "; } } if ($onlyParent) { $extends .= " AND {$cgTable}.extends_entity_column_value IS NULL AND {$cgTable}.extends_entity_column_id IS NULL "; } $query = "SELECT {$cfTable}.id, {$cfTable}.label,\n {$cgTable}.title,\n {$cfTable}.data_type, {$cfTable}.html_type,\n {$cfTable}.options_per_line,\n {$cgTable}.extends, {$cfTable}.is_search_range,\n {$cgTable}.extends_entity_column_value,\n {$cgTable}.extends_entity_column_id,\n {$cfTable}.is_view,\n {$cfTable}.option_group_id,\n {$cfTable}.date_format,\n {$cfTable}.time_format,\n {$cgTable}.is_multiple\n FROM {$cfTable}\n INNER JOIN {$cgTable}\n ON {$cfTable}.custom_group_id = {$cgTable}.id\n WHERE ( 1 ) "; if (!$showAll) { $query .= " AND {$cfTable}.is_active = 1 AND {$cgTable}.is_active = 1 "; } if ($inline) { $query .= " AND {$cgTable}.style = 'Inline' "; } //get the custom fields for specific type in //combination with fields those support any type. if ($customDataSubType) { $customDataSubType = CRM_Core_DAO::VALUE_SEPARATOR . $customDataSubType . CRM_Core_DAO::VALUE_SEPARATOR; $query .= " AND ( {$cgTable}.extends_entity_column_value LIKE '%{$customDataSubType}%'"; if (!$onlySubType) { $query .= " OR {$cgTable}.extends_entity_column_value IS NULL"; } $query .= " )"; } if ($customDataSubName) { $query .= " AND ( {$cgTable}.extends_entity_column_id = {$customDataSubName} ) "; } // also get the permission stuff here require_once 'CRM/Core/Permission.php'; $permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, "{$cgTable}.", true); $query .= " {$extends} AND {$permissionClause}\n ORDER BY {$cgTable}.weight, {$cgTable}.title,\n {$cfTable}.weight, {$cfTable}.label"; $dao =& CRM_Core_DAO::executeQuery($query); $fields = array(); while ($dao->fetch() != null) { $fields[$dao->id]['label'] = $dao->label; $fields[$dao->id]['groupTitle'] = $dao->title; $fields[$dao->id]['data_type'] = $dao->data_type; $fields[$dao->id]['html_type'] = $dao->html_type; $fields[$dao->id]['options_per_line'] = $dao->options_per_line; $fields[$dao->id]['extends'] = $dao->extends; $fields[$dao->id]['is_search_range'] = $dao->is_search_range; $fields[$dao->id]['extends_entity_column_value'] = $dao->extends_entity_column_value; $fields[$dao->id]['extends_entity_column_id'] = $dao->extends_entity_column_id; $fields[$dao->id]['is_view'] = $dao->is_view; $fields[$dao->id]['is_multiple'] = $dao->is_multiple; $fields[$dao->id]['option_group_id'] = $dao->option_group_id; $fields[$dao->id]['date_format'] = $dao->date_format; $fields[$dao->id]['time_format'] = $dao->time_format; } CRM_Core_BAO_Cache::setItem($fields, 'contact fields', "custom importableFields {$cacheKey}"); } self::$_importFields[$cacheKey] = $fields; } return self::$_importFields[$cacheKey]; }
/** * @return array */ public static function getMultipleFieldGroup() { $multipleGroup = array(); $dao = new CRM_Core_DAO_CustomGroup(); $dao->is_multiple = 1; $dao->find(); while ($dao->fetch()) { $multipleGroup[$dao->id] = $dao->title; } return $multipleGroup; }
/** * class constructor */ function __construct() { parent::__construct(); }
function upgrade_3_3_alpha1($rev) { $config = CRM_Core_Config::singleton(); if ($config->userSystem->is_drupal) { // CRM-6426 - make civicrm profiles permissioned on drupal my account $config->userSystem->updateCategories(); } // CRM-6846 // insert name column for custom field table. // make sure name for custom field, group and // profile should be unique and properly munged. $colQuery = 'ALTER TABLE `civicrm_custom_field` ADD `name` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL AFTER `custom_group_id` '; CRM_Core_DAO::executeQuery($colQuery, CRM_Core_DAO::$_nullArray, TRUE, NULL, FALSE, FALSE); $customFldCntQuery = 'select count(*) from civicrm_custom_field where name like %1 and id != %2'; $customField = new CRM_Core_DAO_CustomField(); $customField->selectAdd(); $customField->selectAdd('id, label'); $customField->find(); while ($customField->fetch()) { $name = CRM_Utils_String::munge($customField->label, '_', 64); $fldCnt = CRM_Core_DAO::singleValueQuery($customFldCntQuery, array(1 => array($name, 'String'), 2 => array($customField->id, 'Integer')), TRUE, FALSE); if ($fldCnt) { $name = CRM_Utils_String::munge("{$name}_" . rand(), '_', 64); } $customFieldQuery = "\nUpdate `civicrm_custom_field`\nSET `name` = %1\nWHERE id = %2\n"; $customFieldParams = array(1 => array($name, 'String'), 2 => array($customField->id, 'Integer')); CRM_Core_DAO::executeQuery($customFieldQuery, $customFieldParams, TRUE, NULL, FALSE, FALSE); } $customField->free(); $customGrpCntQuery = 'select count(*) from civicrm_custom_group where name like %1 and id != %2'; $customGroup = new CRM_Core_DAO_CustomGroup(); $customGroup->selectAdd(); $customGroup->selectAdd('id, title'); $customGroup->find(); while ($customGroup->fetch()) { $name = CRM_Utils_String::munge($customGroup->title, '_', 64); $grpCnt = CRM_Core_DAO::singleValueQuery($customGrpCntQuery, array(1 => array($name, 'String'), 2 => array($customGroup->id, 'Integer'))); if ($grpCnt) { $name = CRM_Utils_String::munge("{$name}_" . rand(), '_', 64); } CRM_Core_DAO::setFieldValue('CRM_Core_DAO_CustomGroup', $customGroup->id, 'name', $name); } $customGroup->free(); $ufGrpCntQuery = 'select count(*) from civicrm_uf_group where name like %1 and id != %2'; $ufGroup = new CRM_Core_DAO_UFGroup(); $ufGroup->selectAdd(); $ufGroup->selectAdd('id, title'); $ufGroup->find(); while ($ufGroup->fetch()) { $name = CRM_Utils_String::munge($ufGroup->title, '_', 64); $ufGrpCnt = CRM_Core_DAO::singleValueQuery($ufGrpCntQuery, array(1 => array($name, 'String'), 2 => array($ufGroup->id, 'Integer'))); if ($ufGrpCnt) { $name = CRM_Utils_String::munge("{$name}_" . rand(), '_', 64); } CRM_Core_DAO::setFieldValue('CRM_Core_DAO_UFGroup', $ufGroup->id, 'name', $name); } $ufGroup->free(); $upgrade = new CRM_Upgrade_Form(); $upgrade->processSQL($rev); // now modify the config so that the directories are stored in option group/value // CRM-6914 // require_once 'CRM/Core/BAO/ConfigSetting.php'; // $params = array( ); // CRM_Core_BAO_ConfigSetting::add( $parambs ); }
public static function &getActiveGroups($entityType, $path, $cidToken = '%%cid%%') { // for Group's $customGroupDAO = new CRM_Core_DAO_CustomGroup(); // get only 'Tab' groups $customGroupDAO->whereAdd("style = 'Tab'"); $customGroupDAO->whereAdd("is_active = 1"); // add whereAdd for entity type self::_addWhereAdd($customGroupDAO, $entityType, $cidToken); $groups = array(); $permissionClause = CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, null, true); $customGroupDAO->whereAdd($permissionClause); // order by weight $customGroupDAO->orderBy('weight'); $customGroupDAO->find(); // process each group with menu tab while ($customGroupDAO->fetch()) { $group = array(); $group['id'] = $customGroupDAO->id; $group['path'] = $path; $group['title'] = "{$customGroupDAO->title}"; $group['query'] = "reset=1&gid={$customGroupDAO->id}&cid={$cidToken}"; $group['extra'] = array('gid' => $customGroupDAO->id); $group['table_name'] = $customGroupDAO->table_name; $groups[] = $group; } return $groups; }
/** * Move a custom data field from one group (table) to another * * @param int $fieldID * FK to civicrm_custom_field. * @param int $newGroupID * FK to civicrm_custom_group. * * @return void */ public static function moveField($fieldID, $newGroupID) { $validation = self::_moveFieldValidate($fieldID, $newGroupID); if (TRUE !== $validation) { CRM_Core_Error::fatal(implode(' ', $validation)); } $field = new CRM_Core_DAO_CustomField(); $field->id = $fieldID; $field->find(TRUE); $newGroup = new CRM_Core_DAO_CustomGroup(); $newGroup->id = $newGroupID; $newGroup->find(TRUE); $oldGroup = new CRM_Core_DAO_CustomGroup(); $oldGroup->id = $field->custom_group_id; $oldGroup->find(TRUE); $add = clone $field; $add->custom_group_id = $newGroup->id; self::createField($add, 'add'); $sql = "INSERT INTO {$newGroup->table_name} (entity_id, {$field->column_name})\n SELECT entity_id, {$field->column_name} FROM {$oldGroup->table_name}\n ON DUPLICATE KEY UPDATE {$field->column_name} = {$oldGroup->table_name}.{$field->column_name}\n "; CRM_Core_DAO::executeQuery($sql); $del = clone $field; $del->custom_group_id = $oldGroup->id; self::createField($del, 'delete'); $add->save(); CRM_Utils_System::flushCache(); }
/** * Store and return an array of all active custom fields. * * @param string $contactType Contact type * @param boolean $showAll If true returns all fields (includes disabled fields) * * @return array $fields - an array of active custom fields. * * @access public * @static */ function &getFields($contactType = 'Individual', $showAll = false) { if (!$GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'] || !CRM_Utils_Array::value($contactType, $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'])) { if (!$GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields']) { $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'] = array(); } $cfTable = CRM_Core_BAO_CustomField::getTableName(); $cgTable = CRM_Core_DAO_CustomGroup::getTableName(); $extends = ''; if ($contactType) { if (in_array($contactType, array('Individual', 'Household', 'Organization'))) { $value = "'" . CRM_Utils_Type::escape($contactType, 'String') . "', 'Contact' "; } else { $value = "'" . CRM_Utils_Type::escape($contactType, 'String') . "'"; } $extends = "AND {$cgTable}.extends IN ( {$value} ) "; } $query = "SELECT {$cfTable}.id, {$cfTable}.label,\n {$cgTable}.title,\n {$cfTable}.data_type, {$cfTable}.html_type,\n {$cfTable}.options_per_line,\n {$cgTable}.extends, {$cfTable}.is_search_range\n FROM {$cfTable}\n INNER JOIN {$cgTable}\n ON {$cfTable}.custom_group_id = {$cgTable}.id\n WHERE "; if (!$showAll) { $query .= "{$cfTable}.is_active = 1\n AND {$cgTable}.is_active = 1"; } else { $query .= " 1 "; } $query .= " {$extends}\n ORDER BY {$cgTable}.weight, {$cgTable}.title,\n {$cfTable}.weight, {$cfTable}.label"; $crmDAO =& new CRM_Core_DAO(); $crmDAO->query($query); $result = $crmDAO->getDatabaseResult(); $fields = array(); while (($row = $result->fetchRow()) != null) { $id = array_shift($row); $fields[$id] = $row; } $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'][$contactType] = $fields; } // CRM_Core_Error::debug( 's', self::$_importFields ); return $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'][$contactType]; }
public function postProcess() { // get the acl clauses built before we assemble the query $this->buildACLClause($this->_aliases['civicrm_contact']); $this->beginPostProcess(); // CRM-18312 - display soft_credits and soft_credits_for column // when 'Contribution or Soft Credit?' column is not selected if (empty($this->_params['fields']['contribution_or_soft'])) { $this->_params['fields']['contribution_or_soft'] = 1; $this->noDisplayContributionOrSoftColumn = TRUE; } if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'contributions_only' && !empty($this->_params['fields']['soft_credit_type_id'])) { unset($this->_params['fields']['soft_credit_type_id']); if (!empty($this->_params['soft_credit_type_id_value'])) { $this->_params['soft_credit_type_id_value'] = array(); } } // 1. use main contribution query to build temp table 1 $sql = $this->buildQuery(); $tempQuery = 'CREATE TEMPORARY TABLE civireport_contribution_detail_temp1 AS ' . $sql; CRM_Core_DAO::executeQuery($tempQuery); $this->setPager(); // 2. customize main contribution query for soft credit, and build temp table 2 with soft credit contributions only $this->from(TRUE); // also include custom group from if included // since this might be included in select $this->customDataFrom(); $select = str_ireplace('contribution_civireport.total_amount', 'contribution_soft_civireport.amount', $this->_select); $select = str_ireplace("'Contribution' as", "'Soft Credit' as", $select); // we inner join with temp1 to restrict soft contributions to those in temp1 table $sql = "{$select} {$this->_from} {$this->_where} {$this->_groupBy}"; $tempQuery = 'CREATE TEMPORARY TABLE civireport_contribution_detail_temp2 AS ' . $sql; CRM_Core_DAO::executeQuery($tempQuery); if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'soft_credits_only') { // revise pager : prev, next based on soft-credits only $this->setPager(); } // copy _from for later use of stats calculation for soft credits, and reset $this->_from to main query $this->_softFrom = $this->_from; // simple reset of ->_from $this->from(); // also include custom group from if included // since this might be included in select $this->customDataFrom(); // 3. Decide where to populate temp3 table from if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'contributions_only') { $tempQuery = "(SELECT * FROM civireport_contribution_detail_temp1)"; } elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'soft_credits_only') { $tempQuery = "(SELECT * FROM civireport_contribution_detail_temp2)"; } else { $tempQuery = "\n(SELECT * FROM civireport_contribution_detail_temp1)\nUNION ALL\n(SELECT * FROM civireport_contribution_detail_temp2)"; } // 4. build temp table 3 $sql = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp3 AS {$tempQuery}"; CRM_Core_DAO::executeQuery($sql); // 5. Re-construct order-by to make sense for final query on temp3 table $orderBy = ''; if (!empty($this->_orderByArray)) { $aliases = array_flip($this->_aliases); $orderClause = array(); foreach ($this->_orderByArray as $clause) { list($alias, $rest) = explode('.', $clause); // CRM-17280 -- In case, we are ordering by custom fields // modify $rest to match the alias used for them in temp3 table $grp = new CRM_Core_DAO_CustomGroup(); $grp->table_name = $aliases[$alias]; if ($grp->find()) { list($fld, $order) = explode(' ', $rest); foreach ($this->_columns[$aliases[$alias]]['fields'] as $fldName => $value) { if ($value['name'] == $fld) { $fld = $fldName; } } $rest = "{$fld} {$order}"; } $orderClause[] = $aliases[$alias] . "_" . $rest; } $orderBy = !empty($orderClause) ? "ORDER BY " . implode(', ', $orderClause) : ''; } // 6. show result set from temp table 3 $rows = array(); $sql = "SELECT * FROM civireport_contribution_detail_temp3 {$orderBy}"; $this->buildRows($sql, $rows); // format result set. $this->formatDisplay($rows, FALSE); // assign variables to templates $this->doTemplateAssignment($rows); // do print / pdf / instance stuff if needed $this->endPostProcess($rows); }
/** * Delete Contact SubTypes. * * @param int $contactTypeId * ID of the Contact Subtype to be deleted. * * @return bool */ public static function del($contactTypeId) { if (!$contactTypeId) { return FALSE; } $params = array('id' => $contactTypeId); self::retrieve($params, $typeInfo); $name = $typeInfo['name']; // check if any custom group $custom = new CRM_Core_DAO_CustomGroup(); $custom->whereAdd("extends_entity_column_value LIKE '%" . CRM_Core_DAO::VALUE_SEPARATOR . $name . CRM_Core_DAO::VALUE_SEPARATOR . "%'"); if ($custom->find()) { return FALSE; } // remove subtype for existing contacts $sql = "\nUPDATE civicrm_contact SET contact_sub_type = NULL\nWHERE contact_sub_type = '{$name}'"; CRM_Core_DAO::executeQuery($sql); // remove subtype from contact type table $contactType = new CRM_Contact_DAO_ContactType(); $contactType->id = $contactTypeId; $contactType->delete(); // remove navigation entry if any if ($name) { $sql = "\nDELETE\nFROM civicrm_navigation\nWHERE name = %1"; $params = array(1 => array("New {$name}", 'String')); $dao = CRM_Core_DAO::executeQuery($sql, $params); CRM_Core_BAO_Navigation::resetNavigation(); } return TRUE; }
/** * Browse all custom data groups. * * @param string $action the action to be invoked * * @return void * @access public */ function browse($action = null) { // get all custom groups sorted by weight $customGroup = array(); $dao =& new CRM_Core_DAO_CustomGroup(); // set the domain_id parameter $config =& CRM_Core_Config::singleton(); $dao->domain_id = $config->domainID(); $dao->orderBy('weight, title'); $dao->find(); while ($dao->fetch()) { $customGroup[$dao->id] = array(); CRM_Core_DAO::storeValues($dao, $customGroup[$dao->id]); // form all action links $action = array_sum(array_keys($this->actionLinks())); // update enable/disable links depending on custom_group properties. if ($dao->is_active) { $action -= CRM_CORE_ACTION_ENABLE; } else { $action -= CRM_CORE_ACTION_DISABLE; } $customGroup[$dao->id]['action'] = CRM_Core_Action::formLink(CRM_Custom_Page_Group::actionLinks(), $action, array('id' => $dao->id)); } $customGroupExtends = CRM_Core_SelectValues::customGroupExtends(); foreach ($customGroup as $key => $array) { CRM_Core_DAO_CustomGroup::addDisplayEnums($customGroup[$key]); $customGroup[$key]['extends_display'] = $customGroupExtends[$customGroup[$key]['extends']]; } $this->assign('rows', $customGroup); }
/** * Use this API to delete an existing group. * * @param array id of the group to be deleted * * @return Null if success * @access public **/ function civicrm_custom_group_delete($params) { _civicrm_initialize(); if (!is_array($params)) { return civicrm_create_error('Params is not an array'); } if (!CRM_Utils_Array::value('id', $params)) { return civicrm_create_error('Invalid or no value for Custom group ID'); } // convert params array into Object require_once 'CRM/Core/DAO/CustomGroup.php'; $values = new CRM_Core_DAO_CustomGroup(); $values->id = $params['id']; $values->find(true); require_once 'CRM/Core/BAO/CustomGroup.php'; $result = CRM_Core_BAO_CustomGroup::deleteGroup($values); return $result ? civicrm_create_success() : civicrm_error('Error while deleting custom group'); }
/** * Browse all custom data groups. * * @param string $action the action to be invoked * * @return void * @access public */ function browse($action = NULL) { // get all custom groups sorted by weight $customGroup = array(); $dao = new CRM_Core_DAO_CustomGroup(); $dao->orderBy('weight, title'); $dao->find(); while ($dao->fetch()) { $customGroup[$dao->id] = array(); CRM_Core_DAO::storeValues($dao, $customGroup[$dao->id]); // form all action links $action = array_sum(array_keys($this->actionLinks())); // update enable/disable links depending on custom_group properties. if ($dao->is_active) { $action -= CRM_Core_Action::ENABLE; } else { $action -= CRM_Core_Action::DISABLE; } $customGroup[$dao->id]['order'] = $customGroup[$dao->id]['weight']; $customGroup[$dao->id]['action'] = CRM_Core_Action::formLink(self::actionLinks(), $action, array('id' => $dao->id)); } $customGroupExtends = CRM_Core_SelectValues::customGroupExtends(); foreach ($customGroup as $key => $array) { CRM_Core_DAO_CustomGroup::addDisplayEnums($customGroup[$key]); $customGroup[$key]['extends_display'] = $customGroupExtends[$customGroup[$key]['extends']]; } //fix for Displaying subTypes $subTypes = array(); $subTypes['Activity'] = CRM_Core_PseudoConstant::activityType(FALSE, TRUE, FALSE, 'label', TRUE); $subTypes['Contribution'] = CRM_Contribute_PseudoConstant::contributionType(); $subTypes['Membership'] = CRM_Member_BAO_MembershipType::getMembershipTypes(FALSE); $subTypes['Event'] = CRM_Core_OptionGroup::values('event_type'); $subTypes['Grant'] = CRM_Core_OptionGroup::values('grant_type'); $subTypes['Campaign'] = CRM_Campaign_PseudoConstant::campaignType(); $subTypes['Participant'] = array(); $subTypes['ParticipantRole'] = CRM_Core_OptionGroup::values('participant_role'); $subTypes['ParticipantEventName'] = CRM_Event_PseudoConstant::event(); $subTypes['ParticipantEventType'] = CRM_Core_OptionGroup::values('event_type'); $subTypes['Individual'] = CRM_Contact_BAO_ContactType::subTypePairs('Individual', FALSE, NULL); $subTypes['Household'] = CRM_Contact_BAO_ContactType::subTypePairs('Household', FALSE, NULL); $subTypes['Organization'] = CRM_Contact_BAO_ContactType::subTypePairs('Organization', FALSE, NULL); $relTypeInd = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, 'null', NULL, 'Individual'); $relTypeOrg = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, 'null', NULL, 'Organization'); $relTypeHou = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, 'null', NULL, 'Household'); $allRelationshipType = array(); $allRelationshipType = array_merge($relTypeInd, $relTypeOrg); $allRelationshipType = array_merge($allRelationshipType, $relTypeHou); //adding subtype specific relationships CRM-5256 $relSubType = CRM_Contact_BAO_ContactType::subTypeInfo(); foreach ($relSubType as $subType => $val) { $subTypeRelationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, $val['parent'], FALSE, 'label', TRUE, $subType); $allRelationshipType = array_merge($allRelationshipType, $subTypeRelationshipTypes); } $subTypes['Relationship'] = $allRelationshipType; $cSubTypes = CRM_Core_Component::contactSubTypes(); $contactSubTypes = array(); foreach ($cSubTypes as $key => $value) { $contactSubTypes[$key] = $key; } $subTypes['Contact'] = $contactSubTypes; CRM_Core_BAO_CustomGroup::getExtendedObjectTypes($subTypes); foreach ($customGroup as $key => $values) { $subValue = CRM_Utils_Array::value('extends_entity_column_value', $customGroup[$key]); $subName = CRM_Utils_Array::value('extends_entity_column_id', $customGroup[$key]); $type = CRM_Utils_Array::value('extends', $customGroup[$key]); if ($subValue) { $subValue = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($subValue, 1, -1)); $colValue = NULL; foreach ($subValue as $sub) { if ($sub) { if ($type == 'Participant') { if ($subName == 1) { $colValue = $colValue ? $colValue . ', ' . $subTypes['ParticipantRole'][$sub] : $subTypes['ParticipantRole'][$sub]; } elseif ($subName == 2) { $colValue = $colValue ? $colValue . ', ' . $subTypes['ParticipantEventName'][$sub] : $subTypes['ParticipantEventName'][$sub]; } elseif ($subName == 3) { $colValue = $colValue ? $colValue . ', ' . $subTypes['ParticipantEventType'][$sub] : $subTypes['ParticipantEventType'][$sub]; } } elseif ($type == 'Relationship') { $colValue = $colValue ? $colValue . ', ' . $subTypes[$type][$sub . '_a_b'] : $subTypes[$type][$sub . '_a_b']; if (isset($subTypes[$type][$sub . '_b_a'])) { $colValue = $colValue ? $colValue . ', ' . $subTypes[$type][$sub . '_b_a'] : $subTypes[$type][$sub . '_b_a']; } } else { $colValue = $colValue ? $colValue . (isset($subTypes[$type][$sub]) ? ', ' . $subTypes[$type][$sub] : '') : (isset($subTypes[$type][$sub]) ? $subTypes[$type][$sub] : ''); } } } $customGroup[$key]["extends_entity_column_value"] = $colValue; } else { if (is_array(CRM_Utils_Array::value($type, $subTypes))) { $customGroup[$key]["extends_entity_column_value"] = ts("Any"); } } } $returnURL = CRM_Utils_System::url('civicrm/admin/custom/group', "reset=1&action=browse"); CRM_Utils_Weight::addOrder($customGroup, 'CRM_Core_DAO_CustomGroup', 'id', $returnURL); $this->assign('rows', $customGroup); }
/** * class constructor */ function CRM_Core_BAO_CustomGroup() { parent::CRM_Core_DAO_CustomGroup(); }
/** * adds $value['foo_display'] for each $value['foo'] enum from civicrm_custom_group * * @param array $values (reference) the array up for enhancing * @return void */ static function addDisplayEnums(&$values) { $enumFields =& CRM_Core_DAO_CustomGroup::getEnums(); foreach ($enumFields as $enum) { if (isset($values[$enum])) { $values[$enum . '_display'] = CRM_Core_DAO_CustomGroup::tsEnum($enum, $values[$enum]); } } }
/** * Returns the list of fields that can be exported * * @param bool $prefix * * @return array */ static function &export($prefix = false) { if (!self::$_export) { self::$_export = array(); $fields = self::fields(); foreach ($fields as $name => $field) { if (CRM_Utils_Array::value('export', $field)) { if ($prefix) { self::$_export['custom_group'] =& $fields[$name]; } else { self::$_export[$name] =& $fields[$name]; } } } } return self::$_export; }