ZwiiCMS/core/module/sitemap/sitemap.php

117 lines
5.3 KiB
PHP
Raw Normal View History

2018-04-02 08:29:19 +02:00
<?php
/**
2021-02-17 13:51:12 +01:00
* This file is part of Zwii.
2018-04-02 08:29:19 +02:00
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
2021-02-17 13:49:58 +01:00
* @author Frédéric Tempez <frederic.tempez@outlook.com>
2023-01-09 10:23:32 +01:00
* @copyright Copyright (C) 2018-2023, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
2018-04-02 08:29:19 +02:00
*/
2021-12-10 15:39:09 +01:00
class sitemap extends common
{
public static $actions = [
'index' => self::GROUP_VISITOR
];
2018-04-02 08:29:19 +02:00
2022-09-29 08:45:59 +02:00
public static $siteMap = '';
2018-04-02 08:29:19 +02:00
2021-12-10 15:39:09 +01:00
/**
* Plan du site
*/
public function index()
{
$items = '<ul>';
foreach ($this->getHierarchy(null, true, null) as $parentId => $childIds) {
2021-12-10 15:57:51 +01:00
$items .= ' <li>';
2022-09-29 08:45:59 +02:00
if ($this->getData(['page', $parentId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
$pageUrl = ($parentId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $parentId : helper::baseUrl(false);
$items .= '<a href="' . $pageUrl . '">' . $this->getData(['page', $parentId, 'title']) . '</a>';
} else {
// page désactivée
$items .= $this->getData(['page', $parentId, 'title']);
}
// ou articles d'un blog
if (
$this->getData(['page', $parentId, 'moduleId']) === 'blog' &&
!empty($this->getData(['module', $parentId, 'posts']))
) {
$items .= '<ul>';
// Ids des articles par ordre de publication
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $parentId, 'posts']), 'publishedOn', 'SORT_DESC');
$articleIdsStates = helper::arrayColumn($this->getData(['module', $parentId, 'posts']), 'state', 'SORT_DESC');
$articleIds = [];
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
if ($articlePublishedOn <= time() and $articleIdsStates[$articleId]) {
$articleIds[] = $articleId;
}
}
foreach ($articleIds as $articleId => $article) {
if ($this->getData(['module', $parentId, 'posts', $article, 'state']) === true) {
$items .= ' <li>';
$items .= '<a href="' . helper::baseUrl() . $parentId . '/' . $article . '">' . $this->getData(['module', $parentId, 'posts', $article, 'title']) . '</a>';
$items .= '</li>';
}
}
$items .= '</ul>';
}
foreach ($childIds as $childId) {
$items .= '<ul>';
// Sous-page
$items .= ' <li>';
if ($this->getData(['page', $childId, 'disable']) === false && $this->getUser('group') >= $this->getData(['page', $parentId, 'group'])) {
$pageUrl = ($childId !== $this->getData(['locale', 'homePageId'])) ? helper::baseUrl() . $childId : helper::baseUrl(false);
$items .= '<a href="' . $pageUrl . '">' . $this->getData(['page', $childId, 'title']) . '</a>';
2021-12-10 15:39:09 +01:00
} else {
// page désactivée
2022-09-29 08:45:59 +02:00
$items .= $this->getData(['page', $childId, 'title']);
2021-12-10 15:39:09 +01:00
}
2022-09-29 08:45:59 +02:00
$items .= '</li>';
// Articles d'une sous-page blog
if (
$this->getData(['page', $childId, 'moduleId']) === 'blog' &&
!empty($this->getData(['module', $childId, 'posts']))
) {
$items .= '<ul>';
2021-12-10 15:39:09 +01:00
// Ids des articles par ordre de publication
2022-09-29 08:45:59 +02:00
$articleIdsPublishedOns = helper::arrayColumn($this->getData(['module', $childId, 'posts']), 'publishedOn', 'SORT_DESC');
$articleIdsStates = helper::arrayColumn($this->getData(['module', $childId, 'posts']), 'state', 'SORT_DESC');
2021-12-10 15:39:09 +01:00
$articleIds = [];
foreach ($articleIdsPublishedOns as $articleId => $articlePublishedOn) {
if ($articlePublishedOn <= time() and $articleIdsStates[$articleId]) {
$articleIds[] = $articleId;
}
}
foreach ($articleIds as $articleId => $article) {
2022-09-29 08:45:59 +02:00
if ($this->getData(['module', $childId, 'posts', $article, 'state']) === true) {
2021-12-10 15:57:51 +01:00
$items .= ' <li>';
2022-09-29 08:45:59 +02:00
$items .= '<a href="' . helper::baseUrl() . $childId . '/' . $article . '">' . $this->getData(['module', $childId, 'posts', $article, 'title']) . '</a>';
2021-12-10 15:39:09 +01:00
$items .= '</li>';
}
}
$items .= '</ul>';
}
2022-09-29 08:45:59 +02:00
$items .= '</ul>';
}
2021-12-10 15:57:51 +01:00
$items .= '</li>';
2021-12-10 15:39:09 +01:00
}
2021-12-10 15:57:51 +01:00
// Fin du grand bloc
2022-09-29 08:45:59 +02:00
$items .= '</ul>';
self::$siteMap = $items;
2021-12-10 15:39:09 +01:00
// Valeurs en sortie
$this->addOutput([
2022-10-02 10:59:42 +02:00
'title' => helper::translate('Plan du site'),
2021-12-10 15:39:09 +01:00
'view' => 'index'
]);
}
}