magic box: v1.0

This commit is contained in:
2015-04-27 21:35:05 +02:00
parent 27f5b44934
commit 19d36ce795
7 changed files with 125 additions and 42 deletions

View File

@@ -112,6 +112,8 @@ class Databap extends PhpObject
'article'=>self::MESSAGE_ARTICLE,
'news'=>self::MESSAGE_NEWS);
const DEFAULT_COMPANY_LOGO = 'logo_unknown_24.png';
const ADMIN_COMPANY_LOGO = 'logo_planeum_24.png';
const SYSTEM_COMPANY_LOGO = 'logo_ovh_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';
const DEFAULT_CHAN_ID = 2;
@@ -388,13 +390,15 @@ class Databap extends PhpObject
$this->oMySql->insertRow(self::CHAN_TABLE, array('safe_name'=>self::getChanSafeName(self::DEFAULT_CHAN), MySqlManager::getText(self::CHAN_TABLE)=>self::DEFAULT_CHAN));
//Install default users : system, admin and test
$iSystemId = $this->addUser('databap', 'bot', 'ovh', 'databap@botnet.com', self::CLEARANCE_ADMIN, self::SYSTEM_USER_ID);
$this->setOptions(array(self::OPT_NICKNAME=>'Databot'), true, $iSystemId);
$this->addUser('françois', 'lutran', 'planeum', 'francois@lutran.fr', self::CLEARANCE_ADMIN);
$this->addUser('test', 'test', 'test', 'test@test.com');
$iSystemCompanyId = $this->addCompany('ovh', self::SYSTEM_COMPANY_LOGO, false);
$this->addUser('databap', 'bot', $iSystemCompanyId, 'databap@botnet.com', self::CLEARANCE_ADMIN, self::SYSTEM_USER_ID, false);
$this->setOptions(array(self::OPT_NICKNAME=>'Databot'), true, self::SYSTEM_USER_ID);
$iAdminCompanyId = $this->addCompany('planeum', self::ADMIN_COMPANY_LOGO, false);
$this->addUser('françois', 'lutran', $iAdminCompanyId, 'francois@lutran.fr', self::CLEARANCE_ADMIN, 0, false);
$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=".$iSystemId.'_'.str_replace('$', '\$', $this->generateExternalAccessToken($iSystemId)));
@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)));
}
public function goLive()
@@ -470,6 +474,7 @@ class Databap extends PhpObject
public function getLogonPage($bFirstConn)
{
$oPage = new Mask('logon');
$oPage->setTag('text_enc', Settings::TEXT_ENC);
$oPage->setTag('feedback', $bFirstConn?'':'Données incorrectes');
$oPage->setTag('version', self::VERSION);
$oPage->setTag('name_pass_sep', self::NAME_PASS_SEP);
@@ -762,34 +767,68 @@ class Databap extends PhpObject
return $oNote->getNote();
}
public function addUser($sFirstName, $sLastName, $sCompany, $sEmail='', $iClearance=self::CLEARANCE_MEMBER, $iUserId=0)
public function addUser($sFirstName, $sLastName, $iCompanyId, $sEmail='', $iClearance=self::CLEARANCE_MEMBER, $iUserId=0, $bExt=true)
{
$sFirstName = mb_strtolower($sFirstName);
$sLastName = mb_strtolower($sLastName);
$sCompany = mb_strtolower($sCompany);
$sEmail = mb_strtolower($sEmail);
$sFirstName = trim(mb_strtolower($sFirstName));
$sLastName = trim(mb_strtolower($sLastName));
$sEmail = trim(mb_strtolower($sEmail));
//Checking company existency in company table
$sCompanyTextCol = MySqlManager::getText(self::COMP_TABLE);
$iCompanyId = $this->oMySql->selectInsert(self::COMP_TABLE, array($sCompanyTextCol=>$sCompany, 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol));
$asInfo = array('first_name'=>$sFirstName,
'last_name'=>$sLastName,
'active'=>self::MEMBER_ACTIVE,
MySqlManager::getId(self::COMP_TABLE)=>$iCompanyId,
'pass'=>$this->oAuth->HashPassword(self::getLoginToken($sCompany)),
'clearance'=>$iClearance,
'led'=>'0000-00-00 00:00:00');
if($iUserId>0) $asInfo[MySqlManager::getId(self::USER_TABLE)] = $iUserId;
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
//Get Company
$sCompany = $this->oMySql->selectValue(self::COMP_TABLE, MySqlManager::getText(self::COMP_TABLE), $iCompanyId);
//Options & default values
$sNickName = self::getNickNameFormat($sFirstName);
$this->setOptions(array(self::OPT_NICKNAME=>$sNickName, self::OPT_EMAIL=>$sEmail), true, $iUserId);
if(!$sCompany) $sDesc = 'ID entreprise inconnu : '.$iCompanyId;
else
{
//Checking company existency in company table
$asInfo = array('first_name'=>$sFirstName,
'last_name'=>$sLastName,
'active'=>self::MEMBER_ACTIVE,
MySqlManager::getId(self::COMP_TABLE)=>$iCompanyId,
'pass'=>$this->oAuth->HashPassword(self::getLoginToken($sCompany)),
'clearance'=>$iClearance,
'led'=>'0000-00-00 00:00:00');
if($iUserId>0) $asInfo[MySqlManager::getId(self::USER_TABLE)] = $iUserId;
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
$bSuccess = ($iUserId>0);
//Spread the word
if($iUserId!=self::SYSTEM_USER_ID) $this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' ! Son petit nom sur le chat est '.$sNickName, self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID, self::SYSTEM_USER_ID);
if($bSuccess)
{
//Options & default values
$sNickName = self::getNickNameFormat($sFirstName);
$this->setOptions(array(self::OPT_NICKNAME=>$sNickName, self::OPT_EMAIL=>$sEmail), true, $iUserId);
return $iUserId;
//Spread the word
if($iUserId!=self::SYSTEM_USER_ID) $this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' ! Son petit nom sur le chat est '.$sNickName, self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID, self::SYSTEM_USER_ID);
$sDesc = 'Utilisateur '.$iUserId.' ajouté avec succès';
}
else $sDesc = 'Erreur lors de l\'ajout de l\'utilisateur '.$sFirstName.' '.$sLastName.' (company : '.$sCompany.')';
}
return $bExt?$this->getJsonPostResult($bSuccess, $sDesc):$iUserId;
}
public function addCompany($sCompany, $sLogo='', $bExt=true)
{
$sCompany = trim(mb_strtolower($sCompany));
$sLogo = $sLogo==''?self::DEFAULT_COMPANY_LOGO:$sLogo;
$iCompanyId = 0;
$bSuccess = false;
$sDesc = '';
if($sCompany!='')
{
$sCompanyTextCol = MySqlManager::getText(self::COMP_TABLE);
$iCompanyId = $this->oMySql->selectInsert(self::COMP_TABLE, array($sCompanyTextCol=>$sCompany, 'logo'=>$sLogo), array($sCompanyTextCol));
if($iCompanyId>0)
{
$bSuccess = true;
$sDesc = 'Entreprise '.$iCompanyId.' créée';
}
else $sDesc = 'Erreur lors de la création de l\'entreprise '.$sCompany;
}
else $sDesc = 'Nom d\'entreprise vide';
return $bExt?$this->getJsonPostResult($bSuccess, $sDesc):$iCompanyId;
}
public function buildCompleteIndex()
@@ -973,7 +1012,7 @@ class Databap extends PhpObject
$this->oSearchEngine->buildIndex($iDbDocId, self::DOC_TYPE);
//TODO add error handling
return $this->getJsonPostResult(self::SUCCESS, '', array('doc_id'=>$iDbDocId));
return $this->getJsonPostResult(true, '', array('doc_id'=>$iDbDocId));
}
public function getDoc($iDocId)

