Cleanup MailingAB BAO
authorColeman Watts <coleman@civicrm.org>
Tue, 12 May 2020 17:32:48 +0000 (13:32 -0400)
committerColeman Watts <coleman@civicrm.org>
Tue, 12 May 2020 19:36:43 +0000 (15:36 -0400)
- Use writeRecord function instead of boilerplate.
- Use api defaults for domain_id instead of setting in BAO:
  - APIv3 default domain is set via _civicrm_api3_mailing_a_b_create_spec() function.
  - APIv4 FieldDomainIdSpecProvider will set it automatically based on the required property in the schema.

CRM/Mailing/BAO/MailingAB.php
CRM/Mailing/DAO/MailingAB.php
api/v3/MailingAB.php
xml/schema/Mailing/MailingAB.xml

index 02b305e4991101422a2b50c3553ad882c73b5496..7d26a2c1000a2f9f43e615dfdd0a7d5be3befe45 100644 (file)
@@ -34,15 +34,13 @@ class CRM_Mailing_BAO_MailingAB extends CRM_Mailing_DAO_MailingAB {
    *   Form values.
    *
    * @param array $params
-   * @param array $ids
    *
-   * @return object
-   *   $mailingab      The new mailingab object
+   * @return CRM_Mailing_DAO_MailingAB
    */
-  public static function create(&$params, $ids = []) {
+  public static function create(&$params) {
     $transaction = new CRM_Core_Transaction();
 
-    $mailingab = self::add($params, $ids);
+    $mailingab = self::writeRecord($params);
 
     if (is_a($mailingab, 'CRM_Core_Error')) {
       $transaction->rollback();
@@ -52,47 +50,6 @@ class CRM_Mailing_BAO_MailingAB extends CRM_Mailing_DAO_MailingAB {
     return $mailingab;
   }
 
-  /**
-   * function to add the mailings.
-   *
-   * @param array $params
-   *   Reference array contains the values submitted by the form.
-   * @param array $ids
-   *   Reference array contains the id.
-   *
-   *
-   * @return object
-   */
-  public static function add(&$params, $ids = []) {
-    $id = CRM_Utils_Array::value('mailingab_id', $ids, CRM_Utils_Array::value('id', $params));
-
-    if ($id) {
-      CRM_Utils_Hook::pre('edit', 'MailingAB', $id, $params);
-    }
-    else {
-      CRM_Utils_Hook::pre('create', 'MailingAB', NULL, $params);
-    }
-
-    $mailingab = new CRM_Mailing_DAO_MailingAB();
-    $mailingab->id = $id;
-    if (!$id) {
-      $mailingab->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID());
-    }
-
-    $mailingab->copyValues($params);
-
-    $result = $mailingab->save();
-
-    if ($id) {
-      CRM_Utils_Hook::post('edit', 'MailingAB', $mailingab->id, $mailingab);
-    }
-    else {
-      CRM_Utils_Hook::post('create', 'MailingAB', $mailingab->id, $mailingab);
-    }
-
-    return $result;
-  }
-
   /**
    * Delete MailingAB and all its associated records.
    *
index 64aec05fb14c632b55d72d50c0d77e02ef44a863..37fa94d1b996f7735280955d1957e2957399d43f 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingAB.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:74ff2df50144a54a2c5a740187f6a8ca)
+ * (GenCodeChecksum:808ef560b5f6c959cb4f3ceea87f5e38)
  */
 
 /**
@@ -227,6 +227,7 @@ class CRM_Mailing_DAO_MailingAB extends CRM_Core_DAO {
           'type' => CRM_Utils_Type::T_INT,
           'title' => ts('Domain ID'),
           'description' => ts('Which site is this mailing for'),
+          'required' => TRUE,
           'where' => 'civicrm_mailing_abtest.domain_id',
           'table_name' => 'civicrm_mailing_abtest',
           'entity' => 'MailingAB',
index a8c96ab80a9abb7b09c4aa5f4a8dc3f05de63721..8ae6d7f89b5ab115a8c37ecd0df50a75d6d18203 100644 (file)
@@ -23,6 +23,7 @@ function _civicrm_api3_mailing_a_b_create_spec(&$spec) {
   $spec['created_date']['api.default'] = 'now';
   $spec['created_id']['api.required'] = 1;
   $spec['created_id']['api.default'] = 'user_contact_id';
+  $spec['domain_id']['api.default'] = CRM_Core_Config::domainID();
 }
 
 /**
index 8bacee1aa718fe0a41965e4247d0d8827f39b590..14d224f98c98ffbe535e770f10ea00a1348135ad 100644 (file)
@@ -62,6 +62,7 @@
     <title>Domain ID</title>
     <comment>Which site is this mailing for</comment>
     <add>4.6</add>
+    <required>true</required>
   </field>
   <field>
     <name>testing_criteria</name>