Merge branch '10400' into 11000
This commit is contained in:
commit
d7f03521df
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
## version 10.4.00
|
## version 10.4.00
|
||||||
- Modifications :
|
- Modifications :
|
||||||
|
- Filtrage des URL générées par facebook (FBCLID) occasionnant une erreur 404
|
||||||
- Captcha arithmétique, activation recommandée dans la configuration.
|
- Captcha arithmétique, activation recommandée dans la configuration.
|
||||||
- Module User
|
- Module User
|
||||||
- Pour les articles de blog et de news, choix de la signature, nom+prenom ; nom+prenom ; id ; pseudo
|
- Pour les articles de blog et de news, choix de la signature, nom+prenom ; nom+prenom ; id ; pseudo
|
||||||
@ -15,9 +16,9 @@
|
|||||||
- Approbation des commentaires
|
- Approbation des commentaires
|
||||||
- Gestion des thèmes :
|
- Gestion des thèmes :
|
||||||
- Bouton de réinitialisation avec confirmation
|
- Bouton de réinitialisation avec confirmation
|
||||||
- Traduction automatique dans la langue du navigateur.
|
|
||||||
- Amélioration de la structure du flux RSS.
|
- Amélioration de la structure du flux RSS.
|
||||||
|
|
||||||
|
|
||||||
## Version 10.3.13
|
## Version 10.3.13
|
||||||
Modifications :
|
Modifications :
|
||||||
- Système de données (JsonDB) :
|
- Système de données (JsonDB) :
|
||||||
|
@ -74,9 +74,9 @@ Pour revenir à la version 8, renommez ce fichier "data.json".
|
|||||||
[R] fr Dossier localisé
|
[R] fr Dossier localisé
|
||||||
[F] page.json Données des pages
|
[F] page.json Données des pages
|
||||||
[F] module.json Données des modules de pages
|
[F] module.json Données des modules de pages
|
||||||
[F] admin.css Thème de la partie administration
|
[F] admin.css Thème des pages d'administration
|
||||||
[F] admin.json Données de la partie administration
|
[F] admin.json Données de thème des pages d'administration
|
||||||
[F] blacklist.json Données de connexion des comptes inconnus
|
[F] blacklist.json Journalisation des tentatives de connexion avec des comptes inconnus
|
||||||
[F] config.json Configuration du site
|
[F] config.json Configuration du site
|
||||||
[F] core.json Configuration du noyau
|
[F] core.json Configuration du noyau
|
||||||
[F] custom.css Feuille de style de la personnalisation avancée
|
[F] custom.css Feuille de style de la personnalisation avancée
|
||||||
@ -84,6 +84,7 @@ Pour revenir à la version 8, renommez ce fichier "data.json".
|
|||||||
[F] theme.css Thème du site
|
[F] theme.css Thème du site
|
||||||
[F] theme.json Données du site
|
[F] theme.json Données du site
|
||||||
[F] user.json Données des utilisateurs
|
[F] user.json Données des utilisateurs
|
||||||
|
[F] .backup Marqueur de la sauvegarde des fichiers si présent
|
||||||
[R] file Répertoire d'upload du gestionnaire de fichiers
|
[R] file Répertoire d'upload du gestionnaire de fichiers
|
||||||
[R] source Ressources diverses
|
[R] source Ressources diverses
|
||||||
[R] thumb Miniatures des images
|
[R] thumb Miniatures des images
|
||||||
|
@ -480,4 +480,10 @@ $(document).ready(function(){
|
|||||||
$(".helpDisplayContent").slideToggle();
|
$(".helpDisplayContent").slideToggle();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove ID Facebook from URL
|
||||||
|
*/
|
||||||
|
if(/^\?fbclid=/.test(location.search))
|
||||||
|
location.replace(location.href.replace(/\?fbclid.+/, ""));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -209,7 +209,7 @@ class common {
|
|||||||
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
|
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
|
||||||
'name' => $keys . '.json',
|
'name' => $keys . '.json',
|
||||||
'dir' => $this->dataPath ($keys,self::$i18nCurrent),
|
'dir' => $this->dataPath ($keys,self::$i18nCurrent),
|
||||||
'backup' => $keys === 'config' ? true : $this->getData(['config','fileBackup'])
|
'backup' => file_exists('site/data/.backup')
|
||||||
]);;
|
]);;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -554,7 +554,16 @@ class common {
|
|||||||
// Une partie de l'url
|
// Une partie de l'url
|
||||||
else {
|
else {
|
||||||
$url = explode('/', $this->url);
|
$url = explode('/', $this->url);
|
||||||
return array_key_exists($key, $url) ? $url[$key] : null;
|
if (array_key_exists($key, $url) ) {
|
||||||
|
if (strpos($url[$key],'fbclid=') === false) {
|
||||||
|
$result = $url[$key];
|
||||||
|
} else {
|
||||||
|
$result = $key === 0 ? $this->getData(['config','homePageId']) : '';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result = null;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1934,7 +1943,7 @@ class core extends common {
|
|||||||
$access = false;
|
$access = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Empêcher l'accès aux page désactivée par URL directe
|
// Empêcher l'accès aux pages désactivées par URL directe
|
||||||
if ( ( $this->getData(['page', $this->getUrl(0),'disable']) === true
|
if ( ( $this->getData(['page', $this->getUrl(0),'disable']) === true
|
||||||
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
) OR (
|
) OR (
|
||||||
|
@ -485,7 +485,6 @@ class config extends common {
|
|||||||
[
|
[
|
||||||
'analyticsId' => $this->getInput('configAdvancedAnalyticsId'),
|
'analyticsId' => $this->getInput('configAdvancedAnalyticsId'),
|
||||||
'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN),
|
'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN),
|
||||||
'fileBackup' => $this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN),
|
|
||||||
'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN),
|
'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN),
|
||||||
'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN),
|
'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN),
|
||||||
'favicon' => $this->getInput('configAdvancedFavicon'),
|
'favicon' => $this->getInput('configAdvancedFavicon'),
|
||||||
@ -535,6 +534,9 @@ class config extends common {
|
|||||||
unlink($filename);
|
unlink($filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (file_exists('site/data/.backup')) unlink('site/data/.backup');
|
||||||
|
} else {
|
||||||
|
touch('site/data/.backup');
|
||||||
}
|
}
|
||||||
// Notice
|
// Notice
|
||||||
if(self::$inputNotices === []) {
|
if(self::$inputNotices === []) {
|
||||||
@ -550,6 +552,8 @@ class config extends common {
|
|||||||
PHP_EOL .
|
PHP_EOL .
|
||||||
'<ifModule mod_rewrite.c>' . PHP_EOL .
|
'<ifModule mod_rewrite.c>' . PHP_EOL .
|
||||||
"\tRewriteEngine on" . PHP_EOL .
|
"\tRewriteEngine on" . PHP_EOL .
|
||||||
|
"\tRewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+&?(.*)$ [NC]". PHP_EOL .
|
||||||
|
"\tRewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L]". PHP_EOL .
|
||||||
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
|
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
|
||||||
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
|
||||||
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
|
||||||
|
@ -103,7 +103,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col4">
|
<div class="col4">
|
||||||
<?php echo template::checkbox('configAdvancedFileBackup', true, 'Copie de sauvegarde', [
|
<?php echo template::checkbox('configAdvancedFileBackup', true, 'Copie de sauvegarde', [
|
||||||
'checked' => $this->getData(['config', 'fileBackup']),
|
'checked' => file_exists('site/data/.backup'),
|
||||||
'help' => '<p>Un fichier .backup.json est généré à chaque édition ou effacement d\'une donnée. La désactivation entraîne la suppression de ces fichiers.</p>'
|
'help' => '<p>Un fichier .backup.json est généré à chaque édition ou effacement d\'une donnée. La désactivation entraîne la suppression de ces fichiers.</p>'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,6 @@ class init extends common {
|
|||||||
'config' => [
|
'config' => [
|
||||||
'analyticsId' => '',
|
'analyticsId' => '',
|
||||||
'autoBackup' => true,
|
'autoBackup' => true,
|
||||||
'fileBackup' => true,
|
|
||||||
'autoUpdate' => true,
|
'autoUpdate' => true,
|
||||||
'autoUpdateHtaccess' => false,
|
'autoUpdateHtaccess' => false,
|
||||||
'cookieConsent' => true,
|
'cookieConsent' => true,
|
||||||
|
@ -81,13 +81,13 @@ class blog extends common {
|
|||||||
public static $articleConsent = [
|
public static $articleConsent = [
|
||||||
self::EDIT_ALL => 'Tous les groupes',
|
self::EDIT_ALL => 'Tous les groupes',
|
||||||
self::EDIT_GROUP => 'Groupe du propriétaire',
|
self::EDIT_GROUP => 'Groupe du propriétaire',
|
||||||
self::EDIT_OWNER => 'Propiétaire'
|
self::EDIT_OWNER => 'Propriétaire'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
public static $users = [];
|
public static $users = [];
|
||||||
|
|
||||||
const BLOG_VERSION = '4.1';
|
const BLOG_VERSION = '4.2';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flux RSS
|
* Flux RSS
|
||||||
@ -627,22 +627,28 @@ class blog extends common {
|
|||||||
foreach($this->getData(['user']) as $userId => $user) {
|
foreach($this->getData(['user']) as $userId => $user) {
|
||||||
if ($user['group'] >= $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentGroupNotification']) ) {
|
if ($user['group'] >= $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentGroupNotification']) ) {
|
||||||
$to[] = $user['mail'];
|
$to[] = $user['mail'];
|
||||||
|
$firstname[] = $user['firstname'];
|
||||||
|
$lastname[] = $user['lastname'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Envoi du mail $sent code d'erreur ou de réussite
|
// Envoi du mail $sent code d'erreur ou de réussite
|
||||||
$notification = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) === true ? 'Commentaire déposé en attente d\'approbation': 'Commentaire déposé';
|
$notification = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) === true ? 'Commentaire déposé en attente d\'approbation': 'Commentaire déposé';
|
||||||
if ($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentNotification']) === true) {
|
if ($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentNotification']) === true) {
|
||||||
$sent = $this->sendMail(
|
$error = 0;
|
||||||
$to,
|
foreach($to as $key => $adress){
|
||||||
'Nouveau commentaire déposé',
|
$sent = $this->sendMail(
|
||||||
'Bonjour' . ' <strong>' . $user['firstname'] . ' ' . $user['lastname'] . '</strong>,<br><br>' .
|
$adress,
|
||||||
'L\'article <a href="' . helper::baseUrl() . $this->getUrl(0) . '/ ' . $this->getUrl(1) . '">' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . '</a> a reçu un nouveau commentaire.<br><br>',
|
'Nouveau commentaire déposé',
|
||||||
''
|
'Bonjour' . ' <strong>' . $firstname[$key] . ' ' . $lastname[$key] . '</strong>,<br><br>' .
|
||||||
);
|
'L\'article <a href="' . helper::baseUrl() . $this->getUrl(0) . '/ ' . $this->getUrl(1) . '">' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . '</a> a reçu un nouveau commentaire.<br><br>',
|
||||||
|
''
|
||||||
|
);
|
||||||
|
if( $sent === false) $error++;
|
||||||
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . $this->getUrl() . '#comment',
|
'redirect' => helper::baseUrl() . $this->getUrl() . '#comment',
|
||||||
'notification' => ($sent === true ? $notification . '<br/>Une notification a été envoyée.' : $notification . '<br/> Erreur de notification : ' . $sent),
|
'notification' => ($error === 0 ? $notification . '<br/>Une notification a été envoyée.' : $notification . '<br/> Erreur de notification : ' . $sent),
|
||||||
'state' => ($sent === true ? true : null)
|
'state' => ($sent === true ? true : null)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user