Bug d'actualisation du sitemap
This commit is contained in:
parent
74684864f0
commit
91112037e9
@ -1,7 +1,8 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Version 12.3.04
|
## Version 12.3.04
|
||||||
- Bug de notification de compte bloqué, la traduction n'est pas effectuée.
|
- Corrige un défaut d'actualisation de la liste des pages et du site map lorsque la page change d'id.
|
||||||
|
- Notification de compte bloqué, la traduction n'est pas effectuée.
|
||||||
- Amélioration du module, aspect de la liste des articles présenté en tableau et du bouton Lire la suite
|
- Amélioration du module, aspect de la liste des articles présenté en tableau et du bouton Lire la suite
|
||||||
|
|
||||||
## Version 12.3.03
|
## Version 12.3.03
|
||||||
|
258
core/core.php
258
core/core.php
@ -370,55 +370,10 @@ class common
|
|||||||
|
|
||||||
// Construit la liste des pages parents/enfants
|
// Construit la liste des pages parents/enfants
|
||||||
if ($this->hierarchy['all'] === []) {
|
if ($this->hierarchy['all'] === []) {
|
||||||
$pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC');
|
$this->buildHierarchy();
|
||||||
// Parents
|
|
||||||
foreach ($pages as $pageId => $pagePosition) {
|
|
||||||
if (
|
|
||||||
// Page parent
|
|
||||||
$this->getData(['page', $pageId, 'parentPageId']) === ""
|
|
||||||
// Ignore les pages dont l'utilisateur n'a pas accès
|
|
||||||
and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
|
||||||
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
|
||||||
and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
if ($pagePosition !== 0) {
|
|
||||||
$this->hierarchy['visible'][$pageId] = [];
|
|
||||||
}
|
|
||||||
if ($this->getData(['page', $pageId, 'block']) === 'bar') {
|
|
||||||
$this->hierarchy['bar'][$pageId] = [];
|
|
||||||
}
|
|
||||||
$this->hierarchy['all'][$pageId] = [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Enfants
|
|
||||||
foreach ($pages as $pageId => $pagePosition) {
|
|
||||||
if (
|
|
||||||
// Page parent
|
|
||||||
$parentId = $this->getData(['page', $pageId, 'parentPageId'])
|
|
||||||
// Ignore les pages dont l'utilisateur n'a pas accès
|
|
||||||
and (
|
|
||||||
($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
|
||||||
and $this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR
|
|
||||||
)
|
|
||||||
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
|
||||||
and $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])
|
|
||||||
and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
if ($pagePosition !== 0) {
|
|
||||||
$this->hierarchy['visible'][$parentId][] = $pageId;
|
|
||||||
}
|
|
||||||
if ($this->getData(['page', $pageId, 'block']) === 'bar') {
|
|
||||||
$this->hierarchy['bar'][$pageId] = [];
|
|
||||||
}
|
|
||||||
$this->hierarchy['all'][$parentId][] = $pageId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construit l'url
|
// Construit l'url
|
||||||
if ($this->url === '') {
|
if ($this->url === '') {
|
||||||
if ($url = $_SERVER['QUERY_STRING']) {
|
if ($url = $_SERVER['QUERY_STRING']) {
|
||||||
@ -706,6 +661,7 @@ class common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accède à la liste des pages parents et de leurs enfants
|
* Accède à la liste des pages parents et de leurs enfants
|
||||||
* @param int $parentId Id de la page parent
|
* @param int $parentId Id de la page parent
|
||||||
@ -731,6 +687,133 @@ class common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour construire le tableau des pages
|
||||||
|
* Appelée par le core uniquement
|
||||||
|
*/
|
||||||
|
|
||||||
|
private function buildHierarchy()
|
||||||
|
{
|
||||||
|
|
||||||
|
$pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC');
|
||||||
|
// Parents
|
||||||
|
foreach ($pages as $pageId => $pagePosition) {
|
||||||
|
if (
|
||||||
|
// Page parent
|
||||||
|
$this->getData(['page', $pageId, 'parentPageId']) === ""
|
||||||
|
// Ignore les pages dont l'utilisateur n'a pas accès
|
||||||
|
and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
||||||
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
|
and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
if ($pagePosition !== 0) {
|
||||||
|
$this->hierarchy['visible'][$pageId] = [];
|
||||||
|
}
|
||||||
|
if ($this->getData(['page', $pageId, 'block']) === 'bar') {
|
||||||
|
$this->hierarchy['bar'][$pageId] = [];
|
||||||
|
}
|
||||||
|
$this->hierarchy['all'][$pageId] = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Enfants
|
||||||
|
foreach ($pages as $pageId => $pagePosition) {
|
||||||
|
if (
|
||||||
|
// Page parent
|
||||||
|
$parentId = $this->getData(['page', $pageId, 'parentPageId'])
|
||||||
|
// Ignore les pages dont l'utilisateur n'a pas accès
|
||||||
|
and (
|
||||||
|
($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR
|
||||||
|
and $this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR
|
||||||
|
)
|
||||||
|
or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
|
and $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])
|
||||||
|
and $this->getUser('group') >= $this->getData(['page', $pageId, 'group'])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
if ($pagePosition !== 0) {
|
||||||
|
$this->hierarchy['visible'][$parentId][] = $pageId;
|
||||||
|
}
|
||||||
|
if ($this->getData(['page', $pageId, 'block']) === 'bar') {
|
||||||
|
$this->hierarchy['bar'][$pageId] = [];
|
||||||
|
}
|
||||||
|
$this->hierarchy['all'][$parentId][] = $pageId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Génère un fichier json avec la liste des pages
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private function tinyMcePages()
|
||||||
|
{
|
||||||
|
// Sauve la liste des pages pour TinyMCE
|
||||||
|
$parents = [];
|
||||||
|
$rewrite = (helper::checkRewrite()) ? '' : '?';
|
||||||
|
// Boucle de recherche des pages actives
|
||||||
|
foreach ($this->getHierarchy(null, false, false) as $parentId => $childIds) {
|
||||||
|
$children = [];
|
||||||
|
// Exclure les barres
|
||||||
|
if ($this->getData(['page', $parentId, 'block']) !== 'bar') {
|
||||||
|
// Boucler sur les enfants et récupérer le tableau children avec la liste des enfants
|
||||||
|
foreach ($childIds as $childId) {
|
||||||
|
$children[] = [
|
||||||
|
'title' => ' » ' . html_entity_decode($this->getData(['page', $childId, 'shortTitle']), ENT_QUOTES),
|
||||||
|
'value' => $rewrite . $childId
|
||||||
|
];
|
||||||
|
}
|
||||||
|
// Traitement
|
||||||
|
if (empty($childIds)) {
|
||||||
|
// Pas d'enfant, uniquement l'entrée du parent
|
||||||
|
$parents[] = [
|
||||||
|
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
||||||
|
'value' => $rewrite . $parentId
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
// Des enfants, on ajoute la page parent en premier
|
||||||
|
array_unshift($children, [
|
||||||
|
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
||||||
|
'value' => $rewrite . $parentId
|
||||||
|
]);
|
||||||
|
// puis on ajoute les enfants au parent
|
||||||
|
$parents[] = [
|
||||||
|
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
||||||
|
'value' => $rewrite . $parentId,
|
||||||
|
'menu' => $children
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Sitemap et Search
|
||||||
|
$children = [];
|
||||||
|
$children[] = [
|
||||||
|
'title' => 'Rechercher dans le site',
|
||||||
|
'value' => $rewrite . 'search'
|
||||||
|
];
|
||||||
|
$children[] = [
|
||||||
|
'title' => 'Plan du site',
|
||||||
|
'value' => $rewrite . 'sitemap'
|
||||||
|
];
|
||||||
|
$parents[] = [
|
||||||
|
'title' => 'Pages spéciales',
|
||||||
|
'value' => '#',
|
||||||
|
'menu' => $children
|
||||||
|
];
|
||||||
|
|
||||||
|
// Enregistrement : 3 tentatives
|
||||||
|
for ($i = 0; $i < 3; $i++) {
|
||||||
|
if (file_put_contents('core/vendor/tinymce/link_list.json', json_encode($parents, JSON_UNESCAPED_UNICODE), LOCK_EX) !== false) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Pause de 10 millisecondes
|
||||||
|
usleep(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accède à une valeur des variables http (ordre de recherche en l'absence de type : _COOKIE, _POST)
|
* Accède à une valeur des variables http (ordre de recherche en l'absence de type : _COOKIE, _POST)
|
||||||
* @param string $key Clé de la valeur
|
* @param string $key Clé de la valeur
|
||||||
@ -836,74 +919,6 @@ class common
|
|||||||
return ($this->checkCSRF() and $this->input['_POST'] !== []);
|
return ($this->checkCSRF() and $this->input['_POST'] !== []);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Génère un fichier json avec la liste des pages
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function listPages()
|
|
||||||
{
|
|
||||||
// Sauve la liste des pages pour TinyMCE
|
|
||||||
$parents = [];
|
|
||||||
$rewrite = (helper::checkRewrite()) ? '' : '?';
|
|
||||||
// Boucle de recherche des pages actives
|
|
||||||
foreach ($this->getHierarchy(null, false, false) as $parentId => $childIds) {
|
|
||||||
$children = [];
|
|
||||||
// Exclure les barres
|
|
||||||
if ($this->getData(['page', $parentId, 'block']) !== 'bar') {
|
|
||||||
// Boucler sur les enfants et récupérer le tableau children avec la liste des enfants
|
|
||||||
foreach ($childIds as $childId) {
|
|
||||||
$children[] = [
|
|
||||||
'title' => ' » ' . html_entity_decode($this->getData(['page', $childId, 'shortTitle']), ENT_QUOTES),
|
|
||||||
'value' => $rewrite . $childId
|
|
||||||
];
|
|
||||||
}
|
|
||||||
// Traitement
|
|
||||||
if (empty($childIds)) {
|
|
||||||
// Pas d'enfant, uniquement l'entrée du parent
|
|
||||||
$parents[] = [
|
|
||||||
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
|
||||||
'value' => $rewrite . $parentId
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
// Des enfants, on ajoute la page parent en premier
|
|
||||||
array_unshift($children, [
|
|
||||||
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
|
||||||
'value' => $rewrite . $parentId
|
|
||||||
]);
|
|
||||||
// puis on ajoute les enfants au parent
|
|
||||||
$parents[] = [
|
|
||||||
'title' => html_entity_decode($this->getData(['page', $parentId, 'shortTitle']), ENT_QUOTES),
|
|
||||||
'value' => $rewrite . $parentId,
|
|
||||||
'menu' => $children
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Sitemap et Search
|
|
||||||
$children = [];
|
|
||||||
$children[] = [
|
|
||||||
'title' => 'Rechercher dans le site',
|
|
||||||
'value' => $rewrite . 'search'
|
|
||||||
];
|
|
||||||
$children[] = [
|
|
||||||
'title' => 'Plan du site',
|
|
||||||
'value' => $rewrite . 'sitemap'
|
|
||||||
];
|
|
||||||
$parents[] = [
|
|
||||||
'title' => 'Pages spéciales',
|
|
||||||
'value' => '#',
|
|
||||||
'menu' => $children
|
|
||||||
];
|
|
||||||
|
|
||||||
// Enregistrement : 3 tentatives
|
|
||||||
for ($i = 0; $i < 3; $i++) {
|
|
||||||
if (file_put_contents('core/vendor/tinymce/link_list.json', json_encode($parents, JSON_UNESCAPED_UNICODE), LOCK_EX) !== false) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Pause de 10 millisecondes
|
|
||||||
usleep(10000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retourne une chemin localisé pour l'enregistrement des données
|
* Retourne une chemin localisé pour l'enregistrement des données
|
||||||
@ -930,14 +945,20 @@ class common
|
|||||||
/**
|
/**
|
||||||
* Génère un fichier un fichier sitemap.xml
|
* Génère un fichier un fichier sitemap.xml
|
||||||
* https://github.com/icamys/php-sitemap-generator
|
* https://github.com/icamys/php-sitemap-generator
|
||||||
* $command valeurs possible
|
|
||||||
* all : génère un site map complet
|
* all : génère un site map complet
|
||||||
* Sinon contient id de la page à créer
|
* Sinon contient id de la page à créer
|
||||||
|
* @param string Valeurs possibles
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function createSitemap($command = "all")
|
public function updateSitemap()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Rafraîchit la liste des pages après une modification de pageId notamment
|
||||||
|
$this->buildHierarchy();
|
||||||
|
|
||||||
|
// Actualise la liste des pages pour TinyMCE
|
||||||
|
$this->tinyMcePages();
|
||||||
|
|
||||||
//require_once "core/vendor/sitemap/SitemapGenerator.php";
|
//require_once "core/vendor/sitemap/SitemapGenerator.php";
|
||||||
|
|
||||||
$timezone = $this->getData(['config', 'timezone']);
|
$timezone = $this->getData(['config', 'timezone']);
|
||||||
@ -1034,6 +1055,8 @@ class common
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (file_exists('sitemap.xml') && file_exists('robots.txt'));
|
return (file_exists('sitemap.xml') && file_exists('robots.txt'));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1275,4 +1298,3 @@ class common
|
|||||||
$zip->close();
|
$zip->close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ class config extends common
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Mettre à jour le site map
|
// Mettre à jour le site map
|
||||||
$successSitemap = $this->createSitemap();
|
$successSitemap = $this->updateSitemap();
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
|
@ -168,10 +168,10 @@ class page extends common
|
|||||||
}
|
}
|
||||||
//file_put_contents(self::DATA_DIR . self::$i18nContent . '/content/' . $pageId . '.html', '<p>Contenu de votre nouvelle page.</p>');
|
//file_put_contents(self::DATA_DIR . self::$i18nContent . '/content/' . $pageId . '.html', '<p>Contenu de votre nouvelle page.</p>');
|
||||||
$this->setPage($pageId, '<p>Contenu de votre nouvelle page.</p>', self::$i18nContent);
|
$this->setPage($pageId, '<p>Contenu de votre nouvelle page.</p>', self::$i18nContent);
|
||||||
|
|
||||||
// Met à jour le sitemap
|
// Met à jour le sitemap
|
||||||
$this->createSitemap('all');
|
$this->updateSitemap();
|
||||||
// Mise à jour de la liste des pages pour TinyMCE
|
|
||||||
$this->listPages();
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . $pageId,
|
'redirect' => helper::baseUrl() . $pageId,
|
||||||
@ -295,10 +295,10 @@ class page extends common
|
|||||||
unlink(self::DATA_DIR . self::$i18nContent . '/content/' . $url[0] . '.html');
|
unlink(self::DATA_DIR . self::$i18nContent . '/content/' . $url[0] . '.html');
|
||||||
}
|
}
|
||||||
$this->deleteData(['module', $url[0]]);
|
$this->deleteData(['module', $url[0]]);
|
||||||
|
|
||||||
// Met à jour le sitemap
|
// Met à jour le sitemap
|
||||||
$this->createSitemap('all');
|
$this->updateSitemap();
|
||||||
// Mise à jour de la liste des pages pour TinyMCE
|
|
||||||
$this->listPages();
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl(false),
|
'redirect' => helper::baseUrl(false),
|
||||||
@ -505,9 +505,7 @@ class page extends common
|
|||||||
$this->setPage($pageId, $content, self::$i18nContent);
|
$this->setPage($pageId, $content, self::$i18nContent);
|
||||||
|
|
||||||
// Met à jour le sitemap
|
// Met à jour le sitemap
|
||||||
$this->createSitemap('all');
|
$this->updateSitemap();
|
||||||
// Mise à jour de la liste des pages pour TinyMCE
|
|
||||||
$this->listPages();
|
|
||||||
|
|
||||||
// Redirection vers la configuration
|
// Redirection vers la configuration
|
||||||
if (
|
if (
|
||||||
@ -554,12 +552,6 @@ class page extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Met à jour le site map
|
|
||||||
$this->createSitemap('all');
|
|
||||||
|
|
||||||
// Mise à jour de la liste des pages pour TinyMCE
|
|
||||||
$this->listPages();
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => $this->getData(['page', $this->getUrl(2), 'title']),
|
'title' => $this->getData(['page', $this->getUrl(2), 'title']),
|
||||||
|
Loading…
Reference in New Issue
Block a user