/** * 申請・承認・差戻し連絡メール送信 * * @param array $setting * @param array $approvalData * @param array $postData * @param array $approvalType * @return boolean * @access public */ private function _sendApprovalMail($setting, $approvalData = null, $postData, $approvalType) { /* インポート */ //コンポーネント /* TODO メール送信にBcEmailComponentを使用する App::import('Component', 'BcEmail'); */ //モデル App::import('Model', 'User'); $userModel = new User(); //サイト設定 App::import('Model', 'SiteConfig'); $siteConfigModel = new SiteConfig(); $siteConfigs = $siteConfigModel->find('first', array('conditions' => array('SiteConfig.name' => 'email'))); /* 情報の整理 */ //タイプ $type = $setting['ApprovalLevelSetting']['type']; //------------------------------ // 固定ページ //------------------------------ if ($type == 'page') { //承認タイプによって内容を変更する switch ($approvalType) { case 1: $approvalTypeVal = '承認申請'; $firstMes = '表題の固定ページについて、前段階の承認権限者より承認が下りました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; case 2: $approvalTypeVal = '差戻通知'; $firstMes = '表題の固定ページについて、次段階の承認権限者より差戻しがありました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; case 3: $approvalTypeVal = '承認申請'; $firstMes = '表題の固定ページについて、作成者より承認申請がありました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; default: break; } //メールを送るべき相手の段階 if (!empty($approvalData)) { //ただし差戻し後の申請段階だとpass_stageが0になっている。 //申請時のメールは常に第1段階に権限者へ渡る。 if ($approvalType == 3) { $passStage = 1; } else { $passStage = $approvalData['ApprovalPage']['pass_stage']; } //新規作成時は1段目の権限者に送る。 } else { $passStage = 1; } //タイトルの確認 $title = $postData['Page']['title']; //送信先のタイプ if ($passStage != 0) { //最初の段階でなければgroupかuserかを取得 $approverType = $setting['ApprovalLevelSetting']['level' . $passStage . '_type']; } else { $approverType = 'user'; //最初の段階まで戻っていれば作成者(user)にメールする。 } //最初の申請前の段階まで戻った時は作成者に送る //そうでなければ権限者に送る。 if ($approvalData['ApprovalPage']['next_approver_id'] != 0) { //送信先のユーザーを特定する。 if ($approverType == 'user') { //ユーザーID $userID = $setting['ApprovalLevelSetting']['level' . $passStage . '_approver_id']; //ユーザー情報の取得 $userData = $userModel->findById($userID); } else { //グループID $groupID = $setting['ApprovalLevelSetting']['level' . $passStage . '_approver_id']; $userDatas = $userModel->find('all', array('conditions' => array('User.user_group_id' => $groupID))); } //申請の前まで戻ってしまった場合。 } else { $userID = $postData['Page']['author_id']; $userData = $userModel->findById($userID); } //メッセージの取得 $mailData['message'] = ''; if (!empty($postData['Approval']['approval_comment'])) { $mailData['message'] = $postData['Approval']['approval_comment']; } /* メール送信設定 */ // TODO BcEmailComponentを使って送信する。 mb_language("japanese"); mb_internal_encoding("UTF-8"); $subject = "【" . $approvalTypeVal . "】" . $title; $from = $siteConfigs['SiteConfig']['value']; //メールの内容作成 $body = $firstMes . "■申し送り事項" . "\n" . $mailData['message'] . "\n" . "\n" . "以上"; //送信処理 if ($approverType == 'user') { if (!empty($userData['User']['email'])) { //メールの送信処理実行 $to = $userData['User']['email']; mb_send_mail($to, $subject, $body, "From:" . $from); } //グループだったら全員にループしつつメールする。 } elseif ($approverType == 'group') { if (!empty($userDatas)) { foreach ($userDatas as $data) { if (!empty($data['User']['email'])) { //メールの送信処理実行 $to = $userData['User']['email']; mb_send_mail($to, $subject, $body, "From:" . $from); } } } } //------------------------------ // ブログ //------------------------------ } else { //承認タイプによって内容を変更する switch ($approvalType) { case 1: $approvalTypeVal = '承認申請'; $firstMes = '表題のブログ記事について、前段階の承認権限者より承認が下りました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; case 2: $approvalTypeVal = '差戻通知'; $firstMes = '表題のブログ記事について、次段階の承認権限者より差戻しがありました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; case 3: $approvalTypeVal = '承認申請'; $firstMes = '表題のブログ記事について、作成者より承認申請がありました。' . "\n"; $firstMes .= '内容をお確かめのうえ、承認処理をお願いします。' . "\n" . "\n"; break; default: break; } //メールを送るべき相手の段階(0の時は作成者に送ることになる) if (!empty($approvalData)) { //ただし差戻し後の申請段階だとpass_stageが0になっている。 //申請時のメールは常に第1段階に権限者へ渡る。 if ($approvalType == 3) { $passStage = 1; } else { $passStage = $approvalData['ApprovalPost']['pass_stage']; } //新規作成時は1段目の権限者に送る。 } else { $passStage = 1; } //タイトルの確認 $title = $postData['BlogPost']['name']; //送信先のタイプ if ($passStage != 0) { //最初の段階でなければgroupかuserかを取得 $approverType = $setting['ApprovalLevelSetting']['level' . $passStage . '_type']; } else { $approverType = 'user'; //最初の段階まで戻っていれば作成者(user)にメールする。 } //echo $passStage;exit(); //申請の前段階まで戻った場合は作成者にメールする。 //そうでなければ、権限者へメールする。 if ($approvalData['ApprovalPost']['next_approver_id'] != 0) { //送信先のユーザーを特定する。 if ($approverType == 'user') { //ユーザーID $userID = $setting['ApprovalLevelSetting']['level' . $passStage . '_approver_id']; //ユーザー情報の取得 $userData = $userModel->findById($userID); } else { //グループID $groupID = $setting['ApprovalLevelSetting']['level' . $passStage . '_approver_id']; $userDatas = $userModel->find('all', array('conditions' => array('User.user_group_id' => $groupID))); } //申請の前段階まで戻ってしまった } else { $userID = $postData['BlogPost']['user_id']; $userData = $userModel->findById($userID); } //メッセージの取得 $mailData['message'] = ''; if (!empty($postData['Approval']['approval_comment'])) { $mailData['message'] = $postData['Approval']['approval_comment']; } /* メール送信設定 */ // TODO BcEmailComponentを使って送信する。 mb_language("japanese"); mb_internal_encoding("UTF-8"); $subject = "【" . $approvalTypeVal . "】" . $title; $from = $siteConfigs['SiteConfig']['value']; //メールの内容作成 $body = $firstMes . "■申し送り事項" . "\n" . $mailData['message'] . "\n" . "\n" . "以上"; //送信処理 if ($approverType == 'user') { if (!empty($userData['User']['email'])) { //メールの送信処理実行 $to = $userData['User']['email']; mb_send_mail($to, $subject, $body, "From:" . $from); } //グループだったら全員にループしつつメールする。 } elseif ($approverType == 'group') { if (!empty($userDatas)) { foreach ($userDatas as $data) { if (!empty($data['User']['email'])) { //メールの送信処理実行 $to = $userData['User']['email']; mb_send_mail($to, $subject, $body, "From:" . $from); } } } } } }