Esempio n. 1
0
 /**
  * Mmeber leave
  * 
  * @access  public
  * @return  Response
  */
 public function action_index()
 {
     $val = self::get_validation_object();
     if (\Input::method() == 'POST') {
         \Util_security::check_csrf();
         $success_message = sprintf('%sを%sしました。', term('form.invite', 'site.mail'), term('form.post'));
         $error_message = '';
         $is_transaction_rollback = false;
         try {
             if (!$val->run()) {
                 throw new ValidationFailedException($val->show_errors());
             }
             $post = $val->validated();
             if (Model_MemberPre::get_one4invite_member_id_and_email($this->u->id, $post['email'])) {
                 throw new ValidationFailedException(sprintf('その%sは既に%sです。', term('site.email'), term('form.invited')));
             }
             DB::start_transaction();
             $token = Model_MemberPre::save_with_token($post['email'], null, $this->u->id);
             DB::commit_transaction();
             $mail = new Site_Mail('memberInvite');
             $mail->send($post['email'], array('register_url' => sprintf('%s?token=%s', Uri::create('member/register'), $token), 'invite_member_name' => $this->u->name, 'invite_message' => $post['message']));
             Session::set_flash('message', $success_message);
             Response::redirect('member/invite');
         } catch (ValidationFailedException $e) {
             $error_message = Site_Controller::get_error_message($e);
         } catch (EmailValidationFailedException $e) {
             Util_Toolkit::log_error('send mail error: ' . __METHOD__ . ' validation error');
             $error_message = 'メール送信エラー';
         } catch (EmailSendingFailedException $e) {
             Util_Toolkit::log_error('send mail error: ' . __METHOD__ . ' sending error');
             $error_message = 'メール送信エラー';
         } catch (\Database_Exception $e) {
             $is_transaction_rollback = true;
             $error_message = Site_Controller::get_error_message($e, true);
         } catch (FuelException $e) {
             $is_transaction_rollback = true;
             $error_message = Site_Controller::get_error_message($e);
         }
         if ($is_transaction_rollback && DB::in_transaction()) {
             DB::rollback_transaction();
         }
         if ($error_message) {
             Session::set_flash('error', $error_message);
         }
     }
     $this->set_title_and_breadcrumbs(term('form.invite_friend'), null, $this->u);
     $this->template->content = \View::forge('member/invite', array('val' => $val, 'member_pres' => Model_MemberPre::get4invite_member_id($this->u->id)));
 }