block.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 649 行 · 第 1/2 页
PHP
649 行
<?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 articles
*
* {@link article}
* {@link xcategory}
* {@link permission}
* {@link config}
*
* @param array $options:
* 0 - criteria for fetching articles;
* 1 - limit for article count;
* 2 - bool flag for displaying summary: 0 - none; 1 - summary; 2 - summary and image
* 3 - title length;
* 4 - time format;
* 5 - allowed categories;
*/
function [VAR_PREFIX]_article_show($options)
{
global $xoopsDB;
static $access_cats;
$artConfig = art_load_config();
art_define_url_delimiter();
$block = array();
$select = "art_id";
$disp_tag = "";
$from = "";
$where = "";
$order = "art_time_publish DESC";
switch ($options[0]) {
case "views":
$select .= ", art_counter";
$order = "art_counter DESC";
$disp_tag = "art_counter";
break;
case "rates":
$select .= ", art_rates";
$order = "art_rates DESC";
$disp_tag = "art_rates";
break;
case "rating":
$select .= ", art_rating/art_rates AS ave_rating";
$order = "ave_rating DESC";
$disp_tag = "ave_rating";
break;
case "random":
$order = "RAND()";
$mysqlOldClient = version_compare( mysql_get_server_info(), "4.1.0", "lt" );
/* for MySQL 4.1+ */
if(!$mysqlOldClient){
$from = " LEFT JOIN (SELECT art_id AS aid FROM ".art_DB_prefix("article")." LIMIT 1000 ORDER BY art_id DESC) AS random ON art_id = random.aid";
}
break;
case "time":
default:
$order = "art_time_publish DESC";
break;
}
$select .= ", cat_id, art_title, uid, writer_id, art_time_publish";
if(!empty($options[2])) {
$select .=", art_summary, art_pages";
if($options[2] == 2) $select .=", art_image";
}
if(!isset($access_cats)){
$permission_handler =& xoops_getmodulehandler("permission", $GLOBALS["artdirname"]);
$access_cats = $permission_handler->getCategories("access");
}
if (!empty($options[5])) {
$allowed_cats = array_filter(array_slice($options, 5));
}else{
$allowed_cats = $access_cats;
}
$allowed_cats = array_intersect($allowed_cats, $access_cats);
if(count($allowed_cats) ==0 ) {
return $block;
}
$query = "SELECT {$select} FROM " . art_DB_prefix("article"). $from;
$query .= " WHERE cat_id IN (" . implode(",", $allowed_cats) . ") AND art_time_publish >0 ". $where;
$query .= " ORDER BY " . $order;
if (!$result = $xoopsDB->query($query, $options[1], 0)) {
xoops_error($xoopsDB->error());
return $block;
}
$author_array = array();
$writer_array = array();
$users = array();
$writers = array();
$rows = array();
while ($row = $xoopsDB->fetchArray($result)) {
$rows[] = $row;
$author_array[$row["uid"]] = 1;
$writer_array[$row["writer_id"]] = 1;
}
if (count($rows) < 1) return $block;
if(!empty($author_array)) {
include_once XOOPS_ROOT_PATH."/modules/".$GLOBALS["artdirname"]."/include/functions.author.php";
$users = art_getAuthorNameFromId(array_keys($author_array), true, true);
}
if(!empty($writer_array)) {
include_once XOOPS_ROOT_PATH."/modules/".$GLOBALS["artdirname"]."/include/functions.author.php";
$writers = art_getWriterNameFromIds(array_keys($writer_array));
}
$arts = array();
$uids = array();
$cids = array();
$article_handler =& xoops_getmodulehandler("article", $GLOBALS["artdirname"]);
foreach ($rows as $row) {
if(!empty($row["ave_rating"])) {
$row["ave_rating"] = number_format($row["ave_rating"], 1);
}
$article =& $article_handler->create(false);
$article->assignVars($row);
$_art = array();
foreach($row as $tag=>$val) {
$_art[$tag] = @$article->getVar($tag);
}
$_art["author"] = $users[$row["uid"]];
$_art["writer"] = @$writers[$row["writer_id"]];
$_art["time"] = $article->getTime($options[4]);
$_art["summary"] = $article->getSummary($options[2]);
$_art["image"] = $article->getImage();
if(!empty($disp_tag)){
$_art["disp"] = @$article->getVar($disp_tag);
if(!empty($row[$disp_tag]) && empty($_art["disp"])) {
$_art["disp"] = $row[$disp_tag];
}
}
if(!empty($options[3])){
$_art["art_title"] = xoops_substr($_art["art_title"], 0, $options[3]);
}
$arts[] = $_art;
unset($article, $_art);
$cids[$row["cat_id"]] = 1;
}
$category_handler =& xoops_getmodulehandler("category", $GLOBALS["artdirname"]);
$criteria = new Criteria("cat_id", "(".implode(",",array_keys($cids)).")", "IN");
$cats = $category_handler->getList($criteria);
for($i=0;$i<count($arts);$i++){
$arts[$i]["category"]=$cats[$arts[$i]["cat_id"]];
}
$block["articles"] = $arts;
unset($users, $cats, $arts);
$block["dirname"] = $GLOBALS["artdirname"];
return $block;
}
function [VAR_PREFIX]_article_edit($options)
{
$form = art_constant("MB_TYPE")." <select name=\"options[0]\">";
$form .= "<option value=\"time\"";
if($options[0]=="time") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TYPE_TIME")."</option>\n";
$form .= "<option value=\"views\"";
if($options[0]=="views") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TYPE_VIEWS")."</option>\n";
$form .= "<option value=\"rates\"";
if($options[0]=="rates") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TYPE_RATES")."</option>\n";
$form .= "<option value=\"rating\"";
if($options[0]=="rating") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TYPE_RATING")."</option>\n";
$form .= "<option value=\"random\"";
if($options[0]=="random") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TYPE_RANDOM")."</option>\n";
$form .= "</select><br /><br />";
$form .= art_constant("MB_ITEMS")." <input type=\"text\" name=\"options[1]\" value=\"" . $options[1] . "\" /><br /><br />";
$form .= art_constant("MB_SHOWSUMMARY")." <input type=\"radio\" name=\"options[2]\" value=\"0\"";
if ($options[2] == 0) $form .= " checked=\"checked\"";
$form .= " />"._NO." <input type=\"radio\" name=\"options[2]\" value=\"1\"";
if ($options[2] == 1) $form .= " checked=\"checked\"";
$form .= " />"._YES." <input type=\"radio\" name=\"options[2]\" value=\"2\"";
if ($options[2] == 2) $form .= " checked=\"checked\"";
$form .= " />".art_constant("MB_SUMMARY_IMAGE")."<br /><br />";
$form .= art_constant("MB_TITLE_LENGTH")." <input type=\"text\" name=\"options[3]\" value=\"" . $options[3] . "\" /><br /><br />";
$form .= art_constant("MB_TIMEFORMAT")." <select name=\"options[4]\">";
$form .= "<option value=\"s\"";
if($options[4]=="s") $form .= " selected=\"selected\" ";
$form .= ">"._SHORTDATESTRING."</option>\n";
$form .= "<option value=\"m\"";
if($options[4]=="m") $form .= " selected=\"selected\" ";
$form .= ">"._MEDIUMDATESTRING."</option>\n";
$form .= "<option value=\"l\"";
if($options[4]=="l") $form .= " selected=\"selected\" ";
$form .= ">"._DATESTRING."</option>\n";
$form .= "<option value=\"c\"";
if($options[4]=="c") $form .= " selected=\"selected\" ";
$form .= ">".art_constant("MB_TIMEFORMAT_CUSTOM")."</option>\n";
$form .= "</select><br /><br />";
$category_handler =& xoops_getmodulehandler("category", $GLOBALS["artdirname"]);
$isAll = empty($options[5]) ? true : false;
$options_cat = array_slice($options, 5); // 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;
}
/**#@-*/
/**#@+
* Function to display spotlight
*
* {@link spotlight}
* {@link config}
*
* @param array $options:
* $options[0] - use specified spotlight only
* $options[1] - show editor note if available
*/
function [VAR_PREFIX]_spotlight_show( $options )
{
global $xoopsDB;
$block = array();
$artConfig = art_load_config();
art_define_url_delimiter();
$spotlight_handler =& xoops_getmodulehandler("spotlight", $GLOBALS["artdirname"]);
$sp_data = $spotlight_handler->getContent(false, $options[0]);
if(empty($sp_data)) return $block;
foreach($sp_data as $key => $val){
$block[$key] = $val;
}
if(isset($block["sp_note"]) && empty($optioins[1])) unset($block["sp_note"]);
$block["url"] = XOOPS_URL."/modules/".$GLOBALS["artdirname"]."/view.article.php".URL_DELIMITER."".$sp_data["art_id"];
include_once XOOPS_ROOT_PATH."/modules/".$GLOBALS["artdirname"]."/include/functions.author.php";
$users = art_getAuthorNameFromId($sp_data["uid"], true, true);
$block["author"] = $users[$sp_data["uid"]] ;
if(!empty($sp_data["writer_id"])) {
$writers = art_getWriterNameFromIds($sp_data["writer_id"]);
$block["writer"] = $writers[$sp_data["writer_id"]] ;
}
$block["lang_author"] = art_constant("MB_AUTHOR");
$block["lang_time"] = art_constant("MB_TIME");
return $block;
}
function [VAR_PREFIX]_spotlight_edit($options)
{
$form = art_constant("MB_SPECIFIED_ONLY")." <input type=\"radio\" name=\"options[0]\" value=\"1\"";
if ($options[0] == 1) $form .= " checked=\"checked\"";
$form .= " />"._YES."<input type=\"radio\" name=\"options[0]\" value=\"0\"";
if ($options[0] == 0) $form .= " checked=\"checked\"";
$form .= " />"._NO."<br />";
$form .= art_constant("MB_SHOW_NOTE")." <input type=\"radio\" name=\"options[1]\" value=\"1\"";
if ($options[1] == 1) $form .= " checked=\"checked\"";
$form .= " />"._YES."<input type=\"radio\" name=\"options[1]\" value=\"0\"";
if ($options[1] == 0) $form .= " checked=\"checked\"";
$form .= " />"._NO."<br />";
return $form;
}
/**#@+
* 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]_news_show( $options )
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?