forked from ZwiiCMS-Team/ZwiiCampus
core WIP
This commit is contained in:
parent
5814ac1442
commit
6229ea4478
183
core/core.php
183
core/core.php
@ -82,13 +82,13 @@ class common
|
|||||||
"user"
|
"user"
|
||||||
];
|
];
|
||||||
/*
|
/*
|
||||||
Cette variable est supprimée du test dans le routeur.
|
Cette variable est supprimée du test dans le routeur.
|
||||||
public static $accessExclude = [
|
public static $accessExclude = [
|
||||||
'login',
|
'login',
|
||||||
'logout',
|
'logout',
|
||||||
"maintenance",
|
"maintenance",
|
||||||
];
|
];
|
||||||
*/
|
*/
|
||||||
private $data = [];
|
private $data = [];
|
||||||
private $hierarchy = [
|
private $hierarchy = [
|
||||||
'all' => [],
|
'all' => [],
|
||||||
@ -205,6 +205,25 @@ class common
|
|||||||
'profil' => '',
|
'profil' => '',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private $configFiles = [
|
||||||
|
'admin' => '',
|
||||||
|
'blacklist' => '',
|
||||||
|
'config' => '',
|
||||||
|
'core' => '',
|
||||||
|
'font' => '',
|
||||||
|
'theme' => '',
|
||||||
|
'user' => '',
|
||||||
|
'language' => '',
|
||||||
|
'profil' => '',
|
||||||
|
];
|
||||||
|
|
||||||
|
private $courseFiles = [
|
||||||
|
'page' => '',
|
||||||
|
'module' => '',
|
||||||
|
'course' => '',
|
||||||
|
'enrolment' => '',
|
||||||
|
];
|
||||||
|
|
||||||
public static $fontsWebSafe = [
|
public static $fontsWebSafe = [
|
||||||
'arial' => [
|
'arial' => [
|
||||||
'name' => 'Arial',
|
'name' => 'Arial',
|
||||||
@ -270,19 +289,19 @@ class common
|
|||||||
|
|
||||||
// Boutons de navigation dans la page
|
// Boutons de navigation dans la page
|
||||||
public static $navIconTemplate = [
|
public static $navIconTemplate = [
|
||||||
'open' => [
|
'open' => [
|
||||||
'left' => 'left-open',
|
'left' => 'left-open',
|
||||||
'right' => 'right-open',
|
'right' => 'right-open',
|
||||||
],
|
],
|
||||||
'dir' => [
|
'dir' => [
|
||||||
'left' => 'left',
|
'left' => 'left',
|
||||||
'right' => 'right-dir',
|
'right' => 'right-dir',
|
||||||
],
|
],
|
||||||
'big' => [
|
'big' => [
|
||||||
'left' => 'left-big',
|
'left' => 'left-big',
|
||||||
'right' => 'right-big',
|
'right' => 'right-big',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur commun
|
* Constructeur commun
|
||||||
@ -308,16 +327,33 @@ class common
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Instanciation de la classe des entrées / sorties
|
// Instanciation de la classe des entrées / sorties
|
||||||
$this->jsonDB(self::$courseContent);
|
// Les fichiers de configuration
|
||||||
|
foreach ($this->configFiles as $module => $value) {
|
||||||
|
$this->initDB($module);
|
||||||
|
}
|
||||||
|
// Les fichiers de la page d'accueil
|
||||||
|
if (self::$courseContent === 'home') {
|
||||||
|
$this->initDB('page', self::$courseContent);
|
||||||
|
$this->initDB('module', self::$courseContent);
|
||||||
|
} else {
|
||||||
|
foreach ($this->courseFiles as $module => $value) {
|
||||||
|
$this->initDB($module, self::$courseContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Installation fraîche, initialisation des modules
|
// Installation fraîche, initialisation de la configuration inexistante
|
||||||
if ($this->user === []) {
|
if ($this->user === []) {
|
||||||
foreach ($this->dataFiles as $stageId => $item) {
|
// Charge la configuration
|
||||||
$folder = $this->dataPath($stageId, self::$courseContent);
|
foreach ($this->configFiles as $stageId => $item) {
|
||||||
if (
|
if (file_exists(self::DATA_DIR . $stageId . '.json') === false) {
|
||||||
file_exists($folder . $stageId . '.json') === false
|
$this->loadConfig($stageId);
|
||||||
) {
|
common::$coreNotices[] = $stageId;
|
||||||
$this->initData($stageId, self::$courseContent);
|
}
|
||||||
|
}
|
||||||
|
// Charge le site d'accueil
|
||||||
|
foreach ($this->courseFiles as $stageId => $item) {
|
||||||
|
if (file_exists(self::DATA_DIR . self::$courseContent . '/' . $stageId . '.json') === false) {
|
||||||
|
$this->loadCourse($stageId, self::$courseContent);
|
||||||
common::$coreNotices[] = $stageId;
|
common::$coreNotices[] = $stageId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -549,10 +585,10 @@ class common
|
|||||||
* @param string contenu de la page
|
* @param string contenu de la page
|
||||||
* @return int nombre d'octets écrits ou erreur
|
* @return int nombre d'octets écrits ou erreur
|
||||||
*/
|
*/
|
||||||
public function setPage($page, $value, $course)
|
public function setPage($page, $value, $path)
|
||||||
{
|
{
|
||||||
|
|
||||||
return file_put_contents(self::DATA_DIR . $course . '/content/' . $page . '.html', $value);
|
return file_put_contents(self::DATA_DIR . $path . '/content/' . $page . '.html', $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -569,56 +605,65 @@ class common
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function jsonDB($course)
|
public function initDB($module, $path = '')
|
||||||
{
|
{
|
||||||
// Instanciation de la classe des entrées / sorties
|
// Instanciation de la classe des entrées / sorties
|
||||||
// Récupère les descripteurs
|
// Constructeur JsonDB;
|
||||||
foreach ($this->dataFiles as $keys => $value) {
|
$this->dataFiles[$module] = new \Prowebcraft\JsonDb([
|
||||||
// Constructeur JsonDB;
|
'name' => $module . '.json',
|
||||||
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
|
'dir' => self::DATA_DIR . $path,
|
||||||
'name' => $keys . '.json',
|
'backup' => file_exists('site/data/.backup')
|
||||||
'dir' => $this->dataPath($keys, $course),
|
]);
|
||||||
'backup' => file_exists('site/data/.backup')
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialisation des données
|
* Initialisation des données sur un cours ou la page d'accueil
|
||||||
* @param string $module : nom du module à générer
|
* @param string $course : id du module à générer
|
||||||
* @param string $course le dossier à créer, nom du cours
|
* @param string $path : le dossier à créer
|
||||||
* choix valides : core config user theme page module
|
* Données valides : page ou module
|
||||||
*/
|
*/
|
||||||
public function initData($module, $course)
|
|
||||||
|
public function loadCourse($module, $path = 'home')
|
||||||
{
|
{
|
||||||
|
// Pas d'initialsiation des données de cours pour l'accueil
|
||||||
|
if ($path === 'home' &&
|
||||||
|
($module === 'enrolment' || $module === 'course')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Tableau avec les données vierges
|
// Tableau avec les données vierges
|
||||||
require_once('core/module/install/ressource/defaultdata.php');
|
require_once('core/module/install/ressource/defaultdata.php');
|
||||||
|
|
||||||
if (!file_exists(self::DATA_DIR . $course)) {
|
// L'arborescence
|
||||||
mkdir(self::DATA_DIR . $course, 0755);
|
if (!file_exists(self::DATA_DIR . $path)) {
|
||||||
|
mkdir(self::DATA_DIR . $path, 0755);
|
||||||
|
}
|
||||||
|
if (!file_exists(self::DATA_DIR . $path . '/content')) {
|
||||||
|
mkdir(self::DATA_DIR . $path . '/content', 0755);
|
||||||
|
}
|
||||||
|
// Les données par défaut
|
||||||
|
$this->setData([$module, init::$siteTemplate[$module]]);
|
||||||
|
|
||||||
|
// Création des pages
|
||||||
|
if ($module === 'page') {
|
||||||
|
foreach (init::$siteContent as $key => $value) {
|
||||||
|
$this->setPage($key, $value, $path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
|
||||||
$module === 'page' ||
|
}
|
||||||
$module === 'module'
|
/**
|
||||||
) {
|
* Initialisation des données
|
||||||
// Création des sous-dossiers localisés
|
* @param string $module : if du module à générer
|
||||||
if (!file_exists(self::DATA_DIR . $course)) {
|
* choix valides : core config user theme page module
|
||||||
mkdir(self::DATA_DIR . $course, 0755);
|
*/
|
||||||
}
|
public function loadConfig($module)
|
||||||
if (!file_exists(self::DATA_DIR . $course . '/content')) {
|
{
|
||||||
mkdir(self::DATA_DIR . $course . '/content', 0755);
|
// Tableau avec les données vierges
|
||||||
}
|
require_once('core/module/install/ressource/defaultdata.php');
|
||||||
$this->setData([$module, init::$siteTemplate[$module]]);
|
// Installation des données des autres modules cad theme profil font config, admin et core
|
||||||
// Création des pages
|
$this->setData([$module, init::$defaultData[$module]]);
|
||||||
foreach (init::$siteContent as $key => $value) {
|
|
||||||
$this->setPage($key, $value, $course);
|
|
||||||
}
|
|
||||||
//file_put_contents(self::DATA_DIR . $course . '/content/' . init::$defaultDataI18n[$courseDefault]['page'][$pageId]['content'], $content);
|
|
||||||
} else {
|
|
||||||
// Installation des données des autres modules cad theme profil font config, admin et core
|
|
||||||
$this->setData([$module, init::$defaultData[$module]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -941,7 +986,7 @@ class common
|
|||||||
// Sauf pour les pages et les modules
|
// Sauf pour les pages et les modules
|
||||||
if (
|
if (
|
||||||
$id === 'page' ||
|
$id === 'page' ||
|
||||||
$id === 'module'
|
$id === 'module'
|
||||||
) {
|
) {
|
||||||
$folder = self::DATA_DIR . $course . '/';
|
$folder = self::DATA_DIR . $course . '/';
|
||||||
} else {
|
} else {
|
||||||
|
29
core/module/course/course.php
Normal file
29
core/module/course/course.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file is part of Zwii.
|
||||||
|
* For full copyright and license information, please see the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* @author Rémi Jean <remi.jean@outlook.com>
|
||||||
|
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
||||||
|
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
||||||
|
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
|
||||||
|
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
|
||||||
|
* @link http://zwiicms.fr/
|
||||||
|
*/
|
||||||
|
|
||||||
|
class dashboard extends common
|
||||||
|
{
|
||||||
|
|
||||||
|
public static $actions = [
|
||||||
|
'index' => self::GROUP_ADMIN,
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -877,6 +877,9 @@ class init extends common
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
'course' => [],
|
||||||
|
'enrolment' => [],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $siteContent = [
|
public static $siteContent = [
|
||||||
|
@ -2,7 +2,7 @@ course/id/tracking.json
|
|||||||
fichier plat contenant :
|
fichier plat contenant :
|
||||||
userid, page, TS début, TS fin
|
userid, page, TS début, TS fin
|
||||||
|
|
||||||
course/content.json
|
course/course.json
|
||||||
BDD contenant les informations sur le cours
|
BDD contenant les informations sur le cours
|
||||||
- courseId identifiant du cours
|
- courseId identifiant du cours
|
||||||
- enrolmentKey clé d'inscription, si non vide
|
- enrolmentKey clé d'inscription, si non vide
|
||||||
|
Loading…
Reference in New Issue
Block a user