您的位置:首页 > 其它

Discuz! 7.0 模块调用脚本范例程序 - 主题

2009-01-02 21:15 501 查看
<?php

/*

Discuz! 7.0 模块调用脚本范例程序 - 主题

*/

if(!defined('IN_DISCUZ')) {

exit('Access Denied');

}

if($requestrun) {

/*

模块脚本运行代码

脚本中的设置参数在数组 $settings 中

脚本中不能有输出语句,所有输出结果赋值给变量 $writedata

脚本输出结果自动缓存,缓存时间根据数据调用模块设置而定,如不缓存,可令 $nocache = 1

*/

/**

* $settings['tid']的值是$request_settings['tid']声明的参数的值

* 使用intval函数把$settings['tid']强制转换成整数

* $settings['subject']的值是$request_settings['subject']声明的参数的值

* 使用strval函数强制转换成字符串

* 使用stripslashes函数获取用户提交的字符串

* 使用htmlspecialchars函数对HTML标记转义

*/

$writedata = '<h1><a href="'.$boardurl.'viewthread.php?tid='.intval($settings['tid']).'" target="_blank">'.htmlspecialchars(stripslashes(strval($settings['subject']))).'</a></h1>';

/**

* $settings['brief']的值是$request_settings['brief']声明的参数的值

* 使用strval函数强制转换成字符串

* 使用stripslashes函数获取用户提交的字符串

* 使用htmlspecialchars函数对HTML标记转义

*/

$writedata .= '<p>'.htmlspecialchars(stripslashes(strval($settings['brief']))).'</p>';

/**

* $settings['attachment']的值是$request_settings['attachment']声明的参数的值

* 使用strval函数强制转换成字符串

* 使用stripslashes函数获取用户提交的字符串

*/

$writedata .= '<img src="'.$GLOBALS['attachurl'].'/'.stripslashes(strval($settings['attachment'])).'"/>';

} else {

/*

模块脚本设置参数



版本 $request_version

名称 $request_name

描述 $request_description

版权 $request_copyright

参数 $request_settings

变量名 => array(变量含义, 备注说明, 类型, 选项数组, 默认值)

类型:

text 单行文本

textarea 多行文本

radio 单选(是/否)

mradio 自定义单选

mcheckbox 多选

select 单选下拉

mselect 多选下拉

*/

/**

* 为使用discuzcode函数,包含相应的文件

*/

require_once DISCUZ_ROOT.'./include/discuzcode.func.php';

$request_version = '1.0';

$request_name = '模块调用脚本范例';

$request_description = '主题,您可以参照本脚本 ./include/request/'.basename(__FILE__).' 中的说明编写模块脚本';

$request_copyright = '©';

/**

* $parameter['settings']['tid']的值是前一次提交的$request_settings['tid']参数的值

* 使用intval函数强制转换成整数

*/

$settings_tid_value = intval($parameter['settings']['tid']);

/**

* 主题ID设置项的说明信息

*/

$settings_tid_description = '设置主题ID。';

/**

* 由于负数和零无意义,所以判断前一次提交的值是否是正整数

*/

if (0 >= $settings_tid_value) {

/**

* 前一次提交的值不是正整数时,也就不可能获取正确的贴子信息

*/

$post = false;

/**

* 前一次提交的值不是正整数时,输出说明信息

*/

$settings_tid_description .= '主题ID应为正整数,修改后请单击<font color="red">预览</font>按钮后自动获取主题的标题及摘要。';

} else {

/**

* 前一次提交的值是正整数时,查询主题的楼主贴子信息

* subject字段是贴子的标题

* message字段是贴子的内容

* bbcodeoff字段是该贴子是否关闭bbcode

* smileyoff字段是该贴子是否关闭了表情

* posts表是贴子表

* tid字段是贴子的主题ID

* first字段指示贴子是否是主题的楼主

*/

$post = $db->fetch_first('SELECT subject, message, bbcodeoff, smileyoff FROM '.$tablepre.'posts WHERE tid = '.$settings_tid_value.' AND first = 1;');

/**

* 判断是否获取了贴子的信息

*/

if (false === $post) {

/**

* 没有获取贴子的信息时,输出说明信息

*/

$settings_tid_description .= 'ID为'.$settings_tid_value.'的主题<font color="red">不存在</font>,请重新输入后单击<font color="red">预览</font>按钮自动获取主题的标题及摘要。';

} else {

/**

* 获取了贴子的信息时,查询主题的图片附件信息

* attachment字段是附件的路径信息

* attachments表是附件表

* tid是附件的主题ID

* isimage字段指示附件是否为图片

*/

$attachments_query = $db->query('SELECT attachment FROM '.$tablepre.'attachments WHERE tid = '.$settings_tid_value.' AND isimage = 1;');

/**

* 为附件信息变量赋初值

* Discuz!中,所有变量在使用前,均应该赋初值

*/

$attachments = array();

/**

* 循环获取所有的图片附件信息

*/

while (false !== ($attachment_array = $db->fetch_array($attachments_query))) {

/**

* 将每个图片附件信息都保存在数组中

*/

$attachments[] = $attachment_array;

}

/**

* 判断是否包含图片附件

*/

if (0 === count($attachments)) {

/**

* 没有图片附件时,输出说明信息

*/

$settings_tid_description .= 'ID为'.$settings_tid_value.'的主题不包含图片附件。修改后请单击<font color="red">预览</font>按钮后自动获取附件列表。';

}

}

}

/**

* 显示主题ID设置项

*/

$request_settings['tid'] = array('主题ID', $settings_tid_description, 'text', array(), '');

/**

* 判断是否获取了贴子的信息

*/

if (false !== $post) {

/**

* 获取了贴子信息时,显示主题标题设置项

*/

$request_settings['subject'] = array('主题ID为'.$settings_tid_value.'的标题', '主题ID为'.$settings_tid_value.'的标题为:'.htmlspecialchars($post['subject']), 'text', array(), $post['subject']);

/**

* 获取了贴子信息时,截取内容的前面一部分作为摘要

* discuzcode函数将贴子内容转换成HTML格式

* strip_tags函数将HTML格式的贴子内容转换为文本

* cutstr函数按一定长度截取文本

* cutstr + strip_tags + discuzcode函数比cutmessage函数在截取贴子内容时更准确

*/

$settings_brief_value = cutstr(strip_tags(discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'])), 200);

/**

* 显示主题摘要设置项

*/

$request_settings['brief'] = array('主题ID为'.$settings_tid_value.'的摘要', '主题ID为'.$settings_tid_value.'的摘要为:'.htmlspecialchars($settings_brief_value), 'textarea', array(), $settings_brief_value);

/**

* 判断是否包含图片附件

*/

if (0 < count($attachments)) {

/**

* 包含图片附件时,为附件选项变量赋初值

* Discuz!中,所有变量在使用前,均应该赋初值

*/

$attachment_options = array();

/**

* 循环设置附件选项变量

*/

foreach ($attachments as $attachment) {

/**

* 设置项类型为mradio的选项数组中,每一项都是一个数组

* 数组的第一项是选项的值,这里使用是附件的相对地址

* 数组的第二项是选项显示的内容,这里显示图片附件

*/

$attachment_options[] = array($attachment['attachment'], '<img src="'.$attachurl.'/'.$attachment['attachment'].'" />');

}

/**

* 显示主题附件设置项

*/

$request_settings['attachment'] = array('主题ID为'.$settings_tid_value.'的图片附件', '主题ID为'.$settings_tid_value.'的图片附件', 'mradio', $attachment_options, $attachments[0]['attachment']);

}

}

}

?>

[Discuz! - 官方网站]

http://www.discuz.net/

[Discuz! - 常见问题]

Discuz! 6.1 从GBK编码转为UTF-8编码
Discuz! 6.1 多语言翻译工作范围
Discuz! 6.1 兼容问题
Discuz! 6.1 发送HTML格式电子邮件
Discuz! 6.1~7.0 安装SupeSite后导致安全漏洞
Discuz! 6.1 不修改模板在贴子上增加收藏按钮
Discuz! 6.1 cpmsg函数在IE下和Firefox下表现不一致
Discuz! 6.1~7.0 升级后request缓存文件名不兼容
Discuz! 6.1~7.0升级后request路径不兼容以及相应修改方案
Discuz! 7.0 模块脚本文件名
Discuz! 7.0 模块调用脚本范例程序 - 模板
Discuz! 7.0 模块调用脚本范例程序 - 数组
Discuz! 7.0
模块调用脚本范例程序 - 主题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: