From b557ded1a63041a067e46f3f534f2e16bd059321 Mon Sep 17 00:00:00 2001 From: franzz Date: Sat, 23 May 2015 23:39:33 +0200 Subject: [PATCH] Magic Box v1.0 + bugfix sorting connected names in chat --- inc/databap.php | 59 ++++++++++++++++++++++++++++--------------- jquery/common.js | 13 ++++++++++ masks/chat.html | 1 + masks/options.html | 33 +++++++++++++++++------- style/_fa-custom.scss | 3 +++ style/databap.css | 4 +-- style/databap.css.map | 2 +- style/databap.scss | 6 +++++ style/logon.css | 2 +- style/logon.css.map | 2 +- todo | 2 -- 11 files changed, 90 insertions(+), 37 deletions(-) diff --git a/inc/databap.php b/inc/databap.php index 29dfabe..7a153fd 100755 --- a/inc/databap.php +++ b/inc/databap.php @@ -398,14 +398,15 @@ class Databap extends PhpObject $this->addUser('test', 'test', $iAdminCompanyId, 'test@test.com', self::CLEARANCE_MEMBER, 0, false); //Write the SAP blog parser bash script to main folder - @file_put_contents('sap_website_parser.sh', "#!/bin/bash\n\ncd /var/www\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".self::SYSTEM_USER_ID.'_'.str_replace('$', '\$', $this->generateExternalAccessToken(self::SYSTEM_USER_ID))); + $this->updateWebCrawler(); } public function updateWebCrawler() { $sContent = "#!/bin/bash\n\ncd /var/www\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".self::SYSTEM_USER_ID.'_'.str_replace('$', '\$', $this->generateExternalAccessToken(self::SYSTEM_USER_ID)); - @file_put_contents('sap_website_parser.sh', $sContent); - return $sContent; + $bSuccess = !(file_put_contents('sap_website_parser.sh', $sContent)===false); + $sDesc = $bSuccess?'Fichier écrit avec succès':'Erreur lors de l\'écriture du fichier à la racine de l\'application. Vérifier les droits sur ce dossier'; + return $this->getJsonPostResult($bSuccess, $sDesc); } public function goLive() @@ -1456,7 +1457,13 @@ class Databap extends PhpObject $asAdminOptions = array(); if($this->checkUserClearance(self::CLEARANCE_ADMIN)) { - $asAdminOptions['companies'] = $this->oMySql->selectList(self::COMP_TABLE); + //Companies + $asAdminOptions['companies'] = array_map(array('self', 'getCompanyFormat'), $this->oMySql->selectList(self::COMP_TABLE)); + + //User Names + $asFirstNames = $this->oMySql->selectList(self::USER_TABLE, 'first_name'); + $asLastNames = $this->oMySql->selectList(self::USER_TABLE, 'last_name'); + foreach($asLastNames as $iUserId=>$sLastName) $asAdminOptions['users'][$iUserId] = self::getNameFormat($asFirstNames[$iUserId], $sLastName); } return $this->jsonExport(array('admin'=>$asAdminOptions, 'options'=>$asSelectedOptions)); } @@ -2282,19 +2289,22 @@ class Databap extends PhpObject $asConnectedUsers = $asUserOptions = array(); foreach($asUserChannels as $asUser) { - $sChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)]; + $iChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)]; $iUserId = $asUser[$iUserIdCol]; if(!array_key_exists($iUserId, $asUserOptions)) $asUserOptions[$iUserId] = $this->getUserOptions(array(self::OPT_NICKNAME, self::OPT_STATUS), $iUserId); $sNickName = self::getNickNameFormat($asUserOptions[$iUserId][self::OPT_NICKNAME][MySqlManager::getText(self::OPTVAL_TABLE)]); - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['id_user'] = $iUserId; - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['name'] = self::getNameFormat($asUser['first_name'], $asUser['last_name']); - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['company'] = self::getCompanyFormat($asUser['company']); - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)]; - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['logo'] = $asUser['logo']; - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = $sNickName; - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['last_activity'] = array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):''; - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['ping'] = self::getDateFormat($asUser['led'], self::TIME_FORMAT); - $asConnectedUsers[$sChanId][$sNickName.$iUserId]['afk'] = $asUser['afk']; + $asConnectedUsers[$iChanId][] = array + ( + 'id_user' => $iUserId, + 'name' => self::getNameFormat($asUser['first_name'], $asUser['last_name']), + 'company' => self::getCompanyFormat($asUser['company']), + 'status' => $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)], + 'logo' => $asUser['logo'], + 'nickname' => $sNickName, + 'last_activity' => array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'', + 'ping' => self::getDateFormat($asUser['led'], self::TIME_FORMAT), + 'afk' => $asUser['afk'] + ); } return $bJson?$this->jsonExport($asConnectedUsers):$asConnectedUsers; @@ -2608,6 +2618,8 @@ class Databap extends PhpObject public function resetPass($iUserId) { + $bSuccess = false; + $sDesc = ''; if($iUserId>0) { $sUserIdCol = MySqlManager::getId(self::USER_TABLE, true); @@ -2616,16 +2628,21 @@ class Databap extends PhpObject 'join'=> array(self::COMP_TABLE=>MySqlManager::getId(self::COMP_TABLE)), 'constraint'=>array($sUserIdCol=>$iUserId)); $asUsers = $this->oMySql->selectRows($asInfo); - foreach($asUsers as $asUser) + if(empty($asUsers)) $sDesc = 'Aucun utilisateur trouvé (id='.$iUserId.')'; + else { - $sToken = $this->oAuth->HashPassword(self::getLoginToken($asUser[MySqlManager::getText(self::COMP_TABLE)])); - $iUserId = $asUser[MySqlManager::getId(self::USER_TABLE)]; - $this->oMySql->updateRow(self::USER_TABLE, $iUserId, array('pass'=>$sToken)); + foreach($asUsers as $asUser) + { + $sToken = $this->oAuth->HashPassword(self::getLoginToken($asUser[MySqlManager::getText(self::COMP_TABLE)])); + $iUserId = $asUser[MySqlManager::getId(self::USER_TABLE)]; + $this->oMySql->updateRow(self::USER_TABLE, $iUserId, array('pass'=>$sToken)); + $bSuccess = true; + $sDesc = 'Mot de passe réinitialisé'; + } } } - else return 'KO'; - - return 'OK'; + else $sDesc = 'Aucun id reçu'; + return $this->getJsonPostResult($bSuccess, $sDesc); } private function getExternalAccessPass($iUserId) diff --git a/jquery/common.js b/jquery/common.js index d8b1549..0e4e7cc 100644 --- a/jquery/common.js +++ b/jquery/common.js @@ -188,6 +188,19 @@ String.prototype.replaceAll = function(regex, text) return this.replace(new RegExp(regex, 'g'), text); }; +function sort(oList, sField) +{ + sField = sField || ''; + var asArray = []; + for(var i in oList) asArray.push({id:i, value:oList[i]}); + return asArray.sort(function(asItem1, asItem2) + { + var sValue1 = sField==''?asItem1.value:asItem1.value[sField]; + var sValue2 = sField==''?asItem2.value:asItem2.value[sField]; + return sValue1>sValue2?1:-1; + }); +}; + function copyArray(asArray) { return asArray.slice(0); //trick to copy array diff --git a/masks/chat.html b/masks/chat.html index 66edd13..9c954e8 100755 --- a/masks/chat.html +++ b/masks/chat.html @@ -955,6 +955,7 @@ function refresh_users() result, function(sChankeyName, chan_info) { + chan_info.sort(function(asUser1, asUser2){return asUser1.nickname>asUser2.nickname?1:-1;}); $.each ( chan_info, diff --git a/masks/options.html b/masks/options.html index f7eb24b..477a568 100755 --- a/masks/options.html +++ b/masks/options.html @@ -33,6 +33,16 @@

