« DEDE调用某人在所有栏目下发布的所有文章DEDE文章关键字链接替换次数控制 »

member/archives_add_action.php文件解读。

hudie  September 24 2008 Tags:

掏钱买的东西也不知道是什么,先保存在这里了。有需要的可以过来看啦啦。

DEDE源码分析与学习之三member/archives_add_action.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>继续发布信息</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></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();
?>

附频道数据表
channelType    频道数据表
ID    频道ID
nid    识别ID
typename    频道名称
maintable    主数据表
addtable    附加表
addcon    发布信息文件名称
mancon    内容列表文件名称
editcon    编辑信息文件名称
useraddcon    发布信息文件名称
usermancon    内容列表文件名称
usereditcon    编辑信息文件名称
fieldset    自定义字段
listadd   
issystem    是否为系统内置模型
isshow    是否启用
issend    是否允许投稿
arcsta    是否需要审核
sendrank    允许投稿级别
sendmember    投稿会员组
isdefault   

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅本站

    博主:蝴蝶seo Nmae:蝴蝶
    Tel:13939029674
    QQ:245922667
    E-mail:zseo@qq.com

网站分类

文章归档

最新发表

最新评论及回复

友情链接