Agenda revue de la fonction add

This commit is contained in:
Fred Tempez 2024-08-29 18:45:19 +02:00
parent 4a2e7adcb1
commit 89122bd9f0
2 changed files with 688 additions and 641 deletions

View File

@ -18,7 +18,8 @@
* (c) 2019 Adam Shaw * (c) 2019 Adam Shaw
*/ */
class agenda extends common { class agenda extends common
{
public static $actions = [ public static $actions = [
'add' => self::GROUP_VISITOR, 'add' => self::GROUP_VISITOR,
@ -116,7 +117,8 @@ class agenda extends common {
* Mise à jour du module * Mise à jour du module
* Appelée par les fonctions index et config * Appelée par les fonctions index et config
*/ */
private function update() { private function update()
{
// Initialisation ou mise à jour vers la version 4.5 // Initialisation ou mise à jour vers la version 4.5
if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.5', '<')) { if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '4.5', '<')) {
@ -139,7 +141,8 @@ class agenda extends common {
/** /**
* Configuration Paramètrage * Configuration Paramètrage
*/ */
public function config() { public function config()
{
// Mise à jour des données de module // Mise à jour des données de module
$this->update(); $this->update();
@ -232,20 +235,24 @@ class agenda extends common {
$adresses = file_get_contents(self::DATAFILE . 'adresses/' . $fichier_csv_txt); $adresses = file_get_contents(self::DATAFILE . 'adresses/' . $fichier_csv_txt);
if (strrchr($adresses, '@') && !strrchr($adresses, ';')) { if (strrchr($adresses, '@') && !strrchr($adresses, ';')) {
copy(self::DATAFILE . 'adresses/' . $fichier_csv_txt, self::DATAMODULE . 'adresses/' . $fichier_csv_txt); copy(self::DATAFILE . 'adresses/' . $fichier_csv_txt, self::DATAMODULE . 'adresses/' . $fichier_csv_txt);
} } else {
else{
$notification = 'Le contenu du carnet d\'adresses est incorrect'; $notification = 'Le contenu du carnet d\'adresses est incorrect';
$state = false; $state = false;
} }
} }
//Mise à jour des données de configuration liées aux droits et à l'affichage //Mise à jour des données de configuration liées aux droits et à l'affichage
$this->setData(['module', $this->getUrl(0), 'config', [ $this->setData([
'module',
$this->getUrl(0),
'config',
[
'droit_creation' => intval($droit_creation), 'droit_creation' => intval($droit_creation),
'droit_limite' => $droit_limite, 'droit_limite' => $droit_limite,
'maxiWidth' => $largeur_maxi, 'maxiWidth' => $largeur_maxi,
'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData'])
]]); ]
]);
//Valeurs en sortie //Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -253,8 +260,7 @@ class agenda extends common {
'redirect' => helper::baseUrl() . $this->getUrl(0), 'redirect' => helper::baseUrl() . $this->getUrl(0),
'state' => $state 'state' => $state
]); ]);
} } else {
else{
// Fichiers sauvegardés // Fichiers sauvegardés
if (is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve')) { if (is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve')) {
$dir = self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve'; $dir = self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve';
@ -264,13 +270,11 @@ class agenda extends common {
unset($values[array_search('..', $values)]); unset($values[array_search('..', $values)]);
if (count($values) <= 1) { if (count($values) <= 1) {
self::$savedFiles = array(0 => 'Pas de fichier dans le dossier' . self::DATAMODULE . '/data'); self::$savedFiles = array(0 => 'Pas de fichier dans le dossier' . self::DATAMODULE . '/data');
} } else {
else{
//Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_restaure') avec clef = valeur //Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_restaure') avec clef = valeur
self::$savedFiles = array_combine($values, $values); self::$savedFiles = array_combine($values, $values);
} }
} } else {
else {
self::$savedFiles = array(0 => 'Dossier' . self::DATAMODULE . 'data inexistant'); self::$savedFiles = array(0 => 'Dossier' . self::DATAMODULE . 'data inexistant');
} }
// Fichiers ics // Fichiers ics
@ -281,13 +285,11 @@ class agenda extends common {
unset($values[array_search('..', $values)]); unset($values[array_search('..', $values)]);
if (count($values) <= 1) { if (count($values) <= 1) {
self::$icsFiles = array(0 => 'Pas de fichier dans le dossier ' . self::DATAFILE . 'ics'); self::$icsFiles = array(0 => 'Pas de fichier dans le dossier ' . self::DATAFILE . 'ics');
} } else {
else{
//Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_fichier_ics') avec clef = valeur //Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_fichier_ics') avec clef = valeur
self::$icsFiles = array_combine($values, $values); self::$icsFiles = array_combine($values, $values);
} }
} } else {
else {
self::$icsFiles = array(0 => 'Dossier ' . self::DATAFILE . 'ics non existant'); self::$icsFiles = array(0 => 'Dossier ' . self::DATAFILE . 'ics non existant');
} }
// Fichiers csv ou txt // Fichiers csv ou txt
@ -298,17 +300,16 @@ class agenda extends common {
unset($values[array_search('..', $values)]); unset($values[array_search('..', $values)]);
// Supprimer les $values qui ne sont pas csv ou txt // Supprimer les $values qui ne sont pas csv ou txt
for ($i = 2; $i <= count($values); $i++) { for ($i = 2; $i <= count($values); $i++) {
if ( pathinfo($dir.'/'.$values[$i],PATHINFO_EXTENSION) !== 'txt' && pathinfo($dir.'/'.$values[$i],PATHINFO_EXTENSION) !== 'csv') unset($values[$i]); if (pathinfo($dir . '/' . $values[$i], PATHINFO_EXTENSION) !== 'txt' && pathinfo($dir . '/' . $values[$i], PATHINFO_EXTENSION) !== 'csv')
unset($values[$i]);
} }
if (count($values) <= 1) { if (count($values) <= 1) {
self::$csvFiles = array(0 => 'Pas de fichier dans le dossier ' . self::DATAFILE . 'adresses'); self::$csvFiles = array(0 => 'Pas de fichier dans le dossier ' . self::DATAFILE . 'adresses');
} } else {
else{
//Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_fichier_csv_txt') avec clef = valeur //Modifier les clefs (qui sont les valeurs de retour du formulaire avec 'config_fichier_csv_txt') avec clef = valeur
self::$csvFiles = array_combine($values, $values); self::$csvFiles = array_combine($values, $values);
} }
} } else {
else {
self::$csvFiles = array(0 => 'Dossier ' . self::DATAFILE . 'adresses non existant'); self::$csvFiles = array(0 => 'Dossier ' . self::DATAFILE . 'adresses non existant');
} }
@ -328,7 +329,8 @@ class agenda extends common {
/** /**
* Liaison entre edition et suppression d'un évènement * Liaison entre edition et suppression d'un évènement
*/ */
public function deleteEvent() { public function deleteEvent()
{
$json = file_get_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json'); $json = file_get_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json');
$lid = $this->getUrl(2); $lid = $this->getUrl(2);
$sauve = true; $sauve = true;
@ -338,7 +340,8 @@ class agenda extends common {
/** /**
* Suppression d'un évènement * Suppression d'un évènement
*/ */
public function delete($lid, $sauve, $json) { public function delete($lid, $sauve, $json)
{
$json_initial = $json; $json_initial = $json;
//$pos1 et $pos2 sont les délimiteurs de la partie à supprimer //$pos1 et $pos2 sont les délimiteurs de la partie à supprimer
$pos1 = strpos($json, '{"id":' . $lid); $pos1 = strpos($json, '{"id":' . $lid);
@ -350,12 +353,10 @@ class agenda extends common {
//Premier ! et dernier évènement ? //Premier ! et dernier évènement ?
if (strlen($json) < $pos2 + 4) { if (strlen($json) < $pos2 + 4) {
$json = '[]'; $json = '[]';
} } else {
else{
$json = substr_replace($json, '{},', $pos1, $pos2 - $pos1 + 2); $json = substr_replace($json, '{},', $pos1, $pos2 - $pos1 + 2);
} }
} } else {
else{
$json = substr_replace($json, ',{}', $pos1 - 1, $pos2 - $pos1 + 2); $json = substr_replace($json, ',{}', $pos1 - 1, $pos2 - $pos1 + 2);
} }
@ -380,19 +381,18 @@ class agenda extends common {
$evenement_texte = 'SUPPRIME' . $tableau[$lid]['title']; $evenement_texte = 'SUPPRIME' . $tableau[$lid]['title'];
$date_debut = $tableau[$lid]['start']; $date_debut = $tableau[$lid]['start'];
$date_fin = $tableau[$lid]['end']; $date_fin = $tableau[$lid]['end'];
if( $mailing_val === '1') $this->mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses); if ($mailing_val === '1')
$this->mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses);
//Valeurs en sortie si suppression demandée et réalisée //Valeurs en sortie si suppression demandée et réalisée
$this->addOutput([ $this->addOutput([
'notification' => 'Evènement supprimé', 'notification' => 'Evènement supprimé',
'redirect' => helper::baseUrl() . $this->getUrl(0), 'redirect' => helper::baseUrl() . $this->getUrl(0),
'state' => true 'state' => true
]); ]);
} } else {
else{
return $json; return $json;
} }
} } else {
else{
return $json; return $json;
} }
@ -402,7 +402,8 @@ class agenda extends common {
/** /**
* Suppression de tous les évènements * Suppression de tous les évènements
*/ */
public function deleteall() { public function deleteall()
{
//Sauvegarde dans data de l'agenda actuel bien qu'il soit déjà sauvegardé dans data_sauve //Sauvegarde dans data de l'agenda actuel bien qu'il soit déjà sauvegardé dans data_sauve
$json = file_get_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json'); $json = file_get_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json');
@ -424,7 +425,8 @@ class agenda extends common {
/* /*
* Gestion des catégories * Gestion des catégories
*/ */
public function category(){ public function category()
{
// Soumission du formulaire // Soumission du formulaire
if ($this->isPost()) { if ($this->isPost()) {
@ -453,9 +455,14 @@ class agenda extends common {
// Validation du choix par catégorie enregistré dans module.json // Validation du choix par catégorie enregistré dans module.json
$valcategories = $this->getInput('val_categories', helper::FILTER_BOOLEAN); $valcategories = $this->getInput('val_categories', helper::FILTER_BOOLEAN);
//Mise à jour de la validation du choix des couleurs par catégorie //Mise à jour de la validation du choix des couleurs par catégorie
$this->setData(['module', $this->getUrl(0), 'categories', [ $this->setData([
'module',
$this->getUrl(0),
'categories',
[
'valCategories' => $valcategories 'valCategories' => $valcategories
]]); ]
]);
//Valeurs en sortie //Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -495,7 +502,8 @@ class agenda extends common {
/* /*
* Suppression d'une catégorie * Suppression d'une catégorie
*/ */
public function categorieDelete(){ public function categorieDelete()
{
$json = file_get_contents(self::DATAMODULE . 'categories/categories.json'); $json = file_get_contents(self::DATAMODULE . 'categories/categories.json');
$tabcat = json_decode($json, true); $tabcat = json_decode($json, true);
@ -520,10 +528,14 @@ class agenda extends common {
/** /**
* Création * Création
*/ */
public function add() { public function add()
{
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true
&& $this->isPost()
) {
$categorie = ''; $categorie = '';
//lecture du formulaire //lecture du formulaire
@ -533,8 +545,7 @@ class agenda extends common {
$tabcat = json_decode($json, true); $tabcat = json_decode($json, true);
$couleur_fond = $tabcat[$categorie]['backgroundcolor']; $couleur_fond = $tabcat[$categorie]['backgroundcolor'];
$couleur_texte = $tabcat[$categorie]['textcolor']; $couleur_texte = $tabcat[$categorie]['textcolor'];
} } else {
else{
$couleur_fond = $this->getInput('creation_couleur_fond'); $couleur_fond = $this->getInput('creation_couleur_fond');
$couleur_texte = $this->getInput('creation_couleur_texte'); $couleur_texte = $this->getInput('creation_couleur_texte');
} }
@ -548,8 +559,7 @@ class agenda extends common {
if ($mailing_val === false) { if ($mailing_val === false) {
$mailing_val = '0'; $mailing_val = '0';
} } else {
else{
$mailing_val = '1'; $mailing_val = '1';
} }
@ -578,11 +588,16 @@ class agenda extends common {
'state' => false 'state' => false
]); ]);
} }
} } else {
else{
// Clic sur un fond sans évènement
// Le membre doit être connecté
if ($this->getUser('permission', __CLASS__, __FUNCTION__) === true) {
// liste des emails des membres // liste des emails des membres
if(! is_dir(self::DATAMODULE.'adresses')) mkdir(self::DATAMODULE.'adresses',0770,true); if (!is_dir(self::DATAMODULE . 'adresses'))
mkdir(self::DATAMODULE . 'adresses', 0770, true);
// Liste des utilisateurs // Liste des utilisateurs
$membres = ''; $membres = '';
$editeurs = ''; $editeurs = '';
@ -608,8 +623,12 @@ class agenda extends common {
} }
} }
//suppression de la dernière virgule //suppression de la dernière virgule
if( $membres != ''){$membres = substr($membres, 0, -1);} if ($membres != '') {
if( $editeurs != ''){$editeurs = substr($editeurs, 0, -1);} $membres = substr($membres, 0, -1);
}
if ($editeurs != '') {
$editeurs = substr($editeurs, 0, -1);
}
$administrateurs = substr($administrateurs, 0, -1); $administrateurs = substr($administrateurs, 0, -1);
$inscrits = substr($inscrits, 0, -1); $inscrits = substr($inscrits, 0, -1);
//Placer les listes dans un fichier txt et sauvegarder dans le dossier self::DATAMODULE.adresses //Placer les listes dans un fichier txt et sauvegarder dans le dossier self::DATAMODULE.adresses
@ -625,8 +644,7 @@ class agenda extends common {
unset(self::$liste_adresses[array_search('.htaccess', self::$liste_adresses)]); unset(self::$liste_adresses[array_search('.htaccess', self::$liste_adresses)]);
if (count(self::$liste_adresses) <= 1) { if (count(self::$liste_adresses) <= 1) {
self::$liste_adresses = array(0 => 'Pas de fichier dans le dossier ' . self::DATAMODULE . 'adresses'); self::$liste_adresses = array(0 => 'Pas de fichier dans le dossier ' . self::DATAMODULE . 'adresses');
} } else {
else{
self::$liste_adresses = array_combine(self::$liste_adresses, self::$liste_adresses); self::$liste_adresses = array_combine(self::$liste_adresses, self::$liste_adresses);
} }
$this->limite_groupes(); $this->limite_groupes();
@ -658,13 +676,23 @@ class agenda extends common {
'showPageContent' => false, 'showPageContent' => false,
'view' => 'add' 'view' => 'add'
]); ]);
} else {
// Affichage de la page agenda
//Valeurs en sortie après prise en compte du formulaire
$this->addOutput([
'notification' => 'Vous n\'êtes pas connecté !',
'state' => false,
'redirect' => helper::baseUrl() . $this->getUrl(0)
]);
}
} }
} }
/** /**
* Edition, modification, suppression * Edition, modification, suppression
*/ */
public function edition($lid) { public function edition($lid)
{
//Préparation avant l'édition de l'évènement //Préparation avant l'édition de l'évènement
self::$evenement['id'] = $lid; self::$evenement['id'] = $lid;
@ -691,8 +719,7 @@ class agenda extends common {
$tabcat = json_decode($jsone, true); $tabcat = json_decode($jsone, true);
$couleur_fond = $tabcat[$categorie]['backgroundcolor']; $couleur_fond = $tabcat[$categorie]['backgroundcolor'];
$couleur_texte = $tabcat[$categorie]['textcolor']; $couleur_texte = $tabcat[$categorie]['textcolor'];
} } else {
else{
$couleur_fond = $this->getInput('edition_couleur_fond'); $couleur_fond = $this->getInput('edition_couleur_fond');
$couleur_texte = $this->getInput('edition_couleur_texte'); $couleur_texte = $this->getInput('edition_couleur_texte');
} }
@ -707,8 +734,7 @@ class agenda extends common {
$mailing_val = $tableau[$lid]['mailing_val']; $mailing_val = $tableau[$lid]['mailing_val'];
$mailing_adresses = $tableau[$lid]['mailing_adresses']; $mailing_adresses = $tableau[$lid]['mailing_adresses'];
self::$sujet_mailing = 'Agenda - Modification d\'un évènement'; self::$sujet_mailing = 'Agenda - Modification d\'un évènement';
} } else {
else{
$mailing_val = '0'; $mailing_val = '0';
$mailing_adresses = 'Votre choix...'; $mailing_adresses = 'Votre choix...';
} }
@ -742,8 +768,7 @@ class agenda extends common {
'state' => false 'state' => false
]); ]);
} }
} } else {
else{
// Traitement avant affichage // Traitement avant affichage
if (self::$evenement['categorie'] != '') { if (self::$evenement['categorie'] != '') {
$json = file_get_contents(self::DATAMODULE . 'categories/categories.json'); $json = file_get_contents(self::DATAMODULE . 'categories/categories.json');
@ -767,39 +792,43 @@ class agenda extends common {
/** /**
* Newname utilisé par la version 9 pour inscrire le nouveau nom de page dans le json du module * Newname utilisé par la version 9 pour inscrire le nouveau nom de page dans le json du module
*/ */
public function newname() { public function newname()
{
$this->setData(['module', $this->getUrl(0), 'name', $this->getUrl(0)]); $this->setData(['module', $this->getUrl(0), 'name', $this->getUrl(0)]);
} }
/** /**
* Accueil * Accueil
*/ */
public function index() { public function index()
{
// Mise à jour des données de module // Mise à jour des données de module
$this->update(); $this->update();
//Pour récupération des données ajax jquery date ou id //Pour récupération des données ajax jquery date ou id
$url = $_SERVER['REQUEST_URI']; $url = $_SERVER['REQUEST_URI'];
if (strpos($url, '/da:') !== false) { if (strpos($url, '/da:') !== false) {
//Extraction des données de la chaîne url et détection de changement de vue //Extraction des données de la chaîne url et détection de changement de vue
$dateclic = $this->vue_debut($url, '/da:'); $dateclic = $this->vue_debut($url, '/da:');
self::$datecreation = $dateclic; self::$datecreation = $dateclic;
//Vers la création d'un évènement //Vers la création d'un évènement
$this->add(); $this->add();
} } else {
else{
if (strpos($url, '/id:') !== false) { if (strpos($url, '/id:') !== false) {
//Extraction des données de la chaîne url et détection de changement de vue //Extraction des données de la chaîne url et détection de changement de vue
$idclic = $this->vue_debut($url, '/id:'); $idclic = $this->vue_debut($url, '/id:');
//Vers l'édition d'un évènement //Vers l'édition d'un évènement
$this->edition($idclic); $this->edition($idclic);
} } else {
else{
//Initialisations des paramètres de configuration du module et création des dossiers de sauvegarde //Initialisations des paramètres de configuration du module et création des dossiers de sauvegarde
if (null === $this->getData(['module', $this->getUrl(0), 'vue'])) { if (null === $this->getData(['module', $this->getUrl(0), 'vue'])) {
// name est utilisé pour détecter un changement de nom de la page contenant le module // name est utilisé pour détecter un changement de nom de la page contenant le module
$this->setData(['module',$this->getUrl(0),[ $this->setData([
'module',
$this->getUrl(0),
[
'name' => $this->getUrl(0), 'name' => $this->getUrl(0),
'vue' => [ 'vue' => [
'vueagenda' => 'dayGridMonth', 'vueagenda' => 'dayGridMonth',
@ -814,17 +843,26 @@ class agenda extends common {
'categories' => [ 'categories' => [
'valCategories' => false 'valCategories' => false
] ]
]]); ]
]);
//Création des dossiers de sauvegarde de l'agenda //Création des dossiers de sauvegarde de l'agenda
if(! is_dir(self::DATAMODULE.'data')) mkdir(self::DATAMODULE.'data',0770,true); if (!is_dir(self::DATAMODULE . 'data'))
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_sauve'))mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_sauve'); mkdir(self::DATAMODULE . 'data', 0770, true);
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0).'_visible')) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0).'_visible'); if (!is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve'))
if(! is_dir(self::DATAMODULE.'data/'.$this->getUrl(0))) mkdir(self::DATAMODULE.'data/'.$this->getUrl(0)); mkdir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve');
if(! is_dir(self::DATAFILE.'ics')) mkdir(self::DATAFILE.'ics'); if (!is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_visible'))
if(! is_dir(self::DATAFILE.'categories')) mkdir(self::DATAFILE.'categories'); mkdir(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_visible');
if(! is_dir(self::DATAMODULE.'ics')) mkdir(self::DATAMODULE.'ics'); if (!is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0)))
if(! is_dir(self::DATAMODULE.'adresses')) mkdir(self::DATAMODULE.'adresses'); mkdir(self::DATAMODULE . 'data/' . $this->getUrl(0));
if (!is_dir(self::DATAFILE . 'ics'))
mkdir(self::DATAFILE . 'ics');
if (!is_dir(self::DATAFILE . 'categories'))
mkdir(self::DATAFILE . 'categories');
if (!is_dir(self::DATAMODULE . 'ics'))
mkdir(self::DATAMODULE . 'ics');
if (!is_dir(self::DATAMODULE . 'adresses'))
mkdir(self::DATAMODULE . 'adresses');
$this->addOutput([ $this->addOutput([
@ -832,8 +870,7 @@ class agenda extends common {
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config/', 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config/',
'state' => true 'state' => true
]); ]);
} } else {
else{
//le module existe dans le json, détection du changement de nom de la page pour renommer les dossiers //le module existe dans le json, détection du changement de nom de la page pour renommer les dossiers
if (!is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0))) { if (!is_dir(self::DATAMODULE . 'data/' . $this->getUrl(0))) {
$oldname = $this->getData(['module', $this->getUrl(0), 'name']); $oldname = $this->getData(['module', $this->getUrl(0), 'name']);
@ -853,8 +890,10 @@ class agenda extends common {
} }
} }
//Si le fichier events.json n'existe pas ou si sa taille est inférieure à 2 on le crée vide //Si le fichier events.json n'existe pas ou si sa taille est inférieure à 2 on le crée vide
if( is_file(self::DATAMODULE.'data/'.$this->getUrl(0).'/events.json') === false || if (
( is_file(self::DATAMODULE.'data/'.$this->getUrl(0).'/events.json') === true && filesize(self::DATAMODULE.'data/'.$this->getUrl(0).'/events.json')<2)){ is_file(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json') === false ||
(is_file(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json') === true && filesize(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json') < 2)
) {
file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json', '[]'); file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json', '[]');
} }
@ -865,8 +904,7 @@ class agenda extends common {
if (isset($value['groupe_lire'])) { if (isset($value['groupe_lire'])) {
if ($value['groupe_lire'] > $this->getUser('group')) { if ($value['groupe_lire'] > $this->getUser('group')) {
$json = $this->delete_visible($json, $key); $json = $this->delete_visible($json, $key);
} } else {
else{
if (isset($value['title'])) { if (isset($value['title'])) {
$newvalues = html_entity_decode($value['title']); $newvalues = html_entity_decode($value['title']);
$newvalue = strip_tags($newvalues); $newvalue = strip_tags($newvalues);
@ -901,7 +939,8 @@ class agenda extends common {
/* Conversion date au format unix (valeur 0 au 1/1/1970 00:00) /* Conversion date au format unix (valeur 0 au 1/1/1970 00:00)
*/ */
private function conversion_date($dateclic){ private function conversion_date($dateclic)
{
$annee = intval(substr($dateclic, 0, 4)); $annee = intval(substr($dateclic, 0, 4));
$mois = intval(substr($dateclic, 5, 2)); $mois = intval(substr($dateclic, 5, 2));
$jour = intval(substr($dateclic, 8, 2)); $jour = intval(substr($dateclic, 8, 2));
@ -916,7 +955,8 @@ class agenda extends common {
/* Vérification que $datedebut précède $datefin /* Vérification que $datedebut précède $datefin
*/ */
private function verif_date($datedebut, $datefin){ private function verif_date($datedebut, $datefin)
{
$result = false; $result = false;
$date[0] = $datedebut; $date[0] = $datedebut;
$date[1] = $datefin; $date[1] = $datefin;
@ -928,17 +968,19 @@ class agenda extends common {
$minute = substr($date[$key], 14, 2); $minute = substr($date[$key], 14, 2);
$valdate[$key] = intval($annee . $mois . $jour . $heure . $minute); $valdate[$key] = intval($annee . $mois . $jour . $heure . $minute);
} }
if ($valdate[0] <= $valdate[1]){ $result = true;} if ($valdate[0] <= $valdate[1]) {
$result = true;
}
return $result; return $result;
} }
/*Modifier date format ics yyyymmddThhmm... ou yyyymmdd vers format fullcalendar yyyy-mm-ddThh:mm ou yyyy-mm-dd /*Modifier date format ics yyyymmddThhmm... ou yyyymmdd vers format fullcalendar yyyy-mm-ddThh:mm ou yyyy-mm-dd
*/ */
private function modif_date($datein, $clef){ private function modif_date($datein, $clef)
{
if (strpos($clef, 'VALUE=DATE') !== false) { if (strpos($clef, 'VALUE=DATE') !== false) {
$dateout = substr($datein, 0, 4) . '-' . substr($datein, 4, 2) . '-' . substr($datein, 6, 2); $dateout = substr($datein, 0, 4) . '-' . substr($datein, 4, 2) . '-' . substr($datein, 6, 2);
} } else {
else{
$dateout = substr($datein, 0, 4) . '-' . substr($datein, 4, 2) . '-' . substr($datein, 6, 5) . ':' . substr($datein, 11, 2); $dateout = substr($datein, 0, 4) . '-' . substr($datein, 4, 2) . '-' . substr($datein, 6, 5) . ':' . substr($datein, 11, 2);
} }
return $dateout; return $dateout;
@ -948,7 +990,8 @@ class agenda extends common {
/* Modification de CR LF " ' { } dans le texte de l'évènement /* Modification de CR LF " ' { } dans le texte de l'évènement
*/ */
private function modif_texte($evenement_texte){ private function modif_texte($evenement_texte)
{
$evenement_texte = str_replace(CHR(13), "&#13;", $evenement_texte); $evenement_texte = str_replace(CHR(13), "&#13;", $evenement_texte);
$evenement_texte = str_replace(CHR(10), "&#10;", $evenement_texte); $evenement_texte = str_replace(CHR(10), "&#10;", $evenement_texte);
$evenement_texte = str_replace('"', '&#34;', $evenement_texte); $evenement_texte = str_replace('"', '&#34;', $evenement_texte);
@ -960,7 +1003,8 @@ class agenda extends common {
/* Restauration des CR LF " ' { } dans le texte de l'évènement /* Restauration des CR LF " ' { } dans le texte de l'évènement
*/ */
private function restaure_texte($evenement_texte){ private function restaure_texte($evenement_texte)
{
$evenement_texte = str_replace("&#13;", CHR(13), $evenement_texte); $evenement_texte = str_replace("&#13;", CHR(13), $evenement_texte);
$evenement_texte = str_replace("&#10;", CHR(10), $evenement_texte); $evenement_texte = str_replace("&#10;", CHR(10), $evenement_texte);
$evenement_texte = str_replace('&#34;', '"', $evenement_texte); $evenement_texte = str_replace('&#34;', '"', $evenement_texte);
@ -972,7 +1016,8 @@ class agenda extends common {
/* Ajout et enregistrement d'un évènement sur création ou édition, émission de mail si mailing_val = '1' /* Ajout et enregistrement d'un évènement sur création ou édition, émission de mail si mailing_val = '1'
*/ */
private function nouvel_evenement($evenement_texte,$date_debut,$date_fin,$couleur_fond,$couleur_texte,$groupe_visible,$groupe_mod,$mailing_val, $mailing_adresses, $categorie, $json){ private function nouvel_evenement($evenement_texte, $date_debut, $date_fin, $couleur_fond, $couleur_texte, $groupe_visible, $groupe_mod, $mailing_val, $mailing_adresses, $categorie, $json)
{
//Changement du format des dates yyyy-mm-dd hh:mm:0 vers format fullcalendar yyyy-mm-ddThh:mm //Changement du format des dates yyyy-mm-dd hh:mm:0 vers format fullcalendar yyyy-mm-ddThh:mm
$date_debut = str_replace(' ', 'T', $date_debut); $date_debut = str_replace(' ', 'T', $date_debut);
$date_fin = str_replace(' ', 'T', $date_fin); $date_fin = str_replace(' ', 'T', $date_fin);
@ -982,7 +1027,9 @@ class agenda extends common {
$date_fin = substr($date_fin, 0, 16); $date_fin = substr($date_fin, 0, 16);
//Ouverture et décodage du fichier json //Ouverture et décodage du fichier json
if($json == ''){$json = file_get_contents(self::DATAMODULE.'data/'.$this->getUrl(0).'/events.json');} if ($json == '') {
$json = file_get_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json');
}
$tableau = json_decode($json, true); $tableau = json_decode($json, true);
$keynew = count($tableau); $keynew = count($tableau);
@ -992,8 +1039,7 @@ class agenda extends common {
$new = ',{"id":' . $keynew . ',"title":"' . $evenement_texte . '","start":"' . $date_debut . '","end":"' $new = ',{"id":' . $keynew . ',"title":"' . $evenement_texte . '","start":"' . $date_debut . '","end":"'
. $date_fin . '","backgroundColor":"' . $couleur_fond . '","textColor":"' . $couleur_texte . '","groupe_lire":"' . $groupe_visible . '","groupe_mod":"' . $date_fin . '","backgroundColor":"' . $couleur_fond . '","textColor":"' . $couleur_texte . '","groupe_lire":"' . $groupe_visible . '","groupe_mod":"'
. $groupe_mod . '","mailing_val":"' . $mailing_val . '","mailing_adresses":"' . $mailing_adresses . '","categorie":"' . $categorie . '"}]'; . $groupe_mod . '","mailing_val":"' . $mailing_val . '","mailing_adresses":"' . $mailing_adresses . '","categorie":"' . $categorie . '"}]';
} } else {
else{
$new = '{"id":' . $keynew . ',"title":"' . $evenement_texte . '","start":"' . $date_debut . '","end":"' $new = '{"id":' . $keynew . ',"title":"' . $evenement_texte . '","start":"' . $date_debut . '","end":"'
. $date_fin . '","backgroundColor":"' . $couleur_fond . '","textColor":"' . $couleur_texte . '","groupe_lire":"' . $groupe_visible . '","groupe_mod":"' . $date_fin . '","backgroundColor":"' . $couleur_fond . '","textColor":"' . $couleur_texte . '","groupe_lire":"' . $groupe_visible . '","groupe_mod":"'
. $groupe_mod . '","mailing_val":"' . $mailing_val . '","mailing_adresses":"' . $mailing_adresses . '","categorie":"' . $categorie . '"}]'; . $groupe_mod . '","mailing_val":"' . $mailing_val . '","mailing_adresses":"' . $mailing_adresses . '","categorie":"' . $categorie . '"}]';
@ -1003,13 +1049,15 @@ class agenda extends common {
//Enregistrement dans le fichier json et sauvegarde pour restauration par "Agenda précédent" //Enregistrement dans le fichier json et sauvegarde pour restauration par "Agenda précédent"
file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json', $json); file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '/events.json', $json);
$this->sauve($json); $this->sauve($json);
if($mailing_val === '1') $this->mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses); if ($mailing_val === '1')
$this->mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses);
} }
/* Sauvegarde automatique de l'agenda sous une forme datée après chaque création, modification, suppression d'un évènement /* Sauvegarde automatique de l'agenda sous une forme datée après chaque création, modification, suppression d'un évènement
* ou chargement d'un nouvel agenda, seuls les 10 derniers agendas sont sauvegardés * ou chargement d'un nouvel agenda, seuls les 10 derniers agendas sont sauvegardés
*/ */
private function sauve($sauve_json) { private function sauve($sauve_json)
{
//Sauvegarde du fichier json actuel //Sauvegarde du fichier json actuel
file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve/events_' . date('YmdHis') . '.json', $sauve_json); file_put_contents(self::DATAMODULE . 'data/' . $this->getUrl(0) . '_sauve/events_' . date('YmdHis') . '.json', $sauve_json);
@ -1022,7 +1070,9 @@ class agenda extends common {
$plus_ancien_clef = 0; $plus_ancien_clef = 0;
foreach ($nom_fichier as $key => $value) { foreach ($nom_fichier as $key => $value) {
if (strpos($value, 'events_') !== false && strlen($value) == 26) { if (strpos($value, 'events_') !== false && strlen($value) == 26) {
if ($nb_sauve_auto == 0) { $plus_ancien_clef = $key;} if ($nb_sauve_auto == 0) {
$plus_ancien_clef = $key;
}
$nb_sauve_auto++; $nb_sauve_auto++;
} }
} }
@ -1035,7 +1085,8 @@ class agenda extends common {
/* Suppression d'évènements dans le json public ( visible) en fonction des droits /* Suppression d'évènements dans le json public ( visible) en fonction des droits
*/ */
private function delete_visible($json,$lid) { private function delete_visible($json, $lid)
{
//$pos1 et $pos2 sont les délimiteurs de la partie à supprimer //$pos1 et $pos2 sont les délimiteurs de la partie à supprimer
$pos1 = strpos($json, '{"id":' . $lid); $pos1 = strpos($json, '{"id":' . $lid);
$pos2 = strpos($json, '}', $pos1); $pos2 = strpos($json, '}', $pos1);
@ -1044,12 +1095,10 @@ class agenda extends common {
//Premier ! et dernier évènement ? //Premier ! et dernier évènement ?
if (strlen($json) < $pos2 + 4) { if (strlen($json) < $pos2 + 4) {
$json = '[]'; $json = '[]';
} } else {
else{
$json = substr_replace($json, '{},', $pos1, $pos2 - $pos1 + 2); $json = substr_replace($json, '{},', $pos1, $pos2 - $pos1 + 2);
} }
} } else {
else{
$json = substr_replace($json, ',{}', $pos1 - 1, $pos2 - $pos1 + 2); $json = substr_replace($json, ',{}', $pos1 - 1, $pos2 - $pos1 + 2);
} }
return $json; return $json;
@ -1057,10 +1106,13 @@ class agenda extends common {
/* Limitation des choix pour les groupes lecture et modification avant création ou édition /* Limitation des choix pour les groupes lecture et modification avant création ou édition
*/ */
private function limite_groupes() { private function limite_groupes()
{
//Modification du tableau self::$groupe si case cochée en configuration //Modification du tableau self::$groupe si case cochée en configuration
if ($this->getData(['module', $this->getUrl(0), 'config', 'droit_limite']) if (
&& $this->getUser('group') >= self::$evenement['groupe_mod']){ $this->getData(['module', $this->getUrl(0), 'config', 'droit_limite'])
&& $this->getUser('group') >= self::$evenement['groupe_mod']
) {
switch ($this->getUser('group')) { switch ($this->getUser('group')) {
case 0: case 0:
array_splice(self::$groupe, 1); array_splice(self::$groupe, 1);
@ -1078,7 +1130,8 @@ class agenda extends common {
/* /*
* Extraction des données de la chaîne url et détection de changement de vue * Extraction des données de la chaîne url et détection de changement de vue
*/ */
private function vue_debut($url,$idda) { private function vue_debut($url, $idda)
{
$pos1 = strpos($url, $idda); $pos1 = strpos($url, $idda);
$pos2 = strpos($url, 'vue:'); $pos2 = strpos($url, 'vue:');
$pos3 = strpos($url, 'deb:'); $pos3 = strpos($url, 'deb:');
@ -1088,10 +1141,15 @@ class agenda extends common {
$gridold = $this->getData(['module', $this->getUrl(0), 'vue', 'vueagenda']); $gridold = $this->getData(['module', $this->getUrl(0), 'vue', 'vueagenda']);
$debold = $this->getData(['module', $this->getUrl(0), 'vue', 'debagenda']); $debold = $this->getData(['module', $this->getUrl(0), 'vue', 'debagenda']);
if ($grid != $gridold || $deb != $debold) { if ($grid != $gridold || $deb != $debold) {
$this->setData(['module', $this->getUrl(0), 'vue', [ $this->setData([
'module',
$this->getUrl(0),
'vue',
[
'vueagenda' => $grid, 'vueagenda' => $grid,
'debagenda' => $deb 'debagenda' => $deb
]]); ]
]);
$this->addOutput([ $this->addOutput([
'notification' => 'Modification de vue enregistrée', 'notification' => 'Modification de vue enregistrée',
'state' => true 'state' => true
@ -1102,7 +1160,8 @@ class agenda extends common {
/* Function is to get all the contents from ics and explode all the datas according to the events and its sections */ /* Function is to get all the contents from ics and explode all the datas according to the events and its sections */
/* de https://www.apptha.com/blog/import-google-calendar-events-in-php/ */ /* de https://www.apptha.com/blog/import-google-calendar-events-in-php/ */
function getIcsEventsAsArray($file) { function getIcsEventsAsArray($file)
{
$icalString = file_get_contents($file); $icalString = file_get_contents($file);
$icsDates = array(); $icsDates = array();
/* Explode the ICs Data to get datas as array according to string BEGIN: */ /* Explode the ICs Data to get datas as array according to string BEGIN: */
@ -1123,7 +1182,8 @@ class agenda extends common {
/* funcion is to avaid the elements wich is not having the proper start, end and summary informations */ /* funcion is to avaid the elements wich is not having the proper start, end and summary informations */
/* de https://www.apptha.com/blog/import-google-calendar-events-in-php/ */ /* de https://www.apptha.com/blog/import-google-calendar-events-in-php/ */
function getICSDates($key, $subKey, $subValue, $icsDates) { function getICSDates($key, $subKey, $subValue, $icsDates)
{
if ($key != 0 && $subKey == 0) { if ($key != 0 && $subKey == 0) {
$icsDates[$key]["BEGIN"] = $subValue; $icsDates[$key]["BEGIN"] = $subValue;
} else { } else {
@ -1138,7 +1198,8 @@ class agenda extends common {
/* Fonction mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses) /* Fonction mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses)
/* /*
*/ */
private function mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses){ private function mailing($evenement_texte, $date_debut, $date_fin, $mailing_val, $mailing_adresses)
{
$adresses = file_get_contents(self::DATAMODULE . 'adresses/' . $mailing_adresses); $adresses = file_get_contents(self::DATAMODULE . 'adresses/' . $mailing_adresses);
if (strpos($adresses, '@') !== false) { if (strpos($adresses, '@') !== false) {
// Conversion $adresses en tableau // Conversion $adresses en tableau
@ -1164,13 +1225,13 @@ class agenda extends common {
/* Fonction envoyerMail($to, $subject, $content, $mode) /* Fonction envoyerMail($to, $subject, $content, $mode)
/* Copie de la fonction sendMail() de core.php avec en plus l'argument $mode pour cacher ou non les destinataires*/ /* Copie de la fonction sendMail() de core.php avec en plus l'argument $mode pour cacher ou non les destinataires*/
private function envoyerMail($to, $subject, $content, $mode){ private function envoyerMail($to, $subject, $content, $mode)
{
// Utilisation de PHPMailer version 6.0.6 avec zwii 9.x.x ou 10.x.x // Utilisation de PHPMailer version 6.0.6 avec zwii 9.x.x ou 10.x.x
if ($this->getData(['core', 'dataVersion']) < 10000) { if ($this->getData(['core', 'dataVersion']) < 10000) {
require_once "core/vendor/phpmailer/phpmailer.php"; require_once "core/vendor/phpmailer/phpmailer.php";
require_once "core/vendor/phpmailer/exception.php"; require_once "core/vendor/phpmailer/exception.php";
} } else {
else{
//require_once "core/class/phpmailer/phpmailer.class.php"; //require_once "core/class/phpmailer/phpmailer.class.php";
//require_once "core/class/phpmailer/exception.class.php"; //require_once "core/class/phpmailer/exception.class.php";
} }
@ -1189,17 +1250,14 @@ class agenda extends common {
foreach ($to as $userMail) { foreach ($to as $userMail) {
if ($mode == 'bcc') { if ($mode == 'bcc') {
$mail->addBCC($userMail); $mail->addBCC($userMail);
} } else {
else{
$mail->addAddress($userMail); $mail->addAddress($userMail);
} }
} }
} } else {
else {
if ($mode == 'bcc') { if ($mode == 'bcc') {
$mail->addBCC($to); $mail->addBCC($to);
} } else {
else{
$mail->addAddress($to); $mail->addAddress($to);
} }
} }
@ -1209,8 +1267,7 @@ class agenda extends common {
$mail->AltBody = strip_tags($content); $mail->AltBody = strip_tags($content);
if ($mail->send()) { if ($mail->send()) {
return true; return true;
} } else {
else {
return $mail->ErrorInfo; return $mail->ErrorInfo;
} }
} catch (phpmailerException $e) { } catch (phpmailerException $e) {
@ -1223,7 +1280,8 @@ class agenda extends common {
/* /*
** Fonction change_date($date) Modification de l'aspect des dates : 2020-12-04T08:00 vers 04/12/2020 à 08:00 ** Fonction change_date($date) Modification de l'aspect des dates : 2020-12-04T08:00 vers 04/12/2020 à 08:00
*/ */
private function change_date( $date ){ private function change_date($date)
{
$jour = substr($date, 8, 2); $jour = substr($date, 8, 2);
$mois = substr($date, 5, 2); $mois = substr($date, 5, 2);
$annee = substr($date, 0, 4); $annee = substr($date, 0, 4);
@ -1237,7 +1295,8 @@ class agenda extends common {
* Copie récursive de dossiers * Copie récursive de dossiers
* *
*/ */
private function custom_copy($src, $dst) { private function custom_copy($src, $dst)
{
// open the source directory // open the source directory
$dir = opendir($src); $dir = opendir($src);
// Make the destination directory if not exist // Make the destination directory if not exist
@ -1251,8 +1310,7 @@ class agenda extends common {
// Recursively calling custom copy function // Recursively calling custom copy function
// for sub directory // for sub directory
$this->custom_copy($src . '/' . $file, $dst . '/' . $file); $this->custom_copy($src . '/' . $file, $dst . '/' . $file);
} } else {
else {
copy($src . '/' . $file, $dst . '/' . $file); copy($src . '/' . $file, $dst . '/' . $file);
} }
} }

View File

@ -8,10 +8,10 @@
'value' => 'Retour' 'value' => 'Retour'
]); ?> ]); ?>
</div> </div>
<?php if( $this->getUser('group') >= $this->getData(['module', $this->getUrl(0), 'config', 'droit_creation']) ){ <?php if( $this->getUser('group') >= $this->getData(['module', $this->getUrl(0), 'config', 'droit_creation'])): ?>
echo '<script src="'. helper::baseUrl(false).'/core/vendor/tinymce/tinymce.min.js"></script>'; <script src="'. helper::baseUrl(false).'/core/vendor/tinymce/tinymce.min.js"></script>'
echo '<script src="'. helper::baseUrl(false).'/core/vendor/tinymce/jquery.tinymce.min.js"></script>'; <script src="'. helper::baseUrl(false).'/core/vendor/tinymce/jquery.tinymce.min.js"></script>'
if( $this->getUser('group') >= 2){ <?php if( $this->getUser('group') >= 2){
echo '<script src="'. helper::baseUrl(false).'/module/agenda/vendor/js/init23.js"></script>'; echo '<script src="'. helper::baseUrl(false).'/module/agenda/vendor/js/init23.js"></script>';
} }
else{ else{
@ -125,18 +125,7 @@
</div> </div>
</div> </div>
<?php endif; ?>
<?php }
else{?>
<!--Fermeture de la <div class="row"> si test false-->
</div>
<div class="block">
<h4>Vous n'avez pas accès à la création d'évènements, connectez-vous.</h4>
</div>
<?php ;} ?>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>
<div class="moduleVersion">Version <div class="moduleVersion">Version