New /invite

This commit is contained in:
2014-12-20 23:48:50 +01:00
parent 54af31d2e4
commit d92ef527c9
4 changed files with 70 additions and 25 deletions

View File

@@ -1697,6 +1697,22 @@ class Databap extends PhpObject
$this->addMessage('quitte '.($asPm['is_pm']?'le chan privé':'#'.$sChanName), self::MESSAGE_CONN, $iChanId); $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() private function getActiveChannels()
{ {
@@ -1907,16 +1923,6 @@ class Databap extends PhpObject
$sType = self::MESSAGE_REBOOT; $sType = self::MESSAGE_REBOOT;
$sChanName = self::ALL_CHAN_TEXT; $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) elseif(mb_substr($sMessage, 0, 6) == '/news ' && mb_strlen($sMessage)>6)
{ {
$sType = self::MESSAGE_NEWS; $sType = self::MESSAGE_NEWS;

View File

@@ -149,6 +149,9 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
case 'quit_chan': case 'quit_chan':
$sResult = $oDatabap->quitChan($sChan); $sResult = $oDatabap->quitChan($sChan);
break; break;
case 'invite_chan':
$sResult = $oDatabap->inviteChan($oUser, $sChan);
break;
case 'disconnect_chat': case 'disconnect_chat':
$sResult = $oDatabap->disconnectChat(); $sResult = $oDatabap->disconnectChat();
break; break;

2
jquery/databap.js vendored
View File

@@ -398,6 +398,7 @@ function Databap()
}) })
.done(function(result) .done(function(result)
{ {
//TODO use result.result and result.desc, make it standard
if(result==self.consts.errors.disconnected) databap.refresh(); 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 if((result==self.consts.error || typeof result.success != 'undefined' && result.success==self.consts.error) && typeof fOnError !== 'undefined') fOnError();
else else
@@ -711,6 +712,7 @@ function Databap()
this.feedback = function(sClass, sMsg) this.feedback = function(sClass, sMsg)
{ {
if(sClass=='error' && sMsg=='') sMsg = 'Aïe ! Une erreur inconnue est suvenue';
$('<span>', {'class':'feedback '+sClass}) $('<span>', {'class':'feedback '+sClass})
.append($('<i>', {'class':'fa fa-inline fa-c-'+sClass})) .append($('<i>', {'class':'fa fa-inline fa-c-'+sClass}))
.append(self.addPunctuation(sMsg)) .append(self.addPunctuation(sMsg))

View File

@@ -359,6 +359,25 @@ function joinChan(sChanName, bFirstConn, asAttendees, bSwitchOnJoin)
$('#message').focus(); $('#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) function currentChan(sChanName)
{ {
return (!sChanName)?$('#chan').val():$('#chan').val(sChanName).val(); return (!sChanName)?$('#chan').val():$('#chan').val(sChanName).val();
@@ -492,27 +511,40 @@ function add_message(e)
case 13 : //enter case 13 : //enter
$this = databap.getMainElem('#message'); $this = databap.getMainElem('#message');
var chat_message = $this.val(); var chat_message = $this.val();
var bSuccess = true;
if(chat_message.substr(0, 7) == '/join #') joinChan(chat_message.substr(7)); 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.substr(0, 7) == '/quit #') quitChan(getChanKeyName(chat_message.substr(7)));
else if(chat_message == '/help') displayHelp(); 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 else if(chat_message != '' && databap.tmp('sending_msg') == false) //send
{ {
databap.tmp('sending_msg', true); if(databap.tmp('sending_msg') == true)
databap.saveForm {
( databap.feedback('warning', 'Pas si pressé ! J\'ai pas encore envoyé le dernier message');
'add_message', bSuccess = false;
databap.getMainElem('#chat_form'), }
function(id) else
{ {
databap.tmp('sending_msg', false); databap.tmp('sending_msg', true);
refresh_chat(); databap.saveForm
}, (
true '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; break;
case 27 : //echap case 27 : //echap
databap.getMainElem('#message').val(''); databap.getMainElem('#message').val('');
@@ -841,6 +873,7 @@ function refresh_users()
//empty current users list //empty current users list
databap.getMainElem('#connected_users').empty(); databap.getMainElem('#connected_users').empty();
databap.tmp('users', {}); databap.tmp('users', {});
databap.tmp('id_users', {});
$.each $.each
( (
@@ -857,6 +890,7 @@ function refresh_users()
var sSafeNickName = getSafeNickname(sNickName); var sSafeNickName = getSafeNickname(sNickName);
databap.tmp(['users', sChankeyName, sSafeNickName], sNickName); databap.tmp(['users', sChankeyName, sSafeNickName], sNickName);
databap.tmp(['users', databap.consts.all_chan_id, 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 //Append name to user list box
var sProfileLink = databap.getInternalLink('profil', user_info.id_user); var sProfileLink = databap.getInternalLink('profil', user_info.id_user);