Esempio n. 1
0
 public static function _init()
 {
     static::$_properties['name']['label'] = term('member.name');
     static::$_properties['name']['validation']['min_length'][] = conf('member.name.validation.length.min');
     static::$_properties['name']['validation']['max_length'][] = conf('member.name.validation.length.max');
     if (is_enabled('notice') && conf('mention.isEnabled', 'notice')) {
         static::$_properties['name']['validation']['match_pattern'][] = sprintf('/^(%s)$/u', conf('member.name.validation.match_patterns.register'));
         $method = conf('member.name.validation.blacklist.method');
         if (is_callable($method)) {
             static::$_properties['name']['validation']['not_in_array'][] = call_user_func($method);
         }
     }
     static::$_properties['register_type']['validation']['in_array'][] = Site_Member::get_accept_member_register_types();
     $sex_options = Site_Form::get_form_options4config('term.member.sex.options');
     static::$_properties['sex']['label'] = term('member.sex.label');
     static::$_properties['sex']['form']['options'] = $sex_options;
     static::$_properties['sex']['validation']['in_array'][] = array_keys($sex_options);
     $options_public_flag = Site_Util::get_public_flags();
     static::$_properties['sex_public_flag']['label'] = sprintf('%sの%s', term('member.sex.label'), term('public_flag.label'));
     static::$_properties['sex_public_flag']['form'] = Site_Form::get_public_flag_configs();
     static::$_properties['sex_public_flag']['validation']['in_array'][] = $options_public_flag;
     static::$_properties['birthyear']['label'] = term('member.birthyear');
     $options = Form_Util::get_year_options(conf('member.profile.birthday.year_from'), conf('member.profile.birthday.year_to'));
     static::$_properties['birthyear']['form']['options'] = $options;
     static::$_properties['birthyear']['validation']['in_array'][] = array_keys($options);
     static::$_properties['birthyear_public_flag']['label'] = sprintf('%sの%s', term('member.birthyear'), term('public_flag.label'));
     static::$_properties['birthyear_public_flag']['form'] = Site_Form::get_public_flag_configs();
     static::$_properties['birthyear_public_flag']['validation']['in_array'][] = $options_public_flag;
     static::$_properties['birthday']['label'] = term('member.birthday');
     static::$_properties['birthday_public_flag']['label'] = sprintf('%sの%s', term('member.birthday'), term('public_flag.label'));
     static::$_properties['birthday_public_flag']['form'] = Site_Form::get_public_flag_configs();
     static::$_properties['birthday_public_flag']['validation']['in_array'][] = $options_public_flag;
     static::$_properties['invite_member_id'] = Util_Orm::get_relational_numeric_key_prop(false);
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 public static function save(\Validation $val, $posted_values)
 {
     $field_names = \Form_Util::get_field_names($val);
     foreach ($field_names as $name) {
         $site_config_obj = \Model_SiteConfig::get4name($name);
         if ($site_config_obj && $site_config_obj->value == $posted_values[$name]) {
             continue;
         }
         if (!$site_config_obj) {
             $site_config_obj = \Model_SiteConfig::forge();
         }
         $site_config_obj->name = $name;
         $site_config_obj->value = $posted_values[$name];
         $site_config_obj->save();
     }
 }
Esempio n. 4
0
 public static function save($member_id, Validation $val, $posted_values)
 {
     $field_names = Form_Util::get_field_names($val);
     foreach ($field_names as $name) {
         $member_config = Model_MemberConfig::get_one4member_id_and_name($member_id, $name);
         if ($member_config && $member_config->value == $posted_values[$name]) {
             continue;
         }
         if (!$member_config) {
             $member_config = Model_MemberConfig::forge();
         }
         $member_config->member_id = $member_id;
         $member_config->name = $name;
         $member_config->value = $posted_values[$name];
         $member_config->save();
     }
 }
Esempio n. 5
0
 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')));
 }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
 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')));
 }
Esempio n. 8
0
 /**
  * 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));
 }
Esempio n. 9
0
 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' => '変更'));
 }
Esempio n. 10
0
 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);
 }
Esempio n. 11
0
 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') . 'が正しくありません。');
 }
Esempio n. 12
0
function form_date(Validation $val, $label, $name_month, $name_day, $label_col_sm_size = 2, $help = '', $optional_public_flag = array(), $def_val_month = null, $def_val_day = null)
{
    $fields = array();
    $atters = array();
    $options = array();
    $names = array('month', 'day');
    foreach ($names as $name) {
        $val_name = 'name_' . $name;
        $val_name = 'name_' . $name;
        $fields[$name] = $val->fieldset()->field(${$val_name});
        $atters[$name] = array('id' => Site_Form::get_field_id($name), 'class' => 'form-control');
        if ($fields[$name]->get_attribute('required') == 'required') {
            $atters[$name]['required'] = 'required';
        }
        $val_name = 'def_val_' . $name;
        if (!is_null($fields[$name]->get_attribute('value'))) {
            ${$val_name} = $fields[$name]->get_attribute('value');
        } elseif (is_null(${$val_name})) {
            ${$val_name} = 1;
        }
        $options[$name] = !is_null($fields[$name]->get_options()) ? $fields[$name]->get_options() : Form_Util::get_int_options(1, $name == 'month' ? 12 : 31);
    }
    $data = array('val' => $val, 'name_month' => $name_month, 'name_day' => $name_day, 'def_val_month' => $def_val_month, 'def_val_day' => $def_val_day, 'label' => $label, 'options' => $options, 'atters' => $atters, 'is_required' => !empty($atters['month']['required']) && !empty($atters['day']['required']), 'label_col_sm_size' => $label_col_sm_size, 'help' => $help, 'optional_public_flag' => $optional_public_flag);
    return render('_parts/form/date', $data);
}