예제 #1
0
 public function handler()
 {
     access::verify_csrf();
     $form = $this->_get_form();
     $valid = $form->validate();
     $name = $form->register_user->inputs["name"]->value;
     if (register::check_user_name($name)) {
         $form->register_user->inputs["name"]->add_error("in_use", 1);
         $valid = false;
     }
     if ($valid) {
         $pending_user = register::create_pending_request($form);
         $policy = module::get_var("registration", "policy");
         if ($policy == "visitor") {
             if ($pending_user->state == 1) {
                 $user = register::create_new_user($pending_user->id);
                 Session::instance()->set("registration_first_usage");
                 auth::login($user);
                 Session::instance()->set("registration_first_usage", true);
                 $pending_user->delete();
             } else {
                 $user = register::create_new_user($pending_user->id, true);
                 message::success(t("A confirmation email has been sent to your email address."));
             }
         } else {
             if ($pending_user->state == 1) {
                 site_status::warning(t("There are pending user registration. <a href=\"%url\">Review now!</a>", array("url" => html::mark_clean(url::site("admin/register")), "locale" => module::get_var("gallery", "default_locale"))), "pending_user_registrations");
                 message::success(t("Your registration request is awaiting administrator approval"));
                 // added by Shad Laws, v2
                 if (module::get_var("registration", "admin_notify") == 1) {
                     register::send_admin_notify($pending_user);
                 }
             } else {
                 register::send_confirmation($pending_user);
                 message::success(t("A confirmation email has been sent to your email address."));
             }
         }
         json::reply(array("result" => "success"));
     } else {
         json::reply(array("result" => "error", "html" => (string) $form));
     }
 }