X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FProfile%2FForm.php;h=cf276a1c374b9e15d1361a6f229ec24dc3954d5f;hb=a4f7ae9b41ac15462ad7b80958f4bb170415bd94;hp=3bcc0e73d9eb8bf12bc47d5d537886580afcc1a3;hpb=6049c0d89e4b18c81cea8108acc71ba6bdc3ba85;p=civicrm-core.git diff --git a/CRM/Profile/Form.php b/CRM/Profile/Form.php index 3bcc0e73d9..cf276a1c37 100644 --- a/CRM/Profile/Form.php +++ b/CRM/Profile/Form.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -23,12 +23,12 @@ | GNU Affero General Public License or the licensing of CiviCRM, | | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ -*/ + */ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2014 + * @copyright CiviCRM LLC (c) 2004-2015 * $Id$ * */ @@ -44,23 +44,23 @@ class CRM_Profile_Form extends CRM_Core_Form { const MODE_REGISTER = 1, - MODE_SEARCH = 2, - MODE_CREATE = 4, - MODE_EDIT = 8; + MODE_SEARCH = 2, + MODE_CREATE = 4, + MODE_EDIT = 8; protected $_mode; protected $_skipPermission = FALSE; /** - * The contact id that we are editing + * The contact id that we are editing. * * @var int */ protected $_id; /** - * The group id that we are editing + * The group id that we are editing. * * @var int */ @@ -72,45 +72,51 @@ class CRM_Profile_Form extends CRM_Core_Form { protected $_ufGroup = array('name' => 'unknown'); /** - * The group id that we are passing in url + * The group id that we are passing in url. * * @var int */ public $_grid; /** - * Name of button for saving matching contacts + * Name of button for saving matching contacts. * @var */ protected $_duplicateButtonName; /** - * The title of the category we are editing + * The title of the category we are editing. * * @var string */ protected $_title; /** - * The fields needed to build this form + * The fields needed to build this form. * * @var array */ public $_fields; /** - * To store contact details + * store contact details. * * @var array */ protected $_contact; /** - * Do we allow updates of the contact + * Do we allow updates of the contact. * * @var int */ public $_isUpdateDupe = 0; + /** + * Dedupe using a specific rule (CRM-6131). + * Not currently exposed in profile settings, but can be set in a buildForm hook. + */ + public $_ruleGroupID = NULL; + public $_isAddCaptcha = FALSE; protected $_isPermissionedChecksum = FALSE; @@ -123,7 +129,7 @@ class CRM_Profile_Form extends CRM_Core_Form { protected $_context; /** - * THe contact type for registration case + * THe contact type for registration case. * * @var string */ @@ -145,7 +151,7 @@ class CRM_Profile_Form extends CRM_Core_Form { protected $_isContactActivityProfile = FALSE; /** - * Activity Id connected to the profile + * Activity Id connected to the profile. * * @var string */ @@ -174,7 +180,7 @@ class CRM_Profile_Form extends CRM_Core_Form { protected $_customGroupId = NULL; protected $_currentUserID = NULL; - protected $_session = NULL; + protected $_session = NULL; /** * Pre processing work done here. @@ -184,13 +190,12 @@ class CRM_Profile_Form extends CRM_Core_Form { * @param * * @return void - * */ public function preProcess() { - $this->_id = $this->get('id'); + $this->_id = $this->get('id'); $this->_profileIds = $this->get('profileIds'); - $this->_grid = CRM_Utils_Request::retrieve('grid', 'Integer', $this); - $this->_context = CRM_Utils_Request::retrieve('context', 'String', $this); + $this->_grid = CRM_Utils_Request::retrieve('grid', 'Integer', $this); + $this->_context = CRM_Utils_Request::retrieve('context', 'String', $this); //unset from session when $_GET doesn't have it //except when the form is submitted @@ -215,7 +220,8 @@ class CRM_Profile_Form extends CRM_Core_Form { } if ($this->_multiRecord && - !in_array($this->_multiRecord, array(CRM_Core_Action::UPDATE, CRM_Core_Action::ADD, CRM_Core_Action::DELETE))) { + !in_array($this->_multiRecord, array(CRM_Core_Action::UPDATE, CRM_Core_Action::ADD, CRM_Core_Action::DELETE)) + ) { CRM_Core_Error::fatal(ts('Proper action not specified for this custom value record profile')); } } @@ -316,7 +322,8 @@ class CRM_Profile_Form extends CRM_Core_Form { } //record id is neccessary for _multiRecord view and update/edit action if (!$this->_recordId - && ($this->_multiRecord == CRM_Core_Action::UPDATE || $this->_multiRecord == CRM_Core_Action::DELETE)) { + && ($this->_multiRecord == CRM_Core_Action::UPDATE || $this->_multiRecord == CRM_Core_Action::DELETE) + ) { CRM_Core_Error::fatal(ts('The requested Profile (gid=%1) requires record id while performing this action', array(1 => $this->_gid) )); @@ -358,7 +365,11 @@ class CRM_Profile_Form extends CRM_Core_Form { } elseif (!empty($this->_multiRecordFields) - && (!$this->_multiRecord || !in_array($this->_multiRecord, array(CRM_Core_Action::DELETE, CRM_Core_Action::UPDATE)))) { + && (!$this->_multiRecord || !in_array($this->_multiRecord, array( + CRM_Core_Action::DELETE, + CRM_Core_Action::UPDATE, + ))) + ) { CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'js/crm.livePage.js', 1, 'html-header'); //multirecord listing page $multiRecordFieldListing = TRUE; @@ -487,8 +498,8 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($htmlType == 'File') { $entityId = $this->_id; if (CRM_Utils_Array::value('field_type', $field) == 'Activity' && - $this->_activityId - ) { + $this->_activityId + ) { $entityId = $this->_activityId; } $url = CRM_Core_BAO_CustomField::getFileURL($entityId, $key); @@ -497,10 +508,10 @@ class CRM_Profile_Form extends CRM_Core_Form { $customFiles[$name]['displayURL'] = ts("Attached File") . ": {$url['file_url']}"; $deleteExtra = ts("Are you sure you want to delete attached file?"); - $fileId = $url['file_id']; - $deleteURL = CRM_Utils_System::url('civicrm/file', - "reset=1&id={$fileId}&eid=$entityId&fid={$key}&action=delete" - ); + $fileId = $url['file_id']; + $deleteURL = CRM_Utils_System::url('civicrm/file', + "reset=1&id={$fileId}&eid=$entityId&fid={$key}&action=delete" + ); $text = ts("Delete Attached File"); $customFiles[$field['name']]['deleteURL'] = "$text"; @@ -516,8 +527,8 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) { $htmlType = $field['html_type']; if ((!isset($this->_defaults[$name]) || $htmlType == 'File') && - (CRM_Utils_Array::value('field_type', $field) != 'Activity') - ) { + (CRM_Utils_Array::value('field_type', $field) != 'Activity') + ) { CRM_Core_BAO_CustomField::setProfileDefaults($customFieldID, $name, $this->_defaults, @@ -537,9 +548,9 @@ class CRM_Profile_Form extends CRM_Core_Form { $customFiles[$field['name']]['displayURL'] = ts("Attached File") . ": {$url['file_url']}"; $deleteExtra = ts("Are you sure you want to delete attached file?"); - $fileId = $url['file_id']; - $deleteURL = CRM_Utils_System::url('civicrm/file', - "reset=1&id={$fileId}&eid=$entityId&fid={$customFieldID}&action=delete" + $fileId = $url['file_id']; + $deleteURL = CRM_Utils_System::url('civicrm/file', + "reset=1&id={$fileId}&eid=$entityId&fid={$customFieldID}&action=delete" ); $text = ts("Delete Attached File"); $customFiles[$field['name']]['deleteURL'] = "$text"; @@ -583,7 +594,7 @@ class CRM_Profile_Form extends CRM_Core_Form { } /** - * Build the form object + * Build the form object. * * @return void */ @@ -644,7 +655,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($this->_id) { $contactTypes = CRM_Contact_BAO_Contact::getContactTypes($this->_id); - $contactType = $contactTypes[0]; + $contactType = $contactTypes[0]; array_shift($contactTypes); $contactSubtypes = $contactTypes; @@ -662,18 +673,17 @@ class CRM_Profile_Form extends CRM_Core_Form { ) { $return = TRUE; if (!$statusMessage) { - $statusMessage = - ts("This profile is configured for contact type '%1'. It cannot be used to edit contacts of other types.", + $statusMessage = ts("This profile is configured for contact type '%1'. It cannot be used to edit contacts of other types.", array(1 => $profileSubType ? $profileSubType : $profileType)); } } } if ( - in_array( - $profileType, - array("Membership", "Participant", "Contribution") - ) + in_array( + $profileType, + array("Membership", "Participant", "Contribution") + ) ) { $return = TRUE; if (!$statusMessage) { @@ -724,7 +734,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if (!$this->_currentUserID) { $defaultLocationType = CRM_Core_BAO_LocationType::getDefault(); $primaryLocationType = $defaultLocationType->id; - $anonUser = TRUE; + $anonUser = TRUE; } $this->assign('anonUser', $anonUser); @@ -832,7 +842,7 @@ class CRM_Profile_Form extends CRM_Core_Form { } /** - * Validate profile and provided activity Id + * Validate profile and provided activity Id. * * @param int $activityId * @param int $contactId @@ -872,7 +882,7 @@ class CRM_Profile_Form extends CRM_Core_Form { } /** - * Global form rule + * Global form rule. * * @param array $fields * The input form values. @@ -881,8 +891,8 @@ class CRM_Profile_Form extends CRM_Core_Form { * @param CRM_Core_Form $form * The form object. * - * @return true if no errors, else array of errors - * @static + * @return bool|array + * true if no errors, else array of errors */ public static function formRule($fields, $files, $form) { CRM_Utils_Hook::validateProfile($form->_ufGroup['name']); @@ -942,7 +952,8 @@ class CRM_Profile_Form extends CRM_Core_Form { $ids = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $ctype, $ruleType, - $exceptions + $exceptions, + $form->_ruleGroupID ); if ($ids) { if ($form->_isUpdateDupe == 2) { @@ -958,17 +969,26 @@ class CRM_Profile_Form extends CRM_Core_Form { $contactLinks = CRM_Contact_BAO_Contact_Utils::formatContactIDSToLinks($ids, TRUE, TRUE); $duplicateContactsLinks = '
'; - $duplicateContactsLinks .= ts('One matching contact was found. ', array('count' => count($contactLinks['rows']), 'plural' => '%count matching contacts were found.
')); + $duplicateContactsLinks .= ts('One matching contact was found. ', array( + 'count' => count($contactLinks['rows']), + 'plural' => '%count matching contacts were found.
', + )); if ($contactLinks['msg'] == 'view') { - $duplicateContactsLinks .= ts('You can View the existing contact.', array('count' => count($contactLinks['rows']), 'plural' => 'You can View the existing contacts.')); + $duplicateContactsLinks .= ts('You can View the existing contact.', array( + 'count' => count($contactLinks['rows']), + 'plural' => 'You can View the existing contacts.', + )); } else { - $duplicateContactsLinks .= ts('You can View or Edit the existing contact.', array('count' => count($contactLinks['rows']), 'plural' => 'You can View or Edit the existing contacts.')); + $duplicateContactsLinks .= ts('You can View or Edit the existing contact.', array( + 'count' => count($contactLinks['rows']), + 'plural' => 'You can View or Edit the existing contacts.', + )); } $duplicateContactsLinks .= '
'; $duplicateContactsLinks .= ''; $row = ''; - for ($i = 0; $i < sizeof($contactLinks['rows']); $i++) { + for ($i = 0; $i < count($contactLinks['rows']); $i++) { $row .= ' '; $row .= '
'; $row .= $contactLinks['rows'][$i]['display_name']; @@ -1014,8 +1034,8 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($stateProvinceDAO->country_id != $countryId) { // country mismatch hence display error $stateProvinces = CRM_Core_PseudoConstant::stateProvince(); - $countries = CRM_Core_PseudoConstant::country(); - $errors[$key] = "State/Province " . $stateProvinces[$stateProvinceId] . " is not part of " . $countries[$countryId] . ". It belongs to " . $countries[$stateProvinceDAO->country_id] . "."; + $countries = CRM_Core_PseudoConstant::country(); + $errors[$key] = "State/Province " . $stateProvinces[$stateProvinceId] . " is not part of " . $countries[$countryId] . ". It belongs to " . $countries[$stateProvinceDAO->country_id] . "."; } } } @@ -1033,8 +1053,8 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($countyDAO->state_province_id != $stateProvinceId) { // state province mismatch hence display error $stateProvinces = CRM_Core_PseudoConstant::stateProvince(); - $counties = CRM_Core_PseudoConstant::county(); - $errors[$key] = "County " . $counties[$countyId] . " is not part of " . $stateProvinces[$stateProvinceId] . ". It belongs to " . $stateProvinces[$countyDAO->state_province_id] . "."; + $counties = CRM_Core_PseudoConstant::county(); + $errors[$key] = "County " . $counties[$countyId] . " is not part of " . $stateProvinces[$stateProvinceId] . ". It belongs to " . $stateProvinces[$countyDAO->state_province_id] . "."; } } } @@ -1072,9 +1092,9 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($tableName = CRM_Utils_Array::value('table_name', $returnValues)) { $sql = "DELETE FROM {$tableName} WHERE id = %1 AND entity_id = %2"; $sqlParams = array( - 1 => array($this->_recordId, 'Integer'), - 2 => array($this->_id, 'Integer') - ); + 1 => array($this->_recordId, 'Integer'), + 2 => array($this->_id, 'Integer'), + ); CRM_Core_DAO::executeQuery($sql, $sqlParams); CRM_Core_Session::setStatus(ts('Your record has been deleted.'), ts('Deleted'), 'success'); } @@ -1101,8 +1121,9 @@ class CRM_Profile_Form extends CRM_Core_Form { $details = $contactDetails[0][$this->_id]; } if (!(!empty($details['addressee_id']) || !empty($details['email_greeting_id']) || - CRM_Utils_Array::value('postal_greeting_id', $details) - )) { + CRM_Utils_Array::value('postal_greeting_id', $details) + ) + ) { $profileType = CRM_Core_BAO_UFField::getProfileType($this->_gid); //Though Profile type is contact we need @@ -1306,8 +1327,8 @@ class CRM_Profile_Form extends CRM_Core_Form { CRM_Core_Error::debug_log_message("Rolling back transaction as CMSUser Create failed in Profile_Form for contact " . $params['contactID']); $transaction->rollback(); return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/profile/create', - 'reset=1&gid=' . $this->_gid - )); + 'reset=1&gid=' . $this->_gid + )); } } @@ -1340,7 +1361,7 @@ class CRM_Profile_Form extends CRM_Core_Form { } /** - * Use the form name to create the tpl file name + * Use the form name to create the tpl file name. * * @return string */ @@ -1365,4 +1386,5 @@ class CRM_Profile_Form extends CRM_Core_Form { $fileName = $this->checkTemplateFileExists('extra.'); return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); } + }