示例:emlog文章 

类型
发布插件 » cms程序
标识
EmlogDemoSkycaiji
下载
303次
评论
2条
更新
2020-01-10
开发者
官方
实现emlog文章入库功能,您可参考该代码开发更多emlog插件,使用时需在数据绑定»CMS路径结尾加上@emlog
<?php
/**
 * 示例:emlog文章
 * 您可参考代码自行开发emlog的更多功能
 * 您可以使用 thinkphp5的函数
 */
namespace plugin\release\cms;

class EmlogDemoSkycaiji extends BaseCms{
	public $siteurl;//cms站点网址
	//初始化扩展
	public function init_extend(){
		$this->siteurl=$this->db()->table('__OPTIONS__')->where(array('option_name'=>'blogurl'))->value('option_value');
	}
	public function cms_db_emlog($cmsPath){
		$configFile=realpath($cmsPath.'/config.php');
		$cmsDb=array('db_type'=>'mysql','db_charset'=>'utf8');
		if(file_exists($configFile)){
			$configFile=file_get_contents($configFile);
			if($configFile){
				$dbKeys=array('db_host'=>'DB_HOST','db_user'=>'DB_USER','db_pwd'=>'DB_PASSWD','db_prefix'=>'DB_PREFIX','db_name'=>'DB_NAME');
				foreach($dbKeys as $k=>$v){
					if(preg_match('/define\s*\(\s*[\'\"]'.$v.'[\'\"]\s*,\s*[\'\"](?P<val>[^\'\"]+)[\'\"]\s*\)/i',$configFile,$val)){
						$cmsDb[$k]=$val['val'];
					}
				}
			}
		}
		return $cmsDb;
	}
	//参数
	public $_params = array (
		'author' => array (
			'name' => '作者账号',
			'require' => 1,
			'tag' => 'select',
			'option' => 'function:param_option_author',
		),
		'category' => array (
			'name' => '分类',
			'tag' => 'select',
			'option' => 'function:param_option_category',
		),
		'title' => array (
			'name' => '文章标题',
			'require' => 1,
			'tag' => 'select',
			'option' => 'function:param_option_fields',
		),
		'content' => array (
			'name' => '文章内容',
			'require' => 1,
			'tag' => 'select',
			'option' => 'function:param_option_fields',
		),
	);

	/*
	 * 导入数据
	* 必须以数组形式返回:
	* id(必填)表示入库返回的自增id或状态
	* target(可选)记录入库的数据位置(发布的网址等)
	* desc(可选)记录入库的数据位置附加信息
	* error(可选)记录入库失败的错误信息
	* 入库的信息可在“已采集数据”中查看
	* return array('id'=>0,'target'=>'','desc'=>'','error'=>'');
	*/
	public function runImport($params){
		$uid=$this->db()->table('__USER__')->where(array('username'=>$params['author']))->find();
		if(!empty($uid)){
			$uid=$uid['uid'];
		}else{
			return array('id'=>0,'error'=>'用户不存在');
		}
		$newPost=array(
			'title'=>$params['title'],
			'date'=>time(),
			'content'=>$params['content'],
			'excerpt'=>'',
			'alias'=>'',
			'author'=>$uid,
			'sortid'=>1,
			'type'=>'blog',
			'views'=>0,
			'comnum'=>0,
			'attnum'=>0,
			'top'=>'n',
			'sortop'=>'n',
			'hide'=>'n',
			'checked'=>'y',
			'allow_remark'=>'y',
			'password'=>'',
			'template'=>'',
			'tags'=>'',
		);
		
		$postId=$this->db()->table('__BLOG__')->insert($newPost,false,true);//添加文章并返回id
		if($postId>0){
			//返回成功内容网址
			$target=$this->siteurl.'?post='.$postId;
			return array('id'=>$postId,'target'=>$target);
		}else{
			return array('id'=>0,'error'=>'文章入库失败');
		}
	}
	/*
	 * 参数选项:作者
	 * 必须返回键值对形式的数组
	 */
	public function param_option_author(){
		$usersDb=$this->db()->table('__USER__')->limit(100)->select();
		$userList=array();
		foreach ($usersDb as $user){
			$userList[$user['username']]=$user['username'];
		}
		return $userList;
	}
	
	/*
	 * 参数选项:分类
	 * 必须返回键值对形式的数组
	 */
	public function param_option_category(){
		$catsDb=$this->db()->table('__SORT__')->select();
		$catList=array();
		foreach ($catsDb as $cat){
			$catList[$cat['sid']]=$cat['sortname'];
		}
		return $catList;
	}
}
?>