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);
}
}
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;

View File

@@ -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;

2
jquery/databap.js vendored
View File

@@ -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';
$('<span>', {'class':'feedback '+sClass})
.append($('<i>', {'class':'fa fa-inline fa-c-'+sClass}))
.append(self.addPunctuation(sMsg))

View File

@@ -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);