blocks/news_randomnews.php
<?php declare(strict_types=1);
/*
* 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 {@link https://xoops.org/ XOOPS Project}
* @license {@link https://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later}
* @author XOOPS Development Team
*/
use XoopsModules\News;
use XoopsModules\News\Helper;
use XoopsModules\News\NewsStory;
// require_once XOOPS_ROOT_PATH . '/modules/news/class/class.newsstory.php';
/**
* @param $options
*
* @return array|string
*/
function b_news_randomnews_show($options)
{
/** @var Helper $helper */
if (!class_exists(Helper::class)) {
return false;
}
$helper = Helper::getInstance();
$myts = \MyTextSanitizer::getInstance();
$block = [];
$block['sort'] = $options[0];
$tmpstory = new NewsStory();
$restricted = News\Utility::getModuleOption('restrictindex');
$dateformat = News\Utility::getModuleOption('dateformat');
$infotips = News\Utility::getModuleOption('infotips');
if ('' == $dateformat) {
$dateformat = 's';
}
if (0 == $options[4]) {
$stories = $tmpstory->getRandomNews((int)$options[1], 0, $restricted, 0, 1, $options[0]);
} else {
$topics = array_slice($options, 4);
$stories = $tmpstory->getRandomNews((int)$options[1], 0, $restricted, $topics, 1, $options[0]);
}
unset($tmpstory);
if (0 == count($stories)) {
return '';
}
foreach ($stories as $story) {
$news = [];
$title = $story->title();
if (mb_strlen($title) > $options[2]) {
$title = xoops_substr($title, 0, $options[2] + 3);
}
$news['title'] = $title;
$news['id'] = $story->storyid();
$news['date'] = formatTimestamp($story->published(), $dateformat);
$news['hits'] = $story->counter();
$news['rating'] = $story->rating();
$news['votes'] = $story->votes();
$news['author'] = sprintf('%s %s', _POSTEDBY, $story->uname());
$news['topic_title'] = $story->topic_title();
$news['topic_color'] = '#' . $myts->displayTarea($story->topic_color);
$news['picture'] = XOOPS_URL . '/uploads/news/image/' . $story->picture();
$news['pictureinfo'] = $story->pictureinfo();
if ($options[3] > 0) {
$html = 1 == $story->nohtml() ? 0 : 1;
$news['teaser'] = News\Utility::truncateTagSafe($myts->displayTarea($story->hometext, $html), $options[3] + 3);
$news['infotips'] = ' title="' . $story->title() . '"';
} else {
$news['teaser'] = '';
if ($infotips > 0) {
$news['infotips'] = ' title="' . News\Utility::makeInfotips($story->hometext()) . '"';
} else {
$news['infotips'] = ' title="' . $story->title() . '"';
}
}
$block['stories'][] = $news;
}
$block['lang_read_more'] = _MB_READMORE;
return $block;
}
/**
* @param $options
*
* @return string
*/
function b_news_randomnews_edit($options)
{
global $xoopsDB;
$form = _MB_NEWS_ORDER . " <select name='options[]'>";
$form .= "<option value='published'";
if ('published' === $options[0]) {
$form .= ' selected';
}
$form .= '>' . _MB_NEWS_DATE . "</option>\n";
$form .= "<option value='counter'";
if ('counter' === $options[0]) {
$form .= ' selected';
}
$form .= '>' . _MB_NEWS_HITS . '</option>';
$form .= "<option value='rating'";
if ('rating' === $options[0]) {
$form .= ' selected';
}
$form .= '>' . _MB_NEWS_RATE . '</option>';
$form .= "</select>\n";
$form .= ' ' . _MB_NEWS_DISP . " <input type='text' name='options[]' value='" . $options[1] . "'> " . _MB_NEWS_ARTCLS;
$form .= ' <br><br>' . _MB_NEWS_CHARS . " <input type='text' name='options[]' value='" . $options[2] . "'> " . _MB_NEWS_LENGTH . '<br><br>';
$form .= _MB_NEWS_TEASER . " <input type='text' name='options[]' value='" . $options[3] . "'>" . _MB_NEWS_LENGTH;
$form .= '<br><br>' . _MB_SPOTLIGHT_TOPIC . "<br><select id='options[4]' name='options[]' multiple='multiple'>";
// require_once XOOPS_ROOT_PATH . '/modules/news/class/xoopsstory.php';
$xt = new \XoopsModules\News\XoopsTopic($xoopsDB->prefix('news_topics'));
$alltopics = $xt->getTopicsList();
$alltopics[0]['title'] = _MB_SPOTLIGHT_ALL_TOPICS;
ksort($alltopics);
$size = count($options);
foreach ($alltopics as $topicid => $topic) {
$sel = '';
for ($i = 4; $i < $size; ++$i) {
if ($options[$i] == $topicid) {
$sel = ' selected';
}
}
$form .= "<option value='$topicid'$sel>" . $topic['title'] . '</option>';
}
$form .= '</select><br>';
return $form;
}
/**
* @param $options
*/
function b_news_randomnews_onthefly($options): void
{
$options = explode('|', $options);
$block = b_news_randomnews_show($options);
$tpl = new \XoopsTpl();
$tpl->assign('block', $block);
$tpl->display('db:news_block_moderate.tpl');
}