Merge pull request #5473 from aydun/CRM-16160
[civicrm-core.git] / api / v3 / Profile.php
index d93beafaeaab1713be055966f21658b098c2f736..23682854ed30d0f6eed2892390413fc1d33f0768 100644 (file)
@@ -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.                                    |
   |                                                                    |
   | GNU Affero General Public License or the licensing of CiviCRM,     |
   | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
   +--------------------------------------------------------------------+
-*/
+ */
 
 /**
- * File for the CiviCRM APIv3 activity profile functions
+ * This api exposes CiviCRM profiles.
  *
- * @package CiviCRM_APIv3
- * @subpackage API_ActivityProfile
- * @copyright CiviCRM LLC (c) 2004-2014
- * @version $Id: Profile.php 30486 2011-05-20 16:12:09Z rajan $
+ * Profiles are collections of fields used as forms, listings, search columns, etc.
  *
+ * @package CiviCRM_APIv3
  */
 
 /**
@@ -138,6 +136,8 @@ function civicrm_api3_profile_get($params) {
 }
 
 /**
+ * Adjust profile get function metadata.
+ *
  * @param array $params
  */
 function _civicrm_api3_profile_get_spec(&$params) {
@@ -149,6 +149,7 @@ function _civicrm_api3_profile_get_spec(&$params) {
 
 /**
  * Submit a set of fields against a profile.
+ *
  * Note choice of submit versus create is discussed CRM-13234 & related to the fact
  * 'profile' is being treated as a data-entry entity
  *
@@ -173,7 +174,7 @@ function civicrm_api3_profile_submit($params) {
 
   $contactParams = $activityParams = $missingParams = array();
 
-  $profileFields = civicrm_api3('profile', 'getfields', array('action' => 'submit', 'profile_id' => $profileID));
+  $profileFields = civicrm_api3('Profile', 'getfields', array('action' => 'submit', 'profile_id' => $profileID));
   $profileFields = $profileFields['values'];
   if ($isContactActivityProfile) {
     civicrm_api3_verify_mandatory($params, NULL, array('activity_id'));
@@ -244,54 +245,17 @@ function civicrm_api3_profile_submit($params) {
     $profileParams['api.activity.create'] = $activityParams;
   }
 
-  $groups = $tags = array();
-  if (isset($profileParams['group'])) {
-    $groups = $profileParams['group'];
-    unset($profileParams['group']);
-  }
-
-  if (isset($profileParams['tag'])) {
-    $tags = $profileParams['tag'];
-    unset($profileParams['tag']);
-  }
-
   return civicrm_api3('contact', 'create', $profileParams);
-
-  $ufGroupDetails = array();
-  $ufGroupParams = array('id' => $profileID);
-  CRM_Core_BAO_UFGroup::retrieve($ufGroupParams, $ufGroupDetails);
-
-  if (isset($profileFields['group'])) {
-    CRM_Contact_BAO_GroupContact::create($groups,
-      $params['contact_id'],
-      FALSE,
-      'Admin'
-    );
-  }
-
-  if (isset($profileFields['tag'])) {
-    CRM_Core_BAO_EntityTag::create($tags,
-      'civicrm_contact',
-      $params['contact_id']
-    );
-  }
-
-  if (!empty($ufGroupDetails['add_to_group_id'])) {
-    $contactIds = array($params['contact_id']);
-    CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds,
-      $ufGroupDetails['add_to_group_id']
-    );
-  }
-
-  return $result;
-
 }
 
 /**
+ * Translate field names for BAO.
+ *
  * The api standards expect field names to be lower case but the BAO uses mixed case
  * so we accept 'email-primary' but pass 'email-Primary' to the BAO
  * we could make the BAO handle email-primary but this would alter the fieldname seen by hooks
  * & we would need to consider that change
+ *
  * @param string $fieldName
  *   API field name.
  *
@@ -302,8 +266,10 @@ function _civicrm_api3_profile_translate_fieldnames_for_bao($fieldName) {
   $fieldName = str_replace('url', 'URL', $fieldName);
   return str_replace('primary', 'Primary', $fieldName);
 }
+
 /**
- * metadata for submit action
+ * Metadata for submit action.
+ *
  * @param array $params
  * @param array $apirequest
  */
@@ -328,30 +294,31 @@ function _civicrm_api3_profile_submit_spec(&$params, $apirequest) {
 }
 
 /**
+ * Update Profile field values.
+ *
  * @deprecated - calling this function directly is deprecated as 'set' is not a clear action
  * use submit
- * Update Profile field values.
  *
  * @param array $params
- *   Associative array of property name/value.
- *                             pairs to update profile field values
+ *   Array of property name/value.
+ *   pairs to update profile field values
  *
  * @return array
  *   Updated Contact/ Activity object|CRM_Error
- *
- *
  */
 function civicrm_api3_profile_set($params) {
   return civicrm_api3('profile', 'submit', $params);
 }
 
 /**
+ * Apply profile.
+ *
  * @deprecated - appears to be an internal function - should not be accessible via api
  * Provide formatted values for profile fields.
  *
  * @param array $params
- *   Associative array of property name/value.
- *                             pairs to profile field values
+ *   Array of property name/value.
+ *   pairs to profile field values
  *
  * @throws API_Exception
  * @return array
@@ -360,7 +327,6 @@ function civicrm_api3_profile_set($params) {
  * @todo add test cases
  */
 function civicrm_api3_profile_apply($params) {
-
   $profileFields = CRM_Core_BAO_UFGroup::getFields($params['profile_id'],
     FALSE,
     NULL,
@@ -390,6 +356,8 @@ function civicrm_api3_profile_apply($params) {
 
 
 /**
+ * Get pseudo profile 'billing'.
+ *
  * This is a function to help us 'pretend' billing is a profile & treat it like it is one.
  * It gets standard credit card address fields etc
  * Note this is 'better' that the inbuilt version as it will pull in fallback values
@@ -473,8 +441,9 @@ function _civicrm_api3_profile_getbillingpseudoprofile(&$params) {
 }
 
 /**
- * Here we will build  up getfields type data for all the fields in the profile. Because the integration with the
- * form layer in core is so hard-coded we are not going to attempt to re-use it
+ * Here we will build  up getfields type data for all the fields in the profile.
+ *
+ * Because the integration with the form layer in core is so hard-coded we are not going to attempt to re-use it
  * However, as this function is unit-tested & hence 'locked in' we can aspire to extract sharable
  * code out of the form-layer over time.
  *