Starting SP3
fixing file download + replacing message types
This commit is contained in:
@@ -7,8 +7,8 @@
|
|||||||
class Databap extends PhpObject
|
class Databap extends PhpObject
|
||||||
{
|
{
|
||||||
//Common Constants
|
//Common Constants
|
||||||
const VERSION = '1.0.2'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
|
const VERSION = '1.0.3'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
|
||||||
const VERSION_DATE = '24/10/2014';
|
const VERSION_DATE = '27/11/2014';
|
||||||
const EXPECTED_PAGE_COOKIE = 'exp_page';
|
const EXPECTED_PAGE_COOKIE = 'exp_page';
|
||||||
const MAIN_SEPARATOR = ' ';
|
const MAIN_SEPARATOR = ' ';
|
||||||
const DATE_FORMAT = 'd/m/Y';
|
const DATE_FORMAT = 'd/m/Y';
|
||||||
@@ -90,6 +90,26 @@ class Databap extends PhpObject
|
|||||||
const MESSAGE_REBOOT = 'R';
|
const MESSAGE_REBOOT = 'R';
|
||||||
const MESSAGE_ARTICLE = 'B';
|
const MESSAGE_ARTICLE = 'B';
|
||||||
const MESSAGE_NEWS = 'NW';
|
const MESSAGE_NEWS = 'NW';
|
||||||
|
private static $MESSAGE_TYPES = array( 'user'=>self::MESSAGE_USER,
|
||||||
|
'add'=> array( 'code'=>self::MESSAGE_ADD_CODE,
|
||||||
|
'proc'=>self::MESSAGE_ADD_PROC,
|
||||||
|
'doc'=>self::MESSAGE_ADD_DOC,
|
||||||
|
'table'=>self::MESSAGE_ADD_TABLE),
|
||||||
|
'edit'=>array( 'code'=>self::MESSAGE_EDIT_CODE,
|
||||||
|
'proc'=>self::MESSAGE_EDIT_PROC,
|
||||||
|
'doc'=>self::MESSAGE_EDIT_DOC,
|
||||||
|
'table'=>self::MESSAGE_EDIT_TABLE),
|
||||||
|
'action'=>self::MESSAGE_ACTION,
|
||||||
|
'private'=>self::MESSAGE_PRIVATE,
|
||||||
|
'img'=>self::MESSAGE_IMG,
|
||||||
|
'9gag'=>self::MESSAGE_9GAG,
|
||||||
|
'nick'=>self::MESSAGE_NICK,
|
||||||
|
'status'=>self::MESSAGE_STATUS,
|
||||||
|
'conn'=>self::MESSAGE_CONN,
|
||||||
|
'invite'=>self::MESSAGE_INVITE,
|
||||||
|
'reboot'=>self::MESSAGE_REBOOT,
|
||||||
|
'article'=>self::MESSAGE_ARTICLE,
|
||||||
|
'news'=>self::MESSAGE_NEWS);
|
||||||
const DEFAULT_COMPANY_LOGO = 'logo_unknown_24.png';
|
const DEFAULT_COMPANY_LOGO = 'logo_unknown_24.png';
|
||||||
const ALL_CHAN_ID = 1;
|
const ALL_CHAN_ID = 1;
|
||||||
const ALL_CHAN_TEXT = 'A.l.l_C.h.a.n_I.n.c.l.u.d.e.d';
|
const ALL_CHAN_TEXT = 'A.l.l_C.h.a.n_I.n.c.l.u.d.e.d';
|
||||||
@@ -409,7 +429,8 @@ class Databap extends PhpObject
|
|||||||
'reboot_delay'=>self::REBOOT_DELAY,
|
'reboot_delay'=>self::REBOOT_DELAY,
|
||||||
'versionHtml'=>$this->getItemBlock(),
|
'versionHtml'=>$this->getItemBlock(),
|
||||||
'opt_console_no'=>self::OPT_CONSOLE_NO,
|
'opt_console_no'=>self::OPT_CONSOLE_NO,
|
||||||
'types'=>$this->getTypeInfo('title'));
|
'types'=>$this->getTypeInfo('title'),
|
||||||
|
'msg_types'=>self::$MESSAGE_TYPES);
|
||||||
$oPage->setTag('constants', $this->jsonConvert($asConstants));
|
$oPage->setTag('constants', $this->jsonConvert($asConstants));
|
||||||
|
|
||||||
//Variables
|
//Variables
|
||||||
@@ -1034,53 +1055,48 @@ class Databap extends PhpObject
|
|||||||
|
|
||||||
public function getFile($iFileId)
|
public function getFile($iFileId)
|
||||||
{
|
{
|
||||||
$sFileName = $this->oMySql->selectValue(self::FILE_TABLE, 'file_name', $iFileId);
|
//File info
|
||||||
|
$asFileInfo = $this->oMySql->selectRow(self::FILE_TABLE, $iFileId);
|
||||||
|
$sFileName = $asFileInfo['file_name'];
|
||||||
|
$sFileExt = mb_strtolower(pathinfo($sFileName, PATHINFO_EXTENSION));
|
||||||
|
$sFileDesc = str_replace("&", '\&', str_replace(" ", '\ ', addslashes($asFileInfo['description']))).'.'.$sFileExt;
|
||||||
$sFilePath = self::DOC_FOLDER.$sFileName;
|
$sFilePath = self::DOC_FOLDER.$sFileName;
|
||||||
$sFileFullPath = dirname($_SERVER['SCRIPT_FILENAME'])."/".$sFilePath;
|
$sFileFullPath = dirname($_SERVER['SCRIPT_FILENAME'])."/".$sFilePath;
|
||||||
|
$sResult = '';
|
||||||
if(!file_exists($sFilePath))
|
|
||||||
{
|
if(!file_exists($sFilePath)) header("HTTP/1.0 404 Not Found");
|
||||||
die();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//get mime type
|
//Get mime type & set headers
|
||||||
if(class_exists('finfo'))
|
if(!class_exists('finfo')) $sMimetype = 'application/force-download';
|
||||||
|
else
|
||||||
{
|
{
|
||||||
$oFileInfo = new finfo(FILEINFO_MIME);
|
$oFileInfo = new finfo(FILEINFO_MIME);
|
||||||
$sMimetype = $oFileInfo->file($sFileFullPath);
|
$sMimetype = $oFileInfo->file($sFileFullPath);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
$sMimetype = 'application/force-download';
|
|
||||||
}
|
|
||||||
|
|
||||||
//set headers
|
|
||||||
header('Pragma: public');
|
header('Pragma: public');
|
||||||
header('Expires: 0');
|
header('Expires: 0');
|
||||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||||
header('Cache-Control: public');
|
header('Cache-Control: public');
|
||||||
header('Content-Description: File Transfer');
|
header('Content-Description: File Transfer');
|
||||||
header('Content-Type: '.$sMimetype);
|
header('Content-Type: '.$sMimetype);
|
||||||
header('Content-Disposition: attachment; filename='.$sFileName);
|
header('Content-Disposition: attachment; filename='.$sFileDesc);
|
||||||
header('Content-Transfer-Encoding: binary');
|
header('Content-Transfer-Encoding: binary');
|
||||||
header('Content-Length: '.@filesize($sFilePath));
|
header('Content-Length: '.@filesize($sFilePath));
|
||||||
|
|
||||||
// download
|
//Download
|
||||||
if ($oFile = @fopen($sFilePath, 'rb'))
|
if ($oFile = @fopen($sFilePath, 'rb'))
|
||||||
{
|
{
|
||||||
while(!feof($oFile))
|
while(!feof($oFile))
|
||||||
{
|
{
|
||||||
print(fread($oFile, 1024*8));
|
$sResult .= print_r(fread($oFile, 1024*8), true);
|
||||||
flush();
|
flush();
|
||||||
if(connection_status() != 0)
|
if(connection_status() != 0) @fclose($oFile);
|
||||||
{
|
|
||||||
@fclose($oFile);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@fclose($oFile);
|
@fclose($oFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $sResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function uploadImage()
|
public function uploadImage()
|
||||||
|
|||||||
@@ -717,56 +717,56 @@ function addMessage(message_info, bReset)
|
|||||||
|
|
||||||
switch(message_info.msg_class)
|
switch(message_info.msg_class)
|
||||||
{
|
{
|
||||||
case 'U':
|
case databap.consts.msg_types.user:
|
||||||
msg_body = sMsgPrefix+'<span class="text">'+message_info.message+'</span>';
|
msg_body = sMsgPrefix+'<span class="text">'+message_info.message+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'NW':
|
case databap.consts.msg_types.news:
|
||||||
databap.tmp('get_news', true);
|
databap.tmp('get_news', true);
|
||||||
msg_body = '<span class="text action">'+message_info.nickname+' a une news : <span class="news"><i class="fa fa-30 fa-c-news"></i> '+message_info.message+' <i class="fa fa-30 fa-c-news"></i></span></span>';
|
msg_body = '<span class="text action">'+message_info.nickname+' a une news : <span class="news"><i class="fa fa-30 fa-c-news"></i> '+message_info.message+' <i class="fa fa-30 fa-c-news"></i></span></span>';
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case databap.consts.msg_types.add.code:
|
||||||
var url = databap.getInternalLink('code', message_info.message);
|
var url = databap.getInternalLink('code', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a ajouté un nouveau code : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a ajouté un nouveau code : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'E':
|
case databap.consts.msg_types.edit.code:
|
||||||
var url = databap.getInternalLink('code', message_info.message);
|
var url = databap.getInternalLink('code', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a modifié le code <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a modifié le code <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'PA':
|
case databap.consts.msg_types.add.proc:
|
||||||
var url = databap.getInternalLink('proc', message_info.message);
|
var url = databap.getInternalLink('proc', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle procédure : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle procédure : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'PE':
|
case databap.consts.msg_types.edit.proc:
|
||||||
var url = databap.getInternalLink('proc', message_info.message);
|
var url = databap.getInternalLink('proc', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a modifié la procédure <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a modifié la procédure <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'M':
|
case databap.consts.msg_types.action:
|
||||||
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case databap.consts.msg_types['private']:
|
||||||
slicePos = message_info.message.indexOf(' ');
|
slicePos = message_info.message.indexOf(' ');
|
||||||
msgTargetUser = message_info.message.substr(1, slicePos - 1);
|
msgTargetUser = message_info.message.substr(1, slicePos - 1);
|
||||||
var msg = message_info.message.slice(slicePos + 1);
|
var msg = message_info.message.slice(slicePos + 1);
|
||||||
msg_body = '<a class="user clickable" title="Ecrire un PM à '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console"> <span class="highlight">@'+msgTargetUser+'</span>></span><span class="text">'+msg+'</span>';
|
msg_body = '<a class="user clickable" title="Ecrire un PM à '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console"> <span class="highlight">@'+msgTargetUser+'</span>></span><span class="text">'+msg+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case databap.consts.msg_types.nick:
|
||||||
msg_body = '<span class="text">'+message_info.message+' ('+message_info.name+')</span>';
|
msg_body = '<span class="text">'+message_info.message+' ('+message_info.name+')</span>';
|
||||||
updateUsersList = true;
|
updateUsersList = true;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case databap.consts.msg_types.conn:
|
||||||
updateUsersList = true;
|
updateUsersList = true;
|
||||||
msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':'<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':'<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
||||||
bSystemMsg = true;
|
bSystemMsg = true;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case databap.consts.msg_types.img:
|
||||||
var msg = '<a href="'+message_info.message[3]+'" target="_blank"><img src="'+message_info.message[0]+'" width="'+message_info.message[1]+'" height="'+message_info.message[2]+'" class="proxy"></a>';
|
var msg = '<a href="'+message_info.message[3]+'" target="_blank"><img src="'+message_info.message[0]+'" width="'+message_info.message[1]+'" height="'+message_info.message[2]+'" class="proxy"></a>';
|
||||||
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
|
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
|
||||||
break;
|
break;
|
||||||
case '9':
|
case databap.consts.msg_types['9gag']:
|
||||||
var msg = '<a href="'+message_info.message.url+'" target="_blank" title="'+message_info.message.title+'"><img src="'+message_info.message.url_img+'" width="'+message_info.message.width+'" height="'+message_info.message.height+'" class="proxy" /></a>';
|
var msg = '<a href="'+message_info.message.url+'" target="_blank" title="'+message_info.message.title+'"><img src="'+message_info.message.url_img+'" width="'+message_info.message.width+'" height="'+message_info.message.height+'" class="proxy" /></a>';
|
||||||
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
|
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case databap.consts.msg_types.reboot:
|
||||||
if(!bReset)
|
if(!bReset)
|
||||||
{
|
{
|
||||||
msg_body = '<span class="text action">'+message_info.message+'</span>';
|
msg_body = '<span class="text action">'+message_info.message+'</span>';
|
||||||
@@ -774,33 +774,33 @@ function addMessage(message_info, bReset)
|
|||||||
bSystemMsg = true;
|
bSystemMsg = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case databap.consts.msg_types.invite:
|
||||||
if(!bReset) joinChan(sChanKeyName, false, [], false);
|
if(!bReset) joinChan(sChanKeyName, false, [], false);
|
||||||
bSystemMsg = true;
|
bSystemMsg = true;
|
||||||
break;
|
break;
|
||||||
case 'B':
|
case databap.consts.msg_types.article:
|
||||||
var url = databap.getInternalLink('a', message_info.message);
|
var url = databap.getInternalLink('a', message_info.message);
|
||||||
msg_body = '<span class="text action">Nouvel article sur un blog BI ('+message_info.domain+') : <a href="'+url+'" target="_blank">'+message_info.art_title+'</a> ';
|
msg_body = '<span class="text action">Nouvel article sur un blog BI ('+message_info.domain+') : <a href="'+url+'" target="_blank">'+message_info.art_title+'</a> ';
|
||||||
msg_body+= 'par <a title="Lien vers la page de l\'auteur" href="'+message_info.link_auth+'" target="_blank">'+message_info.name+'</a> ('+message_info.art_date+')'+'</span>';
|
msg_body+= 'par <a title="Lien vers la page de l\'auteur" href="'+message_info.link_auth+'" target="_blank">'+message_info.name+'</a> ('+message_info.art_date+')'+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case databap.consts.msg_types.status:
|
||||||
updateUsersList = true;
|
updateUsersList = true;
|
||||||
databap.tmp('get_news', true);
|
databap.tmp('get_news', true);
|
||||||
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
|
||||||
break;
|
break;
|
||||||
case 'DA':
|
case databap.consts.msg_types.add.doc:
|
||||||
var url = databap.getInternalLink('doc', message_info.message);
|
var url = databap.getInternalLink('doc', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle documentation : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle documentation : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'DE':
|
case databap.consts.msg_types.edit.doc:
|
||||||
var url = databap.getInternalLink('doc', message_info.message);
|
var url = databap.getInternalLink('doc', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a modifié la documentation <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a modifié la documentation <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'TA':
|
case databap.consts.msg_types.add.table:
|
||||||
var url = databap.getInternalLink('table', message_info.message);
|
var url = databap.getInternalLink('table', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle table : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a ajouté une nouvelle table : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
case 'TE':
|
case databap.consts.msg_types.edit.table:
|
||||||
var url = databap.getInternalLink('table', message_info.message);
|
var url = databap.getInternalLink('table', message_info.message);
|
||||||
msg_body = '<span class="text">'+message_info.nickname+' a modifié la table <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
msg_body = '<span class="text">'+message_info.nickname+' a modifié la table <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -35,12 +35,7 @@ databap.pageInit = function()
|
|||||||
//Add EHP improvements, SP bug fixes and WIP
|
//Add EHP improvements, SP bug fixes and WIP
|
||||||
var $ActivityBox, sIcon;
|
var $ActivityBox, sIcon;
|
||||||
var asActivityTypes = {
|
var asActivityTypes = {
|
||||||
sp_fixes: [ 'Réparation des messages non lus dans le chat',
|
sp_fixes: [ 'Réparation des fichiers téléchargés (documentation)'],
|
||||||
'Plantage lors de la recherche infructueuse de table',
|
|
||||||
'Bon rafraichissement de la barre de défilement dans la recherche',
|
|
||||||
'Réinsertion des nicknames absent du chan lors des tab dans le cas d\'un /invite',
|
|
||||||
'Suppression de la redescente automatique de la scrollbar dans le chat si elle n\'est pas déjà en bas',
|
|
||||||
'Liste complète: ajout d\'un bouton pour supprimer les filtres appliqués'],
|
|
||||||
ehp_improvements: [ 'Utilisation des # pour les accès aux pages, compatible avec les boutons prec/suiv des navigateurs. Ex: <a href="#chat">databap.lutran.fr#chat</a>',
|
ehp_improvements: [ 'Utilisation des # pour les accès aux pages, compatible avec les boutons prec/suiv des navigateurs. Ex: <a href="#chat">databap.lutran.fr#chat</a>',
|
||||||
'Mot de passe personnalisé et modifiable dans les <a href="#options">options</a>',
|
'Mot de passe personnalisé et modifiable dans les <a href="#options">options</a>',
|
||||||
'paramètre dans les <a href="#options">options</a> pour supprimer les messages d\'arrivée et de départ des gens (console)',
|
'paramètre dans les <a href="#options">options</a> pour supprimer les messages d\'arrivée et de départ des gens (console)',
|
||||||
|
|||||||
Reference in New Issue
Block a user