public function doControl(\permag\model\LoginHandler $lh, \permag\database\Database $db, \permag\view\PageNavigationView $pageNavView)
 {
     $outputHTML = '';
     $message_a = array();
     $regHandler = new \permag\model\RegisterHandler($db);
     $regView = new \permag\view\RegisterView();
     if ($lh->isLoggedIn() == false) {
         $outputHTML .= $regView->doRegisterView();
         // clicked register button
         if ($regView->triedToRegister()) {
             // check empty input
             if ($regView->emptyFieldsExists()) {
                 $message_a[] = \permag\view\RegisterView::EMPTY_FIELDS;
             } else {
                 $validationErrorCount = 0;
                 // validate input
                 if ($regView->validateUsername() == false) {
                     // add error messages
                     $message_a[] = $regView->getValidationError();
                     $validationErrorCount++;
                 }
                 if ($regView->validatePassword() == false) {
                     // add error messages
                     $message_a[] = $regView->getValidationError();
                     $validationErrorCount++;
                 }
                 if ($regView->validateEmail() == false) {
                     // add error messages
                     $message_a[] = $regView->getValidationError();
                     $validationErrorCount++;
                 }
                 if ($validationErrorCount == 0) {
                     // check if username exists
                     if ($regHandler->usernameExists($regView->getUsername()) || $regHandler->usernameIsReserved($regView->getUsername())) {
                         // username exists already, or is reserved, show message
                         $message_a[] = \permag\view\RegisterView::USERNAME_ALREADY_EXISTS;
                     } else {
                         // check password fields match
                         if ($regView->inputPasswordsMatch()) {
                             // register (username, password, email)
                             if ($regHandler->doRegister($regView->getUsername(), $regView->getPassword(), $regView->getEmail())) {
                                 $pageNavView->redirectTo($pageNavView->getLoginLink());
                             }
                         } else {
                             $message_a[] = \permag\view\RegisterView::PASSWORDS_DONT_MATCH;
                         }
                     }
                 }
             }
         }
         $messageHTML = $regView->outputMessage($message_a);
         return $outputHTML . $messageHTML;
     } else {
         $pageNavView->redirectTo($pageNavView->getHomeLink());
     }
 }
 public function doControl(\permag\model\LoginHandler $lh, \permag\view\PageNavigationView $pageNavView)
 {
     $outputHTML = '';
     $lw = new \permag\view\LoginView();
     $message = '';
     // logged in?
     if ($lh->isLoggedIn()) {
         // clicked logout?
         if ($lw->triedToLogOut()) {
             $lh->doLogout();
             $lw->killCookie();
             $pageNavView->redirectTo($pageNavView->getLoginLink());
         }
         // not logged in?
     } else {
         // login cookie is set
         if ($lw->cookieExists()) {
             // auto login using username/password from cookie
             $userInfo_a = array();
             $userInfo_a = $lw->readLoginCookie();
             if ($lh->doLogin($userInfo_a[0], $userInfo_a[1])) {
                 $message = $lw::USER_LOGGED_IN;
             }
         }
         // clicked login?
         if ($lw->triedToLogIn()) {
             // if username/passw is correct
             if ($lh->doLogin($lw->getUsername(), $lw->getPassword())) {
                 // if remember me is checked, save to cookie
                 if ($lw->rememberMe()) {
                     $lw->saveCookie();
                 }
                 $pageNavView->redirectTo($pageNavView->getHomeLink());
             } else {
                 $message = $lw::LOGIN_ERROR;
             }
         }
     }
     // logged in again?
     if ($lh->isLoggedIn()) {
         $outputHTML .= $lh->getLoggedInUsername();
         $outputHTML .= $lw->doLogoutBox();
     } else {
         $regLink = $pageNavView->getRegisterLink();
         $outputHTML .= $lw->doLoginBox($regLink);
     }
     // get the user message from the view
     $messageHTML = $lw->outputMessage($message);
     return $outputHTML . $messageHTML;
 }