blocks.news.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 229 行
PHP
229 行
<?php
/**
* Article management
*
* @copyright The XOOPS project http://www.xoops.org/
* @license http://www.fsf.org/copyleft/gpl.html GNU public license
* @author Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
* @since 1.00
* @version $Id$
* @package module::article
*/
if (!defined('XOOPS_ROOT_PATH')){ exit(); }
include dirname(dirname(__FILE__))."/include/vars.php";
mod_loadFunctions("parse", $GLOBALS["artdirname"]);
/**
* Functions handling module blocks
* @package module::article
*
* @author D.J. (phppp)
* @copyright copyright © 2000 The XOOPS Project
*
* @param VAR_PREFIX variable prefix for the function name
*/
art_parse_function('
/**#@+
* Function to display news item: spotlight + recent news
*
* {@link spotlight}
* {@link config}
*
* @param array $options:
* 0 - display mode: 0 - compact title list; 1 sorted by categories
* 1 - limit for article count;
* 2 - title length;
* 3 - allowed categories;
*/
function [VAR_PREFIX]_block_news_show( $options )
{
global $xoopsDB;
static $access_cats;
$block = array();
if(!isset($access_cats)){
$permission_handler =& xoops_getmodulehandler("permission", $GLOBALS["artdirname"]);
$access_cats = $permission_handler->getCategories("access");
}
if (!empty($options[3])) {
$allowed_cats = array_filter(array_slice($options, 3));
}else{
$allowed_cats = $access_cats;
}
$allowed_cats = array_intersect($allowed_cats, $access_cats);
if( count($allowed_cats) ==0 ) {
return $block;
}
mod_loadFunctions("url", $GLOBALS["artdirname"]);
$spotlight_handler =& xoops_getmodulehandler("spotlight", $GLOBALS["artdirname"]);
$sp_data = $spotlight_handler->getContent(false);
foreach($sp_data as $key => $val){
$block["spotlight"][$key] = $val;
}
$block["spotlight"]["url"] = art_buildUrl(XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.article.php", array("article" => $block["spotlight"]["art_id"]));
mod_loadFunctions("author", $GLOBALS["artdirname"]);
$users = art_getAuthorNameFromId($sp_data["uid"], true, true);
$block["spotlight"]["author"] = $users[$sp_data["uid"]] ;
if(!empty($sp_data["writer_id"])) {
$writers = art_getWriterNameFromIds($sp_data["writer_id"]);
$block["spotlight"]["writer"] = $writers[$sp_data["writer_id"]] ;
}
$category_handler =& xoops_getmodulehandler("category", $GLOBALS["artdirname"]);
if(empty($options[0])):
$sql = " SELECT art_id, art_title, art_time_publish, cat_id, ( art_comments + art_trackbacks ) AS comments ".
" FROM " . art_DB_prefix("article").
" WHERE cat_id IN (" . implode(",", $allowed_cats) . ") ".
" AND art_time_publish >0 ".
" ORDER BY art_time_publish DESC";
if (!$result = $xoopsDB->query($sql, $options[1], 0)) {
xoops_error($xoopsDB->error());
return $block;
}
mod_loadFunctions("time", $GLOBALS["artdirname"]);
$articles = array();
$cids = array();
while ($row = $xoopsDB->fetchArray($result)) {
$_art = array();
$_art["title_full"] = htmlspecialchars($row["art_title"]);
/*
if(!empty($options[2])){
$row["art_title"] = xoops_substr($row["art_title"], 0, $options[2]);
}
*/
$_art["title"] = $row["art_title"];
$_art["time"] = art_formatTimestamp($row["art_time_publish"]);
$_art["comments"] = $row["comments"];
$_art["category"] = $row["cat_id"];
$_art["url"] = art_buildUrl(XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.article.php", array("article" => $row["art_id"]));
$articles[$row["art_id"]] = $_art;
$cids[$row["cat_id"]] = 1;
}
$criteria = new Criteria("cat_id", "(".implode(",",array_keys($cids)).")", "IN");
$categories_obj = $category_handler->getAll($criteria, array("cat_title"));
foreach(array_keys($articles) as $id){
$articles[$id]["title"] = "[".$categories_obj[$articles[$id]["category"]]->getVar("cat_title", "n")."] ".$articles[$id]["title"];
if(!empty($options[2])){
$articles[$id]["title"] = xoops_substr($articles[$id]["title"], 0, $options[2]);
}
$articles[$id]["title"] = htmlspecialchars($articles[$id]["title"]);
}
$categories = array();
$categories_top = $category_handler->getIds(new Criteria("cat_pid", 0));
foreach(array_intersect($categories_top, array_keys($categories_obj)) as $cid) {
$categories[$cid]["title"] = $categories_obj[$cid]->getVar("cat_title");
$categories[$cid]["url"] = art_buildUrl(XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.category.php", array("category" => $cid));
}
$block["articles"] =& $articles;
$block["categories"] =& $categories;
else:
$articles_id = array();
$criteria = new Criteria("cat_id", "(".implode(",", $allowed_cats).")", "IN");
$criteria->setSort("cat_order");
$categories_obj = $category_handler->getAll($criteria, array("cat_title", "cat_lastarticles"));
foreach(array_keys($categories_obj) as $id){
if(!$articles_category = $category_handler->getLastArticleIds($categories_obj[$id], $options[1])) continue;
$articles_id = array_merge($articles_id, $articles_category);
}
$sql = " SELECT art_id, art_title, art_time_publish, ( art_comments + art_trackbacks ) AS comments ".
" FROM " . art_DB_prefix("article").
" WHERE art_id IN (" . implode(",", array_unique($articles_id)) . ") ";
if (!$result = $xoopsDB->query($sql)) {
xoops_error($xoopsDB->error());
return $block;
}
$articles = array();
while ($row = $xoopsDB->fetchArray($result)) {
$_art = array();
$_art["title_full"] = htmlspecialchars($row["art_title"]);
if(!empty($options[2])){
$row["art_title"] = xoops_substr($row["art_title"], 0, $options[2]);
}
$_art["title"] = htmlspecialchars($row["art_title"]);
$_art["time"] = art_formatTimestamp($row["art_time_publish"]);
$_art["comments"] = $row["comments"];
$_art["url"] = art_buildUrl(XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.article.php", array("article" => $row["art_id"]));
$articles[$row["art_id"]] = $_art;
}
$categories = array();
foreach(array_keys($categories_obj) as $id){
$category =& $categories_obj[$id];
$cat = array(
"id" => $id,
"title" => $category->getVar("cat_title"),
"image" => $category->getImage(),
"url" => art_buildUrl(XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.category.php", array("category" => $id)),
"articles" => array(),
);
$articles_category_id = $category_handler->getLastArticleIds($category, $options[1]);
foreach($articles_category_id as $art_id){
if(!isset($articles[$art_id])) continue;
$cat["articles"][] =& $articles[$art_id];
}
$categories[$id] = $cat;
unset($cat);
}
$block["categories"] =& $categories;
endif;
$block["lang"] = array(
"categories" => art_constant("MB_CATEGORIES"),
"articles" => art_constant("MB_ARTICLES"),
"comments" => art_constant("MB_COMMENTS"),
"views" => art_constant("MB_VIEWS"),
);
$block["mode"] = $options[0];
$block["dirname"] = $GLOBALS["artdirname"];
return $block;
}
function [VAR_PREFIX]_block_news_edit($options)
{
$form = art_constant("MB_DISPLAY_MODE")." <input type=\"text\" name=\"options[0]\" value=\"" . $options[0] . "\" /><br /><br />";
$form .= art_constant("MB_ITEMS")." <input type=\"text\" name=\"options[1]\" value=\"" . $options[1] . "\" /><br /><br />";
$form .= art_constant("MB_TITLE_LENGTH")." <input type=\"text\" name=\"options[2]\" value=\"" . $options[2] . "\" /><br /><br />";
$category_handler =& xoops_getmodulehandler("category", $GLOBALS["artdirname"]);
$isAll = empty($options[3]) ? true : false;
$options_cat = array_slice($options, 3); // get allowed categories
$form .= art_constant("MB_CATEGORYLIST")." <select name=\"options[]\" multiple=\"multiple\">";
$form .= "<option value=\"0\" ";
if ($isAll) $form .= " selected=\"selected\"";
$form .= ">"._ALL."</option>";
$categories = $category_handler->getTree(0, "moderate", "----");
foreach($categories as $id=>$cat){
$sel = ( $isAll || in_array($id, $options_cat) ) ? " selected" : "";
$form .= "<option value=\"{$id}\" {$sel}>".$cat["prefix"].$cat["cat_title"]."</option>";
}
$form .= "</select><br />";
return $form;
}
');
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?