| 
<?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)
 * @since          1.0.0
 * @author         Mengjue Shao <[email protected]>
 * @author         Susheng Yang <[email protected]>
 */
 
 use Xmf\Request;
 use  Xmf\Module\Admin;
 use XoopsModules\About\Constants;
 use XoopsModules\About\PageHandler;
 /** @var \XoopsModules\About\PageHandler $pageHandler */
 /** @var Helper $helper */
 
 require_once __DIR__ . '/admin_header.php';
 
 xoops_cp_header();
 
 $adminObject = Xmf\Module\Admin::getInstance();
 $adminObject->displayNavigation(basename(__FILE__));
 
 $op      = Request::getCmd('op', null);
 $op      = $op ?? (isset($_REQUEST['id']) ? 'edit' : 'list');
 $page_id = Request::getInt('id', null);
 
 //$pageHandler = new About\PageHandler();
 
 switch ($op) {
 default:
 case 'list':
 // Page order
 if (Request::hasVar('page_order', 'POST')) {
 $page_order = Request::getArray('page_order', [], 'POST'); //$_POST['page_order'];
 foreach ($page_order as $page_id => $order) {
 $pageObj = $pageHandler->get($page_id);
 if ($page_order[$page_id] != $pageObj->getVar('page_order')) {
 $pageObj->setVar('page_order', $page_order[$page_id]);
 $pageHandler->insert($pageObj);
 }
 unset($pageObj);
 }
 }
 // Set index
 if (Request::hasVar('page_index', 'POST')) {
 $page_index = Request::getInt('page_index', Constants::NOT_INDEX, 'POST');
 $pageObj    = $pageHandler->get($page_index);
 if ($page_index != $pageObj->getVar('page_index')) {
 $pageObj = $pageHandler->get($page_index);
 if (!$pageObj->getVar('page_title')) {
 $helper->redirect('admin/admin.page.php', Constants::REDIRECT_DELAY_MEDIUM, _AM_ABOUT_PAGE_ORDER_ERROR);
 }
 $pageHandler->updateAll('page_index', Constants::NOT_INDEX, null);
 unset($criteria);
 $pageObj->setVar('page_index', Constants::DEFAULT_INDEX);
 $pageHandler->insert($pageObj);
 }
 unset($pageObj);
 }
 $fields = [
 'page_id',
 'page_pid',
 'page_menu_title',
 'page_author',
 'page_pushtime',
 'page_blank',
 'page_menu_status',
 'page_type',
 'page_status',
 'page_order',
 'page_index',
 'page_tpl',
 ];
 
 $criteria = new \CriteriaCompo();
 $criteria->setSort('page_order');
 $criteria->order = 'ASC';
 $pages           = $pageHandler->getTrees(0, '--', $fields);
 /** @var \XoopsMemberHandler $memberHandler */
 $memberHandler = xoops_getHandler('member');
 
 foreach ($pages as $k => $v) {
 $pages[$k]['page_menu_title'] = $v['prefix'] . $v['page_menu_title'];
 $pages[$k]['page_pushtime']   = formatTimestamp($v['page_pushtime'], _DATESTRING);
 $thisuser                     = $memberHandler->getUser($v['page_author']);
 $pages[$k]['page_author']     = $thisuser->getVar('uname');
 unset($thisuser);
 }
 
 $xoopsTpl->assign('pages', $pages);
 $xoopsTpl->display('db:about_admin_page.tpl');
 break;
 case 'new':
 $GLOBALS['xoTheme']->addStylesheet("modules/{$moduleDirName}/assets/css/admin_style.css");
 $pageObj = $pageHandler->create();
 $form    = require $helper->path('include/form.page.php');
 $form->display();
 break;
 case 'edit':
 $GLOBALS['xoTheme']->addStylesheet("modules/{$moduleDirName}/assets/css/admin_style.css");
 $pageObj = $pageHandler->get($page_id);
 $form    = require $helper->path('include/form.page.php');
 $form->display();
 break;
 case 'save':
 if (!$GLOBALS['xoopsSecurity']->check()) {
 $helper->redirect('admin/admin.page.php', Constants::REDIRECT_DELAY_MEDIUM, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
 }
 $pageObj = $pageHandler->get($page_id); // will get page_obj if $page_id is valid, create one if not
 
 // Assign value to elements of objects
 foreach (array_keys($pageObj->vars) as $key) {
 if (isset($_POST[$key]) && $_POST[$key] != $pageObj->getVar($key)) {
 $pageObj->setVar($key, $_POST[$key]);
 }
 }
 // Assign menu title
 if (empty($_POST['page_menu_title'])) {
 $pageObj->setVar('page_menu_title', Request::getString('page_title', ''));
 }
 // Set index
 if (!$pageHandler->getCount()) {
 $pageObj->setVar('page_index', Constants::DEFAULT_INDEX);
 }
 
 // Set submitter
 global $xoopsUser;
 $pageObj->setVar('page_author', $xoopsUser->getVar('uid'));
 $pageObj->setVar('page_pushtime', time());
 
 /* removed - this is now done during module install/update
 require_once $helper->path("include/functions.php");
 if (aboutmkdirs(XOOPS_UPLOAD_PATH . "/{$moduleDirName}")) {
 $upload_path = XOOPS_UPLOAD_PATH . "/{$moduleDirName}";
 }
 */
 
 $upload_path = XOOPS_UPLOAD_PATH . "/{$moduleDirName}";
 
 // Upload image
 if (!empty($_FILES['userfile']['name'])) {
 require_once XOOPS_ROOT_PATH . '/class/uploader.php';
 $allowed_mimetypes = ['image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/x-png'];
 $maxfilesize       = 500000;
 $maxfilewidth      = 1200;
 $maxfileheight     = 1200;
 $uploader          = new \XoopsMediaUploader($upload_path, $allowed_mimetypes, $maxfilesize, $maxfilewidth, $maxfileheight);
 if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
 $uploader->setPrefix('attch_');
 if (!$uploader->upload()) {
 $error_upload = $uploader->getErrors();
 } elseif (file_exists($uploader->getSavedDestination())) {
 if ($pageObj->getVar('page_image')) {
 @unlink($upload_path . '/' . $pageObj->getVar('page_image'));
 }
 $pageObj->setVar('page_image', $uploader->getSavedFileName());
 }
 }
 }
 
 // Delete image
 if (Request::hasVar('delete_image', 'POST') && empty($_FILES['userfile']['name'])) {
 @unlink($upload_path . '/' . $pageObj->getVar('page_image'));
 $pageObj->setVar('page_image', '');
 }
 
 // Insert object
 if ($pageHandler->insert($pageObj)) {
 $helper->redirect('admin/admin.page.php', Constants::REDIRECT_DELAY_MEDIUM, sprintf(_AM_ABOUT_SAVEDSUCCESS, _AM_ABOUT_PAGE_INSERT));
 }
 
 echo $pageObj->getHtmlErrors();
 $format = 'p';
 $form   = require $helper->path('include/form.page.php');
 $form->display();
 
 break;
 case 'delete':
 $pageObj = $pageHandler->get($page_id);
 $image   = XOOPS_UPLOAD_PATH . "/{$moduleDirName}/" . $pageObj->getVar('page_image');
 if (Request::hasVar('ok', 'REQUEST') && Constants::CONFIRM_OK == $_REQUEST['ok']) {
 if ($pageHandler->delete($pageObj)) {
 if (file_exists($image)) {
 @unlink($image);
 }
 $helper->redirect('admin/admin.page.php', Constants::REDIRECT_DELAY_MEDIUM, _AM_ABOUT_DELETESUCCESS);
 } else {
 echo $pageObj->getHtmlErrors();
 }
 } else {
 xoops_confirm(['ok' => Constants::CONFIRM_OK, 'id' => $pageObj->getVar('page_id'), 'op' => 'delete'], $_SERVER['REQUEST_URI'], sprintf(_AM_ABOUT_RUSUREDEL, $pageObj->getVar('page_menu_title')));
 }
 break;
 }
 
 require_once __DIR__ . '/admin_footer.php';
 
 |