Merge branch '10400' into editeur

This commit is contained in:
Fred Tempez 2020-11-04 20:56:59 +01:00
commit a577e7c684
3 changed files with 49 additions and 91 deletions

View File

@ -47,7 +47,7 @@ class template {
'id' => $nameId,
'name' => $nameId,
'value' => '',
'limit' => false
'limit' => false // captcha simple
], $attributes);
// Captcha quatre opérations
@ -58,7 +58,8 @@ class template {
// Tirage de l'opération
mt_srand((float) microtime()*1000000);
$operator = mt_rand (1, 4);
// Captcha simple limité à l'addition
$operator = $attributes['limit'] ? mt_rand (1, 4) : 1;
// Limite si multiplication ou division
if ($operator > 2) {

View File

@ -57,15 +57,6 @@ class common {
'theme',
'user'
];
public static $dataStage = [
'config',
'core',
'module',
'page',
'user',
'theme',
'admin'
];
public static $accessList = [
'user',
'theme',
@ -156,9 +147,24 @@ class common {
private $url = '';
// Données de site
private $user = [];
private $core = [];
private $config = [];
private $page = [];
private $module = [];
// Descripteur de données Entrées / Sorties
// Liste ici tous les fichiers de données
private $dataFiles = [
'page' => '',
'module' => '',
'core' => '',
'config' => '',
'page' => '',
'user' => '',
'theme' => '',
'admin' => '',
'blacklist' => ''
];
/**
* Constructeur commun
@ -172,20 +178,32 @@ class common {
$this->input['_COOKIE'] = $_COOKIE;
}
// Instanciation de la classe des entrées / sorties
// Récupére les descripteurs
foreach ($this->dataFiles as $keys => $value) {
// Constructeur JsonDB
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
'name' => $keys . '.json',
'dir' => $this->dirData ($keys,'fr')
]);;
}
// Import version 9
if (file_exists(self::DATA_DIR . 'core.json') === true &&
$this->getData(['core','dataVersion']) < 10000) {
$keepUsers = isset($_SESSION['KEEP_USERS']) ? $_SESSION['KEEP_USERS'] : false;
$this->importData($keepUsers);
unset ($_SESSION['KEEP_USERS']);
// Réinstaller htaccess
copy('core/module/install/ressource/.htaccess', self::DATA_DIR . '.htaccess');
common::$importNotices [] = "Importation réalisée avec succès" ;
//echo '<script>window.location.replace("' . helper::baseUrl() . $this->getData(['config','homePageId']) . '")</script>';
$this->getData(['core','dataVersion']) < 10000) {
$keepUsers = isset($_SESSION['KEEP_USERS']) ? $_SESSION['KEEP_USERS'] : false;
$this->importData($keepUsers);
unset ($_SESSION['KEEP_USERS']);
// Réinstaller htaccess
copy('core/module/install/ressource/.htaccess', self::DATA_DIR . '.htaccess');
common::$importNotices [] = "Importation réalisée avec succès" ;
//echo '<script>window.location.replace("' . helper::baseUrl() . $this->getData(['config','homePageId']) . '")</script>';
}
// Installation fraîche, initialisation des modules manquants
// La langue d'installation par défaut est fr
foreach (self::$dataStage as $stageId) {
foreach ($this->dataFiles as $stageId => $item) {
$folder = $this->dirData ($stageId, 'fr');
if (file_exists($folder . $stageId .'.json') === false) {
$this->initData($stageId,'fr');
@ -198,10 +216,6 @@ class common {
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
}
// Mise en cache des pages et des modules
$this->page = $this->getCache('page');
$this->module = $this->getCache('module');
// Construit la liste des pages parents/enfants
if($this->hierarchy['all'] === []) {
$pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC');
@ -328,13 +342,9 @@ class common {
* @param array $keys Clé(s) des données
*/
public function deleteData($keys) {
//Retourne une chaine contenant le dossier à créer
$folder = $this->dirData ($keys[0],'fr');
// Constructeur JsonDB
$db = new \Prowebcraft\JsonDb([
'name' => $keys[0] . '.json',
'dir' => $folder
]);
// Descripteur
$db = $this->dataFiles[$keys[0]];
// Aiguillage
switch(count($keys)) {
case 1:
$db->delete($keys[0]);
@ -375,38 +385,10 @@ class common {
public function getData($keys = []) {
if (count($keys) >= 1) {
/**
* Lecture dans le cache, page et module
*/
if ($keys[0] === 'page' ||
$keys[0] === 'module' ) {
// Décent dans les niveaux de la variable $data
$data = array_merge ($this->page , $this->module);
foreach($keys as $key) {
// Si aucune donnée n'existe retourne null
if(isset($data[$key]) === false) {
return null;
}
// Sinon décent dans les niveaux
else {
$data = $data[$key];
}
}
// Retourne les données
return $data;
}
/**
* Lecture directe
*/
//Retourne une chaine contenant le dossier à créer
$folder = $this->dirData ($keys[0],'fr');
// Constructeur JsonDB
$db = new \Prowebcraft\JsonDb([
'name' => $keys[0] . '.json',
'dir' => $folder
]);
$db = $this->dataFiles[$keys[0]];
switch(count($keys)) {
case 1:
$tempData = $db->get($keys[0]);
@ -434,22 +416,6 @@ class common {
}
}
/**
* Lecture des fichiers de données de page et mise ne cache
* @param @return string données des pages
*/
public function getCache($data) {
$folder = $this->dirData ($data,'fr');
// Constructeur JsonDB
$db = new \Prowebcraft\JsonDb([
'name' => $data . '.json',
'dir' => $folder
]);
$tempData = $db->get($data);
return [$data => $tempData];
}
/*
* Dummy function
* Compatibilité des modules avec v8 et v9
@ -964,14 +930,10 @@ class common {
return false;
}
//Retourne une chaine contenant le dossier à créer
$folder = $this->dirData ($keys[0],'fr');
// Constructeur JsonDB
$db = new \Prowebcraft\JsonDb([
'name' => $keys[0] . '.json',
'dir' => $folder
]);
// Descripteur
$db = $this->dataFiles[$keys[0]];
// Aiguillage
switch(count($keys)) {
case 2:
$db->set($keys[0],$keys[1]);
@ -1016,12 +978,7 @@ class common {
if (!file_exists(self::DATA_DIR . '/' . $lang)) {
mkdir (self::DATA_DIR . '/' . $lang);
}
$folder = $this->dirData ($module,$lang);
// Constructeur JsonDB
$db = new \Prowebcraft\JsonDb([
'name' => $module . '.json',
'dir' => $folder
]);
$db = $this->dataFiles[$module];
if ($sampleSite === true) {
$db->set($module,init::$siteData[$module]);
} else {
@ -2906,4 +2863,4 @@ class layout extends common {
}
}
}
}

View File

@ -102,7 +102,7 @@
<div class="col4 verticalAlignBottom">
<?php echo template::checkbox('configCaptchaStrong', true, 'Captcha renforcé', [
'checked' => $this->getData(['config','captchaStrong']),
'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site.'
'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha renforcé utilise quatre opérations de nombres de 0 à 20.'
]); ?>
</div>
</div>