public function screen_regist($auth = "")
 {
     $btn = "";
     $btn2 = "";
     $this->file = "memberinfo_form.tpl";
     // デフォルト
     // フォーム要素のデフォルト値を設定
     $date_defaults = ['Y' => date('Y'), 'm' => date('m'), 'd' => date('d')];
     $this->form->setDefaults(['birthday' => $date_defaults]);
     $this->make_form_controle();
     // フォームの妥当性検証
     if (!$this->form->validate()) {
         $this->action = "form";
     }
     if ($this->action == "form") {
         $this->title = '新規登録画面';
         $this->next_type = 'regist';
         $this->next_action = 'confirm';
         $btn = '確認画面へ';
     } else {
         if ($this->action == "confirm") {
             $this->title = '確認画面';
             $this->next_type = 'regist';
             $this->next_action = 'complete';
             $this->form->freeze();
             $btn = '登録する';
             $btn2 = '戻る';
         } else {
             if ($this->action == "complete" && isset($_POST['submit2']) && $_POST['submit2'] == '戻る') {
                 $this->title = '新規登録画面';
                 $this->next_type = 'regist';
                 $this->next_action = 'confirm';
                 $btn = '確認画面へ';
             } else {
                 if ($this->action == "complete" && isset($_POST['submit']) && $_POST['submit'] == '登録する') {
                     // データベースを操作します。
                     $PrememberModel = new PrememberModel();
                     // データベースを操作します。
                     $MemberModel = new MemberModel();
                     $userdata = $this->form->getSubmitValues();
                     if ($MemberModel->check_username($userdata) || $PrememberModel->check_username($userdata)) {
                         $this->title = '新規登録画面';
                         $this->message = "メールアドレスは登録済みです。";
                         $this->next_type = 'regist';
                         $this->next_action = 'confirm';
                         $btn = '確認画面へ';
                     } else {
                         // システム側から利用するときに利用
                         if ($this->is_system && is_object($auth)) {
                             $userdata['password'] = $auth->get_hashed_password($userdata['password']);
                         } else {
                             $userdata['password'] = $this->auth->get_hashed_password($userdata['password']);
                         }
                         $userdata['birthday'] = sprintf("%04d%02d%02d", $userdata['birthday']['Y'], $userdata['birthday']['m'], $userdata['birthday']['d']);
                         if ($this->is_system) {
                             $MemberModel->regist_member($userdata);
                             $this->title = '登録完了画面';
                             $this->message = "登録を完了しました。";
                         } else {
                             $userdata['link_pass'] = hash('sha256', uniqid(rand(), 1));
                             $PrememberModel->regist_premember($userdata);
                             $this->mail_to_premember($userdata);
                             $this->title = 'メール送信完了画面';
                             $this->message = "登録されたメールアドレスへ確認のためのメールを送信しました。<BR>";
                             $this->message .= "メール本文に記載されているURLにアクセスして登録を完了してください。<BR>";
                         }
                         $this->file = "message.tpl";
                     }
                 }
             }
         }
     }
     $this->form->addElement('submit', 'submit', $btn);
     $this->form->addElement('submit', 'submit2', $btn2);
     $this->form->addElement('reset', 'reset', '取り消し');
     $this->view_display();
 }