示例#1
0
 /**
  * Delete MailingAB and all its associated records.
  *
  * @param int $id
  *   Id of the mail to delete.
  */
 public static function del($id)
 {
     if (empty($id)) {
         CRM_Core_Error::fatal();
     }
     CRM_Core_Transaction::create()->run(function () use($id) {
         CRM_Utils_Hook::pre('delete', 'MailingAB', $id, CRM_Core_DAO::$_nullArray);
         $dao = new CRM_Mailing_DAO_MailingAB();
         $dao->id = $id;
         if ($dao->find(TRUE)) {
             $mailing_ids = array($dao->mailing_id_a, $dao->mailing_id_b, $dao->mailing_id_c);
             $dao->delete();
             foreach ($mailing_ids as $mailing_id) {
                 if ($mailing_id) {
                     CRM_Mailing_BAO_Mailing::del($mailing_id);
                 }
             }
         }
         CRM_Core_Session::setStatus(ts('Selected mailing has been deleted.'), ts('Deleted'), 'success');
         CRM_Utils_Hook::post('delete', 'MailingAB', $id, $dao);
     });
 }
示例#2
0
/**
 * Send A/B mail to A/B recipients respectively.
 *
 * @param array $params
 *
 * @return array
 * @throws API_Exception
 */
function civicrm_api3_mailing_a_b_submit($params)
{
    civicrm_api3_verify_mandatory($params, 'CRM_Mailing_DAO_MailingAB', array('id', 'status'));
    if (!isset($params['scheduled_date']) && !isset($updateParams['approval_date'])) {
        throw new API_Exception("Missing parameter scheduled_date and/or approval_date");
    }
    $dao = new CRM_Mailing_DAO_MailingAB();
    $dao->id = $params['id'];
    if (!$dao->find(TRUE)) {
        throw new API_Exception("Failed to locate A/B test by ID");
    }
    if (empty($dao->mailing_id_a) || empty($dao->mailing_id_b) || empty($dao->mailing_id_c)) {
        throw new API_Exception("Missing mailing IDs for A/B test");
    }
    $submitParams = CRM_Utils_Array::subset($params, array('scheduled_date', 'approval_date', 'approval_note', 'approval_status_id'));
    switch ($params['status']) {
        case 'Testing':
            if (!empty($dao->status) && $dao->status != 'Draft') {
                throw new API_Exception("Cannot transition to state 'Testing'");
            }
            civicrm_api3('Mailing', 'submit', $submitParams + array('id' => $dao->mailing_id_a, '_skip_evil_bao_auto_recipients_' => 0));
            civicrm_api3('Mailing', 'submit', $submitParams + array('id' => $dao->mailing_id_b, '_skip_evil_bao_auto_recipients_' => 1));
            CRM_Mailing_BAO_MailingAB::distributeRecipients($dao);
            break;
        case 'Final':
            if ($dao->status != 'Testing') {
                throw new API_Exception("Cannot transition to state 'Final'");
            }
            civicrm_api3('Mailing', 'submit', $submitParams + array('id' => $dao->mailing_id_c, '_skip_evil_bao_auto_recipients_' => 1));
            break;
        default:
            throw new API_Exception("Unrecognized submission status");
    }
    return civicrm_api3('MailingAB', 'create', array('id' => $dao->id, 'status' => $params['status'], 'options' => array('reload' => 1)));
}
示例#3
0
 /**
  * Returns the list of fields that can be exported
  *
  * @param bool $prefix
  *
  * @return array
  */
 static function &export($prefix = false)
 {
     if (!self::$_export) {
         self::$_export = array();
         $fields = self::fields();
         foreach ($fields as $name => $field) {
             if (CRM_Utils_Array::value('export', $field)) {
                 if ($prefix) {
                     self::$_export['mailing_abtest'] =& $fields[$name];
                 } else {
                     self::$_export[$name] =& $fields[$name];
                 }
             }
         }
     }
     return self::$_export;
 }