CRM-13072 standardise tag api to fix errors revealed by upgraded tests
authoreileen <eileen@fuzion.co.nz>
Thu, 25 Jul 2013 03:25:28 +0000 (15:25 +1200)
committereileen <eileen@fuzion.co.nz>
Thu, 25 Jul 2013 03:25:28 +0000 (15:25 +1200)
CRM/Core/BAO/Tag.php
api/v3/Tag.php

index 17a802f1a5a3bfc9cbfdf03a64ca98465c1f1142..6249909fae17064850c99dbe469391c9ec7b582d 100644 (file)
@@ -297,13 +297,14 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag {
    * pairs
    *
    * @param array  $params         (reference) an assoc array of name/value pairs
-   * @param array  $ids            (reference) the array that holds all the db ids
+   * @param array  $ids  (optional)  the array that holds all the db ids - we are moving away from this in bao
+   * signatures
    *
    * @return object    CRM_Core_DAO_Tag object on success, otherwise null
    * @access public
    * @static
    */
-  static function add(&$params, &$ids) {
+  static function add(&$params, $ids = array()) {
     if (!self::dataExists($params)) {
       return NULL;
     }
@@ -317,15 +318,9 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag {
     }
 
     $tag->copyValues($params);
-    $tag->id = CRM_Utils_Array::value('tag', $ids);
-
-    $edit = ($tag->id) ? TRUE : FALSE;
-    if ($edit) {
-      CRM_Utils_Hook::pre('edit', 'Tag', $tag->id, $tag);
-    }
-    else {
-      CRM_Utils_Hook::pre('create', 'Tag', NULL, $tag);
-    }
+    $tag->id = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('tag', $ids));
+    $hook = empty($params['id']) ? 'create' : 'edit';
+    CRM_Utils_Hook::pre($hook, 'Tag', $tag->id, $params);
 
     // save creator id and time
     if (!$tag->id) {
@@ -335,13 +330,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag {
     }
 
     $tag->save();
-
-    if ($edit) {
-      CRM_Utils_Hook::post('edit', 'Tag', $tag->id, $tag);
-    }
-    else {
-      CRM_Utils_Hook::post('create', 'Tag', NULL, $tag);
-    }
+    CRM_Utils_Hook::post($hook, 'Tag', $tag->id, $tag);
 
     // if we modify parent tag, then we need to update all children
     if ($tag->parent_id === 'null') {
index 2d4e01da671680485376d54f209a7a8013387544..d8129e2703e296a1ed182719afdd686adc871237 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 /*
  +--------------------------------------------------------------------+
  | CiviCRM version 4.3                                                |
  * @access public
  */
 function civicrm_api3_tag_create($params) {
-
-  $ids = array('tag' => CRM_Utils_Array::value('tag', $params));
-  if (CRM_Utils_Array::value('tag', $params)) {
-    $ids['tag'] = $params['tag'];
-  }
-  if (CRM_Utils_Array::value('id', $params)) {
-    $ids['tag'] = $params['id'];
-  }
-  $tagBAO = CRM_Core_BAO_Tag::add($params, $ids);
-
-    $values = array();
-    _civicrm_api3_object_to_array($tagBAO, $values[$tagBAO->id]);
-    return civicrm_api3_create_success($values, $params, 'tag', 'create', $tagBAO);
-  }
+  return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+}
 
 /**
  * Specify Meta data for create. Note that this data is retrievable via the getfields function