From 7179edae8083193c544fe3019cd0ab463b690cb7 Mon Sep 17 00:00:00 2001 From: franzz Date: Sun, 6 Oct 2013 10:49:26 +0200 Subject: [PATCH] disconnect chat en page switch / tab closed --- config.php | 16 ++++++++++------ masks/chat.html | 31 +++++++++++++++++++------------ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/config.php b/config.php index a1d90d7..b75b201 100755 --- a/config.php +++ b/config.php @@ -1185,7 +1185,7 @@ class Databap extends PhpObject $asHistory = $this->oMySql->selectRows($asInfo); foreach($asHistory as $asCode) { - $asProfile['history'][$asCode['id_code']]['action'] = (($asCode['refer_id']==$asCode['id_code'])?'Création':'Modification').' de code'; + $asProfile['history'][$asCode['id_code']]['action'] = (($asCode['refer_id']==$asCode['id_code'])?'Création':'Modification').' de code'; $asProfile['history'][$asCode['id_code']]['date'] = self::getDateFormat($asCode['led']); $asProfile['history'][$asCode['id_code']]['description'] = $asCode['description']; $asProfile['history'][$asCode['id_code']]['phrase'] = ($asCode['phrase']=='')?$asCode['id_code']:$asCode['phrase']; @@ -1326,7 +1326,6 @@ class Databap extends PhpObject $asInfo['constraint'][MySqlManager::getId(MySqlManager::CHAN_TABLE)] = $iChanId; $asInfo['constOpe'][MySqlManager::getId(MySqlManager::CHAN_TABLE)] = '='; } - //$this->oMySql->bTrace = true; return (count($this->oMySql->selectRows($asInfo))>0); } @@ -2152,11 +2151,16 @@ class Databap extends PhpObject public function disconnectChat() { - //$this->getConnectedChans(); - $sTime = $this->oMySql->selectRows(array('select'=>'DATE_SUB(NOW(), INTERVAL '.self::KEEP_ALIVE.' SECOND)')); - $this->oMySql->updateRows(MySqlManager::CONN_TABLE, array(MySqlManager::getId(MySqlManager::USER_TABLE)=>$this->getUserId()), array('led'=>$sTime)); - $this->addMessage('se déconnecte', self::MESSAGE_CONN, self::ALL_CHAN_ID); + + //Is the user connected? + $sUserIdColName = MySqlManager::getId(MySqlManager::USER_TABLE); + $bConnected = $this->oMySql->selectRows(array('select'=>array('COUNT(1)'), 'from'=>MySqlManager::CONN_TABLE, 'constraint'=>array($sUserIdColName=>$this->getUserId(), 'led'=>$sTime), 'constOpe'=>array($sUserIdColName=>'=', 'led'=>'>'))); + if($bConnected) + { + $this->oMySql->updateRows(MySqlManager::CONN_TABLE, array(MySqlManager::getId(MySqlManager::USER_TABLE)=>$this->getUserId()), array('led'=>$sTime)); + $this->addMessage('se déconnecte', self::MESSAGE_CONN, self::ALL_CHAN_ID); + } } public function checkValue($sTableName, $asConstraints) diff --git a/masks/chat.html b/masks/chat.html index e193234..957acc1 100755 --- a/masks/chat.html +++ b/masks/chat.html @@ -34,21 +34,21 @@

Manuel d'utilisationx

Message

-

EchapSupprime le texte en cours de rédaction

-

Flèche hautRépète dernier message envoyé

+

EchapSupprime le texte en cours de rédaction

+

Flèche hautRépète dernier message envoyé

@X YVous dites Y à X (pseudo de Y en rouge)

-

/me XVotre_pseudo X. Utile lorsque vous voulez parler de vous à la 3ème personne. Par exemple : /me se touche la nouille au taff

-

/mail X YVous envoyez à X un email contenant Y (adresse professionel)

+

/me XVotre_pseudo X. Utile lorsque vous voulez parler de vous à la 3ème personne. Par exemple : /me se touche la nouille au taff

+

/mail X YVous envoyez à X un email contenant Y (adresse professionel)

Tab - Chaque hit pré-remplie le message en faisant défiler la liste des connectés. - Il est possible d'écrire la/les premières lettres afin de faire commencer le défilement aux pseudos commençant par ces lettre-ci. - Le fonctionnement demeure le même si l'on fait précéder le pseudo par @ + Chaque hit pré-remplie le message en faisant défiler la liste des connectés. + Il est possible d'écrire la/les premières lettres afin de faire commencer le défilement aux pseudos commençant par ces lettre-ci. + Le fonctionnement demeure le même si l'on fait précéder le pseudo par @

Chans

-

Les chans sont divisés en trois catégories : les chans privés (PM, pour deux personnes seulement), les chans entreprise (pour toutes les personnes d'une même entreprise) et les autres (chans publiques)

-

/join #XVous rejoignez le chan X (si autorisé)

-

/pm #XVous rejoignez le chan privé (vous et X)

+

Les chans sont divisés en trois catégories : les chans privés (PM, pour deux personnes seulement), les chans entreprise (pour toutes les personnes d'une même entreprise) et les autres (chans publiques)

+

/join #XVous rejoignez le chan X (si autorisé)

+

/pm #XVous rejoignez le chan privé (vous et X)

/quit #XVous quittez le chan X

/chansListe des chans publiques disponibles (aussi accessible via /channels et /list)

Options

@@ -76,6 +76,7 @@ databap.pageInit = function() //Page variables databap.tmp('sending_msg', 'boolean'); + databap.tmp('refresh', 'boolean'); databap.initVar('unread_msg', 'object'); //Main elements @@ -130,11 +131,17 @@ databap.pageInit = function() //Disconnect from the chat databap.onQuit = function() { - //databap.getSyncInfo('disconnect_chat'); + if(databap.tmp('refresh') == false) databap.getSyncInfo('disconnect_chat'); databap.vars.chans_list = {}; if(typeof oChatTimer != "undefined") clearTimeout(oChatTimer); if(typeof oUserTimer != "undefined") clearTimeout(oUserTimer); }; + + databap.onKeyDown = function(e) + { + if(e.keyCode == 116) databap.tmp('refresh', true); + else databap.tmp('refresh', false); + }; //Sidebar databap.getMainElem('.sidebar_box_title').click @@ -258,7 +265,7 @@ function joinChan(sChanName, bFirstConn, asAttendees, bSwitchOnJoin) 'json', function() { - databap.addFailIcon('Chan non autorisé'); + databap.addFailIcon('Chan non autorisé'); }, true );