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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值