<?php
/*
EditorTools自动采集助手-dedecms5.3.1(GBK版本)普通文章类型文章发布接口
----------------------------------
文件名
etpost.php
dedecms5.3.1文章主题发布文件，请复制在网站dede目录（若更改过该目录名请使用修改后的目录）下使用，为保密，请自行修改文件名


注：以下参数名“=”号及值为示范而用，参数名本身不含“=”号及其后的值

主要参数
userid 		会员名参数名
pwd 		密码参数名
title		主题标题参数名
body 		内容参数名
etattachs	文件列表参数名

附加参数
vercode		安全校验码，请自行设定，本项用以防止接口被他人利用，如果需要进行更多校验，请自行填加相关代码。
*/

$vercode='';	//此处取值请自行修改

/*
typeid=1          文章栏目编号，栏目应允许普通文章类型发布（此处设副栏目编号同样有效）
typeid2=0         文章副栏目编号，无则填0 		
remote=1          是否下载远程图片和资源（是则取值1，可不填），如果使用本项，则在ET采集时不能设置下载文件，发布时不设置FTP上传；
autolitpic=1      是否提取第一个图片为缩略图（是则取值1，可不填）
ishtml=1          是否生成HTML，1是，0否；
notpost=0         是否禁止评论，1是，0否； 


可选参数
flags[]=h		  文章属性-头条，可不填
flags[]=c		  文章属性-推荐，可不填
flags[]=p		  文章属性-图片，可不填
flags[]=f		  文章属性-幻灯，可不填
flags[]=s		  文章属性-滚动，可不填
flags[]=a		  文章属性-图文，可不填
flags[]=b		  文章属性-标题加粗，可不填
dellink=          删除非站内链接（是则取值1，可不填）
shorttitle=	      简略标题，建议使用自定项获取
source=           文章来源，建议使用自定项获取
writer=           作者，建议使用自定项获取
tags=             标签，建议使用自定项获取(标签之间以','号分开，可在ET中使用数据整理替换分隔符)
description=      文章摘要，建议使用自定项获取，不填则按后台设置自动生成；
keywords=         关键字，建议使用自定项获取
autokey=1         是否使用自动关键字（是则取值1）
money=0           消费点数
arcrank=0         阅读权限，0：开放浏览，-1：待审核稿件，10：注册会员，50：中级会员，100：高级会员
color=            标题颜色，如 #FF0000：红色
pubdate=          文章公布日期，建议使用自定项获取，可不填
sortup=0          文章排序：0：默认排序，7：置顶一周，30：置顶一个月，90：置顶三个月，180：置顶半年，360：置顶一年
sptype=auto       分页方式：hand：手动分页，auto：自动分页，（使用手动分页时，应在ET数据整理中将ET正文分隔标记“<!--content-->”替换为DEDE分页标记“#p#分页标题#e#”）
spsize=5          自动分页时的大小，单位K


ET发布配置-文章检查网址处，填写参考如下：
http://您的网址/dede/etpost.php

*/
if ($_REQUEST['vercode']!=$vercode){
exit("[err]invalid vercode[/err]");
}


//require_once(dirname(__FILE__)."/config.php");
//config.php开始
define('DEDEADMIN', ereg_replace("[/\\]{1,}",'/',dirname(__FILE__) ) );
require_once(DEDEADMIN."/../include/common.inc.php");
require_once(DEDEINC."/userlogin.class.php");
header("Cache-Control:private");
$dsql->safeCheck = false;
$dsql->SetLongLink();

//获得当前脚本名称，如果你的系统被禁用了$_SERVER变量，请自行更改这个选项
$dedeNowurl = $s_scriptName = '';
$isUrlOpen = @ini_get("allow_url_fopen");
$dedeNowurl = GetCurUrl();
$dedeNowurls = explode('?',$dedeNowurl);
$s_scriptName = $dedeNowurls[0];

//检验用户登录状态
$cuserLogin = new userLogin();
$cuserLogin->checkUser($userid,$pwd);
if($cuserLogin->getUserID()==-1)
{
	//header("location:login.php?gotopage=".urlencode($dedeNowurl));
	echo("[err]Invalid username or password[/err]");
	exit();
}
if($cfg_dede_log=='Y')
{
	$s_nologfile = "_main|_list";
	$s_needlogfile = "sys_|file_";
	$s_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : "";
	$s_query = isset($dedeNowurls[1]) ? $dedeNowurls[1] : "";
	$s_scriptNames = explode('/',$s_scriptName);
	$s_scriptNames = $s_scriptNames[count($s_scriptNames)-1];
	$s_userip = GetIP();
	if( $s_method=='POST' || (!eregi($s_nologfile,$s_scriptNames) && $s_query!='') || eregi($s_needlogfile,$s_scriptNames) )
	{
		$inquery = "INSERT INTO `#@__log`(adminid,filename,method,query,cip,dtime)
             VALUES ('".$cuserLogin->getUserID()."','{$s_scriptNames}','{$s_method}','".addslashes($s_query)."','{$s_userip}','".time()."');";
		$dsql->ExecuteNoneQuery($inquery);
	}
}
$cache1 = DEDEDATA."/cache/inc_catalog_base.inc";
if(!file_exists($cache1))
{
	UpDateCatCache();
}

