1.5.00 contrôle des permisison générale spour les comptes éditeurs
This commit is contained in:
parent
17b76e1a0f
commit
63f7767460
@ -1,4 +1,4 @@
|
|||||||
# ZwiiCampus 1.4.26
|
# ZwiiCampus 1.5.00
|
||||||
|
|
||||||
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class common
|
|||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '1.4.26';
|
const ZWII_VERSION = '1.5.00';
|
||||||
|
|
||||||
// URL autoupdate
|
// URL autoupdate
|
||||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
||||||
|
@ -23,12 +23,6 @@ class course extends common
|
|||||||
'index' => self::GROUP_EDITOR,
|
'index' => self::GROUP_EDITOR,
|
||||||
'edit' => self::GROUP_EDITOR,
|
'edit' => self::GROUP_EDITOR,
|
||||||
'manage' => self::GROUP_EDITOR,
|
'manage' => self::GROUP_EDITOR,
|
||||||
'add' => self::GROUP_ADMIN,
|
|
||||||
'delete' => self::GROUP_ADMIN,
|
|
||||||
'category' => self::GROUP_ADMIN,
|
|
||||||
'categoryAdd' => self::GROUP_ADMIN,
|
|
||||||
'categoryEdit' => self::GROUP_ADMIN,
|
|
||||||
'categoryDelete' => self::GROUP_ADMIN,
|
|
||||||
'users' => self::GROUP_EDITOR,
|
'users' => self::GROUP_EDITOR,
|
||||||
'usersAdd' => self::GROUP_EDITOR,
|
'usersAdd' => self::GROUP_EDITOR,
|
||||||
'userDelete' => self::GROUP_EDITOR,
|
'userDelete' => self::GROUP_EDITOR,
|
||||||
@ -38,7 +32,13 @@ class course extends common
|
|||||||
'userHistoryExport' => self::GROUP_EDITOR,
|
'userHistoryExport' => self::GROUP_EDITOR,
|
||||||
'backup' => self::GROUP_EDITOR,
|
'backup' => self::GROUP_EDITOR,
|
||||||
'restore' => self::GROUP_EDITOR,
|
'restore' => self::GROUP_EDITOR,
|
||||||
'clone' => self::GROUP_ADMIN
|
'clone' => self::GROUP_ADMIN,
|
||||||
|
'add' => self::GROUP_ADMIN,
|
||||||
|
'delete' => self::GROUP_ADMIN,
|
||||||
|
'category' => self::GROUP_ADMIN,
|
||||||
|
'categoryAdd' => self::GROUP_ADMIN,
|
||||||
|
'categoryEdit' => self::GROUP_ADMIN,
|
||||||
|
'categoryDelete' => self::GROUP_ADMIN,
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $courseAccess = [
|
public static $courseAccess = [
|
||||||
@ -88,41 +88,37 @@ class course extends common
|
|||||||
&& $this->getCoursesByUser()
|
&& $this->getCoursesByUser()
|
||||||
) {
|
) {
|
||||||
foreach ($this->getCoursesByUser() as $courseId => $courseValue) {
|
foreach ($this->getCoursesByUser() as $courseId => $courseValue) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filtres :
|
* Filtres :
|
||||||
* Groupes acceptés :
|
* Groupes acceptés :
|
||||||
* admin : tous les espaces
|
* admin : tous les espaces
|
||||||
* editor : gère son espace
|
* editor : gère son espace son espace dans lequel il est inscrit
|
||||||
*/
|
*/
|
||||||
|
if (
|
||||||
if (
|
$this->permissionControl(__FUNCTION__, $courseId)
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
|
||||||
&& $this->getUser('id') != $this->getData(['course', $courseId, 'author'])
|
|
||||||
) {
|
) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$author = $this->getData(['course', $courseId, 'author'])
|
$author = $this->getData(['course', $courseId, 'author'])
|
||||||
? sprintf('%s %s', $this->getData(['user', $this->getData(['course', $courseId, 'author']), 'firstname']), $this->getData(['user', $this->getData(['course', $courseId, 'author']), 'lastname']))
|
? sprintf('%s %s', $this->getData(['user', $this->getData(['course', $courseId, 'author']), 'firstname']), $this->getData(['user', $this->getData(['course', $courseId, 'author']), 'lastname']))
|
||||||
: '';
|
: '';
|
||||||
$categorieUrl = helper::baseUrl() . 'course/swap/' . $courseId;
|
$categorieUrl = helper::baseUrl() . 'course/swap/' . $courseId;
|
||||||
$info = sprintf('<strong>%s<br /></strong>Auteur : %s<br />Id : <a href="%s" target="_blank">%s<br />', $this->getData(['course', $courseId, 'title']), $author, $categorieUrl, $courseId);
|
$info = sprintf('<strong>%s<br /></strong>Auteur : %s<br />Id : <a href="%s" target="_blank">%s<br />', $this->getData(['course', $courseId, 'title']), $author, $categorieUrl, $courseId);
|
||||||
$enrolment = sprintf(
|
$enrolment = sprintf(
|
||||||
'Accès : %s<br />Inscription : %s<br />',
|
'Accès : %s<br />Inscription : %s<br />',
|
||||||
self::$courseAccess[$this->getData(['course', $courseId, 'access'])],
|
self::$courseAccess[$this->getData(['course', $courseId, 'access'])],
|
||||||
self::$courseEnrolment[$this->getData(['course', $courseId, 'enrolment'])]
|
self::$courseEnrolment[$this->getData(['course', $courseId, 'enrolment'])]
|
||||||
);
|
);
|
||||||
self::$courses[] = [
|
self::$courses[] = [
|
||||||
$info,
|
$info,
|
||||||
$this->getData(['course', $courseId, 'description']),
|
$this->getData(['course', $courseId, 'description']),
|
||||||
$enrolment,
|
$enrolment,
|
||||||
template::button('categoryUser' . $courseId, [
|
template::button('categoryUser' . $courseId, [
|
||||||
'href' => helper::baseUrl() . 'course/manage/' . $courseId,
|
'href' => helper::baseUrl() . 'course/manage/' . $courseId,
|
||||||
'value' => template::ico('eye'),
|
'value' => template::ico('eye'),
|
||||||
'help' => 'Gérer'
|
'help' => 'Gérer'
|
||||||
])
|
])
|
||||||
];
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,9 +138,18 @@ class course extends common
|
|||||||
public function add()
|
public function add()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Accès limité aux admins
|
||||||
|
if (
|
||||||
|
$this->getUser('group') !== self::GROUP_ADMIN
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
|
||||||
$this->isPost()
|
$this->isPost()
|
||||||
) {
|
) {
|
||||||
$courseId = uniqid();
|
$courseId = uniqid();
|
||||||
@ -230,10 +235,12 @@ class course extends common
|
|||||||
public function edit()
|
public function edit()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Espace sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -243,10 +250,10 @@ class course extends common
|
|||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
//$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
||||||
$this->isPost()
|
$this->isPost()
|
||||||
) {
|
) {
|
||||||
$courseId = $this->getUrl(2);
|
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'course',
|
'course',
|
||||||
$courseId,
|
$courseId,
|
||||||
@ -310,11 +317,12 @@ class course extends common
|
|||||||
public function manage()
|
public function manage()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Espace sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -358,46 +366,47 @@ class course extends common
|
|||||||
public function clone ()
|
public function clone ()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Cours à dupliquer
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
]);
|
]);
|
||||||
|
} else {
|
||||||
|
// Id du nouveau cours
|
||||||
|
$target = uniqid();
|
||||||
|
|
||||||
|
// Créer la structure de données
|
||||||
|
mkdir(self::DATA_DIR . $target);
|
||||||
|
|
||||||
|
$this->copyDir(self::DATA_DIR . $courseId, self::DATA_DIR . $target);
|
||||||
|
|
||||||
|
$this->setData(['course', $target, $this->getData(['course', $courseId])]);
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl() . 'course',
|
||||||
|
'notification' => helper::translate('Espace dupliqué'),
|
||||||
|
'state' => true
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cours à dupliquer
|
|
||||||
$courseId = $this->getUrl(2);
|
|
||||||
|
|
||||||
// Id du nouveau cours
|
|
||||||
$target = uniqid();
|
|
||||||
|
|
||||||
// Créer la structure de données
|
|
||||||
mkdir(self::DATA_DIR . $target);
|
|
||||||
|
|
||||||
$this->copyDir(self::DATA_DIR . $courseId, self::DATA_DIR . $target);
|
|
||||||
|
|
||||||
$this->setData(['course', $target, $this->getData(['course', $courseId])]);
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl() . 'course',
|
|
||||||
'notification' => helper::translate('Espace dupliqué'),
|
|
||||||
'state' => true
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
|
// Espace sélectionné
|
||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
($this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
// Accès limité aux admins
|
||||||
// Le contenu n'existe pas
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
|| $this->getData(['course', $courseId]) === null)
|
// Le contenu n'existe pas
|
||||||
|
|| $this->getData(['course', $courseId]) === null
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -434,40 +443,55 @@ class course extends common
|
|||||||
*/
|
*/
|
||||||
public function category()
|
public function category()
|
||||||
{
|
{
|
||||||
$categories = $this->getData(['category']);
|
|
||||||
ksort($categories);
|
if (
|
||||||
foreach ($categories as $categoryId => $categoryTitle) {
|
// Accès limité aux admins
|
||||||
self::$courseCategories[] = [
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
$categoryId,
|
) {
|
||||||
$categoryTitle,
|
// Valeurs en sortie
|
||||||
template::button('categoryEdit' . $categoryId, [
|
$this->addOutput([
|
||||||
'href' => helper::baseUrl() . 'course/categoryEdit/' . $categoryId,
|
'access' => false
|
||||||
'value' => template::ico('pencil'),
|
]);
|
||||||
'help' => 'Éditer'
|
} else {
|
||||||
]),
|
$categories = $this->getData(['category']);
|
||||||
template::button('courseDelete' . $categoryId, [
|
ksort($categories);
|
||||||
'class' => 'categoryDelete buttonRed',
|
foreach ($categories as $categoryId => $categoryTitle) {
|
||||||
'href' => helper::baseUrl() . 'course/categoryDelete/' . $categoryId,
|
self::$courseCategories[] = [
|
||||||
'value' => template::ico('trash'),
|
$categoryId,
|
||||||
'help' => 'Supprimer'
|
$categoryTitle,
|
||||||
])
|
template::button('categoryEdit' . $categoryId, [
|
||||||
];
|
'href' => helper::baseUrl() . 'course/categoryEdit/' . $categoryId,
|
||||||
|
'value' => template::ico('pencil'),
|
||||||
|
'help' => 'Éditer'
|
||||||
|
]),
|
||||||
|
template::button('courseDelete' . $categoryId, [
|
||||||
|
'class' => 'categoryDelete buttonRed',
|
||||||
|
'href' => helper::baseUrl() . 'course/categoryDelete/' . $categoryId,
|
||||||
|
'value' => template::ico('trash'),
|
||||||
|
'help' => 'Supprimer'
|
||||||
|
])
|
||||||
|
];
|
||||||
|
}
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'title' => helper::translate('Catégories'),
|
||||||
|
'view' => 'category'
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'title' => helper::translate('Catégories'),
|
|
||||||
'view' => 'category'
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function categoryAdd()
|
public function categoryAdd()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Soumission du formulaire
|
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
// Accès limité aux admins
|
||||||
$this->isPost()
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
) {
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]); // Soumission du formulaire
|
||||||
|
} elseif ($this->isPost()) {
|
||||||
$categoryId = $this->getInput('categoryAddTitle', helper::FILTER_ID, true);
|
$categoryId = $this->getInput('categoryAddTitle', helper::FILTER_ID, true);
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'category',
|
'category',
|
||||||
@ -479,22 +503,27 @@ class course extends common
|
|||||||
'redirect' => helper::baseUrl() . 'course/category',
|
'redirect' => helper::baseUrl() . 'course/category',
|
||||||
'notification' => helper::translate('Catégorie créée'),
|
'notification' => helper::translate('Catégorie créée'),
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]); // Valeurs en sortie
|
||||||
}
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
}
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => helper::translate('Ajouter une catégorie'),
|
'title' => helper::translate('Ajouter une catégorie'),
|
||||||
'view' => 'categoryAdd'
|
'view' => 'categoryAdd'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function categoryEdit()
|
public function categoryEdit()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Soumission du formulaire
|
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
// Accès limité aux admins
|
||||||
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]); // Soumission du formulaire
|
||||||
|
} elseif (
|
||||||
$this->isPost()
|
$this->isPost()
|
||||||
) {
|
) {
|
||||||
$categoryId = $this->getUrl(2);
|
$categoryId = $this->getUrl(2);
|
||||||
@ -521,9 +550,9 @@ class course extends common
|
|||||||
public function categoryDelete()
|
public function categoryDelete()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Accès refusé
|
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
// Accès limité aux admins
|
||||||
|
$this->getUser('group') !== self::$actions[__FUNCTION__]
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -554,11 +583,12 @@ class course extends common
|
|||||||
public function users()
|
public function users()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité au propriétaire, admin ou éditeurs isncrits
|
||||||
|
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -718,11 +748,12 @@ class course extends common
|
|||||||
public function usersAdd()
|
public function usersAdd()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Contenu sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité au propriétaire ou éditeurs inscrits ou admin
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -730,9 +761,6 @@ class course extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contenu sélectionné
|
|
||||||
$courseId = $this->getUrl(2);
|
|
||||||
|
|
||||||
// Inscription des utilisateurs cochés
|
// Inscription des utilisateurs cochés
|
||||||
if (
|
if (
|
||||||
isset($_POST['courseUsersAddSubmit'])
|
isset($_POST['courseUsersAddSubmit'])
|
||||||
@ -861,12 +889,12 @@ class course extends common
|
|||||||
*/
|
*/
|
||||||
public function userDelete()
|
public function userDelete()
|
||||||
{
|
{
|
||||||
|
// Contenu sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Accès limité au propriétaire ou admin ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -892,6 +920,16 @@ class course extends common
|
|||||||
// Contenu sélectionné
|
// Contenu sélectionné
|
||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
|
if (
|
||||||
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// Inscription des utilisateurs cochés
|
// Inscription des utilisateurs cochés
|
||||||
if (
|
if (
|
||||||
isset($_POST['courseUsersDeleteSubmit'])
|
isset($_POST['courseUsersDeleteSubmit'])
|
||||||
@ -1119,7 +1157,19 @@ class course extends common
|
|||||||
public function userHistory()
|
public function userHistory()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Espace sélectionné
|
||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité au propriétaire ou éditeurs inscrits ou admin
|
||||||
|
if (
|
||||||
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
$userId = $this->getUrl(3);
|
$userId = $this->getUrl(3);
|
||||||
$h = $this->getData(['enrolment', $courseId, $userId, 'history']);
|
$h = $this->getData(['enrolment', $courseId, $userId, 'history']);
|
||||||
|
|
||||||
@ -1196,6 +1246,16 @@ class course extends common
|
|||||||
|
|
||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité au propriétaire ou éditeurs inscrits ou admin
|
||||||
|
if (
|
||||||
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
self::$courseUsers = [
|
self::$courseUsers = [
|
||||||
0 => ['UserId', 'Prénom', 'Nom', 'Page Titre', 'Consultation Date', 'Consultation Heure', 'Progression']
|
0 => ['UserId', 'Prénom', 'Nom', 'Page Titre', 'Consultation Date', 'Consultation Heure', 'Progression']
|
||||||
];
|
];
|
||||||
@ -1293,6 +1353,16 @@ class course extends common
|
|||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
$userId = $this->getUrl(3);
|
$userId = $this->getUrl(3);
|
||||||
|
|
||||||
|
// Accès limité au propriétaire ou éditeur inscrit ou admin
|
||||||
|
if (
|
||||||
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// Traitement de l'historique
|
// Traitement de l'historique
|
||||||
$h = $this->getData(['enrolment', $courseId, $userId, 'history']);
|
$h = $this->getData(['enrolment', $courseId, $userId, 'history']);
|
||||||
|
|
||||||
@ -1487,18 +1557,18 @@ class course extends common
|
|||||||
public function backup()
|
public function backup()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Profil limité au propriétaire ou admis
|
// Espace sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('group') === self::GROUP_EDITOR
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
&& $this->getUser('id') != $this->getData(['course', $this->getUrl(2), 'author'])
|
|
||||||
|| $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
$courseId = $this->getUrl(2);
|
|
||||||
|
|
||||||
// Participants avec historiques
|
// Participants avec historiques
|
||||||
$enrolment = $this->getData(['enrolment', $courseId]);
|
$enrolment = $this->getData(['enrolment', $courseId]);
|
||||||
@ -1551,9 +1621,22 @@ class course extends common
|
|||||||
|
|
||||||
public function restore()
|
public function restore()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Espace sélectionné
|
||||||
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
|
if (
|
||||||
|
$this->permissionControl(__FUNCTION__, $courseId) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'access' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
|
||||||
$this->isPost()
|
$this->isPost()
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@ -1663,37 +1746,32 @@ class course extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Autorise l'accès à un contenu
|
* Retourne false quand l'utilisateur ne dispose pas des droits d'accès à la fonction
|
||||||
* @param @return bool le user a le droit d'entrée dans le contenu
|
* Règles d'accès à un espace :
|
||||||
* @param string $userId identifiant de l'utilisateur
|
* Admin : tous les droits
|
||||||
* @param string $courseId identifiant du contenu sollicité
|
* Editor : Inscrits dans le cours ou propriétaire
|
||||||
*/
|
*/
|
||||||
private function courseIsUserEnroled($courseId)
|
public function permissionControl($funtion, $courseId)
|
||||||
{
|
{
|
||||||
$userId = $this->getUser('id');
|
switch (self::$actions[$funtion]) {
|
||||||
$group = $userId ? $this->getData(['user', $userId, 'group']) : null;
|
|
||||||
switch ($group) {
|
|
||||||
case self::GROUP_ADMIN:
|
case self::GROUP_ADMIN:
|
||||||
$r = true;
|
return ($this->getUser('group') === self::$actions[$funtion]);
|
||||||
break;
|
|
||||||
case self::GROUP_EDITOR:
|
case self::GROUP_EDITOR:
|
||||||
$r = in_array($userId, array_keys($this->getData(['enrolment', $courseId])));
|
return (
|
||||||
break;
|
$this->getUser('group') >= self::$actions[$funtion]
|
||||||
case self::GROUP_MEMBER:
|
&& $this->getData(['enrolment', $courseId])
|
||||||
$r = in_array($userId, array_keys($this->getData(['enrolment', $courseId])));
|
&& ($this->getUser('id') === $this->getData(['course', $courseId, 'author'])
|
||||||
break;
|
|| array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId])) )
|
||||||
// Visiteur non connecté
|
);
|
||||||
case self::GROUP_VISITOR:
|
|
||||||
case null:
|
|
||||||
$r = $this->getData(['course', $courseId, 'enrolment']) === self::COURSE_ENROLMENT_GUEST;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
$r = false;
|
return false;
|
||||||
}
|
}
|
||||||
return $r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Autorise l'accès à un contenu
|
* Autorise l'accès à un contenu
|
||||||
* @param @return bool le user a le droit d'entrée dans le contenu
|
* @param @return bool le user a le droit d'entrée dans le contenu
|
||||||
@ -1752,4 +1830,35 @@ class course extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autorise l'accès à un contenu
|
||||||
|
* @param @return bool le user a le droit d'entrée dans le contenu
|
||||||
|
* @param string $userId identifiant de l'utilisateur
|
||||||
|
* @param string $courseId identifiant du contenu sollicité
|
||||||
|
*/
|
||||||
|
private function courseIsUserEnroled($courseId)
|
||||||
|
{
|
||||||
|
$userId = $this->getUser('id');
|
||||||
|
$group = $userId ? $this->getData(['user', $userId, 'group']) : null;
|
||||||
|
switch ($group) {
|
||||||
|
case self::GROUP_ADMIN:
|
||||||
|
$r = true;
|
||||||
|
break;
|
||||||
|
case self::GROUP_EDITOR:
|
||||||
|
$r = in_array($userId, array_keys($this->getData(['enrolment', $courseId])));
|
||||||
|
break;
|
||||||
|
case self::GROUP_MEMBER:
|
||||||
|
$r = in_array($userId, array_keys($this->getData(['enrolment', $courseId])));
|
||||||
|
break;
|
||||||
|
// Visiteur non connecté
|
||||||
|
case self::GROUP_VISITOR:
|
||||||
|
case null:
|
||||||
|
$r = $this->getData(['course', $courseId, 'enrolment']) === self::COURSE_ENROLMENT_GUEST;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$r = false;
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -7,46 +7,53 @@
|
|||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row textAlignCenter">
|
||||||
<div class="col2 offset1">
|
<?php if ($module->permissionControl('users', $this->getUrl(2))): ?>
|
||||||
<?php echo template::button('categoryUser' . $this->getUrl(2), [
|
<div class="col2 offset1">
|
||||||
'href' => helper::baseUrl() . 'course/users/' . $this->getUrl(2),
|
<?php echo template::button('categoryUser' . $this->getUrl(2), [
|
||||||
'value' => 'Participants',
|
'href' => helper::baseUrl() . 'course/users/' . $this->getUrl(2),
|
||||||
'ico' => 'users'
|
'value' => 'Participants',
|
||||||
]); ?>
|
'ico' => 'users'
|
||||||
</div>
|
]); ?>
|
||||||
<div class="col2">
|
</div>
|
||||||
<?php echo template::button('courseManageEdit' . $this->getUrl(2), [
|
<?php endif; ?>
|
||||||
|
<?php if ($module->permissionControl('edit', $this->getUrl(2))): ?>
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::button('courseManageEdit' . $this->getUrl(2), [
|
||||||
'href' => helper::baseUrl() . 'course/edit/' . $this->getUrl(2),
|
'href' => helper::baseUrl() . 'course/edit/' . $this->getUrl(2),
|
||||||
'value' => 'Éditer',
|
'value' => 'Éditer',
|
||||||
'ico' => 'pencil'
|
'ico' => 'pencil'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2">
|
<?php endif; ?>
|
||||||
<?php echo
|
<?php if ($module->permissionControl('backup', $this->getUrl(2))): ?>
|
||||||
template::button('courseManageDuplicate' . $this->getUrl(2), [
|
<div class="col2">
|
||||||
'href' => helper::baseUrl() . 'course/clone/' . $this->getUrl(2),
|
<?php echo template::button('courseManageDownload' . $this->getUrl(2), [
|
||||||
'value' => 'Cloner',
|
|
||||||
'ico' => 'clone'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col2">
|
|
||||||
<?php echo
|
|
||||||
template::button('courseManageDownload' . $this->getUrl(2), [
|
|
||||||
'href' => helper::baseUrl() . 'course/backup/' . $this->getUrl(2),
|
'href' => helper::baseUrl() . 'course/backup/' . $this->getUrl(2),
|
||||||
'value' => 'Sauvegarder',
|
'value' => 'Sauvegarder',
|
||||||
'ico' => 'download-cloud'
|
'ico' => 'download-cloud'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 ">
|
<?php endif; ?>
|
||||||
<?php echo
|
<?php if ($module->permissionControl('clone', $this->getUrl(2))): ?>
|
||||||
template::button('courseManageDelete' . $this->getUrl(2), [
|
<div class="col2">
|
||||||
|
<?php echo template::button('courseManageDuplicate' . $this->getUrl(2), [
|
||||||
|
'href' => helper::baseUrl() . 'course/clone/' . $this->getUrl(2),
|
||||||
|
'value' => 'Cloner',
|
||||||
|
'ico' => 'clone'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ($module->permissionControl('delete', $this->getUrl(2))): ?>
|
||||||
|
<div class="col2 ">
|
||||||
|
<?php echo template::button('courseManageDelete' . $this->getUrl(2), [
|
||||||
'class' => 'courseDelete buttonRed',
|
'class' => 'courseDelete buttonRed',
|
||||||
'href' => helper::baseUrl() . 'course/delete/' . $this->getUrl(2),
|
'href' => helper::baseUrl() . 'course/delete/' . $this->getUrl(2),
|
||||||
'value' => 'Supprimer',
|
'value' => 'Supprimer',
|
||||||
'ico' => 'trash'
|
'ico' => 'trash'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
@ -121,11 +128,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::select('courseManageEnrolment', $module::$courseEnrolment, [
|
<?php echo template::select('courseManageEnrolment', $module::$courseEnrolment, [
|
||||||
'label' => 'Participation',
|
'label' => 'Participation',
|
||||||
'selected' => $this->getdata(['course', $this->getUrl(2), 'enrolment']),
|
'selected' => $this->getdata(['course', $this->getUrl(2), 'enrolment']),
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::text('courseManageEnrolmentKey', [
|
<?php echo template::text('courseManageEnrolmentKey', [
|
||||||
|
Loading…
Reference in New Issue
Block a user