/**
  * Construct a new mailing object, along with job and mailing_group
  * objects, from the form values of the create mailing wizard.
  *
  * @params array $params        Form values
  *
  * @return object $mailing      The new mailing object
  * @access public
  * @static
  */
 public static function create(&$params, &$ids)
 {
     $transaction = new CRM_Core_Transaction();
     $mailing = self::add($params, $ids);
     if (is_a($mailing, 'CRM_Core_Error')) {
         $transaction->rollback();
         return $mailing;
     }
     $groupTableName = CRM_Contact_BAO_Group::getTableName();
     $mailingTableName = CRM_Mailing_BAO_Mailing::getTableName();
     /* Create the mailing group record */
     $mg = new CRM_Mailing_DAO_Group();
     foreach (array('groups', 'mailings') as $entity) {
         foreach (array('include', 'exclude', 'base') as $type) {
             if (isset($params[$entity]) && CRM_Utils_Array::value($type, $params[$entity]) && is_array($params[$entity][$type])) {
                 foreach ($params[$entity][$type] as $entityId) {
                     $mg->reset();
                     $mg->mailing_id = $mailing->id;
                     $mg->entity_table = $entity == 'groups' ? $groupTableName : $mailingTableName;
                     $mg->entity_id = $entityId;
                     $mg->group_type = $type;
                     $mg->save();
                 }
             }
         }
     }
     if (!empty($params['search_id']) && !empty($params['group_id'])) {
         $mg->reset();
         $mg->mailing_id = $mailing->id;
         $mg->entity_table = $groupTableName;
         $mg->entity_id = $params['group_id'];
         $mg->search_id = $params['search_id'];
         $mg->search_args = $params['search_args'];
         $mg->group_type = 'Include';
         $mg->save();
     }
     // check and attach and files as needed
     CRM_Core_BAO_File::processAttachment($params, 'civicrm_mailing', $mailing->id);
     $transaction->commit();
     return $mailing;
 }
Beispiel #2
0
$status = array('Scheduled', 'Running', 'Complete', 'Paused', 'Canceled', 'Testing');
for ($i = 1; $i <= $numGroups; $i++) {
    $mailing = new CRM_Mailing_BAO_Mailing();
    $alphabet = mt_rand(97, 122);
    $cnt = sprintf('%05d', $i);
    $mailing->name = chr($alphabet) . ": {$prefix} {$cnt}";
    $mailing->header_id = $mailing->footer_id = $mailing->reply_id = $mailing->unsubscribe_id = $mailing->optout_id = 1;
    $mailing->is_completed = 1;
    $mailing->save();
    $job = new CRM_Mailing_BAO_Job();
    $job->mailing_id = $mailing->id;
    $job->scheduled_date = generateRandomDate();
    $job->start_date = generateRandomDate();
    $job->end_date = generateRandomDate();
    $job->status = 'Complete';
    $job->save();
    $group = new CRM_Mailing_DAO_Group();
    $group->mailing_id = $mailing->id;
    $group->group_type = 'Include';
    $group->entity_table = 'civicrm_group';
    $group->entity_id = 1;
    $group->save();
}
function generateRandomDate()
{
    $year = 2006 + mt_rand(0, 2);
    $month = 1 + mt_rand(0, 11);
    $day = 1 + mt_rand(0, 27);
    $date = sprintf("%4d%02d%02d", $year, $month, $day) . '000000';
    return $date;
}