protected function doJob($arg) { $models = Newsletter::model()->findAll(array('condition' => 't.remain_subscribers IS NOT NULL AND length(t.remain_subscribers) > 0 AND t.send_time <= NOW()', 'order' => 't.id ASC')); foreach ($models as $model) { $mail_models = ProNewsletterMail::model()->findAll(array('condition' => 't.newsletter_id = ' . $model->id, 'order' => 't.id ASC')); if (count($mail_models)) { $receivers = explode(',', $model->remain_subscribers); $subscriber_count = 0; foreach ($mail_models as $key => $k) { $revei = array_shift($receivers); // need update this field $s = Subscriber::model()->getSubscriberByEmail($k->email); if (empty($s)) { continue; } if ($s) { if ($s->status == 0) { continue; } } // add by Nguyen Dung $url = Yii::app()->setting->getItem('server_name') . '/site/track_newsletter?newsletter_id=' . $model->id . '&subscriber_email=' . $s->email; $img_track_read_email = '<img src="' . $url . '" alt="" height="1" width="1"/>'; $r = array('subject' => $model->subject, 'params' => array('content' => $model->content . $img_track_read_email, 'newsletterName' => Yii::app()->params['title'], 'unsubscribe' => Yii::app()->setting->getItem('server_name') . '/site/unsubscribe?id=' . $s->id . '&code=' . md5($s->id . $s->email)), 'view' => 'newsletter', 'to' => $s->email, 'from' => Yii::app()->params['autoEmail']); $this->data[] = $r; //Delete record in newsletter mail ProNewsletterMail::model()->deleteByPk($k->id); $subscriber_count++; //count subscriber is served for current newsletter job $this->index++; //count email is sent for current cron job if ($this->index >= $this->max) { break; } } $model->total_sent = $model->total_sent + $subscriber_count; // track amount mail sent $model->remain_subscribers = implode(',', $receivers); $model->update(array('remain_subscribers', 'total_sent')); } } //when sent all subscriber of a newsletter job but the // if($this->index < $this->max) // $this->doJob($arg); }
/** * @param integer the ID of the model to be loaded * @return Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. */ public function loadModel($id) { $model = Newsletter::model()->findByPk($id); if ($model === null) { Yii::log('The requested page does not exist.'); throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
/** * Delete an item */ public function actiondelete() { if (isset($_GET['id']) && ($model = Newsletter::model()->findByPk($_GET['id']))) { $model->delete(); Yii::app()->user->setFlash('success', Yii::t('newsletter', 'Item Deleted.')); $this->redirect(array('index')); } else { $this->redirect(array('index')); } }
<h1>Newsletters</h1> <b><p>Eventos Para Newsletter</p></b> <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$data, 'columns'=>array( 'titulo', 'dtinicio', 'dtfim' ) )); ?> <?php $this->renderPartial('_form',array('model'=> Newsletter::model())); ?>
public static function getNewsletterByPk($pk) { return Newsletter::model()->findByPk((int) $pk); }
<td><?php echo Yii::t('adminindex', 'Number Of Users'); ?> </td> <td><?php echo Yii::app()->format->number(Members::model()->count()); ?> </td> </tr> <tr> <td><?php echo Yii::t('adminindex', 'Newsletter Signups'); ?> </td> <td><?php echo Yii::app()->format->number(Newsletter::model()->count()); ?> </td> </tr> <tr> <td><?php echo Yii::t('adminindex', 'Last Registered'); ?> </td> <td><?php echo Members::model()->find(array('order' => 'joined desc', 'limit' => 1))->getModelLink(); ?> </td> </tr> <tr> <td><?php