From: Matteo Nastasi Date: Mon, 31 Aug 2015 12:49:47 +0000 (+0200) Subject: added self-registration for apprentices X-Git-Tag: v5.0.0~35 X-Git-Url: http://mop.ddnsfree.com/gitweb/?p=brisk.git;a=commitdiff_plain;h=7f526939ded24298104cacd02b5f364bcc7bfa56 added self-registration for apprentices --- diff --git a/web/Obj/user.phh b/web/Obj/user.phh index 4e716d0..3ca1f97 100644 --- a/web/Obj/user.phh +++ b/web/Obj/user.phh @@ -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 diff --git a/web/index.php b/web/index.php index a295374..fefb50d 100644 --- a/web/index.php +++ b/web/index.php @@ -1114,13 +1114,14 @@ window.onload = function() { diff --git a/web/index_wr.php b/web/index_wr.php index 339e461..da0868b 100644 --- a/web/index_wr.php +++ b/web/index_wr.php @@ -55,7 +55,7 @@ $mlang_indwr = array( 'unknownerr' => array( 'it' => 'errore sconosciuto', 'pollnone' => array( 'it' => '

Al momento non è attivo alcun sondaggio.', 'en' => '

At this moment no polls are active.'), 'pollchoo' => array( 'it' => '

Non hai espresso nessuna preferenza.', - 'en' => '

You don\'t choose any preference, do it'), + 'en' => '

You don\'t choose any preference, do it'), 'pollagai' => array( 'it' => '
Per questo sondaggio hai già votato.

Non si può esprimere la propria preferenza più di una volta.', 'en' => '
You just express your preference about this poll.

You cannot do it again.'), 'pollrec' => array ('it' => '

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' => '
Tu o qualcuno col tuo stesso indirizzo IP si è alzato da un tavolo senza il consenso degli altri giocatori.

Dovrai aspettare ancora ', - 'en' => '
You or someone with your same IP address is standing up from a table without the permission of the other players

You will wait '), + 'en' => '
You or someone with your same IP address is standing up from a table without the permission of the other players

You will wait '), 'badsit_b' => array( 'it' => ' prima di poterti sedere nuovamente.

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.

Saluti e buone partite, mop.
', '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.

-Ti volevo avvisare che ho attivato i login di \'%s\' che hai -garantito.

-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.

-Grazie dell\' impegno, mop.', - 'en' => 'EN nu_ghtml [%s][%s]') + 'ap_mhtml' => array( 'it' => 'Ciao, sono l\' amministratore del sito di Brisk.

+Ti sei registrato col nickname \'%s\',
+clicca qui per confermare il tuo indirizzo di posta elettronica.

+Ciò è necessario per ottenere la password.

+Saluti e buone partite, mop.
', + '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: "Per autenticare qualcuno devi a tua volta essere autenticato." */ $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: "E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore." */ $mesg_to_user = nickserv_msg($dt, $mlang_indwr['commerr'][$G_lang]); } - + } else { /* MLANG: "Per autenticare qualcuno devi a tua volta essere autenticato." */ $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: "E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore." */ $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); } ?> diff --git a/web/mailmgr.php b/web/mailmgr.php index 5613c3b..5ea14b6 100644 --- a/web/mailmgr.php +++ b/web/mailmgr.php @@ -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; } diff --git a/web/room.js b/web/room.js index c25728b..173b004 100644 --- a/web/room.js +++ b/web/room.js @@ -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 * @@ -22,12 +22,11 @@ */ -/* +/* 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 += ' '; } - + if (name != "") { content += ' '; } @@ -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 += ''; content += j_stand_tdcont(data[i]); content += ''; - + if ((i % 4) == 3) content += ''; } if ((i % 4) < 3) content += ''; content += ''; - + $("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, "
" + ret.ret + "
", 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, "
Richiesta inviata con successo.
Riceverai a breve un' e-mail per verificare la correttezza dell'indirizzo.
", 1, (g_lang == 'en' ? "Close." : "Chiudi."), 280, 100); + } + else { + no = new notify(gst, "
" + token + "
", 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' ? "
nickname and/or e-mail fields are invalid;
please, fix them." : - "
I campi nickname e/o e-mail non sono validi;
correggeteli per favore."), - 1, (g_lang == 'en' ? "close" : "chiudi"), 280, 100); + no = new notify(gst, + (g_lang == 'en' ? "
" + ret.ret + "
please, fix." : + "
" + ret.ret + "
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' ? "
subject and the message cannot be void;
please, fix them." : - "
Il soggetto e il messaggo non possono essere vuoti;
correggeteli per favore."), 1, - (g_lang == 'en' ? "close" : "chiudi"), 280, 100); + "
Il soggetto e il messaggo non possono essere vuoti;
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' ? "
You must choose ah item;
please, fix it." : - "
Non hai espresso nessuna preferenza;
correggi per favore."), 1, - (g_lang == 'en' ? "close" : "chiudi"), 280, 100); + "
Non hai espresso nessuna preferenza;
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); }, diff --git a/web/usermgmt.php b/web/usermgmt.php index 95a9c76..851f5d5 100644 --- a/web/usermgmt.php +++ b/web/usermgmt.php @@ -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.

-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\'.
+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\'.

Benvenuto e buone partite, mop.
', 'en' => 'EN phtml [%s] [%s]') ); @@ -94,10 +94,24 @@ function check_auth() return ($ret); } +$s_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
"; 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); } + + ?> Brisk: new imported users management. +

New imported users management.

- +
@@ -366,12 +391,13 @@ SELECT usr.*, guar.login AS guar_login Brisk: new mailed users management. +

New mailed users management.

-
+
@@ -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
"; 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 body 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 = ""; + $tab_lines = ""; for ($i = 0 ; $i < $usr_n ; $i++) { $usr_obj = pg_fetch_object($usr_pg, $i); - $tab_lines .= sprintf("\n", + $tab_lines .= sprintf("\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); } ?> Brisk: email verified user management. +

E-mail verified user management.

-
UserGuarDate
UserGuarApprendiceDate
%s%s%s
%s%s%s%s
+