XoopsModules25x/about

View on GitHub
index.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * About
 *
 * You may not change or alter any portion of this comment or credits
 * of supporting developers from this source code or any supporting source code
 * which is considered copyrighted (c) material of the original comment or credit authors.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @copyright      The XOOPS Co.Ltd. http://www.xoops.com.cn
 * @copyright      XOOPS Project (https://xoops.org)
 * @license        GNU GPL 2 or later (https://www.gnu.org/licenses/gpl-2.0.html)
 * @package        about
 * @since          1.0.0
 * @author         Mengjue Shao <magic.shao@gmail.com>
 * @author         Susheng Yang <ezskyyoung@gmail.com>
 */

use XoopsModules\About\Constants;
use XoopsModules\About\Utility;
use XoopsModules\About\PageHandler;
use XoopsModules\About\Helper;

/** @var PageHandler $pageHandler */
/** @var Helper $helper */

require_once __DIR__ . '/header.php';

$page_id = Xmf\Request::getInt('page_id', 0);
//$page_id      = isset($_REQUEST['page_id']) ? $_REQUEST['page_id'] : '';
//$pageHandler     = new About\PageHandler($db);

$myts = \MyTextSanitizer::getInstance();

// Menu
$menu_criteria = new \CriteriaCompo();
$menu_criteria->add(new \Criteria('page_status', Constants::PUBLISHED), 'AND');
$menu_criteria->add(new \Criteria('page_menu_status', Constants::IN_MENU), 'AND');
$menu_criteria->setSort('page_order');
$menu_criteria->order = 'ASC';
$fields               = [
    'page_id',
    'page_pid',
    'page_menu_title',
    'page_blank',
    'page_menu_status',
    'page_status',
    'page_text',
];

$menu = $pageHandler->getAll($menu_criteria, $fields, false);
foreach ($menu as $k => $v) {
    $page_text             = $myts->displayTarea(trim($v['page_text']), 1,1,1,1,1);
    $menu[$k]['page_text'] = false;
    if (preg_match('/^https?\:\/\//', $page_text)) {
        $menu[$k]['page_text'] = true;
    }
    //    $menu[$k]['page_text'] = trim($v['page_text']) === 'http://' ? true : false;
}
$page_menu = $pageHandler->menuTree($menu);

// Display
if (Constants::PAGE == $helper->getConfig('display', Constants::PAGE) || !empty($page_id)) {
    // Fun menu display
    $criteria = new \CriteriaCompo();
    if (!empty($page_id)) {
        $criteria->add(new \Criteria('page_id', $page_id));
    } else {
        $criteria->add(new \Criteria('page_index', Constants::DEFAULT_INDEX));
    }
    $criteria->add(new \Criteria('page_status', Constants::PUBLISHED));

    $criteria->setSort('page_order');
    $criteria->order = 'ASC';
    $page            = current($pageHandler->getObjects($criteria, null, false));
    if (!empty($page)) {
        $xoopsOption['xoops_pagetitle'] = htmlspecialchars($page['page_title'] . ' - ' . $helper->getModule()->name(), ENT_QUOTES | ENT_HTML5);
        $xoopsOption['template_main']   = Utility::getTemplate('page', $page['page_tpl']);
    } else {
        $xoopsOption['xoops_pagetitle'] = htmlspecialchars(_MD_ABOUT_INDEX . ' - ' . $helper->getModule()->name(), ENT_QUOTES | ENT_HTML5);
        $xoopsOption['template_main']   = Utility::getTemplate();
    }

    require_once XOOPS_ROOT_PATH . '/header.php';
    $GLOBALS['xoTheme']->addStylesheet("modules/{$moduleDirName}/assets/css/style.css");
    $GLOBALS['xoTheme']->addStylesheet("modules/{$moduleDirName}/assets/js/jquery-treeview/jquery.treeview.css");
    $GLOBALS['xoTheme']->addScript('browse.php?Frameworks/jquery/jquery.js');
    $GLOBALS['xoTheme']->addScript("modules/{$moduleDirName}/assets/js/jquery-treeview/jquery.treeview.js");

    if (!empty($page)) {
//        $page['page_text'] = $myts->undoHtmlSpecialChars($page['page_text']);
        $page['page_text'] = $myts->undoHtmlSpecialChars($myts->displayTarea($page['page_text'], 1,1,1,1,1));
        if (Constants::PAGE_TYPE_LINK == $page['page_type']) {
            header('location: ' . $page['page_text']);
        }
        /** @var xos_opal_Theme $xoTheme */
        $xoTheme->addMeta('meta', 'description', htmlspecialchars($page['page_menu_title'], ENT_QUOTES | ENT_HTML5));
        $xoopsTpl->assign('pagemenu', $page_menu);
        $xoopsTpl->assign('page', $page);
    }
} else {
    // List (Category) display
    $xoopsOption['xoops_pagetitle'] = $helper->getModule()->name();
    $xoopsOption['template_main']   = Utility::getTemplate('list');
    require_once XOOPS_ROOT_PATH . '/header.php';
    $GLOBALS['xoTheme']->addStylesheet("modules/{$moduleDirName}/assets/css/style.css");

    $criteria = new \CriteriaCompo();
    $criteria->add(new \Criteria('page_status', Constants::PUBLISHED));
    $criteria->setSort('page_order');
    $criteria->order = 'ASC';
    $list            = $pageHandler->getAll($criteria, null, false);
    foreach ($list as $k => $v) {
        $text                      = strip_tags($myts->undoHtmlSpecialChars($myts->displayTarea($v['page_text'], 1,1,1,1,1)));
        $list[$k]['page_text']     = xoops_substr($text, 0, $helper->getConfig('str_ereg', Constants::DEFAULT_EREG));
        $list[$k]['page_pushtime'] = formatTimestamp($v['page_pushtime'], _SHORTDATESTRING);
    }
    $xoopsTpl->assign('list', $list);
}

// get breadcrumb
$tree_open = [];
if (!empty($bread)) {
    $bread = array_reverse($pageHandler->getBread($menu, $page_id), true);
    foreach ($bread as $k => $v) {
        if ($k != $page_id) {
            $xoBreadcrumbs[] = ['title' => $v, 'link' => $helper->url("index.php?page_id={$k}")];
        } else {
            $xoBreadcrumbs[] = ['title' => $v];
        }
        $tree_open[$k] = $k;
    }
    $xoopsTpl->assign('tree_open', $tree_open);
}
$xoopsTpl->assign('page_id', $page_id);

require_once __DIR__ . '/footer.php';