From d92ef527c98c40e5aa28c645bd280522d8dc49e9 Mon Sep 17 00:00:00 2001 From: franzz Date: Sat, 20 Dec 2014 23:48:50 +0100 Subject: [PATCH] New /invite --- inc/databap.php | 26 +++++++++++-------- index.php | 3 +++ jquery/databap.js | 2 ++ masks/chat.html | 64 ++++++++++++++++++++++++++++++++++++----------- 4 files changed, 70 insertions(+), 25 deletions(-) diff --git a/inc/databap.php b/inc/databap.php index 2843276..26904ce 100755 --- a/inc/databap.php +++ b/inc/databap.php @@ -1697,6 +1697,22 @@ class Databap extends PhpObject $this->addMessage('quitte '.($asPm['is_pm']?'le chan privé':'#'.$sChanName), self::MESSAGE_CONN, $iChanId); } } + + public function inviteChan($iUserId, $sChanName) + { + $sSafeChanName = $this->getChanSafeName($sChanName); + $bSuccess = false; + if($iUserId>0 && $this->checkChanAuth($sSafeChanName, $iUserId)) + { + $sType = self::MESSAGE_INVITE; + $sMessage = $iUserId; + $sChanId = $this->getChanId($sChanName); + $bSuccess = $this->addMessage($sMessage, $sType, $sChanId); + if($bSuccess) $sDesc = 'Invitation envoyée'; + } + else $sDesc = 'Désolé, cette personne n\'est pas autorisé sur ce channel'; + return $this->getJsonPostResult($bSuccess, $sDesc); + } private function getActiveChannels() { @@ -1907,16 +1923,6 @@ class Databap extends PhpObject $sType = self::MESSAGE_REBOOT; $sChanName = self::ALL_CHAN_TEXT; } - elseif(mb_substr($sMessage, 0, 8) == '/invite ' && mb_strlen($sMessage)>8) - { - $sSafeChanName = $this->getChanSafeName($sChanName); - $iUserId = $this->getUserIdFromNickName(trim(mb_substr($sMessage, 8))); - if($iUserId>0 && $this->checkChanAuth($sSafeChanName, $iUserId)) - { - $sType = self::MESSAGE_INVITE; - $sMessage = $iUserId; - } - } elseif(mb_substr($sMessage, 0, 6) == '/news ' && mb_strlen($sMessage)>6) { $sType = self::MESSAGE_NEWS; diff --git a/index.php b/index.php index a361a2e..8e977c0 100644 --- a/index.php +++ b/index.php @@ -149,6 +149,9 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS) case 'quit_chan': $sResult = $oDatabap->quitChan($sChan); break; + case 'invite_chan': + $sResult = $oDatabap->inviteChan($oUser, $sChan); + break; case 'disconnect_chat': $sResult = $oDatabap->disconnectChat(); break; diff --git a/jquery/databap.js b/jquery/databap.js index 6987122..4c8852e 100644 --- a/jquery/databap.js +++ b/jquery/databap.js @@ -398,6 +398,7 @@ function Databap() }) .done(function(result) { + //TODO use result.result and result.desc, make it standard if(result==self.consts.errors.disconnected) databap.refresh(); else if((result==self.consts.error || typeof result.success != 'undefined' && result.success==self.consts.error) && typeof fOnError !== 'undefined') fOnError(); else @@ -711,6 +712,7 @@ function Databap() this.feedback = function(sClass, sMsg) { + if(sClass=='error' && sMsg=='') sMsg = 'Aïe ! Une erreur inconnue est suvenue'; $('', {'class':'feedback '+sClass}) .append($('', {'class':'fa fa-inline fa-c-'+sClass})) .append(self.addPunctuation(sMsg)) diff --git a/masks/chat.html b/masks/chat.html index 3c9b831..c2f6966 100755 --- a/masks/chat.html +++ b/masks/chat.html @@ -359,6 +359,25 @@ function joinChan(sChanName, bFirstConn, asAttendees, bSwitchOnJoin) $('#message').focus(); } +function invite(sNickName, iChanId) +{ + var iUserId = databap.tmp(['id_users', sNickName]); + if(iUserId>0) + { + databap.getInfo + ( + 'invite_chan', + function(data) + { + databap.feedback(data.result==databap.consts.success?'success':'error', data.desc); + }, + {chan:iChanId, user:databap.tmp(['id_users', sNickName])}, + 'json' + ); + } + else databap.feedback('error', 'Désolé, je connais pas cette personne !'); +} + function currentChan(sChanName) { return (!sChanName)?$('#chan').val():$('#chan').val(sChanName).val(); @@ -492,27 +511,40 @@ function add_message(e) case 13 : //enter $this = databap.getMainElem('#message'); var chat_message = $this.val(); - + var bSuccess = true; if(chat_message.substr(0, 7) == '/join #') joinChan(chat_message.substr(7)); else if(chat_message.substr(0, 7) == '/quit #') quitChan(getChanKeyName(chat_message.substr(7))); else if(chat_message == '/help') displayHelp(); + else if(chat_message.substr(0, 8) == '/invite ') invite($.trim(chat_message.substr(8)), currentChan()); else if(chat_message != '' && databap.tmp('sending_msg') == false) //send { - databap.tmp('sending_msg', true); - databap.saveForm - ( - 'add_message', - databap.getMainElem('#chat_form'), - function(id) - { - databap.tmp('sending_msg', false); - refresh_chat(); - }, - true - ); + if(databap.tmp('sending_msg') == true) + { + databap.feedback('warning', 'Pas si pressé ! J\'ai pas encore envoyé le dernier message'); + bSuccess = false; + } + else + { + databap.tmp('sending_msg', true); + databap.saveForm + ( + 'add_message', + databap.getMainElem('#chat_form'), + function(id) + { + databap.tmp('sending_msg', false); + refresh_chat(); + }, + true + ); + } + } + + if(bSuccess) + { + databap.vars.prev_chat_value = chat_message; + $this.val(''); } - databap.vars.prev_chat_value = chat_message; - $this.val(''); break; case 27 : //echap databap.getMainElem('#message').val(''); @@ -841,6 +873,7 @@ function refresh_users() //empty current users list databap.getMainElem('#connected_users').empty(); databap.tmp('users', {}); + databap.tmp('id_users', {}); $.each ( @@ -857,6 +890,7 @@ function refresh_users() var sSafeNickName = getSafeNickname(sNickName); databap.tmp(['users', sChankeyName, sSafeNickName], sNickName); databap.tmp(['users', databap.consts.all_chan_id, sSafeNickName], sNickName); + databap.tmp(['id_users', sNickName], user_info.id_user); //Append name to user list box var sProfileLink = databap.getInternalLink('profil', user_info.id_user);