//更新栏目缓存
function UpDateCatCache()
{
	global $dsql,$cfg_multi_site;
	$cache1 = DEDEDATA."/cache/inc_catalog_base.inc";
	$dsql->SetQuery("Select id,reid,channeltype,issend From `#@__arctype`");
	$dsql->Execute();
	$fp1 = fopen($cache1,'w');
	$phph = '?';
	$fp1Header = "<{$phph}php\r\nglobal \$_Cs;\r\n\$_Cs=array();\r\n";
	fwrite($fp1,$fp1Header);
	while($row=$dsql->GetObject())
	{
		fwrite($fp1,"\$_Cs[{$row->id}]=array({$row->reid},{$row->channeltype},{$row->issend});\r\n");
	}
	fwrite($fp1,"{$phph}>");
	fclose($fp1);
}

function DedeInclude($filename,$isabs=false)
{
	return $isabs ? $filename : DEDEADMIN.'/'.$filename;
}

//config.php结束


CheckPurview('a_New,a_AccNew');

require_once(DEDEINC."/customfields.func.php");
require_once(DEDEADMIN."/inc/inc_archives_functions.php");
/*if(empty($dopost))
{
	$dopost = '';
}
*/

$dopost='save';
if(empty($channelid)){$channelid=1;}

/*
if($dopost!='save')
{
	require_once(DEDEINC."/dedetag.class.php");
	require_once(DEDEADMIN."/inc/inc_catalog_options.php");
	$channelid = empty($channelid) ? 0 : intval($channelid);
	$cid = empty($cid) ? 0 : intval($cid);

	if(empty($geturl)) $geturl = '';
	
	$keywords = $writer = $source = $body = $description = $title = '';

	//采集单个网页
	if(ereg('^http://',$geturl))
	{
		require_once(DEDEADMIN."/inc/inc_coonepage.php");
		$redatas = CoOnePage($geturl);
		extract($redatas);
	}

	//获得频道模型ID
	if($cid>0 && $channelid==0)
	{
		$row = $dsql->GetOne("Select channeltype From `#@__arctype` where id='$cid'; ");
		$channelid = $row['channeltype'];
	}
	else
	{
		if($channelid==0)
		{
			$channelid = 1;
		}
	}

	//获得频道模型信息
	$cInfos = $dsql->GetOne(" Select * From  `#@__channeltype` where id='$channelid' ");
	include DedeInclude("templets/article_add.htm");
	exit();
}
*/
/*--------------------------------
function __save(){  }
-------------------------------*/
//else if($dopost=='save')
//{
	require_once(DEDEINC.'/image.func.php');
	require_once(DEDEINC.'/oxwindow.class.php');
	$flag = isset($flags) ? join(',',$flags) : '';
	$notpost = isset($notpost) && $notpost == 1 ? 1: 0;
	
	if(empty($typeid2)) $typeid2 = 0;
	if(!isset($autokey)) $autokey = 0;
	if(!isset($remote)) $remote = 0;
	if(!isset($dellink)) $dellink = 0;
	if(!isset($autolitpic)) $autolitpic = 0;
	
	if(empty($typeid))
	{
		//ShowMsg("请指定文档的栏目！","-1");
		echo("[err]请指定文档的栏目！[/err]");
		exit();
	}
/*	if(empty($channelid))
	{
//		ShowMsg("文档为非指定的类型，请检查你发布内容的表单是否合法！","-1");
		echo("[err]文档为非指定的类型，请检查你发布内容的表单是否合法！[/err]");
		exit();
	}
*/	
	if(!CheckChannel($typeid,$channelid))
	{
//		ShowMsg("你所选择的栏目与当前模型不相符，请选择白色的选项！","-1");
		echo("[err]你所选择的栏目与当前模型不相符！[/err]");
		exit();
	}
