Merge pull request #3679 from yashodha/CRM-14951
[civicrm-core.git] / api / v3 / UFField.php
index da1e33e645f626353d79028d52767585e6f6d7b9..2e9cf6794462ad5eacaa7191717a023bd4cafc5e 100644 (file)
@@ -2,9 +2,9 @@
 
 /*
  +--------------------------------------------------------------------+
- | 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.                                    |
  |                                                                    |
@@ -32,7 +32,7 @@
  * @package CiviCRM_APIv3
  * @subpackage API_UF
  *
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * @version $Id: UFField.php 30171 2010-10-14 09:11:27Z mover $
  *
  */
 /**
  * Defines 'uf field' within a group.
  *
- * @param $groupId int Valid uf_group id
- *
  * @param $params  array  Associative array of property name/value pairs to create new uf field.
  *
+ * @throws API_Exception
+ * @internal param int $groupId Valid uf_group id
+ *
  * @return Newly created $ufFieldArray array
  *
  * @access public
@@ -71,12 +72,12 @@ function civicrm_api3_uf_field_create($params) {
     $params['group_id'] = $groupId;
   }
 
-  $ids = array();
+  $ids = $ufFieldArray = array();
   $ids['uf_group'] = $groupId;
 
   $fieldId = CRM_Utils_Array::value('id', $params);
   if (!empty($fieldId)) {
-    $UFField = new CRM_core_BAO_UFField();
+    $UFField = new CRM_Core_BAO_UFField();
     $UFField->id = $fieldId;
     if ($UFField->find(TRUE)) {
       $ids['uf_group'] = $UFField->uf_group_id;
@@ -94,6 +95,7 @@ function civicrm_api3_uf_field_create($params) {
   if (CRM_Core_BAO_UFField::duplicateField($params, $ids)) {
     throw new API_Exception("The field was not added. It already exists in this profile.");
   }
+  //@todo why is this even optional? Surely weight should just be 'managed' ??
   if (CRM_Utils_Array::value('option.autoweight', $params, TRUE)) {
     $params['weight'] = CRM_Core_BAO_UFField::autoWeight($params);
   }
@@ -103,19 +105,25 @@ function civicrm_api3_uf_field_create($params) {
   CRM_Core_BAO_UFGroup::updateGroupTypes($groupId, $fieldsType);
 
   _civicrm_api3_object_to_array($ufField, $ufFieldArray[$ufField->id]);
+  civicrm_api3('profile', 'getfields', array('cache_clear' => TRUE));
   return civicrm_api3_create_success($ufFieldArray, $params);
 }
 
 /**
  * Gets field for civicrm_uf_field create
  *
+ * @param $params
+ *
  * @return array fields valid for other functions
  */
 function _civicrm_api3_uf_field_create_spec(&$params) {
   $params['option.autoweight'] = array(
     'title' => "Automatically adjust weights in UFGroup to align with UFField",
-    'type' => CRM_Utils_Type::T_BOOLEAN
+    'type' => CRM_Utils_Type::T_BOOLEAN,
+    'api.default' => TRUE,
   );
+  $params['created_id']['api.default'] = 'user_contact_id';
+  $params['is_active']['api.default'] = TRUE;
 }
 
 /**
@@ -137,7 +145,10 @@ function civicrm_api3_uf_field_get($params) {
 /**
  * Delete uf field
  *
- * @param $fieldId int  Valid uf_field id that to be deleted
+ * @param $params
+ *
+ * @throws API_Exception
+ * @internal param int $fieldId Valid uf_field id that to be deleted
  *
  * @return true on successful delete or return error
  *
@@ -160,8 +171,8 @@ function civicrm_api3_uf_field_delete($params) {
 
   return civicrm_api3_create_success($result, $params);
 }
-/*
- * field id accepted for backward compat - unset required on id
+/**
+ * field id accepted for backward compatibility - unset required on id
  */
 function _civicrm_api3_uf_field_delete_spec(&$params) {
   // legacy support for field_id