[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文件解读相关推荐

  1. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件

    SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...

  2. F2FS源码分析-2.1 [F2FS 读写部分] F2FS文件数据组织方式以及物理地址的映射

    F2FS源码分析系列文章 主目录 一.文件系统布局以及元数据结构 二.文件数据的存储以及读写 F2FS文件数据组织方式 一般文件写流程 一般文件读流程 目录文件读流程(未完成) 目录文件写流程(未完成 ...

  3. eventEmitter3源码分析与学习

    背景 事件监听在前端的开发过程中是一个很常见的情况.DOM上的事件监听方式,让我们看到了通过事件的方式来进行具体的业务逻辑的处理的便捷. 在具体的一些业务场景中,第三方的自定义事件能够在层级较多,函数 ...

  4. java+stream+源码分析_java8学习之Stream源码分析

    上一次已经将Collectors类中的各种系统收集器的源代码进行了完整的学习,而在之前咱们已经花了大量的篇幅对其Stream进行了详细的示例学习,如: 那接下来则通过源代码的角度来对Stream的运作 ...

  5. jQuery源码分析研究学习笔记-jQuery.clean()(七)

    jQuery.clean( elems, context, fragment, scripts ) 参数elems:数组,包含了待转换的HTML是代码 参数context:文档对象,该参数在方法jQu ...

  6. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. Stitcher类使用方法请查Op ...

  7. Spring Developer Tools 源码分析:二、类路径监控

    在 Spring Developer Tools 源码分析一中介绍了 devtools 提供的文件监控实现,在第二部分中,我们将会使用第一部分提供的目录监控功能,实现对开发环境中 classpath ...

  8. tomcat源码分析_百战卓越108天tomcat和servlet源码分析

    训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...

  9. QTP自动例子的源码分析--ClearMainWindow

    概述: 本系列文章主要用来研究和分析QTP自动的例子的源码分析,学习它的编码方式和代码结构, 所涉及的Action 分三部分 1.共用的Action 2.功能性Action,它们一般会调用共用的Act ...

  10. Kettle源码分析

    最近做一个大型项目需要做数据的抽取和标准化处理,我们利用一款国外的开源工具Kettle,对Kettle的核心包进行二次开发,应用到我们的Java项目中. Kettle工具:https://source ...

最新文章

  1. Fast ORB-SLAM
  2. 如何添加QQ 微信等程序到右键打开
  3. 第十章: 数据模型高级进阶
  4. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 3 Car detection
  5. COLLATE oracle,Sql 中Collate用法
  6. 第一节:ASP.NET开发环境配置
  7. 2.12_binary_tree_二叉树的创建和遍历
  8. hdu 5461(2015沈阳网赛 简单暴力) Largest Point
  9. Mac一体化数据库管理和迁移工具Navicat Premium
  10. dicom worklist下载病例程序/dicom worklist scu (c#版本)
  11. Python 冒泡排序 代码实现
  12. 啊哈c语言114页习题:设计一个小人,让它从右边向左边奔跑
  13. 用计算机做雕塑的,做电脑雕刻工资怎样
  14. sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
  15. java ppt转图片 失真_java poi 实现ppt转图片(解决图片不高清问题)
  16. excellvba引用计算机用户名,EXCEL VBA 取当前登录 用户名的多种实现方法
  17. suse日志服务器配置
  18. R语言read.csv()读入行不规则数据
  19. 对比两个字符串A、B的连续子串
  20. 光纤网卡和HBA卡有什么区别

热门文章

  1. CTWAP下程序崩溃
  2. 苹果手机怎么把计算机放到桌面,苹果怎么投影到电脑_怎么把苹果手机投影到电脑屏幕上-win7之家...
  3. 短视频创业,如何在技术上节省100万启动资金?
  4. linux系统下网络吞吐量/CPU占用率/流量控制的测试
  5. 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
  6. Hbase最新官方文档中文翻译与注解1-10|hbase简介与配置信息等
  7. 【转】成像的清晰度、分辨率和锐度
  8. 在技术部门当头头最重要的是业务逻辑能力、协调能力和项目管理能力
  9. QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置
  10. game.php,game.php