View File

@@ -51,6 +51,11 @@ $iMessageId = isset($_GET['message_id'])?$_GET['message_id']:0;
$oItemId = isset($_REQUEST['id'])?$_REQUEST['id']:0;
$sSystem = isset($_POST['system'])?$_POST['system']:'';
$bSimul = isset($_POST['simul'])?$_POST['simul']:false;
$sLastName = isset($_POST['last_name'])?$_POST['last_name']:'';
$sFirstName = isset($_POST['first_name'])?$_POST['first_name']:'';
$sEmail = isset($_POST['email'])?$_POST['email']:'';
$sCompany = isset($_POST['company'])?$_POST['company']:'';
$sResult = '';
//Launching application
@@ -192,8 +197,10 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
switch($sAction)
{
case 'add_user':
$asInfo = explode('-', strtolower($oUser));
$sResult = 'User added. Id='.$oDatabap->addUser($asInfo[0], $asInfo[1], $asInfo[2], array_key_exists(3, $asInfo)?$asInfo[3]:'');
$sResult = $oDatabap->addUser($sFirstName, $sLastName, $oItemId, $sEmail);
break;
case 'add_company':
$sResult = $oDatabap->addCompany($sCompany);
break;
case 'reset_pass':
$sResult = $oDatabap->resetPass($oUser);

3
jquery/databap.js vendored
View File

@@ -716,6 +716,9 @@ function Databap()
if(sClass=='error' && sMsg=='') sMsg = 'Aïe ! Une erreur inconnue est suvenue';
else if(sClass=='error' && $.inArray(sMsg, self.consts.errors.system)!=-1) sMsg = 'Une erreur interne est survenue. Merci de contacter l\'admin';
if(sClass==self.consts.error) sClass = 'error';
if(sClass==self.consts.success) sClass = 'success';
//clean box
$Box = $('#title_feedback');
if(bClean) $Box.empty();

View File

@@ -20,10 +20,18 @@
<h2><i class="fa fa-c-changelog fa-inline"></i>Boite magique</h2>
<div id="add_user" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-profile"></i>Ajouter un user</h3>
<p><input type="text" class="tiny_round" id="first_name" name="first_name" /></p>
<p><input type="text" class="tiny_round" id="last_name" name="last_name" /></p>
<p><input type="text" class="tiny_round" id="email" name="email" /></p>
<p id="companies"></p>
<form id="form_add_user" name="form_add_user">
<p><input type="text" class="tiny_round" id="first_name" name="first_name" /></p>
<p><input type="text" class="tiny_round" id="last_name" name="last_name" /></p>
<p><input type="text" class="tiny_round" id="email" name="email" /></p>
<p id="companies"></p>
</form>
</div>
<div id="add_company" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-company"></i>Ajouter une entreprise</h3>
<form id="form_add_company" name="form_add_company">
<p><input type="text" class="tiny_round" id="company" name="company" /></p>
</form>
</div>
</div>
</div>
@@ -76,14 +84,35 @@ function initAdminPanel(asAdmin)
//Add user
$('#first_name').addDefaultValue('Prénom');
$('#last_name').addDefaultValue('Nom');
addSelect($('#companies'), asAdmin.companies);
addSelect($('#companies'), asAdmin.companies, 0, 'id');
$('#email').addDefaultValue('Email');
$('#add_user').addButton('ok', 'Créer', function(){}, 'submit_new_user', 'heavy inverse');
$('#add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user');}, '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');
//Show panel
$('#admin').show();
}
function submitAdmin(sAction, bReboot)
{
bReboot = bReboot || false;
databap.saveForm
(
sAction,
databap.getMainElem('#form_'+sAction),
function(oData)
{
databap.feedback(oData.result, oData.desc);
if(oData.result==self.consts.success && bReboot) location.reload();
},
true,
'json'
);
}
function addSelect($Box, asOptions, sSelectedValue, sSelectId, sSelectClass)
{
sSelectedValue = sSelectedValue || 0;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1127,6 +1127,7 @@
#options #admin {
clear:both;
width:calc(100% - 20px);
padding-bottom:0;
}
#options #admin .magic_box {
@@ -1134,6 +1135,10 @@
padding:5px 10px 10px;
background:$col_main_4;
float:left;
margin: 0 10px 10px 0;
}
#options #admin .magic_box:last-child {
margin-right:0;
}
#options #admin .magic_box h3 {