private static function get_validation_object() { $val = Validation::forge('invite'); $email = Form_Util::get_model_field('member_auth', 'email'); $email['attributes']['placeholder'] = sprintf('%sの%s', term('form.do_invite', 'common.friend'), term('site.email')); $val->add('email', $email['label'], $email['attributes'], $email['rules']); $val->add('message', term('common.message'), array('rows' => 3, 'placeholder' => sprintf('%sへの%s', term('common.friend'), term('form.invite', 'common.message', 'form._not_required'))), array('trim')); return $val; }
private function form_setting_email() { $add_fields = array('email' => \Form_Util::get_model_field('admin_user', 'email', sprintf('新しい%s', term('site.email'))), 'email_confirm' => array('label' => sprintf('新しい%s(確認用)', term('site.email')), 'attributes' => array('type' => 'email', 'class' => 'input-xlarge form-control'), 'rules' => array('required', array('match_field', 'email')))); $add_fields['email']['attributes']['class'] .= ' input-xlarge'; return \Site_Util::get_form_instance('setting_email', null, true, $add_fields, array('value' => term('form.do_update'))); }
public function form_leave() { $add_fields = array(); if (!$this->u->check_registered_oauth(true)) { $add_fields = array('password' => Form_Util::get_model_field('member_auth', 'password')); $add_fields['password']['attributes']['class'] .= ' input-xlarge'; } $form = \Site_Util::get_form_instance('leave', null, true, $add_fields, array('value' => term('form.do_confirm'))); return $form; }
public function form_setting_password() { $add_fields = array('old_password' => Form_Util::get_model_field('member_auth', 'password', sprintf('現在の%s', term('site.password'))), 'password' => Form_Util::get_model_field('member_auth', 'password', sprintf('新しい%s', term('site.password'))), 'password_confirm' => Form_Util::get_model_field('member_auth', 'password', sprintf('新しい%s(確認用)', term('site.password')))); $add_fields['old_password']['attributes']['class'] .= ' input-xlarge'; $add_fields['password']['attributes']['class'] .= ' input-xlarge'; $add_fields['password']['rules'][] = array('unmatch_field', 'old_password'); $add_fields['password_confirm']['attributes']['class'] .= ' input-xlarge'; $add_fields['password_confirm']['rules'][] = array('match_field', 'password'); return Site_Util::get_form_instance('setting_password', null, true, $add_fields, array('value' => term('form.update'))); }
/** * Execute index * * @access public * @return Response */ public function action_index() { // Already logged in Auth::check() and Response::redirect('member'); if (!($member_pre = $this->check_token())) { Session::set_flash('error', sprintf('URLが%sです。', term('form.disabled'))); throw new HttpNotFoundException(); } $form_member_profile = new Form_MemberProfile('regist'); $add_fields = array(); $add_fields['token'] = Form_Util::get_model_field('member_pre', 'token'); $add_fields['password'] = Form_Util::get_model_field('member_auth', 'password'); if (!$member_pre->password) { $add_fields['password_confirm'] = Form_Util::get_model_field('member_auth', 'password', term('site.password', 'form._confirm')); } $form_member_profile->set_validation($add_fields, 'member_register'); $form_member_profile->set_validation_message('match_value', ':labelが正しくありません。'); if (Input::method() == 'POST') { Util_security::check_csrf(); $error_message = ''; $is_transaction_rollback = false; try { $form_member_profile->validate(); $post = $form_member_profile->get_validated_values(); if ($member_pre->password && $post['password'] != $member_pre->password) { throw new ValidationFailedException(term('site.password') . 'が正しくありません。'); } DB::start_transaction(); // create new member $auth = Auth::instance(); if (!($member_id = $auth->create_user($member_pre->email, $post['password'], $post['member_name']))) { throw new FuelException('create member error.'); } $member = $auth->get_member(); // 仮登録情報の削除 if ($member_pre->invite_member_id) { $member->invite_member_id = $member_pre->invite_member_id; $member->save(); // TODO: make friend to invited_member } $email = $member_pre->email; $password = $member_pre->password; $member_pre->delete(); // member_profile 登録 $form_member_profile->set_member_obj($member); $form_member_profile->seve(); // email が重複する member_pre の削除 if ($member_pres = \Model_MemberPre::query()->where('email', $email)->get()) { foreach ($member_pres as $member_pre) { $member_pre->delete(); } } // timeline 投稿 if (is_enabled('timeline')) { \Timeline\Site_Model::save_timeline($member_id, null, 'member_register', $member_id, $member->created_at); } DB::commit_transaction(); $mail = new Site_Mail('memberRegister'); $mail->send($member_pre->email, array('to_name' => $member->name)); if ($auth->login($email, $password)) { Session::set_flash('message', sprintf('%sが%sしました。', term('site.registration'), term('form.complete'))); Response::redirect('member'); } Session::set_flash('error', 'ログインに失敗しました'); Response::redirect(conf('login_uri.site')); } 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 (\Auth\SimpleUserUpdateException $e) { $is_transaction_rollback = true; $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 ($error_message) { if ($is_transaction_rollback && DB::in_transaction()) { DB::rollback_transaction(); } Session::set_flash('error', $error_message); } } $this->set_title_and_breadcrumbs(term('member.view', 'site.registration', 'form.confirm'), array('member/signup' => term('site.signup'))); $this->template->content = View::forge('member/register/index', array('val' => $form_member_profile->get_validation(), 'member_public_flags' => $form_member_profile->get_member_public_flags(), 'profiles' => $form_member_profile->get_profiles(), 'member_profile_public_flags' => $form_member_profile->get_member_profile_public_flags(), 'member_pre' => $member_pre)); }
public function form_reset_password() { $add_fields = array('password' => Form_Util::get_model_field('member_auth', 'password', sprintf('新しい%s', term('site.password'))), 'password_confirm' => Form_Util::get_model_field('member_auth', 'password', sprintf('新しい%s(確認用)', term('site.password'))), 'token' => Form_Util::get_model_field('member_pre', 'token')); $add_fields['token']['attributes'] = array('type' => 'hidden', 'value' => Input::param('token')); $add_fields['password']['attributes']['class'] .= ' input-xlarge'; $add_fields['password_confirm']['attributes']['class'] .= ' input-xlarge'; $add_fields['password_confirm']['rules'][] = array('match_field', 'password'); return Site_Util::get_form_instance('reset_password', null, true, $add_fields, array('value' => '変更')); }
private function set_validation_member_field_birthday() { if (!$this->check_is_enabled_member_field('birthday')) { return false; } $properties = Form_Util::get_model_field('member', 'birthyear'); $attrs = $properties['attributes']; $attrs['value'] = isset($this->member_obj->birthyear) ? $this->member_obj->birthyear : date('Y'); if (self::conf('birthday', 'birthyear.isRequired')) { $properties['rules'][] = 'required'; } $this->validation->add('member_birthyear', $properties['label'], $attrs, $properties['rules']); list($month, $day) = !empty($this->member_obj->birthday) ? Util_Date::sprit_date_str($this->member_obj->birthday) : array(1, 1); if (self::conf('birthday', 'birthday.isRequired')) { $rules[] = 'required'; } $options = Form_Util::get_int_options(1, 12); $rules = array(array('valid_string', 'numeric'), array('in_array', array_keys($options))); $this->validation->add('member_birthday_month', '誕生日(月)', array('type' => 'select', 'options' => $options, 'value' => $month), $rules); $options = Form_Util::get_int_options(1, 31); $rules = array(array('valid_string', 'numeric'), array('in_array', array_keys($options))); $this->validation->add('member_birthday_day', '誕生日(日)', array('type' => 'select', 'options' => $options, 'value' => $month), $rules); }
private function set_validation_code() { $field = Form_Util::get_model_field('member_email_pre', 'code'); $this->val_obj->add('code', $field['label'], $field['attributes'], $field['rules']); $this->val_obj->set_message('valid_string', term('form.confirm', 'site.code') . 'が正しくありません。'); $this->val_obj->set_message('exact_length', term('form.confirm', 'site.code') . 'が正しくありません。'); }