Starting SP3

fixing file download + replacing message types
This commit is contained in:
lutranf
2014-11-27 18:56:36 +01:00
parent 12c1cf8001
commit f9b4505626
3 changed files with 61 additions and 50 deletions

View File

@@ -7,8 +7,8 @@
class Databap extends PhpObject
{
//Common Constants
const VERSION = '1.0.2'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
const VERSION_DATE = '24/10/2014';
const VERSION = '1.0.3'; //Versioning: <Main_Version>.<Enhancement_Package>.<Patch>-<Release_Candidate>
const VERSION_DATE = '27/11/2014';
const EXPECTED_PAGE_COOKIE = 'exp_page';
const MAIN_SEPARATOR = ' ';
const DATE_FORMAT = 'd/m/Y';
@@ -90,6 +90,26 @@ class Databap extends PhpObject
const MESSAGE_REBOOT = 'R';
const MESSAGE_ARTICLE = 'B';
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 ALL_CHAN_ID = 1;
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,
'versionHtml'=>$this->getItemBlock(),
'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));
//Variables
@@ -1034,53 +1055,48 @@ class Databap extends PhpObject
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;
$sFileFullPath = dirname($_SERVER['SCRIPT_FILENAME'])."/".$sFilePath;
if(!file_exists($sFilePath))
{
die();
}
$sResult = '';
if(!file_exists($sFilePath)) header("HTTP/1.0 404 Not Found");
else
{
//get mime type
if(class_exists('finfo'))
//Get mime type & set headers
if(!class_exists('finfo')) $sMimetype = 'application/force-download';
else
{
$oFileInfo = new finfo(FILEINFO_MIME);
$sMimetype = $oFileInfo->file($sFileFullPath);
}
else
{
$sMimetype = 'application/force-download';
}
//set headers
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-Type: '.$sMimetype);
header('Content-Disposition: attachment; filename='.$sFileName);
header('Content-Disposition: attachment; filename='.$sFileDesc);
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.@filesize($sFilePath));
// download
//Download
if ($oFile = @fopen($sFilePath, 'rb'))
{
while(!feof($oFile))
{
print(fread($oFile, 1024*8));
$sResult .= print_r(fread($oFile, 1024*8), true);
flush();
if(connection_status() != 0)
{
@fclose($oFile);
}
if(connection_status() != 0) @fclose($oFile);
}
@fclose($oFile);
}
}
return $sResult;
}
public function uploadImage()

View File

@@ -717,56 +717,56 @@ function addMessage(message_info, bReset)
switch(message_info.msg_class)
{
case 'U':
case databap.consts.msg_types.user:
msg_body = sMsgPrefix+'<span class="text">'+message_info.message+'</span>';
break;
case 'NW':
case databap.consts.msg_types.news:
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>';
break;
case 'A':
case databap.consts.msg_types.add.code:
var url = databap.getInternalLink('code', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; un nouveau code : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'E':
case databap.consts.msg_types.edit.code:
var url = databap.getInternalLink('code', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; le code <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'PA':
case databap.consts.msg_types.add.proc:
var url = databap.getInternalLink('proc', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; une nouvelle proc&eacute;dure : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'PE':
case databap.consts.msg_types.edit.proc:
var url = databap.getInternalLink('proc', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; la proc&eacute;dure <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'M':
case databap.consts.msg_types.action:
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
break;
case 'P':
case databap.consts.msg_types['private']:
slicePos = message_info.message.indexOf(' ');
msgTargetUser = message_info.message.substr(1, slicePos - 1);
var msg = message_info.message.slice(slicePos + 1);
msg_body = '<a class="user clickable" title="Ecrire un PM &agrave; '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console"> <span class="highlight">&#64;'+msgTargetUser+'</span>&gt;</span><span class="text">'+msg+'</span>';
break;
case 'N':
case databap.consts.msg_types.nick:
msg_body = '<span class="text">'+message_info.message+' ('+message_info.name+')</span>';
updateUsersList = true;
break;
case 'C':
case databap.consts.msg_types.conn:
updateUsersList = true;
msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':'<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
bSystemMsg = true;
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>';
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
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>';
msg_body = sMsgPrefix+'<span class="text">'+msg+'</span>';
break;
case 'R':
case databap.consts.msg_types.reboot:
if(!bReset)
{
msg_body = '<span class="text action">'+message_info.message+'</span>';
@@ -774,33 +774,33 @@ function addMessage(message_info, bReset)
bSystemMsg = true;
}
break;
case 'V':
case databap.consts.msg_types.invite:
if(!bReset) joinChan(sChanKeyName, false, [], false);
bSystemMsg = true;
break;
case 'B':
case databap.consts.msg_types.article:
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+= '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;
case 'S':
case databap.consts.msg_types.status:
updateUsersList = true;
databap.tmp('get_news', true);
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
break;
case 'DA':
case databap.consts.msg_types.add.doc:
var url = databap.getInternalLink('doc', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; une nouvelle documentation : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'DE':
case databap.consts.msg_types.edit.doc:
var url = databap.getInternalLink('doc', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; la documentation <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'TA':
case databap.consts.msg_types.add.table:
var url = databap.getInternalLink('table', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; une nouvelle table : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'TE':
case databap.consts.msg_types.edit.table:
var url = databap.getInternalLink('table', message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; la table <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;

View File

@@ -35,12 +35,7 @@ databap.pageInit = function()
//Add EHP improvements, SP bug fixes and WIP
var $ActivityBox, sIcon;
var asActivityTypes = {
sp_fixes: [ 'Réparation des messages non lus dans le chat',
'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'],
sp_fixes: [ 'Réparation des fichiers téléchargés (documentation)'],
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>',
'paramètre dans les <a href="#options">options</a> pour supprimer les messages d\'arrivée et de départ des gens (console)',