最近想打造一个社区门户站点,所以写了这个入库接口,可以对接数据入库。
<?php
/*
* Discuz x3.2 门户免登陆发布接口
* 2018-08-10
* Copyright 68xi.Ltd
* Author: 68xi
*
* 获取栏目列表: /jiekou_portal.php?get_cat=true&password=PWD
*
* 发布参数: (说明: 参数前面带 "*" 的为必填参数)
* *uid: 发布用户ID, 可单个, 也可多个, 多个发布用户ID之间请使用逗号(,)分割 (当填写多个用户ID, 接口会随机使用其中一个, 发布用户ID必须是系统已存在的用户ID)
* *catid: 栏目ID
* *title: 标题
* *content: 内容
* dateline: 发布时间, 默认当前时间, 格式: 2013-11-15 15:30:11
* summary: 内容摘要, 此参数为空时, 将使用discuz内部提取正文方式来获取摘要
* author: 原作者
* from: 来源
* fromurl: 来源网址
* viewnum: 文章阅读数字, 默认1
* setconver: 提取内容里的第一张图片为封面, 无论是本地图片还是网络图片, 都会尝试提取
*/
header(\'Content-type:text/html;charset=UTF-8\');
//接口密码, 请保持与采集器上设置的密码一致, 为了网站安全, 强烈建议修改此值!!!
define(\'PASSWORD\', \'123456\');
//调试模式, 上线后务必设置成false!!!
define(\'DEBUG\', false);
//输出信息并退出
function showMsg($msg) {
echo $msg;
exit;
}
//打印变量信息 - 用于DEBUG
function dd($data, $exit = false) {
echo \'<pre>\';
print_r($data);
echo \'</pre>\';
if($exit) exit;
}
//检测接口密码
if(!isset($_GET[\'password\']) || $_GET[\'password\'] != PASSWORD) showMsg(\'接口密码不正确!\');
/******************* discuz头文件 开始 ********************/
#/portal.php
define(\'APPTYPEID\', 4);
define(\'CURSCRIPT\', \'portal\');
require \'./source/class/class_core.php\';
$discuz = C::app();
$cachelist = array(\'userapp\', \'portalcategory\', \'diytemplatenameportal\');
$discuz->cachelist = $cachelist;
$discuz->init();
require DISCUZ_ROOT.\'./source/function/function_home.php\';
require DISCUZ_ROOT.\'./source/function/function_portal.php\';
define(\'CURMODULE\', \'portalcp\');
#/souce/module/portal/portalportalcp.php
$ac = \'article\';
require_once libfile(\'function/portalcp\');
#/source/include/portalcp/portalcp_article.php
/******************* discuz头文件 结束 ********************/
$app = new App();
class App {
protected $global; //equal $_G
protected $uid; //发布用户ID
//构造函数
public function __construct() {
global $_G;
$this->global = &$_G;
//当前时间
define(\'DATE_TIME\', date(\'Y-m-d H:i:s\'));
if(isset($_GET[\'get_cat\']) && $_GET[\'get_cat\'] == \'true\') {
$this->get_cat(); //获取栏目
} else {
$this->publish_content(); //发布内容
}
}
//获取栏目
protected function get_cat() {
$cat = $this->get_cat_list();
if(empty($cat)) showMsg(\'当前网站栏目为空, 请添加门户栏目后再重试\');
$catStr = \'\';
foreach($cat as $key => $value) {
$catStr .= \'<option value="\'. $value[\'catid\'] .\'">\'. $value[\'catname\'] .\'</option>\';
}
$catStr = \'<select>\'. $catStr .\'</select>\';
showMsg($catStr);
}
//获取栏目列表
protected function get_cat_list() {
//优化提示: 如果您网站的门户栏目在发布数据期间不会变动, 可以注释下面一行代码, 来加速接口执行速度
loadcache(\'portalcategory\');
return $this->global[\'cache\'][\'portalcategory\'];
}
//设置发布用户ID
private function set_uid() {
if(empty($_POST[\'uid\'])) showMsg(\'发布用户ID不能为空\');
$uidstr = str_replace(\' \', \'\', $_POST[\'uid\']);
if(strpos($uidstr, \',\')) { //多发布用户ID
$uid_list = explode(\',\', $uidstr);
shuffle($uid_list);
$uid = intval(array_shift($uid_list));
} else { //单发布用户ID
$uid = intval($uidstr);
}
if($uid == 0) showMsg(\'发布用户ID格式不正确\');
$info = C::t(\'common_member\')->fetch($uid);
if(empty($info)) showMsg(\'不存在该用户 (uid: \'. $uid .\')\');
$this->uid = $uid;
$this->global[\'uid\'] = $uid;
$this->global[\'member\'][\'uid\'] = $uid;
$this->global[\'username\'] = $info[\'username\'];
$this->global[\'session\'][\'uid\'] = $uid;
//绕过discuz权限检测
$this->global[\'group\'][\'allowmanagearticle\'] = true;
$this->global[\'group\'][\'allowpostarticlemod\'] = true;
}
//将一些POST参数赋值至GET中, 因为discuz是通过$_GET来获取这些参数
private function post2get() {
foreach(array(\'author\', \'url\', \'from\', \'fromurl\', \'dateline\', \'highlight_style\') as $key) {
$_GET[$key] = isset($_POST[$key]) && $_POST[$key] ? $_POST[$key] : \'\';
}
}
//发布内容前的初始化
private function init() {
//构造以下POST参数仅用于程序不抛错误提示
$_POST[\'id\'] = \'\';
$_POST[\'url\'] = \'\';
$_POST[\'raids\'] = \'\'; //相关文章ID
$_POST[\'tag\'] = \'\'; //聚合标签
$_POST[\'pagetitle\'] = \'\';
$_POST[\'htmlname\'] = \'\';
$_POST[\'highlight_style\'] = \'\';
$_POST[\'pagetitle\'] = \'\';
$_POST[\'attach_ids\'] = \'\';
$_POST[\'highlight_style\'] = array(
\'#000\',
0,
0,
0,
);
//设置文章阅读数
$_POST[\'viewnum\'] = isset($_POST[\'viewnum\']) && $_POST[\'viewnum\'] ? intval($_POST[\'viewnum\']) : 1;
}
//处理上传图片
private function process_attach() {
global $_G;
if($_G[\'uid\']) {
$_G[\'member\'] = getuserbyuid($_G[\'uid\']);
}
$_G[\'groupid\'] = $_G[\'member\'][\'groupid\'];
loadcache(\'usergroup_\'.$_G[\'member\'][\'groupid\']);
$_G[\'group\'] = $_G[\'cache\'][\'usergroup_\'.$_G[\'member\'][\'groupid\']];
$aid = 0;
$catid = intval($_POST[\'catid\']);
$msg = \'\';
$errorcode = 0;
require_once libfile(\'function/portalcp\');
if($aid) {
$article = C::t(\'portal_article_title\')->fetch($aid);
if(!$article) {
$errorcode = 1;
}
if(check_articleperm($catid, $aid, $article, false, true) !== true) {
$errorcode = 2;
}
} else {
if(0 && check_articleperm($catid, $aid, null, false, true) !== true) {
$errorcode = 3;
}
}
$upload = new discuz_upload();
$_FILES["Filedata"][\'name\'] = addslashes(diconv(urldecode($_FILES["Filedata"][\'name\']), \'UTF-8\'));
$upload->init($_FILES[\'Filedata\'], \'portal\');
$attach = $upload->attach;
if(!$upload->error()) {
$upload->save();
}
if($upload->error()) {
$errorcode = 4;
}
if(!$errorcode) {
if($attach[\'isimage\'] && empty($_G[\'setting\'][\'portalarticleimgthumbclosed\'])) {
require_once libfile(\'class/image\');
$image = new image();
$thumbimgwidth = $_G[\'setting\'][\'portalarticleimgthumbwidth\'] ? $_G[\'setting\'][\'portalarticleimgthumbwidth\'] : 300;
$thumbimgheight = $_G[\'setting\'][\'portalarticleimgthumbheight\'] ? $_G[\'setting\'][\'portalarticleimgthumbheight\'] : 300;
$attach[\'thumb\'] = $image->Thumb($attach[\'target\'], \'\', $thumbimgwidth, $thumbimgheight, 2);
$image->Watermark($attach[\'target\'], \'\', \'portal\');
}
if(0 && getglobal(\'setting/ftp/on\') && ((!$_G[\'setting\'][\'ftp\'][\'allowedexts\'] && !$_G[\'setting\'][\'ftp\'][\'disallowedexts\']) || ($_G[\'setting\'][\'ftp\'][\'allowedexts\'] && in_array($attach[\'ext\'], $_G[\'setting\'][\'ftp\'][\'allowedexts\'])) || ($_G[\'setting\'][\'ftp\'][\'disallowedexts\'] && !in_array($attach[\'ext\'], $_G[\'setting\'][\'ftp\'][\'disallowedexts\']))) && (!$_G[\'setting\'][\'ftp\'][\'minsize\'] || $attach[\'size\'] >= $_G[\'setting\'][\'ftp\'][\'minsize\'] * 1024)) {
if(ftpcmd(\'upload\', \'portal/\'.$attach[\'attachment\']) && (!$attach[\'thumb\'] || ftpcmd(\'upload\', \'portal/\'.getimgthumbname($attach[\'attachment\'])))) {
@unlink($_G[\'setting\'][\'attachdir\'].\'/portal/\'.$attach[\'attachment\']);
@unlink($_G[\'setting\'][\'attachdir\'].\'/portal/\'.getimgthumbname($attach[\'attachment\']));
$attach[\'remote\'] = 1;
} else {
if(getglobal(\'setting/ftp/mirror\')) {
@unlink($attach[\'target\']);
@unlink(getimgthumbname($attach[\'target\']));
$errorcode = 5;
}
}
}
$setarr = array(
\'uid\' => $_G[\'uid\'],
\'filename\' => $attach[\'name\'],
\'attachment\' => $attach[\'attachment\'],
\'filesize\' => $attach[\'size\'],
\'isimage\' => $attach[\'isimage\'],
\'thumb\' => $attach[\'thumb\'],
\'remote\' => $attach[\'remote\'],
\'filetype\' => $attach[\'extension\'],
\'dateline\' => $_G[\'timestamp\'],
\'aid\' => $aid
);
$setarr[\'attachid\'] = C::t(\'portal_attachment\')->insert($setarr, true);
if($attach[\'isimage\']) {
require_once libfile(\'function/home\');
$smallimg = pic_get($attach[\'attachment\'], \'portal\', $attach[\'thumb\'], $attach[\'remote\']);
$bigimg = pic_get($attach[\'attachment\'], \'portal\', 0, $attach[\'remote\']);
$coverstr = addslashes(serialize(array(\'pic\'=>\'portal/\'.$attach[\'attachment\'], \'thumb\'=>$attach[\'thumb\'], \'remote\'=>$attach[\'remote\'])));
$returnstr = "{\"aid\":$setarr[attachid], \"isimage\":$attach[isimage], \"smallimg\":\"$smallimg\", \"bigimg\":\"$bigimg\", \"errorcode\":$errorcode, \"cover\":\"$coverstr\"}";
return json_decode($returnstr, true);
exit();
} else {
$fileurl = \'portal.php?mod=attachment&id=\'.$attach[\'attachid\'];
echo "{\"aid\":$setarr[attachid], \"isimage\":$attach[isimage], \"file\":\"$fileurl\", \"errorcode\":$errorcode}";
exit();
}
} else {
echo "{\"aid\":0, \"errorcode\":$errorcode}";
}
}
//获取网络图片, 用于封面图片
private function downloadremotefile($imageurl) {
global $_G;
$aid = 0;
$upload = new discuz_upload();
$attach[\'ext\'] = $upload->fileext($imageurl);
if(!$upload->is_image_ext($attach[\'ext\'])) return;
$content = dfsockopen($imageurl);
if(empty($content)) continue;
$temp = explode(\'/\', $imageurl);
$attach[\'name\'] = trim($temp[count($temp)-1]);
$attach[\'thumb\'] = \'\';
$attach[\'isimage\'] = $upload -> is_image_ext($attach[\'ext\']);
$attach[\'extension\'] = $upload -> get_target_extension($attach[\'ext\']);
$attach[\'attachdir\'] = $upload -> get_target_dir(\'portal\');
$attach[\'attachment\'] = $attach[\'attachdir\'] . $upload->get_target_filename(\'portal\').\'.\'.$attach[\'extension\'];
$attach[\'target\'] = getglobal(\'setting/attachdir\').\'./portal/\'.$attach[\'attachment\'];
if(!@$fp = fopen($attach[\'target\'], \'wb\')) {
return;
} else {
flock($fp, 2);
fwrite($fp, $content);
fclose($fp);
}
if(!$upload->get_image_info($attach[\'target\'])) {
@unlink($attach[\'target\']);
return;
}
$attach[\'size\'] = filesize($attach[\'target\']);
$attach = daddslashes($attach);
if(!$attach) return;
if($attach[\'isimage\'] || empty($_G[\'setting\'][\'portalarticleimgthumbclosed\'])) {
require_once libfile(\'class/image\');
$image = new image();
$thumbimgwidth = $_G[\'setting\'][\'portalarticleimgthumbwidth\'] ? $_G[\'setting\'][\'portalarticleimgthumbwidth\'] : 300;
$thumbimgheight = $_G[\'setting\'][\'portalarticleimgthumbheight\'] ? $_G[\'setting\'][\'portalarticleimgthumbheight\'] : 300;
$attach[\'thumb\'] = $image->Thumb($attach[\'target\'], \'\', $thumbimgwidth, $thumbimgheight, 2);
$image->Watermark($attach[\'target\'], \'\', \'portal\');
}
$setarr = array(
\'uid\' => $_G[\'uid\'],
\'filename\' => $attach[\'name\'],
\'attachment\' => $attach[\'attachment\'],
\'filesize\' => $attach[\'size\'],
\'isimage\' => $attach[\'isimage\'],
\'thumb\' => $attach[\'thumb\'],
\'remote\' => $attach[\'remote\'],
\'filetype\' => $attach[\'extension\'],
\'dateline\' => $_G[\'timestamp\'],
\'aid\' => $aid
);
$setarr[\'attachid\'] = C::t(\'portal_attachment\')->insert($setarr, true);
if($attach[\'isimage\']) {
$errorcode = 0;
require_once libfile(\'function/home\');
$smallimg = pic_get($attach[\'attachment\'], \'portal\', $attach[\'thumb\'], $attach[\'remote\']);
$bigimg = pic_get($attach[\'attachment\'], \'portal\', 0, $attach[\'remote\']);
$coverstr = addslashes(serialize(array(\'pic\'=>\'portal/\'.$attach[\'attachment\'], \'thumb\'=>$attach[\'thumb\'], \'remote\'=>$attach[\'remote\'])));
$returnstr = "{\"aid\":$setarr[attachid], \"isimage\":$attach[isimage], \"smallimg\":\"$smallimg\", \"bigimg\":\"$bigimg\", \"errorcode\":$errorcode, \"cover\":\"$coverstr\"}";
$return = json_decode($returnstr, true);
return $return;
}
return;
}
//发布内容
protected function publish_content() {
if(DEBUG) {
//调试模式下显示所有级别错误提示
error_reporting(E_ALL);
if(0) {
//构造发布参数, 用于页面调试
$_POST = array(
\'uid\' => \'1\',
\'catid\' => \'1\',
\'title\' => \'测试标题 - \'. DATE_TIME,
\'content\' => \'测试内容 - \'. DATE_TIME,
\'summary\' => \'测试摘要~ - \'. DATE_TIME,
\'dateline\' => DATE_TIME,
\'author\' => \'清顽于世\',
\'from\' => \'新浪网\',
\'fromurl\' => \'http://www.baidu.com/\',
\'viewnum\' => \'15\',
\'setconver\' => \'1\',
);
}
}
//图片上传
$upload = array();
if(!empty($_FILES) && !empty($_FILES[\'attach_0\'][\'name\'])) {
$files = $_FILES;
foreach ($files as $key => $value) {
$_FILES[\'Filedata\'] = $value;
$attach = $this->process_attach();
//处理内容里的图片地址
if(!empty($attach)) {
$upload[] = $attach;
$_POST[\'content\'] = preg_replace(\'#<img src="(\'. preg_quote($value[\'name\']) .\')" />#iUs\', \'<img src="\'. $attach[\'bigimg\'] .\'" />\', $_POST[\'content\']);
}
}
}
////提取第一张图片至封面
if(!empty($_POST[\'setconver\'])) {
//检测否是需要下载网络图片, 用于封面
preg_match_all("/\<img.+src=(\'|\"|)?(.*)(\\1)([\s].*)?\>/ismUe", $_POST[\'content\'], $matches, PREG_SET_ORDER);
if(!empty($matches) && is_array($matches)) {
$imageurl = $matches[0][2];
if(substr($imageurl, 0, 7) == \'http://\' || substr($imageurl, 0, 8) == \'https://\') { //内容里第一张图片是网络图片
$data = $this->downloadremotefile($imageurl);
if(!empty($data)) {
$conver = $data[\'cover\'];
} else {
$conver = \'\';
}
} else { //第一张图片为本地图片
$conver = $upload[0][\'cover\'];
}
$_POST[\'conver\'] = $conver;
}
}
//发布内容前的初始化
$this->init();
//POST参数转为GET参数
$this->post2get();
//设置发布用户ID
$this->set_uid();
$catid = $_POST[\'catid\'];
check_articleperm($catid);
$_POST[\'title\'] = getstr(trim($_POST[\'title\']), 80);
if(strlen($_POST[\'title\']) < 1) {
showMsg(\'标题不能少于 2 个字符\');
}
$_POST[\'title\'] = censor($_POST[\'title\']);
$_POST[\'pagetitle\'] = getstr(trim($_POST[\'pagetitle\']), 60);
$_POST[\'pagetitle\'] = censor($_POST[\'pagetitle\']);
$htmlname = basename(trim($_POST[\'htmlname\']));
$highlight_style = $_GET[\'highlight_style\'];
$style = \'\';
$style = implode(\'|\', $highlight_style);
if(empty($_POST[\'summary\'])) $_POST[\'summary\'] = preg_replace("/(\s|\<strong\>##########NextPage(\[title=.*?\])?##########\<\/strong\>)+/", \' \', $_POST[\'content\']);
$summary = portalcp_get_summary($_POST[\'summary\']);
$summary = censor($summary);
$_GET[\'author\'] = dhtmlspecialchars($_GET[\'author\']);
$_GET[\'url\'] = str_replace(\'&\', \'&\', dhtmlspecialchars($_GET[\'url\']));
$_GET[\'from\'] = dhtmlspecialchars($_GET[\'from\']);
$_GET[\'fromurl\'] = str_replace(\'&\', \'&\', dhtmlspecialchars($_GET[\'fromurl\']));
$_GET[\'dateline\'] = !empty($_GET[\'dateline\']) ? strtotime($_GET[\'dateline\']) : TIMESTAMP;
if(empty($_GET[\'dateline\'])) $_GET[\'dateline\'] = TIMESTAMP;
if(substr($_GET[\'url\'], 0, 7) !== \'http://\') {
$_GET[\'url\'] = \'\';
}
if(substr($_GET[\'fromurl\'], 0, 7) !== \'http://\') {
$_GET[\'fromurl\'] = \'\';
}
if(0 && (censormod($_POST[\'title\']) || $_G[\'group\'][\'allowpostarticlemod\'])) { //让文章发布状态始终为true
$article_status = 1;
} else {
$article_status = 0;
}
$setarr = array(
\'idtype\' => \'\',
\'title\' => $_POST[\'title\'],
\'author\' => $_GET[\'author\'],
\'from\' => $_GET[\'from\'],
\'fromurl\' => $_GET[\'fromurl\'],
\'dateline\' => intval($_GET[\'dateline\']),
\'url\' => $_GET[\'url\'],
\'allowcomment\' => !empty($_POST[\'forbidcomment\']) ? \'0\' : \'1\',
\'summary\' => $summary,
\'catid\' => intval($_POST[\'catid\']),
\'tag\' => article_make_tag($_POST[\'tag\']),
\'status\' => $article_status,
\'highlight\' => $style,
\'showinnernav\' => empty($_POST[\'showinnernav\']) ? \'0\' : \'1\',
);
if(empty($setarr[\'catid\'])) {
showMsg(\'栏目不能为空\');
}
if(!empty($_POST[\'conver\'])) {
$converfiles = dunserialize($_POST[\'conver\']);
$setarr[\'pic\'] = $converfiles[\'pic\'];
$setarr[\'thumb\'] = intval($converfiles[\'thumb\']);
$setarr[\'remote\'] = intval($converfiles[\'remote\']);
}
$id = 0;
$idtype = \'\';
if(empty($article)) {
$setarr[\'uid\'] = $this->global[\'uid\'];
$setarr[\'username\'] = $this->global[\'username\'];
$setarr[\'id\'] = intval($_POST[\'id\']);
$setarr[\'htmlname\'] = $htmlname;
$table = \'\';
if(0 && $setarr[\'id\']) {
if($_POST[\'idtype\']==\'blogid\') {
$table = \'home_blogfield\';
$setarr[\'idtype\'] = \'blogid\';
$id = $setarr[\'id\'];
$idtype = $setarr[\'idtype\'];
} else {
$table = \'forum_thread\';
$setarr[\'idtype\'] = \'tid\';
require_once libfile(\'function/discuzcode\');
$id = C::t(\'forum_post\')->fetch_threadpost_by_tid_invisible($setarr[\'id\']);
$id = $id[\'pid\'];
$idtype = \'pid\';
}
}
$aid = C::t(\'portal_article_title\')->insert($setarr, 1);
if(0 && $table) {
if($_POST[\'idtype\']==\'blogid\') {
C::t(\'home_blogfield\')->update($setarr[\'id\'], array(\'pushedaid\' => $aid));
} elseif($setarr[\'idtype\']==\'tid\') {
$modarr = array(
\'tid\' => $setarr[\'id\'],
\'uid\' => $_G[\'uid\'],
\'username\' => $_G[\'username\'],
\'dateline\' => TIMESTAMP,
\'action\' => \'PTA\',
\'status\' => \'1\',
\'stamp\' => \'\',
);
C::t(\'forum_threadmod\')->insert($modarr);
C::t(\'forum_thread\')->update($setarr[\'id\'], array(\'moderated\' => 1, \'pushedaid\' => $aid));
}
}
C::t(\'common_member_status\')->update($this->global[\'uid\'], array(\'lastpost\' => TIMESTAMP), \'UNBUFFERED\');
C::t(\'portal_category\')->increase($setarr[\'catid\'], array(\'articles\' => 1));
C::t(\'portal_category\')->update($setarr[\'catid\'], array(\'lastpublish\' => TIMESTAMP));
C::t(\'portal_article_count\')->insert(array(\'aid\'=>$aid, \'catid\'=>$setarr[\'catid\'], \'viewnum\'=>$_POST[\'viewnum\']));
} else {
//这里面基本不可能执行到
if($htmlname && $article[\'htmlname\'] !== $htmlname) {
$setarr[\'htmlname\'] = $htmlname;
$oldarticlename = $article[\'htmldir\'].$article[\'htmlname\'];
unlink($oldarticlename.\'.\'.$_G[\'setting\'][\'makehtml\'][\'extendname\']);
for($i = 1; $i < $article[\'contents\']; $i++) {
unlink($oldarticlename.$i.\'.\'.$_G[\'setting\'][\'makehtml\'][\'extendname\']);
}
}
C::t(\'portal_article_title\')->update($aid, $setarr);
}
$content = getstr($_POST[\'content\'], 0, 0, 0, 0, 1);
$content = censor($content);
if(0 && (censormod($content) || $this->global[\'group\'][\'allowpostarticlemod\'])) {
$article_status = 1;
} else {
$article_status = 0;
}
$regexp = \'/(\<strong\>##########NextPage(\[title=(.*?)\])?##########\<\/strong\>)+/is\';
preg_match_all($regexp, $content ,$arr);
$pagetitle = !empty($arr[3]) ? $arr[3] : array();
$pagetitle = array_map(\'trim\', $pagetitle);
array_unshift($pagetitle, $_POST[\'pagetitle\']);
$contents = preg_split($regexp, $content);
$cpostcount = count($contents);
$dbcontents = C::t(\'portal_article_content\')->fetch_all($aid);
$pagecount = $cdbcount = count($dbcontents);
if($cdbcount > $cpostcount) {
$cdelete = array();
foreach(array_splice($dbcontents, $cpostcount) as $value) {
$cdelete[$value[\'cid\']] = $value[\'cid\'];
}
if(!empty($cdelete)) {
C::t(\'portal_article_content\')->delete($cdelete);
}
$pagecount = $cpostcount;
}
foreach($dbcontents as $key => $value) {
C::t(\'portal_article_content\')->update($value[\'cid\'], array(\'title\' => $pagetitle[$key], \'content\' => $contents[$key], \'pageorder\' => $key+1));
unset($pagetitle[$key], $contents[$key]);
}
if($cdbcount < $cpostcount) {
foreach($contents as $key => $value) {
C::t(\'portal_article_content\')->insert(array(\'aid\' => $aid, \'id\' => $setarr[\'id\'], \'idtype\' => $setarr[\'idtype\'], \'title\' => $pagetitle[$key], \'content\' => $contents[$key], \'pageorder\' => $key+1, \'dateline\' => TIMESTAMP));
}
$pagecount = $cpostcount;
}
$updatearticle = array(\'contents\' => $pagecount);
if($article_status == 1) {
$updatearticle[\'status\'] = 1;
updatemoderate(\'aid\', $aid);
manage_addnotify(\'verifyarticle\');
}
$updatearticle = array_merge($updatearticle, portalcp_article_pre_next($catid, $aid));
C::t(\'portal_article_title\')->update($aid, $updatearticle);
$newaids = array();
$_POST[\'attach_ids\'] = explode(\',\', $_POST[\'attach_ids\']);
foreach ($_POST[\'attach_ids\'] as $newaid) {
$newaid = intval($newaid);
if($newaid) $newaids[$newaid] = $newaid;
}
if($newaids) {
C::t(\'portal_attachment\')->update_to_used($newaids, $aid);
}
addrelatedarticle($aid, $_POST[\'raids\']);
if(0 && $_GET[\'from_idtype\'] && $_GET[\'from_id\']) {
$id = intval($_GET[\'from_id\']);
$notify = array();
switch ($_GET[\'from_idtype\']) {
case \'blogid\':
$blog = C::t(\'home_blog\')->fetch($id);
if(!empty($blog)) {
$notify = array(
\'url\' => "home.php?mod=space&uid=$blog[uid]&do=blog&id=$id",
\'subject\' => $blog[\'subject\']
);
$touid = $blog[\'uid\'];
}
break;
case \'tid\':
$thread = C::t(\'forum_thread\')->fetch($id);
if(!empty($thread)) {
$notify = array(
\'url\' => "forum.php?mod=viewthread&tid=$id",
\'subject\' => $thread[\'subject\']
);
$touid = $thread[\'authorid\'];
}
break;
}
if(!empty($notify)) {
$notify[\'newurl\'] = \'portal.php?mod=view&aid=\'.$aid;
notification_add($touid, \'pusearticle\', \'puse_article\', $notify, 1);
}
}
if(trim($_GET[\'from\']) != \'\') {
$from_cookie = \'\';
$from_cookie_array = array();
$from_cookie = getcookie(\'from_cookie\');
$from_cookie_array = explode("\t", $from_cookie);
$from_cookie_array[] = $_GET[\'from\'];
$from_cookie_array = array_unique($from_cookie_array);
$from_cookie_array = array_filter($from_cookie_array);
$from_cookie_num = count($from_cookie_array);
$from_cookie_start = $from_cookie_num - 10;
$from_cookie_start = $from_cookie_start > 0 ? $from_cookie_start : 0;
$from_cookie_array = array_slice($from_cookie_array, $from_cookie_start, $from_cookie_num);
$from_cookie = implode("\t", $from_cookie_array);
dsetcookie(\'from_cookie\', $from_cookie);
}
dsetcookie(\'clearUserdata\', \'home\');
$op = \'add_success\';
$article_add_url = \'portal.php?mod=portalcp&ac=article&catid=\'.$catid;
$article = C::t(\'portal_article_title\')->fetch($aid);
$viewarticleurl = $_POST[\'url\'] ? "portal.php?mod=list&catid=$_POST[catid]" : fetch_article_url($article);
showMsg(\'发布成功\');
}
}
//接口需要用到的函数库
function portalcp_get_summary($message) {
$message = preg_replace(array("/\[attach\].*?\[\/attach\]/", "/\&[a-z]+\;/i", "/\<script.*?\<\/script\>/"), \'\', $message);
$message = preg_replace("/\[.*?\]/", \'\', $message);
$message = getstr(strip_tags($message), 200);
return $message;
}
function portalcp_article_pre_next($catid, $aid) {
$data = array(
\'preaid\' => C::t(\'portal_article_title\')->fetch_preaid_by_catid_aid($catid, $aid),
\'nextaid\' => C::t(\'portal_article_title\')->fetch_nextaid_by_catid_aid($catid, $aid),
);
if($data[\'preaid\']) {
C::t(\'portal_article_title\')->update($data[\'preaid\'], array(
\'preaid\' => C::t(\'portal_article_title\')->fetch_preaid_by_catid_aid($catid, $data[\'preaid\']),
\'nextaid\' => C::t(\'portal_article_title\')->fetch_nextaid_by_catid_aid($catid, $data[\'preaid\']),
)
);
}
return $data;
}
?>