223 lines
8.2 KiB
PHP
223 lines
8.2 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2013-2014 http://www.thinkcmf.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: Dean <zxxjjforever@163.com>
|
|
namespace Portal\Controller;
|
|
|
|
use Common\Controller\HomebaseController;
|
|
|
|
class ArticleController extends HomebaseController {
|
|
|
|
//文章内页
|
|
public function index() {
|
|
$article_id=I('get.id',0,'intval');
|
|
$term_id=I('get.cid',0,'intval');
|
|
|
|
$posts_model=M("Posts");
|
|
|
|
$article=$posts_model
|
|
->alias("a")
|
|
->field('a.*,c.user_login,c.user_nicename,b.term_id')
|
|
->join("__TERM_RELATIONSHIPS__ b ON a.id = b.object_id")
|
|
->join("__USERS__ c ON a.post_author = c.id")
|
|
->where(array('a.id'=>$article_id,'b.term_id'=>$term_id))
|
|
->find();
|
|
|
|
if(empty($article)){
|
|
header('HTTP/1.1 404 Not Found');
|
|
header('Status:404 Not Found');
|
|
if(sp_template_file_exists(MODULE_NAME."/404")){
|
|
$this->display(":404");
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
$terms_model= M("Terms");
|
|
$term=$terms_model->where(array('term_id'=>$term_id))->find();
|
|
|
|
$posts_model->where(array('id'=>$article_id))->setInc('post_hits');
|
|
|
|
$article_date=$article['post_date'];
|
|
|
|
$join = '__POSTS__ as b on a.object_id =b.id';
|
|
$join2= '__USERS__ as c on b.post_author = c.id';
|
|
|
|
$term_relationships_model= M("TermRelationships");
|
|
|
|
$next=$term_relationships_model
|
|
->alias("a")
|
|
->join($join)->join($join2)
|
|
->where(array('b.id'=>array('gt',$article_id),"post_date"=>array("egt",$article_date),"a.status"=>1,'a.term_id'=>$term_id,'post_status'=>1))
|
|
->order("post_date asc,b.id asc")
|
|
->find();
|
|
|
|
$prev=$term_relationships_model
|
|
->alias("a")
|
|
->join($join)->join($join2)
|
|
->where(array('b.id'=>array('lt',$article_id),"post_date"=>array("elt",$article_date),"a.status"=>1,'a.term_id'=>$term_id,'post_status'=>1))
|
|
->order("post_date desc,b.id desc")
|
|
->find();
|
|
|
|
$this->assign("next",$next);
|
|
$this->assign("prev",$prev);
|
|
|
|
$smeta=json_decode($article['smeta'],true);
|
|
$content_data=sp_content_page($article['post_content']);
|
|
$article['post_content']=$content_data['content'];
|
|
|
|
$this->assign("page",$content_data['page']);
|
|
$this->assign($article);
|
|
$this->assign("smeta",$smeta);
|
|
$this->assign("term",$term);
|
|
$this->assign("article_id",$article_id);
|
|
|
|
$tplname=$term["one_tpl"];
|
|
$tplname=empty($smeta['template'])?$tplname:$smeta['template'];
|
|
$tplname=sp_get_apphome_tpl($tplname, "article");
|
|
|
|
$this->display(":$tplname");
|
|
}
|
|
|
|
// 文章点赞
|
|
public function do_like(){
|
|
$this->check_login();
|
|
|
|
$id = I('get.id',0,'intval');//posts表中id
|
|
|
|
$posts_model=M("Posts");
|
|
|
|
$can_like=sp_check_user_action("posts$id",1);
|
|
|
|
if($can_like){
|
|
$posts_model->save(array("id"=>$id,"post_like"=>array("exp","post_like+1")));
|
|
$this->success("赞好啦!");
|
|
}else{
|
|
$this->error("您已赞过啦!");
|
|
}
|
|
}
|
|
|
|
// 前台用户添加文章
|
|
public function add(){
|
|
$this->check_login();
|
|
$this->_getTermTree();
|
|
$this->display();
|
|
}
|
|
|
|
// 前台用户添加文章提交
|
|
public function add_post(){
|
|
if(IS_POST){
|
|
$this->check_login();
|
|
|
|
if(empty($_POST['term'])){
|
|
$this->error("请至少选择一个分类!");
|
|
}
|
|
$posts_model=M('Posts');
|
|
$term_relationships_model=M('TermRelationships');
|
|
|
|
$_POST['smeta']['thumb'] = sp_asset_relative_url($_POST['smeta']['thumb']);
|
|
|
|
$_POST['post']['post_date']=date("Y-m-d H:i:s",time());
|
|
$_POST['post']['post_modified']=date("Y-m-d H:i:s",time());
|
|
$_POST['post']['post_author']=sp_get_current_userid();
|
|
$article=I("post.post");
|
|
$article['smeta']=json_encode($_POST['smeta']);
|
|
$article['post_content']=safe_html(htmlspecialchars_decode($article['post_content']));
|
|
if ($posts_model->field('post_date,post_author,post_content,post_title,post_modified,smeta')->create($article)!==false) {
|
|
$result=$posts_model->add();
|
|
if ($result) {
|
|
$result=$term_relationships_model->add(array("term_id"=>intval($_POST['term']),"object_id"=>$result));
|
|
if($result){
|
|
$this->success("文章添加成功!");
|
|
}else{
|
|
$posts_model->delete($result);
|
|
$this->error("文章添加失败!");
|
|
}
|
|
|
|
} else {
|
|
$this->error("文章添加失败!");
|
|
}
|
|
}else{
|
|
$this->error($posts_model->getError());
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 前台用户文章编辑
|
|
public function edit(){
|
|
$this->check_login();
|
|
$id=I("get.id",0,'intval');
|
|
$terms_model=M('Terms');
|
|
$posts_model=M('Posts');
|
|
|
|
$term_relationship = M('TermRelationships')->where(array("object_id"=>$id,"status"=>1))->getField("term_id",true);
|
|
$this->_getTermTree();
|
|
$post=$posts_model->where(array('id'=>$id,'post_author'=>sp_get_current_userid()))->find();
|
|
if(!empty($post)){
|
|
$this->assign("post",$post);
|
|
$this->assign("smeta",json_decode($post['smeta'],true));
|
|
$this->display();
|
|
}else{
|
|
$this->error('您编辑的文章不存在!');
|
|
}
|
|
|
|
}
|
|
|
|
// 前台用户文章编辑提交
|
|
public function edit_post(){
|
|
if(IS_POST){
|
|
$this->check_login();
|
|
|
|
$posts_model=M('Posts');
|
|
$term_relationships_model=M('TermRelationships');
|
|
|
|
$_POST['smeta']['thumb'] = sp_asset_relative_url($_POST['smeta']['thumb']);
|
|
$_POST['post']['post_modified']=date("Y-m-d H:i:s",time());
|
|
$article=I("post.post");
|
|
$article['smeta']=json_encode($_POST['smeta']);
|
|
$article['post_content']=safe_html(htmlspecialchars_decode($article['post_content']));
|
|
if ($posts_model->field('id,post_author,post_content,post_title,post_modified,smeta')->create($article)!==false) {
|
|
$result=$posts_model->where(array('id'=>$article['id'],'post_author'=>sp_get_current_userid()))->save($article);
|
|
if ($result!==false) {
|
|
$this->success("文章编辑成功!");
|
|
} else {
|
|
$this->error("文章编辑失败!");
|
|
}
|
|
}else{
|
|
$this->error($posts_model->getError());
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// 获取文章分类树结构
|
|
private function _getTermTree($term=array()){
|
|
$result =M('Terms')->order(array("listorder"=>"asc"))->select();
|
|
|
|
$tree = new \Tree();
|
|
$tree->icon = array(' │ ', ' ├─ ', ' └─ ');
|
|
$tree->nbsp = ' ';
|
|
foreach ($result as $r) {
|
|
$r['str_manage'] = '<a href="' . U("AdminTerm/add", array("parent" => $r['term_id'])) . '">添加子类</a> | <a href="' . U("AdminTerm/edit", array("id" => $r['term_id'])) . '">修改</a> | <a class="js-ajax-delete" href="' . U("AdminTerm/delete", array("id" => $r['term_id'])) . '">删除</a> ';
|
|
$r['visit'] = "<a href='#'>访问</a>";
|
|
$r['taxonomys'] = $this->taxonomys[$r['taxonomy']];
|
|
$r['id']=$r['term_id'];
|
|
$r['parentid']=$r['parent'];
|
|
$r['selected']=in_array($r['term_id'], $term)?"selected":"";
|
|
$r['checked'] =in_array($r['term_id'], $term)?"checked":"";
|
|
$array[] = $r;
|
|
}
|
|
|
|
$tree->init($array);
|
|
$str="<option value='\$id' \$selected>\$spacer\$name</option>";
|
|
$terms = $tree->get_tree(0, $str);
|
|
$this->assign('terms', $terms);
|
|
}
|
|
}
|