Enable conference registration

Change-Id: I5e973513d78c63a48e62ff1aa3a5d9a1621f4a4d
diff --git a/index.php b/index.php
index d4310c8..5ce87e6 100755
--- a/index.php
+++ b/index.php
@@ -5,6 +5,7 @@
 include_once 'utils.php';
 include_once 'mail.php';
 include_once 'ldap.php';
+include_once 'db_backend.php';
 include_once 'validators.php';
 include_once 'User.php';
 require __DIR__ . '/vendor/autoload.php';
@@ -13,6 +14,7 @@
 use Monolog\Handler\StreamHandler;
 use Monolog\Handler\RotatingFileHandler;
 use \User as User;
+use \DB as DB;
 include $TEMPLATE . "strings.php";
 $log = new Logger('signup');
 $log->pushHandler(new RotatingFileHandler(__DIR__ . '/logs/signup.log', 0, Logger::DEBUG));
@@ -124,17 +126,23 @@
 
 function verify_request(User $user)
 {
+    global $log, $CONFERENCE_REGISTRATION, $CAPTCHA_LENGTH;
+
     $TEMPLATE = template_path();
     unset($_SESSION['captcha_token']);
     include $TEMPLATE . 'strings.php';
     $password = $_POST["password"];
     $error = "";
 
-    $error .= validate_username($user->username);
+    if (!$CONFERENCE_REGISTRATION) {
+        $error .= validate_username($user->username);
+        $error .= validate_password($password);
+    }
+    $log->debug("validating request");
     $error .= validate_name($user->first_name, $FIRST_NAME_VALIDATION_ERROR);
     $error .= validate_name($user->last_name, $LAST_NAME_VALIDATION_ERROR);
+    $log->debug("request validated: $error");
     $error .= validate_email($user->email);
-    $error .= validate_password($password);
 
 
     if ($CAPTCHA_LENGTH > 0  &&  !(isset($_SESSION['captcha']) && PhraseBuilder::comparePhrases($_SESSION['captcha'], $_POST['captcha']))) {
@@ -156,7 +164,8 @@
     $pending = redis_get("pending");
     if ($pending) {
         $maillist = $pending->mails;
-        array_push($maillist, $user->email);
+        if(is_array($maillist))
+            array_push($maillist, $user->email);
     } else
         $maillist = [$user->email];
     redis_set("pending", (object)["mails" => $maillist], $MAIL_CONFIRMATION_AWAIT_DELAY);
@@ -217,12 +226,14 @@
                 }
                 break;
             case "recover":
+                if ($CONFERENCE_REGISTRATION)
+                    break;
                 $TEMPLATE = template_path();
                 unset($_SESSION['captcha_token']);
                 include $TEMPLATE . 'strings.php';
 
                 $email = $_POST["email"];
-                if (!ldap_mail_count($email)) {
+                if (($CONFERENCE_REGISTRATION & ! (new DB($log))->mail_count($email)) || !ldap_mail_count($email)) {
                     unset($_POST['email']);
                     $error = $error . $STRINGS->recover_email_not_registered;
                 }
@@ -260,6 +271,8 @@
                 break;
 
             case "password_change":
+                if ($CONFERENCE_REGISTRATION)
+                    break;
                 $password = $_POST['password'];
                 $error = validate_password($password);
                 if ($error) {
@@ -295,7 +308,7 @@
                 $token = $_GET["token"];
                 $user = redis_get_user($token);
                 if ($user && gettype($user) == "object") {
-                    if (ldap_add_user($user)) {
+                    if (($CONFERENCE_REGISTRATION && (new DB($log))->add_user($user)) || (!$CONFERENCE_REGISTRATION && ldap_add_user($user))) {
                         if ($REDIRECT_TO)
                             header("refresh:5;url=" . $REDIRECT_TO);
 
@@ -308,7 +321,7 @@
                             }
                         }
                         redis_inc_ipdata(getClientIP(), "register");
-                        $log->info("User registered: " . $user->to_string());
+                        $log->info("User registration completed: " . $user->to_string());
                         echo $STRINGS->email_confirmation;
                         if (isset($POST_REGISTER_HOOK)) $POST_REGISTER_HOOK($user);
                         include $TEMPLATE . "mail_confirmed.htm";