XoopsModules25x/about

View on GitHub
blocks/blocks.php

Summary

Maintainability
A
1 hr
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\Helper;

/** @var Helper $helper */

defined('XOOPS_ROOT_PATH') || exit('Restricted access');
/**
 * @return mixed
 */
function about_block_menu_show()
{
    $moduleDirName = basename(dirname(__DIR__));

    $helper        = Helper::getInstance();
    $pageHandler   = $helper->getHandler('Page');
    $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));
    $menu_criteria->setSort('page_order');
    $menu_criteria->order = 'ASC';
    $fields               = [
        'page_id',
        'page_menu_title',
        'page_blank',
        'page_menu_status',
        'page_status',
    ];
    $page_menu            = $pageHandler->getAll($menu_criteria, $fields, false);
    foreach ($page_menu as $k => $v) {
        $page_menu[$k]['links'] = $helper->url("index.php?page_id={$v['page_id']}");
    }

    return $page_menu;
}

/**
 * @param $options
 * @return array|bool
 */
function about_block_page_show($options)
{
    if (empty($options[0])) {
        return false;
    }
    $moduleDirName = basename(dirname(__DIR__));
    $helper = Helper::getInstance();

    $myts        = \MyTextSanitizer::getInstance();
    $block       = [];
    $pageHandler = $helper->getHandler('Page');
    $page        = $pageHandler->get($options[0]);
    if (!is_object($page)) {
        return false;
    }
    $page_text = strip_tags($page->getVar('page_text', 'n'));
    if ($options[1] > 0) {
        $url        = $helper->url("index.php?page_id={$options[0]}");
        $trimmarker = <<<EOF
<a href="{$url}" class="more">{$options[2]}</a>
EOF;
        $page_text  = xoops_substr($page_text, 0, $options[1]) . $trimmarker;
    }

    $block['page_text']  = $myts->nl2br($page_text);
    $block['page_image'] = 1 == $options[3] ? $helper->url($page->getVar('page_image', 's')) : '';

    return $block;
}

/**
 * @param $options
 * @return string
 */
function about_block_page_edit($options)
{
    $moduleDirName = basename(dirname(__DIR__));
    $helper       = Helper::getInstance();
    $options_page = [];

    $helper->loadLanguage('blocks');
    $pageHandler = $helper->getHandler('Page');
    $criteria    = new \CriteriaCompo();
    $criteria->add(new \Criteria('page_status', Constants::PUBLISHED), 'AND');
    $criteria->add(new \Criteria('page_type', Constants::PAGE_TYPE_PAGE));
    $criteria->setSort('page_order');
    $criteria->order = 'ASC';
    $fields          = ['page_id', 'page_title', 'page_image'];
    $pages           = $pageHandler->getAll($criteria, $fields, false);
    $page_title      = '';
    foreach ($pages as $k => $v) {
        $page_title       = '<a href="' . $helper->url("index.php?page_id={$k}") . '" target="_blank">' . $v['page_title'] . '</a>';
        $options_page[$k] = empty($v['page_image']) ? $page_title : $page_title . '<img src="' . $helper->url('assets/images/picture.png') . '">';
    }
    //    require_once dirname(__DIR__) . '/include/xoopsformloader.php';
    xoops_load('blockform', $moduleDirName);
    $form        = new XoopsModules\About\BlockForm();
    $page_select = new \XoopsFormRadio(_MB_ABOUT_BLOCKPAGE, 'options[0]', $options[0], '<br>');
    $page_select->addOptionArray($options_page);
    $form->addElement($page_select);
    $form->addElement(new \XoopsFormText(_MB_ABOUT_TEXT_LENGTH, 'options[1]', 5, 5, $options[1]));
    $form->addElement(new \XoopsFormText(_MB_ABOUT_VIEW_MORELINKTEXT, 'options[2]', 30, 50, $options[2]));
    $form->addElement(new \XoopsFormRadioYN(_MB_ABOUT_DOTITLEIMAGE, 'options[3]', $options[3]));

    return $form->render();
}