DEDE源码分析与学习之三: member/archives_add_action.php文件解读
[code="PHP"]
<?php
//下边这部分在archive_add.php文件中已经解释过。
//CheckRank($rank, $money)函数检查用户操作权限(或者说是用户级别)。
require_once(dirname(__FILE__)."/config.php");
CheckRank(0,0);
if($cfg_mb_sendall=='N'){
ShowMsg("对不起,系统禁用了自定义模型投稿,因此无法使用此功能!","-1");
exit();
}
$cfg_main_dftable = '#@__archives';//主数据表
$cfg_add_dftable = '';//附加数据表,这两个变量非include/config_bank.php中定义的变量。
require_once(dirname(__FILE__)."/archives_addcheck.php");
//上边引用archives_addcheck.php文件,此文件的作用是验证要发布的信息是否满足要求。
//例如检查验证码、分类等等。
$upscore = $cfg_send_score;
//$cInfos变量保存频道信息。这些信息由archives_addcheck.php从数据库中取得。
//可以查阅archives_addcheck.php文件。
//字段arcsta为会员发布信息是否需要审核。 -1表示未审核,0表示审核(生成HTML),1表示审核(动态文档)
if($cInfos['arcsta']==0){//审核,生成HTML
$ismake = 0;
$arcrank = 0;
}
else if($cInfos['arcsta']==1){//审核,仅动态
$ismake = -1;
$arcrank = 0;
}
else{//未审核
$ismake = 0;
$arcrank = -1;
}
//对保存的内容进行处理
//--------------------------------
$typeid2 = 0;
$pubdate = mytime();//include/inc_functions.php中定义mytime()函数,调用PHP的time()函数。不知道为什么不 直接用,而是再封装一次,感觉挺多余。
//下边是一堆数据
$senddate = $pubdate;
$sortrank = $pubdate;
$shorttitle = '';
$color = '';
$money = 0;
$arcatt = 0;
$pagestyle = 2;
$title = ClearHtml($title);//include/inc_functions.php中定义ClearHtml()函数,作用是消除HTML标 记
$title = cn_substr($title,80);
$writer = cn_substr(trim(ClearHtml($writer)),30);//include/inc_functions.php中定义 cn_substr函数,用于处理uft-8 and gb字符。
$source = '';
$description = cn_substr(trim(ClearHtml($description)),250);
$keywords = trim(cn_substr($keywords,60));
$userip = GetIP();//include/inc_functions.php中定义GetIP()函数,作用很明显了。
//处理上传的缩略图
if(!empty($litpic)) $litpic = GetUpImage('litpic',true,true);
else $litpic = "";
$adminID = 0;
//下文中的$cfg_ml在config.php中定义,并调用MemberLogin类,实例化一个网站会员登陆类,这个对象记录了当前会员的所有信 息。
//关于MemberLogin类可以参看include/inc_memberlogin.php中的定义。
$memberID = $cfg_ml->M_ID;//得到会员ID。
//下文是插入数据及操作状态检查。
//加入主档案表
//----------------------------------
$inQuery = "INSERT INTO `$maintable`(
ID,typeid,typeid2,sortrank,iscommend,ismake,channel,
arcrank,click,money,title,shorttitle,color,writer,source,litpic,
pubdate,senddate,arcatt,adminID,memberID,description,keywords,mtype,userip)
VALUES ('$arcID','$typeid','$typeid2','$sortrank','0','$ismake','$channelid',
'$arcrank','0','$money','$title','$shorttitle','$color','$writer','$source','$litpic',
'$pubdate','$senddate','$arcatt','$adminID','$memberID','$description','$keywords','0','$userip');";
if(!$dsql->ExecuteNoneQuery($inQuery)){
$gerr = $dsql->GetError();
$dsql->ExecuteNoneQuery("Delete From `#@__full_search` where aid='$arcID'");
$dsql->Close();
ShowMsg("把数据保存到数据库 `$maintable` 时出错,请联系管理员!".$gerr,"-1");
exit();
}
if($addtable!="" && $inadd_f!="")
{
$addQuery = "INSERT INTO `$addtable`(aid,typeid{$inadd_f}) Values('$arcID','$typeid'{$inadd_v})";
if(!$dsql->ExecuteNoneQuery($addQuery))
{
$gerr = $dsql->GetError();
$dsql->ExecuteNoneQuery("Delete From `$maintable` where ID='$arcID'");
$dsql->ExecuteNoneQuery("Delete From `#@__full_search` where aid='$arcID'");
$dsql->Close();
ShowMsg("把数据保存到附加表时出错,请联系管理员!".$gerr,"-1");
exit();
}
}
$dsql->ExecuteNoneQuery("Update `#@__member` set c3=c3+1,scores=scores+{$upscore} where ID='".$cfg_ml->M_ID."';");
$cfg_ml->FushCache();
$artUrl = MakeArt($arcID);
//更新全站搜索索引
$datas = array('aid'=>$arcID,'typeid'=>$typeid,'channelid'=>$channelid,'adminid'=>0,'mid'=>$memberID,'att'=>0,
'title'=>$title,'url'=>$artUrl,'litpic'=>$litpic,'keywords'=>$keywords,
'addinfos'=>$description,'uptime'=>$senddate,'arcrank'=>$arcrank,'mtype'=>$mtype);
WriteSearchIndex($dsql,$datas);
//写入Tag索引
InsertTags($dsql,$keywords,$arcID,$memberID,$typeid,$arcrank);
unset($datas);
$dsql->Close();
//---------------------------------
//返回成功信息
//----------------------------------
$msg = "
请选择你的后续操作:
<a href='archives_add.php?channelid=$channelid&cid=$typeid'><u& gt;继续发布信息</u></a>
<a href='archives_edit.php?aid=".$arcID."'><u>更改信息</u>< /a>
<a href='$artUrl' target='_blank'><u>预览信息</u></a>
<a href='content_list.php?channelid=$channelid'><u>已发布信息管理</u& gt;</a>
<a href='index.php'><u>会员主页</u></a>
";
$wintitle = "成功发布一则信息!";
$wecome_info = "文档管理::发布文档";
$win = new OxWindow();//此类参见include/pub_oxwindow.php。作用是提供发布成功后的操作界面。
$win->mainTitle = "DedeCms发布文档成功提示";
$win->AddTitle("成功发布一则信息:");
$win->AddMsgItem($msg);
$winform = $win->GetWindow("hand"," ",false);
$win->Display();
?>
[/code]
附频道数据表
channelType 频道数据表
ID 频道ID
nid 识别ID
typename 频道名称
maintable 主数据表
addtable 附加表
addcon 发布信息文件名称
mancon 内容列表文件名称
editcon 编辑信息文件名称
useraddcon 发布信息文件名称
usermancon 内容列表文件名称
usereditcon 编辑信息文件名称
fieldset 自定义字段
listadd
issystem 是否为系统内置模型
isshow 是否启用
issend 是否允许投稿
arcsta 是否需要审核
sendrank 允许投稿级别
sendmember 投稿会员组
isdefault
DEDE源码分析与学习之三: member/archives_add_action.php文件解读相关推荐
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- F2FS源码分析-2.1 [F2FS 读写部分] F2FS文件数据组织方式以及物理地址的映射
F2FS源码分析系列文章 主目录 一.文件系统布局以及元数据结构 二.文件数据的存储以及读写 F2FS文件数据组织方式 一般文件写流程 一般文件读流程 目录文件读流程(未完成) 目录文件写流程(未完成 ...
- eventEmitter3源码分析与学习
背景 事件监听在前端的开发过程中是一个很常见的情况.DOM上的事件监听方式,让我们看到了通过事件的方式来进行具体的业务逻辑的处理的便捷. 在具体的一些业务场景中,第三方的自定义事件能够在层级较多,函数 ...
- java+stream+源码分析_java8学习之Stream源码分析
上一次已经将Collectors类中的各种系统收集器的源代码进行了完整的学习,而在之前咱们已经花了大量的篇幅对其Stream进行了详细的示例学习,如: 那接下来则通过源代码的角度来对Stream的运作 ...
- jQuery源码分析研究学习笔记-jQuery.clean()(七)
jQuery.clean( elems, context, fragment, scripts ) 参数elems:数组,包含了待转换的HTML是代码 参数context:文档对象,该参数在方法jQu ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. Stitcher类使用方法请查Op ...
- Spring Developer Tools 源码分析:二、类路径监控
在 Spring Developer Tools 源码分析一中介绍了 devtools 提供的文件监控实现,在第二部分中,我们将会使用第一部分提供的目录监控功能,实现对开发环境中 classpath ...
- tomcat源码分析_百战卓越108天tomcat和servlet源码分析
训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...
- QTP自动例子的源码分析--ClearMainWindow
概述: 本系列文章主要用来研究和分析QTP自动的例子的源码分析,学习它的编码方式和代码结构, 所涉及的Action 分三部分 1.共用的Action 2.功能性Action,它们一般会调用共用的Act ...
- Kettle源码分析
最近做一个大型项目需要做数据的抽取和标准化处理,我们利用一款国外的开源工具Kettle,对Kettle的核心包进行二次开发,应用到我们的Java项目中. Kettle工具:https://source ...
最新文章
- Fast ORB-SLAM
- 如何添加QQ 微信等程序到右键打开
- 第十章: 数据模型高级进阶
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 3 Car detection
- COLLATE oracle,Sql 中Collate用法
- 第一节:ASP.NET开发环境配置
- 2.12_binary_tree_二叉树的创建和遍历
- hdu 5461(2015沈阳网赛 简单暴力) Largest Point
- Mac一体化数据库管理和迁移工具Navicat Premium
- dicom worklist下载病例程序/dicom worklist scu (c#版本)
- Python 冒泡排序 代码实现
- 啊哈c语言114页习题:设计一个小人,让它从右边向左边奔跑
- 用计算机做雕塑的,做电脑雕刻工资怎样
- sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
- java ppt转图片 失真_java poi 实现ppt转图片(解决图片不高清问题)
- excellvba引用计算机用户名,EXCEL VBA 取当前登录 用户名的多种实现方法
- suse日志服务器配置
- R语言read.csv()读入行不规则数据
- 对比两个字符串A、B的连续子串
- 光纤网卡和HBA卡有什么区别
热门文章
- CTWAP下程序崩溃
- 苹果手机怎么把计算机放到桌面,苹果怎么投影到电脑_怎么把苹果手机投影到电脑屏幕上-win7之家...
- 短视频创业,如何在技术上节省100万启动资金?
- linux系统下网络吞吐量/CPU占用率/流量控制的测试
- 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
- Hbase最新官方文档中文翻译与注解1-10|hbase简介与配置信息等
- 【转】成像的清晰度、分辨率和锐度
- 在技术部门当头头最重要的是业务逻辑能力、协调能力和项目管理能力
- QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置
- game.php,game.php