<?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 <[email protected]> 
 * @author         Susheng Yang <[email protected]> 
 */ 
 
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'; 
 
 |