added self-registration for apprentices
authorMatteo Nastasi <nastasi@alternativeoutput.it>
Mon, 31 Aug 2015 12:49:47 +0000 (14:49 +0200)
committerMatteo Nastasi <nastasi@alternativeoutput.it>
Mon, 31 Aug 2015 12:49:47 +0000 (14:49 +0200)
web/Obj/user.phh
web/index.php
web/index_wr.php
web/mailmgr.php
web/room.js
web/usermgmt.php

index 4e716d0..3ca1f97 100644 (file)
@@ -58,6 +58,7 @@ define('USER_FLAG_TY_ALL',     0xff0000); // done
 define('USER_FLAG_TY_NORM',    0x010000); // done
 define('USER_FLAG_TY_SUPER',   0x020000); // done
 define('USER_FLAG_TY_CERT',    0x040000); // done
+define('USER_FLAG_TY_APPR',    0x080000); // done
 //  ... other usefull status ...
 define('USER_FLAG_TY_FIRONLY', 0x200000); // done
 define('USER_FLAG_TY_ADMIN',   0x400000); // done
index a295374..fefb50d 100644 (file)
@@ -1114,13 +1114,14 @@ window.onload = function() {
              <div id="apprendice_div" style="display: none; background-color: #ffd780; border: 1px solid #ffae00; padding: 8px;">
          </br>
          Inserisci il tuo nickname e il tuo indirizzo e-mail.</br>
-         Il tuo nickname non può essere più lungo di 12 caratteri, </br>deve essere composto soltanto da lettere non accentate e numeri,</br>senza ripetere lo stesso carattere per più di 3 volte di fila.</br></br>
+         Il tuo nickname non può essere più lungo di 12 caratteri, </br>deve essere composto soltanto da lettere non accentate e numeri,</br>senza ripetere lo stesso carattere per più di 3 volte consecutive.</br></br>
     <form accept-charset="utf-8" method="post" action="" onsubmit="return j_new_apprendice(this);">
+    <input type="hidden" name="new_apprendice" value="666">
     <table class="login">
     <tr><td>nickname:</td>
-    <td><input id="nameid" class="input_text" name="name" type="text" size="24" maxlength="12" value=""></td></tr>
+    <td><input id="nameid" class="input_text" name="cli_name" type="text" size="24" maxlength="12" value=""></td></tr>
     <tr><td>e-mail:</td>
-    <td><input id="emailid" class="input_text" name="name" type="text" size="24" maxlength="12" value=""></td></tr>
+    <td><input id="emailid" class="input_text" name="cli_email" type="text" size="24" maxlength="512" value=""></td></tr>
     <tr><td colspan="2"><input id="sub" value="<?php echo $mlang_room['btn_send'][$G_lang];?>" type="submit" class="button"></td></tr>
     </table>
     </form></div>
index 339e461..da0868b 100644 (file)
@@ -55,7 +55,7 @@ $mlang_indwr = array( 'unknownerr'    => array( 'it' => 'errore sconosciuto',
                       'pollnone' => array( 'it' => '<br><br>Al momento non è attivo alcun sondaggio.',
                                            'en' => '<br><br>At this moment no polls are active.'),
                       'pollchoo' => array( 'it' => '<br><br>Non hai espresso nessuna preferenza.',
-                                           'en' => '<br><br>You don\'t choose any preference, do it'), 
+                                           'en' => '<br><br>You don\'t choose any preference, do it'),
                       'pollagai' => array( 'it' => '<br>Per questo sondaggio hai già votato.<br><br>Non si può esprimere la propria preferenza più di una volta.',
                                            'en' => '<br>You just express your preference about this poll.<br><br>You cannot do it again.'),
                       'pollrec'  => array ('it' => '<br><br>Il tuo voto è stato registrato.',
@@ -67,7 +67,7 @@ $mlang_indwr = array( 'unknownerr'    => array( 'it' => 'errore sconosciuto',
                       'btn_stays'=> array( 'it' => 'resta in piedi.',
                                            'en' => 'stay standing.'),
                       'badsit_a' => array( 'it' => '<br>Tu o qualcuno col tuo stesso indirizzo IP si è alzato da un tavolo senza il consenso degli altri giocatori.<br><br>Dovrai aspettare ancora ',
-                                           'en' => '<br>You or someone with your same IP address is standing up from a table without the permission of the other players <br><br>You will wait '), 
+                                           'en' => '<br>You or someone with your same IP address is standing up from a table without the permission of the other players <br><br>You will wait '),
                       'badsit_b' => array( 'it' => ' prima di poterti sedere nuovamente.<br><br>Se non sei stato tu ad alzarti e possiedi un login con password, autenticandoti con quello, potrai accedere.',
                                            'en' => ' before you can sit down again. If you don\'t leave the table and you have a login with a password, authenticating with this one you will access'),
                       'nu_loginau' => array('it' => "login già in uso",
@@ -95,28 +95,24 @@ Ciò è necessario per ottenere la password.<br><br>
 Saluti e buone partite, mop.<br>',
                                            'en' => 'EN mhtml [%s] [%s] [%s]'),
 
-                      'nu_gtext' => array( 'it' =>
-'Ciao %s, sono l\' amministratore del sito di Brisk.
+                      'ap_mtext' => array( 'it' =>
+'Ciao, sono l\' amministratore del sito di Brisk.
 
-Ti volevo avvisare che ho attivato i login di \'%s\' che hai
-garantito.
+Ti sei registrato col nickname \'%s\',
+vai al link: <%s>
+per confermare il tuo indirizzo di posta elettronica.
 
-Ti ricordo che i login vanno dati a persone di fiducia, se 3
-di quelli che hai autenticato verranno segnati come molestatori
-verrà sospeso anche il tuo accesso.
+Ciò è necessario per ottenere la password.
 
-Grazie dell\' impegno, mop.',
-                                           'en' => 'EN nu_gtext [%s][%s]'),
+Saluti e buone partite, mop.',
+                                           'en' => 'EN mtext [%s] [%s]'),
 
-                      'nu_ghtml' => array( 'it' =>
-'Ciao %s, sono l\' amministratore del sito di Brisk.<br><br>
-Ti volevo avvisare che ho attivato i login di \'%s\' che hai
-garantito.<br><br>
-Ti ricordo che i login vanno dati a persone di fiducia, se 3
-di quelli che hai autenticato verranno segnati come molestatori
-verrà sospeso anche il tuo accesso.<br><br>
-Grazie dell\' impegno, mop.',
-                                           'en' => 'EN nu_ghtml [%s][%s]')
+                      'ap_mhtml' => array( 'it' => 'Ciao, sono l\' amministratore del sito di Brisk.<br><br>
+Ti sei registrato col nickname \'%s\',<br>
+<a href="%s">clicca qui</a> per confermare il tuo indirizzo di posta elettronica.<br><br>
+Ciò è necessario per ottenere la password.<br><br>
+Saluti e buone partite, mop.<br>',
+                                           'en' => 'EN mhtml [%s] [%s]'),
                       );
 
 define('LICMGR_CHO_ACCEPT', 0);
@@ -165,15 +161,15 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
         if ($argz[0] == 'getchallenge') {
             if (isset($get['cli_name']))
                 $cli_name = $get['cli_name'];
-            if (($a_sem = Challenges::lock_data(TRUE)) != FALSE) { 
+            if (($a_sem = Challenges::lock_data(TRUE)) != FALSE) {
                 log_main("chal lock data success");
-                
+
                 if (($chals = &Challenges::load_data()) != FALSE) {
-                    
+
                     $token =  uniqid("");
                     // echo '2|'.$argz[1].'|'.$token.'|'.$remote_addr.'|'.$curtime.'|';
                     // exit;
-                    
+
                     if (($login_new = validate_name(urldecode($cli_name))) != FALSE) {
                         if ($chals->add($login_new, $token, $remote_addr, $curtime) != FALSE) {
                             log_send("SUCCESS: token:".$token);
@@ -192,8 +188,8 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                         Challenges::save_data(&$chals);
                     }
                 }
-                
-                
+
+
                 Challenges::unlock_data($a_sem);
             }
             else {
@@ -220,13 +216,97 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
         else if ($argz[0] == 'placing') {
             require_once("briskin5/Obj/briskin5.phh");
             require_once("briskin5/Obj/placing.phh");
-            
+
             echo show_notify(str_replace("\n", " ", placings_show(FALSE)), 0, $mlang_indwr['btn_close'][$G_lang], 800, 600);
         }
         else if ($argz[0] == 'whysupport') {
             echo show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lng], 400, 200);
         }
-        else { 
+        else if ($argz[0] == 'apprendice') {
+            log_step("APPREND");
+            if (($cli_name = gpcs_var('cli_name', $get, $post, $cookie)) === FALSE)
+                $cli_name = "";
+
+            if (($cli_email = gpcs_var('cli_email', $get, $post, $cookie)) === FALSE)
+                $cli_email = "";
+
+            $mesg_to_user = "";
+
+            // check existence of username or email
+            $is_trans = FALSE;
+            do {
+                if (($bdb = BriskDB::create()) == FALSE)
+                    break;
+
+                log_step("APPREND1");
+                // FIXME: CHECK IP AS PREVIOUS REQUIRER
+
+                $cli_name = urldecode($cli_name);
+                $cli_email = urldecode($cli_email);
+
+                // check for already used fields
+                if (($idret = $bdb->check_record_by_login_or_email($cli_name, $cli_email)) != 0) {
+                    $mesg_to_user = ($idret == 1 ?  $mlang_indwr['nu_loginau'][$G_lang] :
+                                     ($idret == 2 ? $mlang_indwr['nu_emailau'][$G_lang] :
+                                      $mlang_indwr['unknownerr'][$G_lang]));
+                    break;
+                }
+                log_step("APPREND2");
+
+                $bdb->transaction('BEGIN');
+                $is_trans = TRUE;
+                //   insert the new user disabled with reason NU_MAILED
+                // FIXME: move 'no-guaran' user into configuration file
+                if (($usr_obj = $bdb->user_add($cli_name, 'THE_PASS', $cli_email,
+                                               USER_FLAG_TY_DISABLE | USER_FLAG_TY_APPR,
+                                               USER_DIS_REA_NU_MAILED, 10103)) == FALSE) {
+                    fprintf(STDERR, "ERROR: user_add FAILED\n");
+                    break;
+                }
+                log_step("APPREND3");
+
+                if (($mail_code = $bdb->mail_reserve_code()) == FALSE) {
+                    fprintf(STDERR, "ERROR: mail reserve code FAILED\n");
+                    break;
+                }
+                $hash = md5($curtime . $G_alarm_passwd . $cli_name . $cli_email);
+
+                $confirm_page = sprintf("http://%s/%s/mailmgr.php?f_act=checkmail&f_code=%d&f_hash=%s",
+                                        $G_domain, $G_webbase, $mail_code, $hash);
+                $subj = $mlang_indwr['nu_msubj'][$G_lang];
+                $body_txt = sprintf($mlang_indwr['ap_mtext'][$G_lang],
+                                    $cli_name, $confirm_page);
+                $body_htm = sprintf($mlang_indwr['ap_mhtml'][$G_lang],
+                                    $cli_name, $confirm_page);
+
+                $mail_item = new MailDBItem($mail_code, $usr_obj->code, MAIL_TYP_CHECK,
+                                            $curtime, $subj, $body_txt, $body_htm, $hash);
+                log_step("APPREND4");
+
+                if (brisk_mail($cli_email, $subj, $body_txt, $body_htm) == FALSE) {
+                    // mail error
+                    fprintf(STDERR, "ERROR: mail send FAILED\n");
+                    break;
+                }
+                log_step("APPREND5");
+
+                // save the mail
+                if ($mail_item->store($bdb) == FALSE) {
+                    // store mail error
+                    fprintf(STDERR, "ERROR: store mail FAILED\n");
+                    break;
+                }
+                log_step("APPREND6");
+
+                echo "1";
+                $bdb->transaction('COMMIT');
+                return TRUE;
+            } while(FALSE);
+            $bdb->transaction('ROLLBACK');
+            echo "$mesg_to_user";
+            return FALSE;
+        }
+        else {
             log_wr("Get User Error");
             echo "Get User Error:" + $argz[0];
             return FALSE;
@@ -302,15 +382,14 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
         }
     }
     else if ($argz[0] == 'warranty') {
-        if (($cli_name = gpcs_var('cli_name', $get, $post, $cookie)) === FALSE) 
+        if (($cli_name = gpcs_var('cli_name', $get, $post, $cookie)) === FALSE)
             $cli_name = "";
-        
+
         if (($cli_email = gpcs_var('cli_email', $get, $post, $cookie)) === FALSE)
             $cli_email = "";
 
-        
         $mesg_to_user = "";
-        
+
         log_wr("INFO:SKIP:argz == warranty name: [".$cli_name."] CERT: ".$user->is_cert());
         if ($user->is_cert()) {
             if (0 == 1) {
@@ -353,7 +432,7 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                     $is_trans = TRUE;
                     //   insert the new user disabled with reason NU_MAILED
                     if (($usr_obj = $bdb->user_add($cli_name, 'THE_PASS', $cli_email,
-                                                   USER_FLAG_TY_DISABLE,
+                                                   USER_FLAG_TY_DISABLE | USER_FLAG_TY_NORM,
                                                    USER_DIS_REA_NU_MAILED, $user->code)) == FALSE) {
                         fprintf(STDERR, "ERROR: user_add FAILED\n");
                         break;
@@ -395,42 +474,40 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                 } while(FALSE);
                 $bdb->transaction('ROLLBACK');
             }
-            
+
         }
         else {
             /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
             $mesg_to_user = nickserv_msg($dt, $mlang_indwr['warrmust'][$G_lang]);
         }
-        
+
         if ($mesg_to_user != "") {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-            
+
             $user->comm[$user->step % COMM_N] .= $mesg_to_user;
             $user->step_inc();
         }
     }
     else if ($argz[0] == 'mesgtoadm') {
-        if (($cli_subj = gpcs_var('cli_subj', $get, $post, $cookie)) === FALSE) 
+        if (($cli_subj = gpcs_var('cli_subj', $get, $post, $cookie)) === FALSE)
             $cli_subj = "";
-        
+
         if (($cli_mesg = gpcs_var('cli_mesg', $get, $post, $cookie)) === FALSE)
             $cli_mesg = "";
 
-
-        
         $mesg_to_user = "";
-        
+
         log_wr("INFO:SKIP:argz == mesgtoadm name: [".$user->name."] AUTH: ".$user->is_auth());
         if ($user->is_auth()) {
             if (($wa_lock = Warrant::lock_data(TRUE)) != FALSE) {
                 if (($bdb = BriskDB::create()) != FALSE) {
                     $bdb->users_load();
-                
+
                     if (($ema = $bdb->getmail($user->name)) != FALSE) {
                         //  mail("nastasi",
                         mail("brisk@alternativeoutput.it", urldecode($cli_subj), urldecode($cli_mesg), sprintf("From: %s <%s>", $user->name, $ema));
                     }
-                    
+
                     if (($fp = @fopen(LEGAL_PATH."/messages.txt", 'a')) != FALSE) {
                         /* Unix time | session | nickname | IP | where was | mesg */
                         fwrite($fp, sprintf("%ld|%s|%s|%s\n", $curtime, $user->name,
@@ -454,16 +531,16 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                 /* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" */
                 $mesg_to_user = nickserv_msg($dt, $mlang_indwr['commerr'][$G_lang]);
             }
-            
+
         }
         else {
             /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
             $mesg_to_user = nickserv_msg($dt, $mlang_indwr['mesgmust'][$G_lang]);
         }
-        
+
         if ($mesg_to_user != "") {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-            
+
             $user->comm[$user->step % COMM_N] .= $mesg_to_user;
             $user->step_inc();
         }
@@ -473,15 +550,15 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
 
     else if ($argz[0] == 'poll') {
         GLOBAL $G_with_poll, $G_poll_name;
-        if (($cli_choose = gpcs_var('cli_choose', $get, $post, $cookie)) === FALSE) 
+        if (($cli_choose = gpcs_var('cli_choose', $get, $post, $cookie)) === FALSE)
             $cli_choose = "";
-        
+
         if (($cli_poll_name = gpcs_var('cli_poll_name', $get, $post, $cookie)) === FALSE)
             $cli_poll_name = "";
 
         $poll_lock = FALSE;
         $mesg_to_user = "";
-  
+
         $fp = FALSE;
         $echont = "0";
 
@@ -506,38 +583,38 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                 log_wr("break1");
                 break;
             }
-            
+
             if ($G_with_poll == FALSE && $G_poll_name != FALSE && $G_poll_name != "") {
                 $mesg_to_user = show_notify($mlang_indwr['pollnone'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
                 log_wr("break2");
                 break;
             }
-    
+
             if ($cli_choose == "" || !isset($cli_choose)) {
                 $mesg_to_user = show_notify($mlang_indwr['pollchoo'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
                 log_wr("break2.5");
                 break;
             }
-    
+
             if (($poll_lock = Poll::lock_data(TRUE)) == FALSE) {
                 /* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" */
                 $mesg_to_user = nickserv_msg($dt, $mlang_indwr['commerr'][$G_lang]);
                 log_wr("break3");
                 break;
             }
-    
+
             if (($fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'r+')) == FALSE)
                 $fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'w+');
-            
+
             if ($fp == FALSE) {
                 $mesg_to_user = nickserv_msg($dt, $mlang_indwr['commerr'][$G_lang]);
                 log_wr("break4");
                 break;
             }
-    
+
             log_wr("poll: cp");
             fseek($fp, 0);
-            
+
             log_wr("poll: cp2");
             while (!feof($fp)) {
                 log_wr("poll: cp3");
@@ -554,12 +631,12 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                 }
             }
             log_wr("poll: cp4");
-            
+
             if ($dobreak) {
                 log_wr("break5");
                 break;
             }
-      
+
             /* Unix time | nickname | choose */
             fwrite($fp, sprintf("%ld|%s|%s\n", $curtime, xcapelt($user->name), xcapelt(urldecode($cli_choose))));
             fflush($fp);
@@ -567,16 +644,16 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
             $echont = "1";
             log_wr("poll: cp5");
         } while (0);
-        
+
         if ($fp != FALSE)
             fclose($fp);
-        
+
         if ($poll_lock != FALSE)
             Poll::unlock_data($poll_lock);
-        
+
         if ($mesg_to_user != "") {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-            
+
             $user->comm[$user->step % COMM_N] .= $mesg_to_user;
             $user->step_inc();
         }
@@ -621,36 +698,36 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
         else if ($argz[0] == 'about') {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
             $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_about[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
-            
+
             log_wr($user->comm[$user->step % COMM_N]);
             $user->step_inc();
-            
+
         }
         else if ($argz[0] == 'placing') {
             require_once("briskin5/Obj/briskin5.phh");
             require_once("briskin5/Obj/placing.phh");
-            
+
             $user->comm[$user->step % COMM_N] =  "gst.st = ".($user->step+1)."; ";
             $user->comm[$user->step % COMM_N] .= show_notify_ex(str_replace("\n", " ", placings_show($user)), 0, $mlang_indwr['btn_backtotab'][$G_lang], 800, 600, TRUE, 0);
-            
+
             log_wr($user->comm[$user->step % COMM_N]);
             $user->step_inc();
         }
         else if ($argz[0] == 'roadmap') {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
             $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_roadmap[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
-            
+
             log_wr($user->comm[$user->step % COMM_N]);
             $user->step_inc();
-            
+
         }
         else if ($argz[0] == 'whysupport') {
             $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
             $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
-            
+
             log_wr($user->comm[$user->step % COMM_N]);
             $user->step_inc();
-            
+
         }
         else if ($argz[0] == 'chatt') {
             $brisk->chatt_send(&$user, xcapemesg($mesg));
@@ -697,11 +774,11 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                     log_wr("INFO:SKIP:argz == sitdown && ->the_end == TRUE => ignore request.");
                     return FALSE;
                 }
-                
+
                 // Take parameters
                 $table_idx = (int)$argz[1];
                 $table = &$brisk->table[$table_idx];
-    
+
                 $not_allowed_msg = "";
                 if ($G_shutdown) {
                         $not_allowed_msg = nickserv_msg($dt, $mlang_indwr['shutmsg'][$G_lang]);
@@ -724,7 +801,7 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                     $user->step_inc();
                     return TRUE;
                 }
-                
+
                 /* TODO: refact to a function */
                 // if ($user->bantime > $user->laccwr) {
                 require_once("Obj/hardban.phh");
@@ -742,48 +819,48 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                     $user->step_inc();
                     return TRUE;
                 }
-    
+
                 if ($table->player_n == PLAYERS_N) {
                     log_wr("WARN:FSM: Sitdown unreachable, table full.");
                     return FALSE;
                 }
-      
+
                 // set new status
                 $user->subst = "sitdown";
                 $user->table = $table_idx;
                 $user->table_pos = $table->user_add($idx);
-                
+
                 log_wr("MOP before");
-                
+
                 if ($table->player_n == PLAYERS_N) {
                     require_once("briskin5/Obj/briskin5.phh");
                     log_wr("MOP inall");
-                    
+
                     // Start game for this table.
                     log_wr("Start game!");
        
                     //
                     //  START THE SPAWN HERE!!!!
                     //
-                    
+
                     // Create new spawned table
                     // $bin5_sem = Bin5::lock_data(TRUE, $table_idx);
                     $table_token = uniqid("");
                     $brisk->table[$table_idx]->table_token = $table_token;
                     $brisk->table[$table_idx]->table_start = $curtime;
-                    
+
                     $plist = "$table_token|$user->table|$table->player_n";
                     for ($i = 0 ; $i < $table->player_n ; $i++) {
                         $plist .= '|'.$brisk->user[$table->player[$i]]->sess;
                     }
                     log_legal($curtime, $user->ip, $user, "STAT:CREATE_GAME", $plist);
-                    
+
                     log_wr("pre new Bin5");
                     if (($bin5 = new Bin5($brisk, $table_idx, $table_token, $get, $post, $cookie)) == FALSE)
                         log_wr("bri create: FALSE");
                     else
                         log_wr("bri create: ".serialize($bin5));
-                    
+
                     log_wr("pre init table");
                     // init table
                     $bin5_table = $bin5->table[0];
@@ -798,26 +875,26 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                     for ($i = 0 ; $i < $table->player_n ; $i++) {
                         $bin5_user_cur = $bin5->user[$i];
                         $user_cur = $brisk->user[$table->player[$i]];
-                        
+
                         $bin5_user_cur->laccwr = $curtime;
                         $bin5_user_cur->trans_step = $user_cur->step + 1;
                         $bin5_user_cur->comm[$bin5_user_cur->step % COMM_N] = "";
                         $bin5_user_cur->step_inc();
                         $bin5_user_cur->comm[$bin5_user_cur->step % COMM_N] = show_table(&$bin5,&$bin5_user_cur,$bin5_user_cur->step+1,TRUE,FALSE);
                         $bin5_user_cur->step_inc();
-                        
+
                         log_wr("TRY PRESAVE: ".$bin5_user_cur->step." TRANS STEP: ".$bin5_user_cur->trans_step);
-                        
+
                         log_wr("Pre if!");
-                        
+
                         //          ARRAY_POP DISABLED
                         //         // CHECK
                         while (array_pop($user_cur->comm) != NULL);
-          
+
                         $user_cur->trans_step = $user_cur->step + 1;
                         $user_cur->comm[$user_cur->step % COMM_N] = sprintf('gst.st_loc++; gst.st=%d; createCookie("table_idx", %d, 24*365, cookiepath); createCookie("table_token", "%s", 24*365, cookiepath); createCookie("lang", "%s", 24*365, cookiepath); xstm.stop(); window.onunload = null ; window.onbeforeunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token, $G_lang);
                         log_wr("TRANS ATTIVATO");
-                        
+
                         $user_cur->stat_set('table');
                         $user_cur->subst = 'asta';
                         $user_cur->laccwr = $curtime;
@@ -829,7 +906,7 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
                 }
                 // change room
                 $brisk->room_sitdown($user, $table_idx);
-                
+
                 log_wr("MOP finish");
             }
             else if ($argz[0] == 'logout') {
@@ -868,7 +945,7 @@ function index_wr_main(&$brisk, $remote_addr_full, $get, $post, $cookie)
             }
         }
     }
-    
+
     return (FALSE);
 }
 ?>
index 5613c3b..5ea14b6 100644 (file)
@@ -59,9 +59,9 @@ function main() {
                 break;
             }
 
-            if (($bdb->user_update_flag_ty($mai->ucode,
-                                        USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_MAILED,
-                                        USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_TOBECHK)) == FALSE) {
+            if (($bdb->user_update_flag_ty($mai->ucode, USER_FLAG_TY_DISABLE,
+                                        TRUE, USER_DIS_REA_NU_MAILED,
+                                        TRUE, USER_DIS_REA_NU_TOBECHK)) == FALSE) {
                 $errcode = 10003;
                 break;
             }
index c25728b..173b004 100644 (file)
@@ -2,7 +2,7 @@
  *  brisk - room.js
  *
  *  Copyright (C) 2006-2014 Matteo Nastasi
- *                          mailto: nastasi@alternativeoutput.it 
+ *                          mailto: nastasi@alternativeoutput.it
  *                                  matteo.nastasi@milug.org
  *                          web: http://www.alternativeoutput.it
  *
  */
 
 
-/* 
+/*
 
    data = [ [ flags, name ],  ... ]
-   
-*/
 
+*/
 
 function state_add(flags, comp)
 {
@@ -108,7 +107,7 @@ function state_add(flags, comp)
     if ((flags & 0xf0000) != 0) {
         superst = flags & 0x20000;
         if (name != "") {
-            supersfx = "_side";                
+            supersfx = "_side";
         }
 
         switch (superst) {
@@ -127,7 +126,7 @@ function state_add(flags, comp)
     if (supername != "") {
         content += '&nbsp;<img title="'+supertit+'" class="inline" src="'+supername+'">';
     }
-    
+
     if (name != "") {
         content += '&nbsp;<img title="'+tit+'" class="inline" src="img/'+name+'">';
     }
@@ -147,7 +146,7 @@ function table_add(curtag, td)
     do {
         // console.log("wt: "+curtag.tagName);
 
-        if (curtag.tagName.toLowerCase() == "div" || 
+        if (curtag.tagName.toLowerCase() == "div" ||
             curtag.tagName.toLowerCase() == "table") {
             curtag = curtag.firstChild;
         }
@@ -158,7 +157,7 @@ function table_add(curtag, td)
         else
             curtag = null;
     } while (curtag != null);
-    
+
     curtag = tbody.firstChild;
     ct = 0;
     do {
@@ -221,7 +220,7 @@ function table_walk(curtag)
 {
     do {
         // console.log("wt: "+curtag.tagName);
-        if (curtag.tagName.toLowerCase() == "div" || 
+        if (curtag.tagName.toLowerCase() == "div" ||
             curtag.tagName.toLowerCase() == "table" ||
             curtag.tagName.toLowerCase() == "tbody") {
             curtag = curtag.firstChild;
@@ -251,7 +250,7 @@ function table_walk(curtag)
 
     if (1 == 0) {
         if (curtag == null)
-            alert("outtag == null"); 
+            alert("outtag == null");
         else
             alert("outtag: "+curtag.tagName);
     }
@@ -300,14 +299,14 @@ function j_stand_cont(ddata)
             content += '<td id="'+i+'" class="room_standup">';
             content += j_stand_tdcont(data[i]);
             content += '</td>';
-            
+
             if ((i % 4) == 3)
                 content += '</tr>';
         }
         if ((i % 4) < 3)
             content += '</tr>';
         content += '</table>';
-        
+
         $("standup").innerHTML = content;
 
         standup_data_old = data;
@@ -325,7 +324,7 @@ function j_stand_cont(ddata)
         idx_mod = new Array();
         arr_mod = new Array();
         map_cur = new Array();
-        
+
         // find removed entries
         for (i = 0 ; i < standup_data_old.length ; i++) {
             for (e = 0 ; e < data.length ; e++) {
@@ -362,7 +361,7 @@ function j_stand_cont(ddata)
                 map_add[idx_add_n++] = e;
             }
         }
-        
+
         // TODO: qui travaso add in del
 
         i_del = 0;
@@ -430,9 +429,9 @@ function j_stand_cont(ddata)
 }
 
 function esco_cb() {
-    window.onbeforeunload = null; 
-    window.onunload = null; 
-    // nonunload = true; 
+    window.onbeforeunload = null;
+    window.onunload = null;
+    // nonunload = true;
     act_logout(0);
  };
 
@@ -484,6 +483,78 @@ function j_tab_act_cont(idx, act)
     }
 }
 
+function j_check_login(login, ret)
+{
+    if (login.length > 12) {
+        // FIXME LANG
+        ret.ret += (g_lang == 'en' ? "Nickname too long." : "Nickname troppo lungo.");
+        return (false);
+        }
+    var old_c = '', old_ct = 0;
+
+    for (i = 0 ; i < login.length ; i++) {
+        if ((login[i] >= '0' && login[i] <= '9') ||
+            (login[i] >= 'a' && login[i] <= 'z') ||
+            (login[i] >= 'A' && login[i] <= 'Z')) {
+            if (old_c != login[i]) {
+                old_c = login[i];
+                old_ct = 0;
+            }
+            else {
+                if (old_ct > 3) {
+                    // FIXME LANG
+                    ret.ret = (g_lang == 'en' ? "More than three contiguous '" + old_c + "' not allowed." :
+                               "Il nickname contiene più di tre caratteri '" + old_c + "' consecutivi.");
+                    return (false);
+                }
+            }
+            old_ct++;
+            continue;
+        }
+        else {
+            // FIXME LANG
+            ret.ret = (g_lang == 'en' ? "Nickname includes not allowed '" + login[i] + "' character." :
+                       "Il nickname contiene un carattere '" + login[i] + "' non consentito.");
+            return (false);
+        }
+    }
+
+    return (true);
+}
+
+
+function j_new_apprendice(form)
+{
+    var ret = { ret: '' };
+    var token;
+
+    do {
+        if (j_check_login(form.elements['nameid'].value, ret) == false ||
+            j_check_email(form.elements['emailid'].value, ret) == false) {
+
+            no = new notify(gst, "</br><b>" + ret.ret + "</b></br>", 1, (g_lang == 'en' ? "Close." : "Chiudi."), 280, 100);
+            break;
+            }
+
+        // submit the request
+        token = server_request('mesg', 'apprendice',
+                               'cli_name', encodeURIComponent(form.elements['nameid'].value),
+                               'cli_email', encodeURIComponent(form.elements['emailid'].value),
+                               'cli_lang', g_lang);
+        if (token == "1") {
+            // FIXME LANG
+            $('apprendice_div').style.display = "none";
+            no = new notify(gst, "</br>Richiesta inviata con successo.</br>Riceverai a breve un' e-mail per verificare la correttezza dell'indirizzo.</br>", 1, (g_lang == 'en' ? "Close." : "Chiudi."), 280, 100);
+        }
+        else {
+            no = new notify(gst, "</br>" + token + "</br>", 1, (g_lang == 'en' ? "Close." : "Chiudi."), 280, 100);
+        }
+    } while (0);
+
+    return (false);
+}
+
+
 function j_login_manager(form)
 {
     var token;
@@ -496,20 +567,20 @@ function j_login_manager(form)
         /* richiede token */
         token = server_request('mesg', 'getchallenge', 'cli_name', encodeURIComponent(form.elements['nameid'].value));
         tokens = token.split('|');
-        
+
         // console.log('XX token: '+token);
         // console.log(tokens);
         if (token == null)
             return (false);
 
         token = calcMD5(tokens[1]+calcMD5(form.elements['passid'].value));
-        
+
         form.elements['passid_private'].value = token;
         form.elements['passid'].value = ""; // FIXME da sost con la stessa len di A
 
         return (true);
     }
-    
+
     return (false);
 }
 
@@ -555,16 +626,19 @@ function mesgtoadm_formtext_hilite(form)
 }
 
 
-function j_check_email(email)
+function j_check_email(email, ret)
 {
-    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))
+    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,10})+$/.test(email))
         return (true);
+    ret.ret += (g_lang == 'en' ? "Invalid email address. " :
+                "Indirizzo e-mail non valido.");
+
     return (false);
 }
 
 function j_authbox(form)
 {
-    var no
+    var no, ret = { "ret": "" };
 
     do {
         if (form.elements['realsub'].value == "chiudi") {
@@ -572,17 +646,17 @@ function j_authbox(form)
             break;
         }
 
-        if (form.elements['name'].value == '' || j_check_email(form.elements['email'].value) == false) {
+        if (form.elements['name'].value == '' || j_check_email(form.elements['email'].value, ret) == false) {
             // MLANG 2-4
-            no = new notify(gst, 
-                            (g_lang == 'en' ? "<br><b>nickname</b> and/or <b>e-mail</b> fields are invalid;<br>please, fix them." :
-                             "<br>I campi <b>nickname</b> e/o <b>e-mail</b> non sono validi;<br> correggeteli per favore."),
-                            1, (g_lang == 'en' ? "close" : "chiudi"), 280, 100); 
+            no = new notify(gst,
+                            (g_lang == 'en' ? "<br><b>" + ret.ret + "</b><br>please, fix." :
+                             "<br><b>" + ret.ret + "</b><br>correggere, per favore."),
+                            1, (g_lang == 'en' ? "close" : "chiudi"), 280, 100);
             break;
         }
 
         // submit the request
-        token = server_request('mesg', 'warranty', 
+        token = server_request('mesg', 'warranty',
                                'cli_name', encodeURIComponent(form.elements['name'].value),
                                'cli_email', encodeURIComponent(form.elements['email'].value) );
         if (token == "1") {
@@ -616,7 +690,7 @@ function authbox(w, h)
 
 function j_mesgtoadmbox(form)
 {
-    var no; 
+    var no;
 
     do {
         if (form.elements['realsub'].value == "chiudi") {
@@ -627,13 +701,13 @@ function j_mesgtoadmbox(form)
         if (form.elements['mesg'].value == '' || form.elements['subj'].value == '') {
             // MLANG 1-3
             no = new notify(gst, (g_lang == 'en' ? "<br><b>subject</b> and the <b>message</b> cannot be void;<br>please, fix them." :
-                                  "<br>Il <b>soggetto</b> e il <b>messaggo</b> non possono essere vuoti;<br>correggeteli per favore."), 1, 
-                                  (g_lang == 'en' ? "close" : "chiudi"), 280, 100); 
+                                  "<br>Il <b>soggetto</b> e il <b>messaggo</b> non possono essere vuoti;<br>correggeteli per favore."), 1,
+                                  (g_lang == 'en' ? "close" : "chiudi"), 280, 100);
             break;
         }
-                
+
         // submit the request
-        token = server_request('mesg', 'mesgtoadm', 
+        token = server_request('mesg', 'mesgtoadm',
                                'cli_subj', encodeURIComponent(form.elements['subj'].value),
                                'cli_mesg', encodeURIComponent(form.elements['mesg'].value) );
         if (token == "1") {
@@ -667,11 +741,11 @@ function mesgtoadmbox(w, h)
 
 function j_pollbox(form)
 {
-    var no, i, choose; 
+    var no, i, choose;
 
     do {
         // submit the request
-        
+
         for (i = 0 ; i < form.elements.length ; i++) {
             if (form.elements[i].checked == true)
                 break;
@@ -679,14 +753,14 @@ function j_pollbox(form)
         if (i == form.elements.length) {
             // MLANG 1-3
             no = new notify(gst, (g_lang == 'en' ? "<br>You must choose ah item;<br> please, fix it." :
-                                  "<br>Non hai espresso nessuna preferenza;<br> correggi per favore."), 1, 
-                            (g_lang == 'en' ? "close" : "chiudi"), 280, 100); 
+                                  "<br>Non hai espresso nessuna preferenza;<br> correggi per favore."), 1,
+                            (g_lang == 'en' ? "close" : "chiudi"), 280, 100);
             return false;
         }
         else
             choose = form.elements[i].value;
 
-        token = server_request('mesg', 'poll', 
+        token = server_request('mesg', 'poll',
                                'cli_choose', encodeURIComponent(choose) );
 
         if (token == "1") {
@@ -725,7 +799,7 @@ sideslide.prototype = {
 
     start: function() {
         var instant = this;
-        
+
         this.st = 'wait';
         this.id = setTimeout(function () { instant.sideslide_cb(); }, this.twait);
     },
index 95a9c76..851f5d5 100644 (file)
@@ -35,7 +35,7 @@ d\'ora in poi potrai utilizzare l\' utente \'%s\' e la password \'%s\'.
 Benvenuto e buone partite, mop.',
                                            'en' => 'EN ptext [%s] [%s]'),
                       'nu_phtml' => array( 'it' => 'Ciao, sono l\' amministratore del sito di Brisk.<br><br>
-La verifica del tuo indirizzo di posta elettronica e del tuo nickname è andata a buon fine, per accedere al  sito d\'ora in poi potrai usare l\' utente \'%s\' e la password \'%s\'.<br>
+La verifica del tuo indirizzo di posta elettronica e del tuo nickname è andata a buon fine.<br><br>Per accedere al  sito d\'ora in poi potrai usare l\' utente \'%s\' e la password \'%s\'.<br><br>
 Benvenuto e buone partite, mop.<br>',
                                            'en' => 'EN phtml [%s] [%s]')
                       );
@@ -94,10 +94,24 @@ function check_auth()
     return ($ret);
 }
 
+$s_style = "
+<style>
+     table.the_tab {
+            border-collapse: collapse;
+            margin: 8px;
+            }
+
+     table.the_tab td {
+            border: 1px solid black;
+            padding: 8px;
+            }
+</style>";
+
 function main() {
-    GLOBAL $G_dbpfx, $G_lang, $G_alarm_passwd, $G_domain, $G_webbase;
+    GLOBAL $s_style, $G_dbpfx, $G_lang, $G_alarm_passwd, $G_domain, $G_webbase;
     GLOBAL $mlang_umgmt, $mlang_indwr, $f_mailusers, $sess, $_POST, $_SERVER;
 
+
     $curtime = time();
     $status = "";
 
@@ -165,9 +179,9 @@ SELECT usr.*, guar.login AS guar_login
                     $is_trans = TRUE;
 
 
-                    if (($bdb->user_update_flag_ty($usr_obj->code,
-                                                   USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_ADDED,
-                                                   USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_MAILED)) == FALSE) {
+                    if (($bdb->user_update_flag_ty($usr_obj->code, USER_FLAG_TY_DISABLE,
+                                                   TRUE, USER_DIS_REA_NU_ADDED,
+                                                   TRUE, USER_DIS_REA_NU_MAILED)) == FALSE) {
                         echo "fail 2<br>";
                         break;
                     }
@@ -181,10 +195,18 @@ SELECT usr.*, guar.login AS guar_login
                     $confirm_page = sprintf("http://%s/%s/mailmgr.php?f_act=checkmail&f_code=%d&f_hash=%s",
                                             $G_domain, $G_webbase, $mail_code, $hash);
                     $subj = $mlang_indwr['nu_msubj'][$G_lang];
-                    $body_txt = sprintf($mlang_indwr['nu_mtext'][$G_lang],
-                                        $usr_obj->guar_login, $usr_obj->login, $confirm_page);
-                    $body_htm = sprintf($mlang_indwr['nu_mhtml'][$G_lang],
-                                        $usr_obj->guar_login, $usr_obj->login, $confirm_page);
+                    if (($usr_obj->type & USER_FLAG_TY_APPR) == USER_FLAG_TY_APPR) {
+                        $body_txt = sprintf($mlang_indwr['ap_mtext'][$G_lang],
+                                            $cli_name, $confirm_page);
+                        $body_htm = sprintf($mlang_indwr['ap_mhtml'][$G_lang],
+                                            $cli_name, $confirm_page);
+                    }
+                    else {
+                        $body_txt = sprintf($mlang_indwr['nu_mtext'][$G_lang],
+                                            $usr_obj->guar_login, $usr_obj->login, $confirm_page);
+                        $body_htm = sprintf($mlang_indwr['nu_mhtml'][$G_lang],
+                                            $usr_obj->guar_login, $usr_obj->login, $confirm_page);
+                    }
 
                     $mail_item = new MailDBItem($mail_code, $usr_obj->code, MAIL_TYP_CHECK,
                                                 $curtime, $subj, $body_txt, $body_htm, $hash);
@@ -243,17 +265,20 @@ SELECT usr.*, guar.login AS guar_login
                                       $usr_obj->code, ($nocheck ? "" : "CHECKED"),
                                       eschtml($usr_obj->login), eschtml($usr_obj->guar_login), $usr_obj->lintm);
             }
+
+
             ?>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>Brisk: new imported users management.</title>
+     <?php echo "$s_style"; ?>
 </head>
 <body>
 <h2> New imported users management.</h2>
      <?php if ($status != "") { echo "$status"; } ?>
 <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
-<table>
+<table class="the_tab">
 <?php
      echo $tab_lines;
 ?>
@@ -366,12 +391,13 @@ SELECT usr.*, guar.login AS guar_login
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>Brisk: new mailed users management.</title>
+     <?php echo "$s_style"; ?>
 </head>
 <body>
 <h2> New mailed users management.</h2>
      <?php if ($status != "") { echo "$status"; } ?>
 <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
-<table>
+<table class="the_tab">
 <?php
      echo $tab_lines;
 ?>
@@ -421,7 +447,7 @@ SELECT usr.*, guar.login AS guar_login
      WHERE ( (usr.type & (CAST (X'%x' as integer))) = (CAST (X'%x' as integer)) )
          AND usr.disa_reas = %d AND usr.code = %d;",
                                    $G_dbpfx, $G_dbpfx,
-                                   USER_FLAG_TY_ALL, USER_FLAG_TY_DISABLE,
+                                   USER_FLAG_TY_ALL & ~USER_FLAG_TY_APPR, USER_FLAG_TY_DISABLE,
                                    USER_DIS_REA_NU_TOBECHK, $id);
                 if (($usr_pg = pg_query($bdb->dbconn->db(), $usr_sql)) == FALSE) {
                     log_crit("stat-day: select from tournaments failed");
@@ -438,9 +464,9 @@ SELECT usr.*, guar.login AS guar_login
                     break;
                 }
 
-                if (($bdb->user_update_flag_ty($usr_obj->code,
-                                               USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_TOBECHK,
-                                               USER_FLAG_TY_NORM, USER_DIS_REA_NONE)) == FALSE) {
+                if (($bdb->user_update_flag_ty($usr_obj->code, USER_FLAG_TY_DISABLE,
+                                               TRUE, USER_DIS_REA_NU_TOBECHK,
+                                               FALSE, USER_DIS_REA_NONE)) == FALSE) {
                     echo "fail 2<br>";
                     break;
                 }
@@ -454,7 +480,11 @@ SELECT usr.*, guar.login AS guar_login
                 $body_htm = sprintf($mlang_umgmt['nu_phtml'][$G_lang],
                                     $usr_obj->login, $passwd);
 
+                log_step(sprintf("[%s], [%s], [%s], [%s]\n", $usr_obj->email, $subj, $body_txt, $body_htm));
+
+
                 if (brisk_mail($usr_obj->email, $subj, $body_txt, $body_htm) == FALSE) {
+            // if (brisk_mail($usr_obj->email, "Il titolo", "zozozo", "il <b>body</b> fine.") == FALSE) {
                     // mail error
                     fprintf(STDERR, "ERROR: mail send FAILED\n");
                     break;
@@ -478,7 +508,7 @@ SELECT usr.*, guar.login AS guar_login
          AND usr.disa_reas = %d
      ORDER BY usr.lintm;",
                                $G_dbpfx, $G_dbpfx,
-                               USER_FLAG_TY_ALL, USER_FLAG_TY_DISABLE,
+                               USER_FLAG_TY_ALL & ~USER_FLAG_TY_APPR, USER_FLAG_TY_DISABLE,
                                USER_DIS_REA_NU_TOBECHK);
             if (($usr_pg = pg_query($bdb->dbconn->db(), $usr_sql)) == FALSE) {
                 log_crit("stat-day: select from tournaments failed");
@@ -486,25 +516,28 @@ SELECT usr.*, guar.login AS guar_login
             }
 
             $usr_n = pg_numrows($usr_pg);
-            $tab_lines = "<tr><th></th><th>User</th><th>Guar</th><th>Date</th></tr>";
+            $tab_lines = "<tr><th></th><th>User</th><th>Guar</th><th>Apprendice</th><th>Date</th></tr>";
             for ($i = 0 ; $i < $usr_n ; $i++) {
                 $usr_obj = pg_fetch_object($usr_pg, $i);
 
-                $tab_lines .= sprintf("<tr><td><input name=\"f_newuser%d\" type=\"checkbox\" %s></td><td>%s</td><td>%s</td><td>%s</td></tr>\n",
+                $tab_lines .= sprintf("<tr><td><input name=\"f_newuser%d\" type=\"checkbox\" %s></td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",
                                       $usr_obj->code, ($nocheck ? "" : "CHECKED"),
-                                      eschtml($usr_obj->login), eschtml($usr_obj->guar_login), $usr_obj->lintm);
+                                      eschtml($usr_obj->login), eschtml($usr_obj->guar_login),
+                                      ($usr_obj->type & USER_FLAG_TY_APPR ? "Yes" : "No"),
+                                      $usr_obj->lintm);
             }
             ?>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>Brisk: email verified user management.</title>
+     <?php echo "$s_style"; ?>
 </head>
      <body>
      <h2> E-mail verified user management.</h2>
      <?php if ($status != "") { echo "$status"; } ?>
      <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
-     <table>
+     <table class="the_tab">
      <?php
      echo $tab_lines;
             ?>