+
+

Réinitialiser mdp

+
+

+
+
+
+

Maj web crawler

+
+
@@ -86,11 +96,18 @@ function initAdminPanel(asAdmin) $('#last_name').addDefaultValue('Nom'); addSelect($('#companies'), asAdmin.companies, 0, 'id'); $('#email').addDefaultValue('Email'); - $('#add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user');}, 'submit_new_user', 'heavy inverse'); + $('#form_add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user', true);}, 'submit_new_user', 'heavy inverse'); //Add company $('#company').addDefaultValue('Entreprise'); - $('#add_company').addButton('ok', 'Créer', function(){submitAdmin('add_company', true);}, 'submit_new_user', 'heavy inverse'); + $('#form_add_company').addButton('ok', 'Créer', function(){submitAdmin('add_company', true);}, 'submit_new_user', 'heavy inverse'); + + //Add Crawler button + $('#form_update_web_crawler').addButton('refresh', 'Maj', function(){submitAdmin('update_web_crawler');}, 'submit_refresh', 'heavy inverse'); + + //Reset User Pass + addSelect($('#users'), asAdmin.users, 0, 'user'); + $('#form_reset_pass').addButton('refresh', 'Reset', function(){submitAdmin('reset_pass');}, 'submit_reset_pass', 'heavy inverse'); //Show panel $('#admin').show(); @@ -115,19 +132,17 @@ function submitAdmin(sAction, bReboot) function addSelect($Box, asOptions, sSelectedValue, sSelectId, sSelectClass) { + var asSortedOptions = sort(asOptions); sSelectedValue = sSelectedValue || 0; sSelectId = sSelectId || ''; sSelectClass = sSelectClass || ''; var $Select = $('