From 1f42d2286fdf3c8da5bd9956ef0213b93cdabfe3 Mon Sep 17 00:00:00 2001 From: franzz Date: Wed, 2 Jul 2014 19:38:33 +0200 Subject: [PATCH] v1.0 RC2 - logo planeum - status in news - email in options --- images/logo_planeum_24.png | Bin 0 -> 1432 bytes images/logo_planeum_48.png | Bin 0 -> 3485 bytes inc/databap.php | 42 +++++++++++++++++++++++++++---------- index.php | 2 +- masks/chat.html | 18 ++++++++++------ masks/profile.html | 2 +- todo | 8 +++++-- 7 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 images/logo_planeum_24.png create mode 100644 images/logo_planeum_48.png diff --git a/images/logo_planeum_24.png b/images/logo_planeum_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0447ac71d45f568f6de0ffce124a7911e368219d GIT binary patch literal 1432 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 array('first_name', 'last_name', 'email', MySqlManager::getId(self::COMP_TABLE), 'pass', 'auth_cookie', 'active', 'clearance'), + self::USER_TABLE => array('first_name', 'last_name', MySqlManager::getId(self::COMP_TABLE), 'pass', 'auth_cookie', 'active', 'clearance'), self::COMP_TABLE => array(MySqlManager::getText(self::COMP_TABLE), 'logo'), self::CODE_TABLE => array(MySqlManager::getText(self::CODE_TABLE), 'description', MySqlManager::getId(self::USER_TABLE), 'refer_id'), self::URL_TABLE => array(MySqlManager::getId(self::CODE_TABLE), 'phrase'), @@ -307,6 +308,7 @@ class Databap extends PhpObject $iChatImageOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $iStatusOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_STATUS, $sOptionNameCol=>'mission en cours', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $iConsoleOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionNameCol=>'afficher la console du chat', 'type'=>self::OPT_SELECT, 'language'=>self::LANG_FR)); + $iEmailOptId = $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_EMAIL, $sOptionNameCol=>'Email', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); //Console Option $asConsoleValues = array(self::OPT_CONSOLE_YES=>self::OPT_VAL_YES, self::OPT_CONSOLE_NO=>self::OPT_VAL_NO); @@ -367,7 +369,8 @@ class Databap extends PhpObject 'all_chan_text'=>self::ALL_CHAN_TEXT, 'pm_separator'=>self::PM_SEP, 'reboot_delay'=>self::REBOOT_DELAY, - 'versionHtml'=>$this->getItemBlock()); + 'versionHtml'=>$this->getItemBlock(), + 'opt_console_no'=>self::OPT_CONSOLE_NO); $oPage->setTag('constants', $this->jsonConvert($asConstants)); //Variables @@ -375,6 +378,7 @@ class Databap extends PhpObject $asVars['user_id'] = $this->getUserId(); $asVars['hash_to_page'] = $this->getPagesFromHash(); $asVars['page_to_hash'] = array_flip($asVars['hash_to_page']); + $asVars['opt_console'] = $this->getUserOptionValue(self::OPT_CONSOLE); $oPage->setTag('variables', $this->jsonConvert($asVars)); return $oPage->getMask(); @@ -582,7 +586,6 @@ class Databap extends PhpObject $asInfo = array('first_name'=>$sFirstName, 'last_name'=>$sLastName, - 'email'=>$sEmail, 'active'=>self::MEMBER_ACTIVE, MySqlManager::getId(self::COMP_TABLE)=>$iCompanyId, 'pass'=>$this->oAuth->HashPassword(self::getLoginToken($sCompany)), @@ -603,7 +606,8 @@ class Databap extends PhpObject //$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_TOKEN, $sOptionTextCol=>$this->generateExternalAccessLink('rss', $iUserId))); //$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionTextCol=>'images/sap_gold_332.jpg')); $this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_CONSOLE, $sOptionValIdCol=>self::OPT_CONSOLE_NO)); - + $this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail)); + return $iUserId; } @@ -1052,10 +1056,12 @@ class Databap extends PhpObject else { $asRow = $this->oMySql->selectRow(self::USER_TABLE, $iUserId); + $sEmail = $this->getUserOptionValue(self::OPT_EMAIL, $iUserId); + $asCompany = $this->oMySql->selectRow(self::COMP_TABLE, $asRow[MySqlManager::getId(self::COMP_TABLE)]); $asUserInfo = array( 'name'=>self::getNameFormat($asRow['first_name'], $asRow['last_name']), 'nickname'=>self::getNickNameFormat($this->getChatNickNames($iUserId)), - 'email'=>$asRow['email'], + 'email'=>$sEmail, 'company'=>self::getCompanyFormat($asCompany[MySqlManager::getText(self::COMP_TABLE)]), 'status'=>$this->getDescriptionFormat($this->getUserOptionValue(self::OPT_STATUS, $iUserId)), 'logo'=>$asCompany['logo'], @@ -1230,7 +1236,9 @@ class Databap extends PhpObject //User Info $asProfile['user'] = $this->getUserInfo($iUserId); - + unset($asProfile['user']['email']); + unset($asProfile['user']['clearance']); + //History Info $asTables = $this->getItemTables(); foreach($asTables as $sType=>$sTableName) @@ -1747,12 +1755,12 @@ class Databap extends PhpObject //Sort out messages for Json Export $iPrefixLen = mb_strlen(self::JSON_PREFIX); - $iConsoleDisplay = $this->getUserOptionValue(self::OPT_CONSOLE); + //$iConsoleDisplay = $this->getUserOptionValue(self::OPT_CONSOLE); $asMessages = array('messages'=>array(), 'last_message_id'=>0); foreach($asSqlMessages as $iMessageId=>$asMessageInfo) { //Connection message filter - if($iConsoleDisplay==self::OPT_CONSOLE_NO && $asMessageInfo['type']==self::MESSAGE_CONN) continue; + //if($iConsoleDisplay==self::OPT_CONSOLE_NO && $asMessageInfo['type']==self::MESSAGE_CONN) continue; //General message info $iChanId = $asMessageInfo[MySqlManager::getId(self::CHAN_TABLE)]; @@ -1827,6 +1835,7 @@ class Databap extends PhpObject { $sMsgIdCol = MySqlManager::getId(self::MSG_TABLE); + //News $asInfo['select'] = array($sMsgIdCol, 'nickname', MySqlManager::getText(self::MSG_TABLE), 'led'); $asInfo['from'] = self::MSG_TABLE; $asInfo['constraint'] = array('type'=>self::MESSAGE_NEWS); @@ -1834,8 +1843,19 @@ class Databap extends PhpObject $asInfo['limit'] = 3; $asNews = $this->oMySql->selectRows($asInfo); + //Status + $asInfo['constraint'] = array('type'=>self::MESSAGE_STATUS); + $asStatus = $this->oMySql->selectRows($asInfo); + + //Sorting + //FIXME find a way to do it in SQL + $asNews = array_merge($asNews, $asStatus); + foreach($asNews as $iKey=>$asNewsInfo) $asNewsSort[$iKey] = strtotime($asNewsInfo['led']); + arsort($asNewsSort); + foreach($asNewsSort as $iKey=>$iTimestamp) $asNews2[] = $asNews[$iKey]; + $asFormatNews = array(); - foreach($asNews as $asNew) + foreach($asNews2 as $asNew) { $iMsgId = '-'.$asNew[$sMsgIdCol]; $asFormatNews[$iMsgId]['time_desc'] = ToolBox::getDateTimeDesc($asNew['led']); @@ -2255,9 +2275,9 @@ class Databap extends PhpObject $sPass = ''; if($iUserId>0) { - $asUser = $this->oMySql->selectRow(self::USER_TABLE, $iUserId, array('first_name', 'last_name', 'email', MySqlManager::getId(self::COMP_TABLE))); + $asUser = $this->oMySql->selectRow(self::USER_TABLE, $iUserId, array('first_name', 'last_name', MySqlManager::getId(self::COMP_TABLE))); $sCompanyName = $this->oMySql->selectvalue(self::COMP_TABLE, MySqlManager::getText(self::COMP_TABLE), $asUser[MySqlManager::getId(self::COMP_TABLE)]); - $sPass = $asUser['first_name'].$asUser['last_name'].$asUser['email'].$sCompanyName; + $sPass = $asUser['first_name'].$asUser['last_name'].$sCompanyName; } else $this->addError('generating token : invalid user id "'.$iUserId.'"'); return $sPass; diff --git a/index.php b/index.php index b4d6509..867624a 100644 --- a/index.php +++ b/index.php @@ -187,7 +187,7 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS) { case 'add_user': $asInfo = explode('-', strtolower($oUser)); - $sResult = 'User added. Id='.$oDatabap->addUser($asInfo[0], $asInfo[1], $asInfo[2]); + $sResult = 'User added. Id='.$oDatabap->addUser($asInfo[0], $asInfo[1], $asInfo[2], array_key_exists(3, $asInfo)?$asInfo[3]:''); break; case 'build_index': $oDatabap->buildCompleteIndex(); diff --git a/masks/chat.html b/masks/chat.html index 36c84b0..6494060 100755 --- a/masks/chat.html +++ b/masks/chat.html @@ -77,10 +77,11 @@ databap.pageInit = function() databap.consts.chanUnreadPrefix = 'unread_chan_'; //Page variables - databap.tmp('sending_msg', 'boolean'); - databap.tmp('refresh', 'boolean'); + self.tmp('sending_msg', 'boolean'); + self.tmp('refresh', 'boolean'); self.vars2('unread_msg', 'object'); - databap.tmp('news_period', 10*60*1000); + self.tmp('news_period', 10*60*1000); + self.tmp('get_news', false); //Main elements $MsgInput = databap.getMainElem('#message'); @@ -541,7 +542,7 @@ function add_message(e) //Finding last word var last_word = (chat_message.lastIndexOf(" ")==-1)?chat_message:chat_message.substr(chat_message.lastIndexOf(" ") + 1); - debug(last_word); + //debug(last_word); if(last_word.substr(0, 1)=='@') last_word = last_word.substr(1); var last_word_len = last_word.length; @@ -653,6 +654,10 @@ function refresh_chat(bReset) } ); + //News + if(databap.tmp('get_news') === true && !bReset) getNews(); + databap.tmp('get_news', false); + //Nicknames changes if(updateUsersList === true || prevLastMsgId == 0) { @@ -694,7 +699,7 @@ function addMessage(message_info, bReset) msg_body = sMsgPrefix+''+message_info.message+''; break; case 'NW': - if(!bReset) getNews(); + databap.tmp('get_news', true); msg_body = ''+message_info.nickname+' a une news : '+message_info.message+' '; break; case 'A': @@ -728,7 +733,7 @@ function addMessage(message_info, bReset) break; case 'C': updateUsersList = true; - msg_body = ''+message_info.nickname+' '+message_info.message+''; + msg_body = (self.vars2('opt_console')==self.consts.opt_console_no)?'':''+message_info.nickname+' '+message_info.message+''; break; case 'I': var msg = ''; @@ -755,6 +760,7 @@ function addMessage(message_info, bReset) break; case 'S': updateUsersList = true; + databap.tmp('get_news', true); msg_body = ''+message_info.nickname+' '+message_info.message+''; break; case 'DA': diff --git a/masks/profile.html b/masks/profile.html index 7b4a0be..274c9de 100755 --- a/masks/profile.html +++ b/masks/profile.html @@ -31,7 +31,7 @@ databap.pageInit = function() //user history $UserHistory = databap.getMainElem('#user_history'); - if(typeof profile.history != 'undefined') + if(profile.history!= null && typeof profile.history != 'undefined') { $.each ( diff --git a/todo b/todo index 2002e47..4586857 100644 --- a/todo +++ b/todo @@ -7,13 +7,14 @@ Internal: - Independant Option Class Bug fix: -- [1.0.0] Fix les "xxx se déconnecte" intempestives +- [1.0.0] Tab dans chat - [1.0.1] Check le document type plutot que l'extension pour les /img - [1.0.1] Resize .gif -- [1.0.1] Tab dans chat - [1.0.1] Request anti repost : POST REDIRECT GET : http://en.wikipedia.org/wiki/Post/Redirect/Get +- Fix les "xxx se déconnecte" intempestives Améliorations +- liste complète : ajouter des tabs pour sélectionner soit code, soit article, soit table... - [1.1.0] Chat : compatibilité mobile (utiliser la fonctionnalité ff) - [1.1.0] search : add tagname, like code:blabla to search blabla in codes only - delete phrases table / généraliser ? @@ -38,5 +39,8 @@ Testing MEP 1.0.0 --------- +- Ajouter l'option 9 (email) : insert into option_names (option_name, type, language) values ('email', 'T', 'FR'); +- copier les emails de users à options +- supprimer colonne email de users - Remplacer le External Access Token dans sap_website_parser.sh - Faire un nouvel export de base \ No newline at end of file