/** * Process the form submission. */ public function postProcess() { CRM_Utils_System::flushCache('CRM_Core_DAO_LocationType'); if ($this->_action & CRM_Core_Action::DELETE) { CRM_Core_BAO_LocationType::del($this->_id); CRM_Core_Session::setStatus(ts('Selected Location type has been deleted.'), ts('Record Deleted'), 'success'); return; } // store the submitted values in an array $params = $this->exportValues(); $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); // action is taken depending upon the mode $locationType = new CRM_Core_DAO_LocationType(); $locationType->name = $params['name']; $locationType->display_name = $params['display_name']; $locationType->vcard_name = $params['vcard_name']; $locationType->description = $params['description']; $locationType->is_active = $params['is_active']; $locationType->is_default = $params['is_default']; if ($params['is_default']) { $query = "UPDATE civicrm_location_type SET is_default = 0"; CRM_Core_DAO::executeQuery($query); } if ($this->_action & CRM_Core_Action::UPDATE) { $locationType->id = $this->_id; } $locationType->save(); CRM_Core_Session::setStatus(ts("The location type '%1' has been saved.", array(1 => $locationType->name)), ts('Saved'), 'success'); }
/** * class constructor */ function __construct() { parent::__construct(); }
/** * returns all the rows in the given offset and rowCount * * @param enum $action the action being performed * @param int $offset the row number to start from * @param int $rowCount the number of rows to return * @param string $sort the sql string that describes the sort order * @param enum $output what should the result set include (web/email/csv) * * @return int the total number of rows for this action */ function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { $multipleFields = array('url'); //$sort object processing for location fields if ($sort) { $vars = $sort->_vars; $varArray = array(); foreach ($vars as $key => $field) { $field = $vars[$key]; $fieldArray = explode('-', $field['name']); $fieldType = CRM_Utils_Array::value('2', $fieldArray); if (is_numeric(CRM_Utils_Array::value('1', $fieldArray))) { if (!in_array($fieldType, $multipleFields)) { $locationType = new CRM_Core_DAO_LocationType(); $locationType->id = $fieldArray[1]; $locationType->find(TRUE); if ($fieldArray[0] == 'email' || $fieldArray[0] == 'im' || $fieldArray[0] == 'phone') { $field['name'] = "`" . $locationType->name . "-" . $fieldArray[0] . "-1`"; } else { $field['name'] = "`" . $locationType->name . "-" . $fieldArray[0] . "`"; } } else { $field['name'] = "`website-" . $fieldArray[1] . "-{$fieldType}`"; } } $varArray[$key] = $field; } $sort->_vars = $varArray; } $additionalWhereClause = 'contact_a.is_deleted = 0'; $returnQuery = NULL; if ($this->_multiRecordTableName) { $returnQuery = TRUE; } $result = $this->_query->searchQuery($offset, $rowCount, $sort, NULL, NULL, NULL, NULL, $returnQuery, $additionalWhereClause); if ($returnQuery) { $resQuery = preg_replace('/GROUP BY contact_a.id[\\s]+ORDER BY/', ' ORDER BY', $result); $result = CRM_Core_DAO::executeQuery($resQuery); } // process the result of the query $rows = array(); // check if edit is configured in profile settings if ($this->_gid) { $editLink = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_gid, 'is_edit_link'); } //FIXME : make sure to handle delete separately. CRM-4418 $mask = CRM_Core_Action::mask(array(CRM_Core_Permission::getPermission())); if ($editLink && $mask & CRM_Core_Permission::EDIT) { // do not allow edit for anon users in joomla frontend, CRM-4668 $config = CRM_Core_Config::singleton(); if (!$config->userFrameworkFrontend) { $this->_editLink = TRUE; } } $links = self::links($this->_map, $this->_editLink, $this->_linkToUF, $this->_profileIds); $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'); $names = array(); static $skipFields = array('group', 'tag'); foreach ($this->_fields as $key => $field) { // skip pseudo fields if (substr($key, 0, 9) == 'phone_ext') { continue; } if (!empty($field['in_selector']) && !in_array($key, $skipFields)) { if (strpos($key, '-') !== FALSE) { $value = explode('-', $key); $fieldName = CRM_Utils_Array::value(0, $value); $id = CRM_Utils_Array::value(1, $value); $type = CRM_Utils_Array::value(2, $value); if (!in_array($fieldName, $multipleFields)) { $locationTypeName = NULL; if (is_numeric($id)) { $locationTypeName = CRM_Utils_Array::value($id, $locationTypes); } else { if ($id == 'Primary') { $locationTypeName = 1; } } if (!$locationTypeName) { continue; } $locationTypeName = str_replace(' ', '_', $locationTypeName); if (in_array($fieldName, array('phone', 'im', 'email'))) { if ($type) { $names[] = "{$locationTypeName}-{$fieldName}-{$type}"; } else { $names[] = "{$locationTypeName}-{$fieldName}"; } } else { $names[] = "{$locationTypeName}-{$fieldName}"; } } else { $names[] = "website-{$id}-{$fieldName}"; } } elseif ($field['name'] == 'id') { $names[] = 'contact_id'; } else { $names[] = $field['name']; } } } $multipleSelectFields = array('preferred_communication_method' => 1); $multiRecordTableId = NULL; if ($this->_multiRecordTableName) { $multiRecordTableId = "{$this->_multiRecordTableName}_id"; } // we need to determine of overlay profile should be shown $showProfileOverlay = CRM_Core_BAO_UFGroup::showOverlayProfile(); while ($result->fetch()) { $this->_query->convertToPseudoNames($result); if (isset($result->country)) { // the query returns the untranslated country name $i18n = CRM_Core_I18n::singleton(); $result->country = $i18n->translate($result->country); } $row = array(); $empty = TRUE; $row[] = CRM_Contact_BAO_Contact_Utils::getImage($result->contact_sub_type ? $result->contact_sub_type : $result->contact_type, FALSE, $result->contact_id, $showProfileOverlay); if ($result->sort_name) { $row[] = $result->sort_name; $empty = FALSE; } else { continue; } foreach ($names as $name) { if ($cfID = CRM_Core_BAO_CustomField::getKeyID($name)) { $row[] = CRM_Core_BAO_CustomField::getDisplayValue($result->{$name}, $cfID, $this->_options, $result->contact_id); } elseif (substr($name, -4) == '-url' && !empty($result->{$name})) { $url = CRM_Utils_System::fixURL($result->{$name}); $typeId = substr($name, 0, -4) . "-website_type_id"; $typeName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Website', 'website_type_id', $result->{$typeId}); if ($typeName) { $row[] = "<a href=\"{$url}\">{$result->{$name}} ({$typeName})</a>"; } else { $row[] = "<a href=\"{$url}\">{$result->{$name}}</a>"; } } elseif ($name == 'preferred_language') { $row[] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'preferred_language', $result->{$name}); } elseif ($multipleSelectFields && array_key_exists($name, $multipleSelectFields)) { $paramsNew = array($name => $result->{$name}); $name = array($name => array('newName' => $name, 'groupName' => $name)); CRM_Core_OptionGroup::lookupValues($paramsNew, $name, FALSE); $row[] = $paramsNew[$key]; } elseif (strpos($name, '-im')) { if (!empty($result->{$name})) { $providerId = $name . "-provider_id"; $providerName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $result->{$providerId}); $row[] = $result->{$name} . " ({$providerName})"; } else { $row[] = ''; } } elseif (strpos($name, '-phone-')) { $phoneExtField = str_replace('phone', 'phone_ext', $name); if (isset($result->{$phoneExtField})) { $row[] = $result->{$name} . " (" . $result->{$phoneExtField} . ")"; } else { $row[] = $result->{$name}; } } elseif (in_array($name, array('addressee', 'email_greeting', 'postal_greeting'))) { $dname = $name . '_display'; $row[] = $result->{$dname}; } elseif (in_array($name, array('birth_date', 'deceased_date'))) { $row[] = CRM_Utils_Date::customFormat($result->{$name}); } elseif (isset($result->{$name})) { $row[] = $result->{$name}; } else { $row[] = ''; } if (!empty($result->{$name})) { $empty = FALSE; } } $newLinks = $links; $params = array('id' => $result->contact_id, 'gid' => implode(',', $this->_profileIds)); // pass record id param to view url for multi record view if ($multiRecordTableId && $newLinks) { if ($result->{$multiRecordTableId}) { if ($newLinks[CRM_Core_Action::VIEW]['url'] == 'civicrm/profile/view') { $newLinks[CRM_Core_Action::VIEW]['qs'] .= "&multiRecord=view&recordId=%%recordId%%&allFields=1"; $params['recordId'] = $result->{$multiRecordTableId}; } } } if ($this->_linkToUF) { $ufID = CRM_Core_BAO_UFMatch::getUFId($result->contact_id); if (!$ufID) { unset($newLinks[CRM_Core_Action::PROFILE]); } else { $params['ufID'] = $ufID; } } $row[] = CRM_Core_Action::formLink($newLinks, $mask, $params, ts('more'), FALSE, 'profile.selector.row', 'Contact', $result->contact_id); if (!$empty) { $rows[] = $row; } } return $rows; }
/** * Delete a Location Type. * * @param int $locationTypeId */ public function locationTypeDelete($locationTypeId) { $locationType = new CRM_Core_DAO_LocationType(); $locationType->id = $locationTypeId; $locationType->delete(); }
/** * 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['location_type'] =& $fields[$name]; } else { self::$_export[$name] =& $fields[$name]; } } } } return self::$_export; }
/** * Function to delete location Types * * @param int $locationTypeId ID of the location type to be deleted. * * @access public * @static */ static function del($locationTypeId) { $entity = array('address', 'phone', 'email', 'im'); //check dependencies foreach ($entity as $key) { if ($key == 'im') { $name = strtoupper($key); } else { $name = ucfirst($key); } require_once str_replace('_', DIRECTORY_SEPARATOR, 'CRM_Core_DAO_' . $name) . ".php"; eval('$object = new CRM_Core_DAO_' . $name . '( );'); $object->location_type_id = $locationTypeId; $object->delete(); } $locationType = new CRM_Core_DAO_LocationType(); $locationType->id = $locationTypeId; $locationType->delete(); }
/** * Delete location Types. * * @param int $locationTypeId * ID of the location type to be deleted. * */ public static function del($locationTypeId) { $entity = array('address', 'phone', 'email', 'im'); //check dependencies foreach ($entity as $key) { if ($key == 'im') { $name = strtoupper($key); } else { $name = ucfirst($key); } $baoString = 'CRM_Core_BAO_' . $name; $object = new $baoString(); $object->location_type_id = $locationTypeId; $object->delete(); } $locationType = new CRM_Core_DAO_LocationType(); $locationType->id = $locationTypeId; $locationType->delete(); }
/** * class constructor */ function CRM_Core_BAO_LocationType() { parent::CRM_Core_DAO_LocationType(); }
/** * * @param <type> $contact * @return <type> */ function _civicrm_location_delete(&$contact) { require_once 'CRM/Core/DAO/LocationType.php'; $locationTypeDAO = new CRM_Core_DAO_LocationType(); $locationTypeDAO->id = $contact['location_type']; if (!$locationTypeDAO->find()) { return civicrm_create_error(ts('invalid location type')); } require_once 'CRM/Core/BAO/Location.php'; CRM_Core_BAO_Location::deleteLocationBlocks($contact['contact_id'], $contact['location_type']); return null; }
/** * returns the list of fields that can be exported * * @access public * return array */ function &export($prefix = false) { if (!$GLOBALS['_CRM_CORE_DAO_LOCATIONTYPE']['_export']) { $GLOBALS['_CRM_CORE_DAO_LOCATIONTYPE']['_export'] = array(); $fields =& CRM_Core_DAO_LocationType::fields(); foreach ($fields as $name => $field) { if (CRM_Utils_Array::value('export', $field)) { if ($prefix) { $GLOBALS['_CRM_CORE_DAO_LOCATIONTYPE']['_export']['location_type'] =& $fields[$name]; } else { $GLOBALS['_CRM_CORE_DAO_LOCATIONTYPE']['_export'][$name] =& $fields[$name]; } } } } return $GLOBALS['_CRM_CORE_DAO_LOCATIONTYPE']['_export']; }