Exemple #1
0
 /**
  * 初期設定 プラグイン用
  *
  * @param int $languageId 言語ID
  * @param string $pluginName プラグイン名
  * @return void
  * @see CakeEmail::$charset default=utf-8
  * @see CakeEmail::$headerCharset default=utf-8
  */
 public function initPlugin($languageId, $pluginName = null)
 {
     // SiteSettingからメール設定を取得する
     SiteSettingUtil::setup(array('Mail.from', 'Mail.from_name', 'Mail.messageType', 'Mail.transport', 'Mail.smtp.host', 'Mail.smtp.port', 'Mail.smtp.user', 'Mail.smtp.pass'));
     $this->__initConfig();
     //$this->__setTags($languageId, $pluginName);
     $this->mailAssignTag->initTags($languageId, $pluginName);
 }
Exemple #2
0
 /**
  * メール送信
  *
  * @return void
  */
 public function send()
 {
     // SiteSettingからメール設定を取得する
     SiteSettingUtil::setup(array('Mail.from', 'Mail.from_name', 'Mail.messageType', 'Mail.transport', 'Mail.smtp.host', 'Mail.smtp.port', 'Mail.smtp.user', 'Mail.smtp.pass', 'App.site_name'));
     $from = SiteSettingUtil::read('Mail.from');
     // Fromが空ならメール未設定のため、メール送らない
     if (empty($from)) {
         $this->out('<error>From Address is empty. [' . __METHOD__ . ']</error>');
         return $this->_stop();
     }
     $now = NetCommonsTime::getNowDatetime();
     // キュー取得&ロック - シェル実行の排他を実現したいため、行ロックしている
     // http://k-1blog.com/development/program/post-7407/
     // http://d.hatena.ne.jp/fat47/20140212/1392171784
     // 下記SQL(テーブル結合&範囲条件)でSELECT FOR UPDATEを実行すると、テーブルロック
     $sql = 'SELECT * FROM ' . 'mail_queues MailQueue, ' . 'mail_queue_users MailQueueUser ' . 'WHERE ' . 'MailQueue.id = MailQueueUser.mail_queue_id ' . 'AND MailQueue.send_time <= ? ' . 'FOR UPDATE ';
     $mailQueues = $this->MailQueue->query($sql, array($now));
     if (empty($mailQueues)) {
         $this->out('MailQueue is empty. [' . __METHOD__ . '] ');
         return $this->_stop();
     }
     $beforeId = $mailQueues[0]['MailQueue']['id'];
     $isSend = null;
     foreach ($mailQueues as $mailQueue) {
         // idが変わったら、MailQueue削除
         if ($beforeId != $mailQueue['MailQueue']['id']) {
             $this->MailQueue->delete($beforeId);
             $isSend = null;
         }
         // ブロック非公開、期間限定の対応
         if (is_null($isSend)) {
             $isSend = $this->_isSendBlockType($mailQueue);
         }
         if ($isSend) {
             $mail = new NetCommonsMail();
             $mail->initShell($mailQueue);
             try {
                 $mail->sendQueueMail($mailQueue['MailQueueUser'], $mailQueue['MailQueue']['language_id']);
             } catch (Exception $ex) {
                 // SMTPの設定間違い等で送れなくても、処理を続行。メールは破棄(設定間違いでメールがキューに溜まる事を防ぐ)
                 CakeLog::error($ex);
             }
         }
         // MailQueueUser削除
         $this->MailQueueUser->delete($mailQueue['MailQueueUser']['id']);
         $beforeId = $mailQueue['MailQueue']['id'];
     }
     // 後始末 - MailQueue削除
     $this->MailQueue->delete($beforeId);
 }
 /**
  * beforeFilter
  *
  * @return void
  **/
 public function beforeFilter()
 {
     parent::beforeFilter();
     $this->Auth->allow('request', 'confirm', 'update');
     //ページタイトル
     $this->set('pageTitle', __d('auth', 'Forgot your Password?'));
     SiteSettingUtil::setup('ForgotPass');
     if (!SiteSettingUtil::read('ForgotPass.use_password_reissue', '0')) {
         return $this->setAction('throwBadRequest');
     }
     //メール通知の場合、NetCommonsMailUtilityをメンバー変数にセットする。Mockであれば、newをしない。
     //テストでMockに差し替えが必要なための処理であるので、カバレッジレポートから除外する。
     //@codeCoverageIgnoreStart
     if (substr(get_class($this->mail), 0, 4) !== 'Mock') {
         $this->mail = new NetCommonsMail();
     }
     //@codeCoverageIgnoreEnd
 }
 /**
  * beforeFilter
  *
  * @return void
  **/
 public function beforeFilter()
 {
     parent::beforeFilter();
     $this->Auth->allow('entry_key', 'request', 'confirm', 'completion', 'approval', 'acceptance');
     //ページタイトル
     $this->set('pageTitle', __d('auth', 'Sign up'));
     SiteSettingUtil::setup('AutoRegist');
     //SiteSettingUtil::setup(array(
     //	// * 入会設定
     //	// ** 自動会員登録を許可する
     //	'AutoRegist.use_automatic_register',
     //	// ** アカウント登録の最終決定
     //	'AutoRegist.confirmation',
     //	// ** 入力キーの使用
     //	'AutoRegist.use_secret_key',
     //	// ** 入力キー
     //	'AutoRegist.secret_key',
     //	// ** 自動登録時の権限
     //	'AutoRegist.role_key',
     //	// ** 自動登録時にデフォルトルームに参加する
     //	'AutoRegist.prarticipate_default_room',
     //
     //	// ** 利用許諾文
     //	'AutoRegist.disclaimer',
     //	// ** 会員登録承認メールの件名
     //	'AutoRegist.approval_mail_subject',
     //	// ** 会員登録承認メールの本文
     //	'AutoRegist.approval_mail_body',
     //	// ** 会員登録受付メールの件名
     //	'AutoRegist.acceptance_mail_subject',
     //	// ** 会員登録受付メールの本文
     //	'AutoRegist.acceptance_mail_body',
     //));
     if (!SiteSettingUtil::read('AutoRegist.use_automatic_register', false)) {
         return $this->setAction('throwBadRequest');
     }
     if (in_array($this->params['action'], ['approval', 'acceptance'], true) && Hash::get($this->request->query, 'activate_key')) {
         $this->helpers['NetCommons.Wizard']['navibar'] = Hash::remove($this->helpers['NetCommons.Wizard']['navibar'], self::WIZARD_ENTRY_KEY);
     } else {
         //管理者の承認が必要の場合、ウィザードの文言変更
         $value = SiteSettingUtil::read('AutoRegist.confirmation');
         if ($value === AutoUserRegist::CONFIRMATION_ADMIN_APPROVAL) {
             $this->helpers['NetCommons.Wizard']['navibar'] = Hash::insert($this->helpers['NetCommons.Wizard']['navibar'], self::WIZARD_COMPLETION . '.label', array('auth', 'Complete request registration.'));
         }
         //入力キーのチェック
         $value = SiteSettingUtil::read('AutoRegist.use_secret_key');
         if ($value) {
             if (!in_array($this->params['action'], ['approval', 'acceptance'], true) && !$this->Session->read('AutoUserRegistKey')) {
                 if ($this->params['action'] === 'entry_key') {
                     $this->Session->delete('AutoUserRegistKey');
                     $this->Session->write('AutoUserRegistRedirect', 'request');
                 } else {
                     $this->Session->write('AutoUserRegistRedirect', $this->params['action']);
                 }
                 $this->setAction('entry_key');
             }
         } else {
             $this->helpers['NetCommons.Wizard']['navibar'] = Hash::remove($this->helpers['NetCommons.Wizard']['navibar'], self::WIZARD_ENTRY_KEY);
         }
     }
 }
 /**
  * 初期設定 プラグイン用
  *
  * @param int $languageId 言語ID
  * @param string $pluginName プラグイン名
  * @return void
  * @see CakeEmail::$charset
  */
 public function initPlugin($languageId, $pluginName = null)
 {
     // SiteSettingからメール設定を取得する
     SiteSettingUtil::setup(array('Mail.from', 'Mail.from_name', 'Mail.messageType', 'Mail.transport', 'App.site_name', 'Workflow.approval_mail_subject', 'Workflow.approval_mail_body', 'Workflow.disapproval_mail_subject', 'Workflow.disapproval_mail_body', 'Workflow.approval_completion_mail_subject', 'Workflow.approval_completion_mail_body', 'Workflow.contact_after_approval_mail_subject', 'Workflow.contact_after_approval_mail_body', 'Mail.body_header', 'Mail.signature'));
     $this->initTags($languageId, $pluginName);
 }