diff --git a/images/logo_planeum_24.png b/images/logo_planeum_24.png new file mode 100644 index 0000000..0447ac7 Binary files /dev/null and b/images/logo_planeum_24.png differ diff --git a/images/logo_planeum_48.png b/images/logo_planeum_48.png new file mode 100644 index 0000000..74fca6e Binary files /dev/null and b/images/logo_planeum_48.png differ diff --git a/inc/databap.php b/inc/databap.php index 695ef59..2bbcffc 100644 --- a/inc/databap.php +++ b/inc/databap.php @@ -108,6 +108,7 @@ class Databap extends PhpObject const OPT_IMAGE_CHAT = 6; const OPT_STATUS = 7; const OPT_CONSOLE = 8; + const OPT_EMAIL = 9; //Options Values Id Constants const OPT_CONSOLE_YES = 1; @@ -195,7 +196,7 @@ class Databap extends PhpObject $asOptions = array(); $asOptions['tables'] = array ( - self::USER_TABLE => 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