Merge pull request #3209 from eileenmcnaughton/comments
[civicrm-core.git] / CRM / Profile / Form.php
index 27d9d21e56d2046e2344699e017b33361d8c0154..f5a346eaff02a11b81d7a3eca791dccdda98008f 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * $Id$
  *
  */
@@ -180,6 +180,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
   protected $_currentUserID = NULL;
   protected $_session       = NULL;
 
+  public $_stateCountryMap = array();
   /**
    * pre processing work done here.
    *
@@ -357,6 +358,7 @@ 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)) )) {
+          CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'js/crm.livePage.js');
           //multirecord listing page
           $multiRecordFieldListing = TRUE;
           $page = new CRM_Profile_Page_MultipleRecordFieldsListing();
@@ -372,7 +374,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
       $this->assign('multiRecordFieldListing', $multiRecordFieldListing);
 
       // is profile double-opt in?
-      if (CRM_Utils_Array::value('group', $this->_fields) &&
+      if (!empty($this->_fields['group']) &&
         CRM_Core_BAO_UFGroup::isProfileDoubleOptin()
       ) {
         $emailField = FALSE;
@@ -555,7 +557,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
       return;
     }
 
-    if (CRM_Utils_Array::value('image_URL', $this->_defaults)) {
+    if (!empty($this->_defaults['image_URL'])) {
       list($imageWidth, $imageHeight) = getimagesize($this->_defaults['image_URL']);
       list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
       $this->assign("imageWidth", $imageWidth);
@@ -680,6 +682,21 @@ class CRM_Profile_Form extends CRM_Core_Form {
       return FALSE;
     }
 
+    if (count($this->_submitValues)) {
+      $locationTypeId = null;
+      foreach ($this->_fields as $field) {
+        if (!empty($field['location_type_id'])) {
+          $locationTypeId = $field['location_type_id'];
+        }
+        if (array_key_exists("country-{$locationTypeId}", $this->_fields) &&
+          array_key_exists("state_province-{$locationTypeId}", $this->_fields) &&
+          !empty($this->_submitValues["country-{$locationTypeId}"])) {
+          $this->_fields["state_province-{$locationTypeId}"]['is_required'] =
+            CRM_Core_Payment_Form::checkRequiredStateProvince($this, "country-{$locationTypeId}");
+        }
+      }
+    }
+
     $this->assign('id', $this->_id);
     $this->assign('mode', $this->_mode);
     $this->assign('action', $this->_action);
@@ -866,7 +883,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
 
     $profileActivityTypes = CRM_Core_BAO_UFGroup::groupTypeValues($gid, 'Activity');
 
-    if ((CRM_Utils_Array::value('Activity', $profileActivityTypes) &&
+    if ((!empty($profileActivityTypes['Activity']) &&
         !in_array($activityDetails['activity_type_id'], $profileActivityTypes['Activity'])
       ) ||
       (!in_array($contactId, $activityDetails['assignee_contact']) &&
@@ -911,16 +928,14 @@ class CRM_Profile_Form extends CRM_Core_Form {
     }
 
     // dont check for duplicates during registration validation: CRM-375
-    if (!$register && !CRM_Utils_Array::value('_qf_Edit_upload_duplicate', $fields)) {
+    if (!$register && empty($fields['_qf_Edit_upload_duplicate'])) {
       // fix for CRM-3240
-      if (CRM_Utils_Array::value('email-Primary', $fields)) {
+      if (!empty($fields['email-Primary'])) {
         $fields['email'] = CRM_Utils_Array::value('email-Primary', $fields);
       }
 
       // fix for CRM-6141
-      if (CRM_Utils_Array::value('phone-Primary-1', $fields) &&
-        !CRM_Utils_Array::value('phone-Primary', $fields)
-      ) {
+      if (!empty($fields['phone-Primary-1']) && empty($fields['phone-Primary'])) {
         $fields['phone-Primary'] = $fields['phone-Primary-1'];
       }
 
@@ -1073,11 +1088,11 @@ class CRM_Profile_Form extends CRM_Core_Form {
 
     //if the delete record button is clicked
     if ($this->_deleteButtonName) {
-      if (CRM_Utils_Array::value($this->_deleteButtonName, $_POST) && $this->_recordId) {
+      if (!empty($_POST[$this->_deleteButtonName]) && $this->_recordId) {
         $filterParams['id'] = $this->_customGroupId;
         $returnProperities = array('is_multiple', 'table_name');
         CRM_Core_DAO::commonRetrieve("CRM_Core_DAO_CustomGroup", $filterParams, $returnValues, $returnProperities);
-        if (CRM_Utils_Array::value('is_multiple', $returnValues)) {
+        if (!empty($returnValues['is_multiple'])) {
           if ($tableName = CRM_Utils_Array::value('table_name', $returnValues)) {
             $sql = "DELETE FROM {$tableName} WHERE id = %1 AND entity_id = %2";
             $sqlParams = array(
@@ -1092,7 +1107,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
       }
     }
     CRM_Utils_Hook::processProfile($this->_ufGroupName);
-    if (CRM_Utils_Array::value('image_URL', $params)) {
+    if (!empty($params['image_URL'])) {
       CRM_Contact_BAO_Contact::processImageParams($params);
     }
 
@@ -1109,8 +1124,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
       );
       $details = $contactDetails[0][$this->_id];
     }
-    if (!(CRM_Utils_Array::value('addressee_id', $details) ||
-        CRM_Utils_Array::value('email_greeting_id', $details) ||
+    if (!(!empty($details['addressee_id']) || !empty($details['email_greeting_id']) ||
         CRM_Utils_Array::value('postal_greeting_id', $details)
       )) {
 
@@ -1151,11 +1165,11 @@ class CRM_Profile_Form extends CRM_Core_Form {
 
     //array of group id, subscribed by contact
     $contactGroup = array();
-    if (CRM_Utils_Array::value('group', $params) &&
+    if (!empty($params['group']) &&
       CRM_Core_BAO_UFGroup::isProfileDoubleOptin()
     ) {
       $groupSubscribed = array();
-      if (CRM_Utils_Array::value('email', $result)) {
+      if (!empty($result['email'])) {
         if ($this->_id) {
           $contactGroups = new CRM_Contact_DAO_GroupContact();
           $contactGroups->contact_id = $this->_id;
@@ -1192,7 +1206,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
     }
 
     $addToGroupId = NULL;
-    if (CRM_Utils_Array::value('add_to_group', $params)) {
+    if (!empty($params['add_to_group'])) {
       $addToGroupId = $params['add_to_group'];
 
       //run same check whether group is a mailing list
@@ -1203,8 +1217,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
         substr($groupTypes, 1, -1)
       );
       //filter group of mailing type and unset it from params
-      if (in_array(2, $groupType) &&
-        CRM_Utils_Array::value('email', $result) &&
+      if (in_array(2, $groupType) && !empty($result['email']) &&
         CRM_Core_BAO_UFGroup::isProfileAddToGroupDoubleOptin()
       ) {
         if (!count($contactGroup)) {
@@ -1257,7 +1270,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
           if (isset($params['activity_date_time'])) {
             $activityParams['activity_date_time'] = CRM_Utils_Date::processDate($params['activity_date_time'], $params['activity_date_time_time']);
           }
-          if (CRM_Utils_Array::value($fieldName, $params) && isset($params["{$fieldName}_id"])) {
+          if (!empty($params[$fieldName]) && isset($params["{$fieldName}_id"])) {
             $activityParams[$fieldName] = $params["{$fieldName}_id"];
           }
         }
@@ -1311,7 +1324,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
     }
 
     //create CMS user (if CMS user option is selected in profile)
-    if (CRM_Utils_Array::value('cms_create_account', $params) &&
+    if (!empty($params['cms_create_account']) &&
       $this->_mode == self::MODE_CREATE
     ) {
       $params['contactID'] = $this->_id;