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! 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
模块调用脚本范例程序 - 主题
/*
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
模块调用脚本范例程序 - 主题
相关文章推荐
- Discuz! 7.0 模块调用脚本范例程序 - 模板
- Discuz! 7.0 模块调用脚本范例程序 - 数组
- Discuz! 7.0 模块调用脚本范例程序 - 多选下拉的缺陷以及使用方法
- Discuz! 7.0 模块脚本文件名
- C++ 应用程序中 嵌入的python脚本与C++程序的互相调用(访问 通信)
- Discuz! 7.0 - 数据调用中[show]标记的处理中有缺陷
- Python subprocess子进程(程序调用)模块
- 利用OllyDebug查看程序调用的dll模块
- 从 stdin 读取输入的C程序示例 && python脚本调用可执行文件
- java执行命令或调用其他exe程序的代码范例
- linux里编写java程序定时调用shell脚本
- java工具(一)----如何在java程序中调用linux命令或者shell脚本及 画图
- C程序调用shell脚本共有三种方法
- windows+java程序SSH登录linux调用shell脚本
- Java程序中调用Python脚本的方法
- Javascript模块化编程(一)模块的写法最佳实践六、输入全局变量 独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。 为了在模块内部调用全局变量,必须显式地将其他变量输入模块。
- BCB6主应用调用dll中的模块作为子窗口范例
- discuz x3在DIY模块中调用伪静态不成功,显示动态链接的解决办法
- struts2 调用spark程序——java 程序调用脚本启动spark
- VC调用 JavaScript 难题:如何使当前程序的对象进入脚本