public function updateRequestAction()
 {
     MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD);
     $model = new User(User::SCENARIO_CHANGE_PASSWORD_REQUEST);
     $form = new Form('users.ChangePasswordRequestForm', $model);
     $this->performAjaxValidation($model);
     if (isset($_POST['User'])) {
         $model->attributes = $_POST['User'];
         if ($model->validate()) {
             $user = User::model()->find("email = '{$model->email}'");
             if ($user) {
                 if ($user->status == User::STATUS_ACTIVE) {
                     $user->password_recover_code = md5($user->password . $user->email . $user->id . time());
                     $user->password_recover_date = new CDbExpression('NOW()');
                     $user->save();
                     $outbox = new MailerOutbox();
                     $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD);
                     $outbox->user_id = $user->id;
                     $outbox->save();
                     Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.');
                 } else {
                     if ($user->status == User::STATUS_NEW) {
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_NOT_ACTIVE);
                     } else {
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED);
                     }
                 }
             } else {
                 Yii::app()->user->setFlash('error', UserIdentity::ERROR_UNKNOWN_EMAIL);
             }
             $this->redirect($_SERVER['REQUEST_URI']);
         }
     }
     $this->render("changePasswordRequest", array('form' => $form));
 }
 public function actionManage()
 {
     $model = new MailerOutbox('search');
     $model->unsetAttributes();
     if (isset($_GET['MailerOutbox'])) {
         $model->attributes = $_GET['MailerOutbox'];
     }
     $this->render('manage', array('model' => $model));
 }
 public function actionActivateAccountRequest()
 {
     MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_ACTIVATION);
     $model = new User(User::SCENARIO_ACTIVATE_REQUEST);
     $form = new Form('users.ActivateRequestForm', $model);
     $this->performAjaxValidation($model);
     if (isset($_POST['User'])) {
         $model->attributes = $_POST['User'];
         if ($model->validate()) {
             $user = User::model()->findByAttributes(array('email' => $_POST['User']['email']));
             if (!$user) {
                 Yii::app()->user->setFlash('error', 'Введенный вами Email не найден');
             } else {
                 switch ($user->status) {
                     case User::STATUS_NEW:
                         $user->generateActivateCode();
                         $user->scenario = User::SCENARIO_ACTIVATE_REQUEST;
                         $user->activate_date = new CDbExpression('NOW()');
                         $user->save();
                         $outbox = new MailerOutbox();
                         $outbox->user_id = $user->id;
                         $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_ACTIVATION);
                         $outbox->save();
                         Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.');
                         break;
                     case User::STATUS_ACTIVE:
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_ALREADY_ACTIVE);
                         break;
                     case User::STATUS_BLOCKED:
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED);
                         break;
                 }
             }
         }
     }
     $this->render('activateAccountRequest', array('form' => $form));
 }
 public function run($args)
 {
     Yii::app()->getModule('main');
     Yii::app()->getModule('mailer');
     MailerOutbox::sendEmails();
 }
 public function actionSendEmails()
 {
     Param::checkRequired(array(MailerModule::PARAM_REPLY_EMAIL, MailerModule::PARAM_FROM_EMAIL, MailerModule::PARAM_FROM_NAME, MailerModule::PARAM_PASSWORD, MailerModule::PARAM_LOGIN, MailerModule::PARAM_HOST, MailerModule::PARAM_PORT), 'mailer');
     MailerOutbox::sendEmails();
 }
 public static function sendEmails()
 {
     $outbox_emails = MailerOutbox::model()->findAllByAttributes(array('status' => MailerOutbox::STATUS_QUEUE), array('order' => 'date_create', 'limit' => self::MAILS_PACKET_SIZE));
     foreach ($outbox_emails as $outbox_email) {
         //$outbox_email->status = MailerOutbox::STATUS_PROCESS;
         //$outbox_email->save();
         try {
             self::sendMail($outbox_email->email, $outbox_email->subject, $outbox_email->body);
             $outbox_email->date_send = new CDbExpression('NOW()');
             $outbox_email->status = MailerOutbox::STATUS_SENT;
         } catch (Exception $e) {
             $outbox_email->status = MailerOutbox::STATUS_ERROR;
             $outbox_email->log = $e->getMessage();
         }
         $outbox_email->save();
     }
 }