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"; } }
/** * /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)); }