X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2FObj%2Fuser.phh;h=a59cc4427793fdc26f4b7097d1307cde55f9d099;hb=d90941dfd991d46e818501c8031702744d23eed0;hp=9554cc0a0d04101ab350dae3e73a18a67943b153;hpb=dd8ea26db05952301b2f52c10f5cf0c17338fca3;p=brisk.git diff --git a/web/Obj/user.phh b/web/Obj/user.phh index 9554cc0..a59cc44 100644 --- a/web/Obj/user.phh +++ b/web/Obj/user.phh @@ -60,13 +60,20 @@ define('USER_FLAG_TY_SUPER', 0x020000); // done define('USER_FLAG_TY_CERT', 0x040000); // done // ... other usefull status ... define('USER_FLAG_TY_FIRONLY', 0x200000); // done -define('USER_FLAG_TY_SUSPEND', 0x400000); // done +define('USER_FLAG_TY_ADMIN', 0x400000); // done define('USER_FLAG_TY_DISABLE', 0x800000); // done // ... reasons for disabling account ... -define('USER_DIS_REA_INVMAIL', 1); -define('USER_DIS_REA_LICENCE', 2); -define('USER_DIS_REA_BANNED', 3); +define('USER_DIS_REA_NONE', 0); +define('USER_DIS_REA_INVMAIL', 1); +define('USER_DIS_REA_LICENCE', 2); +define('USER_DIS_REA_BANNED', 3); +define('USER_DIS_REA_MALICIOUS', 4); +define('USER_DIS_REA_NU_ADDED', 5); // new user: new user added by hand or external sql +define('USER_DIS_REA_NU_MAILED', 6); // new user: mail sent to be confirmed +define('USER_DIS_REA_NU_TOBECHK', 7); // new user: name verification + + // 240 is the right value, 600 is for fwrite error test define('RD_ENDTIME_DELTA', 240); @@ -79,15 +86,26 @@ $S_load_stat = array( 'rU_heavy' => 0, 'wR_minusone' => 0, 'wR_the_end' => 0 ); -$mlang_indrd = array( +$mlang_user = array( 'btn_backtotab' => array('it' => ' torna ai tavoli ', 'en' => ' back to tables '), 'btn_btotabsup' => array('it' => ' grazie della donazione, torna ai tavoli ', - 'en' => ' thank you for donation, back to tables ') + 'en' => ' thank you for donation, back to tables '), + + 'btn_agree' => array('it' => ' accetto ', + 'en' => ' agree '), + 'btn_refuse' => array('it' => ' rifiuto ', + 'en' => ' refuse '), + 'btn_dload' => array('it' => ' scarico ', + 'en' => ' download '), + 'btn_later' => array('it' => ' leggo poi ', + 'en' => ' read later '), + 'toc_date_dscl' => array('it' => 'I nuovi termini di servizio entreranno in vigore il %s.', + 'en' => 'EN I nuovi termini di servizio entreranno in vigore il %s.') ); class User { - var $room; // reference to the room where the user is registered + var $brisk; // reference to the room where the user is registered var $idx; // index in the room users array when you are in game var $idx_orig; // index in the room table users array when you aren't in game var $code; // authentication code @@ -101,6 +119,8 @@ class User { var $subst; // substatus for each status var $step; // step of the current status var $trans_step; // step to enable transition between pages (disable == -1) + var $cl_step; // current step returned by client + var $ping_req; // ping is already requested ? var $rd_socket; // socket handle of push stream var $rd_endtime; // end time for push stream @@ -111,6 +131,7 @@ class User { var $rd_scristp; // current script step (for each session) var $rd_kalive; // if no message are sent after RD_KEEPALIVE_TOUT secs we send a keepalive from server var $rd_cache; // place where store failed fwrite data + var $rd_toflush; // bool to inform about unfflushed socket var $rd_zls; // zlibstream object handle if compressed stream, else FALSE var $rd_transp; // class that define stream encapsulation type (iframe, xhr, ...) var $rd_is_chunked; // is the transport chunked or not ? @@ -143,11 +164,11 @@ class User { function User() { } - static function create(&$room, $idx, $name, $sess, $stat = "", $subst = "", $table = -1, $ip="0.0.0.0") { + static function create(&$brisk, $idx, $name, $sess, $stat = "", $subst = "", $table = -1, $ip="0.0.0.0") { if (($thiz = new User()) == FALSE) return (FALSE); - $thiz->room = &$room; + $thiz->room = &$brisk; $thiz->idx = $idx; $thiz->idx_orig = $idx; $thiz->code = -1; @@ -161,6 +182,8 @@ class User { $thiz->subst = $subst; $thiz->step = 1; $thiz->trans_step = -1; + $thiz->cl_step = -1; + $thiz->ping_req = FALSE; $thiz->comm = array(); $thiz->rd_socket = NULL; @@ -172,9 +195,11 @@ class User { $thiz->rd_scristp = -1; $thiz->rd_kalive = -1; $thiz->rd_cache = ""; + $thiz->td_toflush = FALSE; $thiz->rd_zls = FALSE; $thiz->rd_transp = NULL; $thiz->rd_is_chunked = FALSE; + $thiz->ping_req = FALSE; $thiz->asta_card = -2; $thiz->asta_pnt = -1; @@ -213,6 +238,8 @@ class User { $this->subst = $from->subst; $this->step = $from->step; $this->trans_step = $from->trans_step; + $this->cl_step = $from->cl_step; + $this->ping_req = $from->ping_req; $this->comm = array(); $i_start = (1 > ($from->step - COMM_N) ? 1 : ($from->step - COMM_N)); @@ -276,6 +303,8 @@ class User { $thiz->subst = $from->subst; $thiz->step = $from->step; $thiz->trans_step = $from->trans_step; + $thiz->cl_step = $from->cl_step; + $thiz->ping_req = $from->ping_req; $thiz->comm = array(); /* @@ -311,6 +340,28 @@ class User { return ($thiz); } + function is_auth() + { + return ($this->flags & USER_FLAG_AUTH); + } + + function is_cert() + { + return (($this->flags & USER_FLAG_AUTH) && ($this->flags & USER_FLAG_TY_CERT)); + } + + function is_empty() + { + return ($this->sess == ""); + } + + function is_active() + { + if ($this->sess != "" && !$this->the_end) // OK: is_active() + return TRUE; + return FALSE; + } + function flags_set($flags, $mask) { $flags_old = $this->flags & (~$mask); @@ -328,12 +379,12 @@ class User { $this->rec->supp_comp_get())); } - function licence_store() + function tos_store() { if (($bdb = BriskDB::create()) == FALSE) { return FALSE; } - return ($bdb->user_licence_update($this->code, $this->rec->lice_vers_get())); + return ($bdb->user_tos_update($this->code, $this->rec->tos_vers_get())); } function state_store() @@ -350,7 +401,7 @@ class User { $this->rd_endtime = $curtime + RD_ENDTIME_DELTA; $this->rd_stat = $stat; $this->rd_subst = $subst; - $this->rd_step = $step; + $this->rd_step = $step; // TRACKED $this->rd_from = $from; $this->rd_scristp = 0; $this->rd_kalive = $curtime + RD_KEEPALIVE_TOUT; @@ -531,9 +582,20 @@ class User { function myname_innerHTML() { - $class_id = ($this->flags & USER_FLAG_AUTH) + 1; - - return (sprintf('$("myname").innerHTML = "%s";', $class_id, + // 4 -> is certified + // 2 -> is authorized + // 1 -> is myself + $class_ids = (($this->flags & USER_FLAG_TY_CERT) >> 16) | ($this->flags & USER_FLAG_AUTH) | 1; + $sp = ""; + $cl = ""; + + for ($i = 0 ; $i < 3 ; $i++) { + if ($class_ids & (1 << $i)) { + $cl .= sprintf("%sau%d", $sp, $i); + $sp = " "; + } + } + return (sprintf('$("myname").innerHTML = "%s";', $cl, xcape($this->name,ENT_COMPAT,"UTF-8"))); } @@ -557,11 +619,11 @@ class User { protected function maincheck($get, $post, $cookie) { - GLOBAL $G_lang, $G_base, $mlang_indrd; + GLOBAL $G_lang, $G_base, $G_doc_path, $mlang_user; // GLOBAL $first_loop; GLOBAL $G_with_splash, $G_splash_content, $G_splash_interval, $G_splash_idx; GLOBAL $G_splash_w, $G_splash_h, $G_splash_timeout; - GLOBAL $G_lice_vers, $G_lice_fname, $G_lice_dthard, $G_lice_dtsoft, $G_lice_idx; + GLOBAL $G_tos_vers, $G_tos_fname, $G_tos_dthard, $G_tos_dtsoft, $G_tos_idx; GLOBAL $S_load_stat; @@ -572,9 +634,9 @@ class User { log_rd("maincheck begin"); - $ret = FALSE; + $ret = ""; $curtime = time(); - + /* Nothing changed, return. */ if ($this->rd_step == $this->step) return (FALSE); @@ -582,19 +644,13 @@ class User { log_rd2("do other cur_stat[".$this->rd_stat."] user->stat[".$this->stat."] cur_step[".$this->rd_step."] user_step[".$this->step."]"); if ($this->rd_step == -1) { - /* - * if $this->rd_step == -1 load the current state from the main struct - */ - + /* if $this->rd_step == -1 load the current state from the main struct */ $S_load_stat['wR_minusone']++; - - // if ($this->the_end == TRUE) { - // log_rd2("main_check: the end".var_export(debug_backtrace())); - // } - + if ($this->trans_step != -1) { log_rd2("TRANS USATO ".$this->trans_step); - $this->rd_step = $this->trans_step; + $this->rd_step = $this->step = $this->trans_step; // TRACKED + $ret .= $this->room->show_room($this->step, $this); $this->trans_step = -1; } else { @@ -609,38 +665,32 @@ class User { if ($this->stat == 'room') { log_rd("roomma ".$this->step); - $curtime = time(); if ($this->rec !== FALSE) { - if ($curtime > $G_lice_dtsoft || $curtime > $G_lice_dthard) { - if (versions_cmp($this->rec->lice_vers_get(), $G_lice_vers) < 0) { // comparison between user version and current version - if ($curtime > $G_lice_dtsoft) { - // call notify soft - // FIXME: manage translations - $ret .= show_notify_document(esclfhtml(file_get_contents($G_base.sprintf($G_lice_fname, $G_lice_vers, $G_lang))), - 0, array("Accetto.", "Rifiuto.", "Leggo poi.", /* , "Scarico." */), - "lice_confirm", 600, 600, TRUE, 0); - $ret .= sprintf("act_licencemgr('soft', g_nd.ret_get(), '%s', '%s');", - xcape($this->rec->lice_vers_get()), xcape($G_lice_vers)); + $doc_filepath = $G_base.$G_doc_path.sprintf($G_tos_fname, $G_tos_vers, $G_lang); + $doc_filename = basename($doc_filepath); + if ($curtime > $G_tos_dtsoft || $curtime > $G_tos_dthard) { + if (versions_cmp($this->rec->tos_vers_get(), $G_tos_vers) < 0) { // comparison between user version and current version + $buttons = array($mlang_user['btn_agree'][$G_lang], $mlang_user['btn_refuse'][$G_lang], + $mlang_user['btn_dload'][$G_lang]); + if ($curtime > $G_tos_dtsoft && $curtime < $G_tos_dthard) { + // call notify soft (same as soft + later button) + array_push($buttons, $mlang_user['btn_later'][$G_lang]); + $type = "soft"; + $preface = sprintf("