Magic Box v1.0 + bugfix sorting connected names in chat

This commit is contained in:
2015-05-23 23:39:33 +02:00
parent aabffca2f7
commit b557ded1a6
11 changed files with 90 additions and 37 deletions

View File

@@ -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)

13
jquery/common.js vendored
View File

@@ -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

View File

@@ -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,

View File

@@ -33,6 +33,16 @@
<p><input type="text" class="tiny_round" id="company" name="company" /></p>
</form>
</div>
<div id="reset_pass" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-unlock"></i>Réinitialiser mdp</h3>
<form id="form_reset_pass" name="form_reset_pass">
<p id="users"></p>
</form>
</div>
<div id="update_web_crawler" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-share"></i>Maj web crawler</h3>
<form id="form_update_web_crawler" name="form_update_web_crawler"></form>
</div>
</div>
</div>
</div>
@@ -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 = $('<select>', {id:sSelectId, name:sSelectId, 'class':sSelectClass}).appendTo($Box);
$.each
(
asOptions,
function(selectId, selectName)
asSortedOptions.map(function(asValue)
{
$Select
.append($('<option>', {value:selectId})
.prop('selected', (selectId==sSelectedValue))
.text(selectName));
.append($('<option>', {value:asValue.id})
.prop('selected', (asValue.id==sSelectedValue))
.text(asValue.value));
}
);
}

View File

@@ -243,6 +243,9 @@ vertical-align 0% -5% -10% -15% -20% -25% -30%
.fa-c-lock:before {
content: "\f023"/*"\f084"*/;
}
.fa-c-unlock:before {
content: "\f09c";
}
.fa-c-search:before {
content: "\f002";

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1122,6 +1122,7 @@
#options .options_box .button {
margin-top:5px;
float:none;
}
#options #admin {
@@ -1137,6 +1138,11 @@
float:left;
margin: 0 10px 10px 0;
}
#options #admin .magic_box form {
text-align: center;
}
#options #admin .magic_box:last-child {
margin-right:0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
todo
View File

@@ -3,9 +3,7 @@ Todo
Internal:
- put old messages back into new ones
- modify sap_website_parser.sh avec données de databot
- independant code/procedure/article/table/document php classes ?
- Admin param page
- Independant Option Class + delete 'option' column in options table
- put feedback box in title
- Créer un fichier de testing