/*	if(!TestPurview('a_New'))
	{
		CheckCatalog($typeid,"对不起，你没有操作栏目 {$typeid} 的权限！");
	}
*/
	//对保存的内容进行处理
	if(empty($writer))$writer=$cuserLogin->getUserName();
	if(empty($source))$source='未知';

	if(empty($sortup))$sortup=0;	//ET增加
	if(empty($pubdate))$pubdate=time();	//ET增加
	if(empty($spsize))$spsize=5;
	$pubdate = GetMkTime($pubdate);
	$senddate = time();
	$sortrank = AddDay($pubdate,$sortup);
	$ismake = $ishtml==0 ? -1 : 0;
	$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
	$shorttitle = cn_substrR($shorttitle,36);
	$color =  cn_substrR($color,7);
	$writer =  cn_substrR($writer,20);
	$source = cn_substrR($source,30);
	$description = cn_substrR($description,250);
	$keywords = cn_substrR($keywords,30);
	$filename = trim(cn_substrR($filename,40));
	$userip = GetIP();

	if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
	{
		$arcrank = -1;
	}
	$adminid = $cuserLogin->getUserID();

	//处理上传的缩略图
	if(empty($ddisremote))
	{
		$ddisremote = 0;
	}
	$litpic = GetDDImage('litpic',$picname,$ddisremote);

	//生成文档ID
	$arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
	if(empty($arcID))
	{
	//	ShowMsg("无法获得主键，因此无法进行后续操作！","-1");
		echo("[err]无法获得主键，因此无法进行后续操作！[/err]");
		exit();
	}
	if(trim($title) == '')
	{
//		ShowMsg('标题不能为空', '-1');
		echo("[err]标题不能为空！[/err]");
		exit();
	}

	//处理body字段自动摘要、自动提取缩略图等
	$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,'htmltext');

	//自动分页
	if($sptype=='auto')
	{
		$body = SpLongBody($body,$spsize*1024,"#p#分页标题#e#");
	}

	//分析处理附加表数据
	$inadd_f = '';
	$inadd_v = '';
	if(!empty($dede_addonfields))
	{
		$addonfields = explode(';',$dede_addonfields);
		$inadd_f = '';
		$inadd_v = '';
		if(is_array($addonfields))
		{
			foreach($addonfields as $v)
			{
				if($v=='')
				{
					continue;
				}
				$vs = explode(',',$v);
				if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
				{
					${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
				}else
				{
					if(!isset(${$vs[0]}))
					{
						${$vs[0]} = '';
					}
					${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$arcID);
				}
				$inadd_f .= ','.$vs[0];
				$inadd_v .= " ,'".${$vs[0]}."' ";
			}
		}
	}

	//处理图片文档的自定义属性
	if($litpic!='' && !ereg('p',$flag))
	{
		$flag = ($flag=='' ? 'p' : $flag.',p');
	}
	if($redirecturl!='' && !ereg('j',$flag))
	{
		$flag = ($flag=='' ? 'j' : $flag.',j');
	}

	//保存到主表
	$query = "INSERT INTO `#@__archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
    color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename)
    VALUES ('$arcID','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','0','$money',
    '$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',
    '$adminid','$notpost','$description','$keywords','$filename');";
	if(!$dsql->ExecuteNoneQuery($query))
	{
		$gerr = $dsql->GetError();
		$dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
//		ShowMsg("把数据保存到数据库主表 `#@__archives` 时出错，请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
		echo("[err]把数据保存到数据库主表 `#@__archives` 时出错，请把相关信息提交给DedeCms官方。[/err]");

		exit();
	}

	//保存到附加表
	$cts = $dsql->GetOne("Select addtable From `#@__channeltype` where id='$channelid' ");
	$addtable = trim($cts['addtable']);
	if(empty($addtable))
	{
		$dsql->ExecuteNoneQuery("Delete From `#@__archives` where id='$arcID'");
		$dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
//		ShowMsg("没找到当前模型[{$channelid}]的主表信息，无法完成操作！。","javascript:;");
		echo("[err]没找到当前模型[{$channelid}]的主表信息，无法完成操作。[/err]");
		exit();
	}
	$useip = GetIP();
	$query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$useip','$body'{$inadd_v})";
	if(!$dsql->ExecuteNoneQuery($query))
	{
		$gerr = $dsql->GetError();
		$dsql->ExecuteNoneQuery("Delete From `#@__archives` where id='$arcID'");
		$dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
//		ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错，请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
		echo("[err]把数据保存到数据库附加表 `{$addtable}` 时出错，请把相关信息提交给DedeCms官方。[/err]");
		exit();
	}

	//生成HTML
	InsertTags($tags,$arcID);
	$artUrl = MakeArt($arcID,true,true);
/*
	if($artUrl=='')
	{
		$artUrl = $cfg_phpurl."/view.php?aid=$arcID";
	}
	
*/
	
/*
	//返回成功信息
	$msg = "
    　　请选择你的后续操作：
    <a href='article_add.php?cid=$typeid'><u>继续发布文章</u></a>
    &nbsp;&nbsp;
    <a href='$artUrl' target='_blank'><u>查看文章</u></a>
    &nbsp;&nbsp;
    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>
    &nbsp;&nbsp;
    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>
    &nbsp;&nbsp;
    <a href='catalog_main.php'><u>网站栏目管理</u></a>
    ";
	$wintitle = "成功发布文章！";
	$wecome_info = "文章管理::发布文章";
	$win = new OxWindow();
	$win->AddTitle("成功发布文章：");
	$win->AddMsgItem($msg);
	$winform = $win->GetWindow("hand","&nbsp;",false);
	$win->Display();
*/	
	echo("1[ok]");
	exit();
//}

?>