From f9b45056264ecd0d29c2630bd79444c15b913865 Mon Sep 17 00:00:00 2001 From: lutranf Date: Thu, 27 Nov 2014 18:56:36 +0100 Subject: [PATCH] Starting SP3 fixing file download + replacing message types --- inc/databap.php | 64 +++++++++++++++++++++++++++++----------------- masks/chat.html | 40 ++++++++++++++--------------- masks/welcome.html | 7 +---- 3 files changed, 61 insertions(+), 50 deletions(-) diff --git a/inc/databap.php b/inc/databap.php index f1a6c6e..dd6eaf4 100755 --- a/inc/databap.php +++ b/inc/databap.php @@ -7,8 +7,8 @@ class Databap extends PhpObject { //Common Constants - const VERSION = '1.0.2'; //Versioning: ..- - const VERSION_DATE = '24/10/2014'; + const VERSION = '1.0.3'; //Versioning: ..- + 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() diff --git a/masks/chat.html b/masks/chat.html index 45be83c..7d5fc15 100755 --- a/masks/chat.html +++ b/masks/chat.html @@ -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+''+message_info.message+''; break; - case 'NW': + case databap.consts.msg_types.news: databap.tmp('get_news', true); msg_body = ''+message_info.nickname+' a une news : '+message_info.message+' '; break; - case 'A': + case databap.consts.msg_types.add.code: var url = databap.getInternalLink('code', message_info.message); msg_body = ''+message_info.nickname+' a ajouté un nouveau code : '+message_info.description+''; break; - case 'E': + case databap.consts.msg_types.edit.code: var url = databap.getInternalLink('code', message_info.message); msg_body = ''+message_info.nickname+' a modifié le code '+message_info.description+''; break; - case 'PA': + case databap.consts.msg_types.add.proc: var url = databap.getInternalLink('proc', message_info.message); msg_body = ''+message_info.nickname+' a ajouté une nouvelle procédure : '+message_info.description+''; break; - case 'PE': + case databap.consts.msg_types.edit.proc: var url = databap.getInternalLink('proc', message_info.message); msg_body = ''+message_info.nickname+' a modifié la procédure '+message_info.description+''; break; - case 'M': + case databap.consts.msg_types.action: msg_body = ''+message_info.nickname+' '+message_info.message+''; 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 = ''+message_info.nickname+' @'+msgTargetUser+'>'+msg+''; break; - case 'N': + case databap.consts.msg_types.nick: msg_body = ''+message_info.message+' ('+message_info.name+')'; updateUsersList = true; break; - case 'C': + case databap.consts.msg_types.conn: updateUsersList = true; msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':''+message_info.nickname+' '+message_info.message+''; bSystemMsg = true; break; - case 'I': + case databap.consts.msg_types.img: var msg = ''; msg_body = sMsgPrefix+''+msg+''; break; - case '9': + case databap.consts.msg_types['9gag']: var msg = ''; msg_body = sMsgPrefix+''+msg+''; break; - case 'R': + case databap.consts.msg_types.reboot: if(!bReset) { msg_body = ''+message_info.message+''; @@ -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 = 'Nouvel article sur un blog BI ('+message_info.domain+') : '+message_info.art_title+' '; msg_body+= 'par '+message_info.name+' ('+message_info.art_date+')'+''; break; - case 'S': + case databap.consts.msg_types.status: updateUsersList = true; databap.tmp('get_news', true); msg_body = ''+message_info.nickname+' '+message_info.message+''; break; - case 'DA': + case databap.consts.msg_types.add.doc: var url = databap.getInternalLink('doc', message_info.message); msg_body = ''+message_info.nickname+' a ajouté une nouvelle documentation : '+message_info.description+''; break; - case 'DE': + case databap.consts.msg_types.edit.doc: var url = databap.getInternalLink('doc', message_info.message); msg_body = ''+message_info.nickname+' a modifié la documentation '+message_info.description+''; break; - case 'TA': + case databap.consts.msg_types.add.table: var url = databap.getInternalLink('table', message_info.message); msg_body = ''+message_info.nickname+' a ajouté une nouvelle table : '+message_info.description+''; break; - case 'TE': + case databap.consts.msg_types.edit.table: var url = databap.getInternalLink('table', message_info.message); msg_body = ''+message_info.nickname+' a modifié la table '+message_info.description+''; break; diff --git a/masks/welcome.html b/masks/welcome.html index 3b96f9e..f31643a 100755 --- a/masks/welcome.html +++ b/masks/welcome.html @@ -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: databap.lutran.fr#chat', 'Mot de passe personnalisé et modifiable dans les options', 'paramètre dans les options pour supprimer les messages d\'arrivée et de départ des gens (console)',