/**
  * Create a new BatchSettings based on array-data
  *
  * @param array $params key-value pairs
  *
  * @return CRM_Civigiftaid_DAO_BatchSettings|NULL
  */
 public static function create($params)
 {
     static::addDefaults($params);
     static::preProcessParams($params);
     $entityName = 'BatchSettings';
     $hook = empty($params['id']) ? 'create' : 'edit';
     CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params);
     $instance = new static();
     $instance->copyValues($params);
     $instance->save();
     CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance);
     return $instance;
 }
 /**
  * Add the mailings.
  *
  * @param array $params
  *   Reference array contains the values submitted by the form.
  * @param array $ids
  *   Reference array contains the id.
  *
  *
  * @return CRM_Mailing_DAO_Mailing
  */
 public static function add(&$params, $ids = array())
 {
     $id = CRM_Utils_Array::value('mailing_id', $ids, CRM_Utils_Array::value('id', $params));
     if ($id) {
         CRM_Utils_Hook::pre('edit', 'Mailing', $id, $params);
     } else {
         CRM_Utils_Hook::pre('create', 'Mailing', NULL, $params);
     }
     $mailing = new static();
     if ($id) {
         $mailing->id = $id;
         $mailing->find(TRUE);
     }
     $mailing->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID());
     if (!isset($params['replyto_email']) && isset($params['from_email'])) {
         $params['replyto_email'] = $params['from_email'];
     }
     $mailing->copyValues($params);
     $result = $mailing->save();
     if (!empty($ids['mailing'])) {
         CRM_Utils_Hook::post('edit', 'Mailing', $mailing->id, $mailing);
     } else {
         CRM_Utils_Hook::post('create', 'Mailing', $mailing->id, $mailing);
     }
     return $result;
 }
 /**
  * Create or update a SimpleMail mailing and the corresponding CiviCRM mailing, along with other related tasks, such
  * as creating a mailing job for scheduling mass emailing.
  *
  * @param array $params key-value pairs
  *
  * @return \CRM_Simplemail_DAO_SimpleMail|NULL
  * @throws \CRM_Extension_Exception
  */
 public static function create($params)
 {
     if (!static::isActionAllowed(static::ACTION_ALLOWED_UPDATE, $params)) {
         throw new CRM_Extension_Exception('Cannot update a scheduled mailing', 405);
     }
     if (simplemail_civicrm_getFromSessionScope('createdFromSearch')) {
         static::createSmartContactGroupForSearchContacts();
     }
     static::sanitiseParams($params);
     // buids the mailing to be sent
     // things like the email body etc
     $civiMailing = static::createCiviMailing($params);
     if ($civiMailing->id) {
         $params['crm_mailing_id'] = $civiMailing->id;
     }
     static::updateRecipientGroups($params);
     static::setMailingCategory($params);
     $entityName = 'SimpleMail';
     $hook = empty($params['id']) ? 'create' : 'edit';
     CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params);
     $instance = new static();
     $instance->copyValues($params);
     $instance->save();
     CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance);
     return $instance;
 }