示例#1
0
 public function run($args)
 {
     exit;
     date_default_timezone_set("Europe/London");
     print "Getting campaigns to process \n";
     $CampaignCollection = Campaign::model()->with('query')->findAll(array("condition" => "processing = 0 AND status = :status AND invite = 1", "params" => array(":status" => Campaign::STATUS_QUEUED)));
     print count($CampaignCollection) . ' campaigns to process' . "\n";
     $campaignIDs = [];
     foreach ($CampaignCollection as $Campaign) {
         $campaignIDs[] = $Campaign->id;
         print "Will process " . $Campaign->id . " \n";
     }
     $command = Yii::app()->db->createCommand();
     $command->update('campaign', array("processing" => 1), array('in', 'id', $campaignIDs));
     foreach ($CampaignCollection as $Campaign) {
         $InviteEmail = new InviteEmail();
         $InviteEmail->send($Campaign);
         $Campaign->processing = 0;
         $Campaign->save(true, array("processing"));
         print "Completed processing " . $Campaign->id . " \n";
         $Campaign->refresh();
         print "Status of campaign was " . $Campaign->getStatusText() . "\n\n";
     }
 }
示例#2
0
 /**
  * /invites/:id
  * Allows user to add email content and send invitation emails to contacts
  */
 public function actionSend()
 {
     if ((int) $_GET['campaign_id']) {
         // existing sent invite
         $Campaign = Campaign::model()->findByPk($_GET['campaign_id']);
         if (is_null($Campaign)) {
             throw new CHttpException(404, 'Not found');
         }
         $Query = $Campaign->query;
     } else {
         throw new CHttpException(404, 'Page not found.');
     }
     if ((int) $Campaign->status !== Campaign::STATUS_NOT_RUN) {
         // Redirect to view
         $this->redirect(array('invite/view', 'campaign_id' => $Campaign->id));
         exit;
     }
     // Set scenario for validation
     $Campaign->scenario = 'inviteSend';
     if (isset($_POST['Campaign'])) {
         if ($Campaign->validate()) {
             // Are we testing, or sending for real?
             if (isset($_POST['test'])) {
                 if (!strlen($_POST['Campaign']['email_test_recipient'])) {
                     $Campaign->addError('email_test_recipient', 'Test email recipient cannot be blank');
                 } else {
                     $InviteEmail = new InviteEmail();
                     $InviteEmail->sendTest($_POST['Campaign']['email_test_recipient'], $Campaign->invite_email_subject, $Campaign->invite_email_body);
                     $this->refresh();
                 }
             } elseif (!in_array($Campaign->status, array(Campaign::STATUS_QUEUED, Campaign::STATUS_HAS_BEEN_RUN))) {
                 // Set Campaign as queued for sending
                 $Campaign->status = Campaign::STATUS_QUEUED;
                 $Campaign->save(true, array('status'));
                 // Set a flash message
                 Yii::app()->user->setFlash('success', 'The invite has been queued for sending');
                 $this->redirect(array('invite/index'));
             }
         }
     }
     $this->breadcrumbs = array('Invites' => array('index'), $Campaign->name => array('edit', 'campaign_id' => $Campaign->id), 'Sending Options');
     $this->render('send', array('Campaign' => $Campaign, 'Query' => $Query, 'results' => $results));
 }