Art:
<?php
/**
* @name UserController
* @author pangee
* @desc 用户控制器
*/
class ArtController extends Yaf_Controller_Abstract {
public function indexAction() {
return $this->listAction();
}
public function addAction($artId=0){
if(!$this->_isAdmin())
{
echo json_encode( array("errno"=>-2000, "errmsg"=>"需要管理员权限才可以操作") );
return FALSE;
}
$submit = $this->getRequest()->getQuery( "submit", "0" );
if($submit!="1"){
echo json_encode(array("errno"=>-2001,"errmsg"=>"请通过正确渠道提交"));
return false;
}
$title = $this->getRequest()->getPost( "title", false );
$contents = $this->getRequest()->getPost( "contents", false );
$author = $this->getRequest()->getPost( "author", false );
$cate = $this->getRequest()->getPost( "cate", false );
if(!$title||!$contents||!$author||!$cate){
echo json_encode( array("errno"=>-2002, "errmsg"=>"标题、内容、作者、分类信息为空,不能为空") );
return FALSE;
}
$model = new ArtModel();
if ( $lastId = $model->add( trim($title), trim($contents), trim($author), trim($cate), $artId) ) {
echo json_encode( array(
"errno"=>0,
"errmsg"=>"",
"data"=>array("lastId"=>$lastId),
));
} else {
echo json_encode( array(
"errno"=>$model->errno,
"errmsg"=>$model->errmsg,
));
}
return TRUE;
}
public function editAction(){
if(!$this->_isAdmin()){
echo json_encode( array("errno"=>-2000, "errmsg"=>"需要管理员权限才可以操作") );
return FALSE;
}
$artId = $this->getRequest()->getQuery( "artId", "0" );
if( is_numeric($artId) && $artId ) {
return $this->addAction( $artId );
} else {
echo json_encode( array("errno"=>-2003, "errmsg"=>"缺少必要的文章ID参数") );
}
return TRUE;
}
public function delAction(){
if(!$this->_isAdmin()){
echo json_encode( array("errno"=>-2000, "errmsg"=>"需要管理员权限才可以操作") );
return FALSE;
}
$artId=$this->getRequest()->getQuery('artId',"0");
if(is_numeric($artId)&&$artId){
$model = new ArtModel();
if( $model->del( $artId ) ) {
echo json_encode( array(
"errno"=>0,
"errmsg"=>"",
));
} else {
echo json_encode( array(
"errno"=>$model->errno,
"errmsg"=>$model->errmsg,
));
}
} else {
echo json_encode( array("errno"=>-2003, "errmsg"=>"缺少必要的文章标题参数") );
}
return TRUE;
}
public function statusAction(){
if(!$this->_isAdmin()){
echo json_encode( array("errno"=>-2000, "errmsg"=>"需要管理员权限才可以操作") );
return FALSE;
}
$artId=$this->getRequest()->getQuery('artId',"0");
$status = $this->getRequest()->getQuery( "status", "offline" );
if(is_numeric($artId)&&$artId){
$model = new ArtModel();
if( $model->status( $artId,$status) ) {
echo json_encode( array(
"errno"=>0,
"errmsg"=>"",
));
} else {
echo json_encode( array(
"errno"=>$model->errno,
"errmsg"=>$model->errmsg,
));
}
} else {
echo json_encode( array("errno"=>-2003, "errmsg"=>"缺少必要的文章标题参数") );
}
return TRUE;
}
public function getAction(){
$artId = $this->getRequest()->getQuery( "artId", "0" );
if( is_numeric($artId) && $artId ) {
$model = new ArtModel();
if( $data=$model->get( $artId ) ) {
echo json_encode( array(
"errno"=>0,
"errmsg"=>"",
"data"=>$data,
));
} else {
echo json_encode( array("errno"=>-2009, "errmsg"=>"获取文章信息失败") );
}
} else {
echo json_encode( array("errno"=>-2003, "errmsg"=>"缺少必要的文章标题参数") );
}
return TRUE;
}
public function listAction(){
$pageNo = $this->getRequest()->getQuery( "pageNo", "0" );
$pageSize = $this->getRequest()->getQuery( "pageSize", "10" );
$cate = $this->getRequest()->getQuery( "cate", "0" );
$status = $this->getRequest()->getQuery( "status", "online" );
$model = new ArtModel();
if( $data=$model->list( $pageNo, $pageSize, $cate, $status ) ) {
echo json_encode( array(
"errno"=>0,
"errmsg"=>"",
"data"=>$data,
));
} else {
echo json_encode( array("errno"=>-2012, "errmsg"=>"获取文章列表失败") );
}
return TRUE;
}
public function _isAdmin(){
return true;
}
}
Artmodel:
<?php
/**
* @name UserModel
* @desc 用户操作Model类
* @author pangee
*/
class ArtModel {
public $errno = 0;
public $errmsg = "";
private $_db;
public function __construct() {
$this->_db = new PDO("mysql:host=127.0.0.1;dbname=imooc;", "root", "");
$this->_db->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
}
public function add( $title, $contents, $author, $cate, $artId=0 ) {
$isEdit=false;
if($artId!=0&&is_numeric($artId)){
$query = $this->_db->prepare("select count(*) from `art` where `id`= ? ");
$query->execute( array($artId) );
$ret = $query->fetchAll();
if ( !$ret || count($ret)!=1 ) {
$this->errno = -2004;
$this->errmsg = "找不到你要编辑的文章!";
return false;
}
$isEdit = true;
}else{
$query=$this->_db->prepare("select count(*) from 'cate' where 'id' =?");
$query->execute(array($cate));
$ret=$query->fetchAll();
if ( !$ret || $ret[0][0]==0 ) {
$this->errno = -2005;
$this->errmsg = "找不到对应ID的分类信息,cate id:".$cate.", 请先创建该分类。";
return false;
}
}
$data=array($title,$contents,$author,intval($cate));
if(!$isEdit){
$query = $this->_db->prepare("insert into `art` (`title`,`contents`,`author`,`cate`) VALUES ( ?, ?, ?, ? )");
}else {
$query = $this->_db->prepare("update `art` set `title`=?, `contents`=?, `author`=?, `cate`=? where `id`= ?");
$data[] = $artId;
}
$ret = $query->execute( $data );
if ( !$ret ) {
$this->errno = -2006;
$this->errmsg = "操作文章数据表失败, ErrInfo:".end($query->errorInfo());
return false;
}
if( !$isEdit ) {
return intval($this->_db->lastInsertId());
} else {
return intval($artId);
}
}
public function del( $artId ){
$query = $this->_db->prepare("delete from `art` where `id`=? ");
$ret = $query->execute( array(intval($artId)) );
if( !$ret ) {
$this->errno = -2007;
$this->errmsg = "删除失败, ErrInfo:".end($query->errorInfo());
return false;
}
return true;
}
public function status( $artId, $status="offline" ){
$query = $this->_db->prepare("update `art` set `status`=? where `id`=? ");
$ret = $query->execute( array( $status, intval($artId)) );
if( !$ret ) {
$this->errno = -2008;
$this->errmsg = "更新文章状态失败, ErrInfo:".end($query->errorInfo());
return false;
}
return true;
}
public function get( $artId ){
$query = $this->_db->prepare("select `title`,`contents`,`author`,`cate`,`ctime`,`mtime`,`status` from `art` where `id`=? ");
$status = $query->execute( array( intval($artId)) );
$ret = $query->fetchAll();
if( !$status || !$ret ) {
$this->errno = -2009;
$this->errmsg = "查询失败, ErrInfo:".end($query->errorInfo());
return false;
}
$artInfo = $ret[0];
/**
* 获取分类信息
*/
$query = $this->_db->prepare("select `name` from `cate` where `id`=?");
$query->execute( array( $artInfo['cate']) );
$ret = $query->fetchAll();
if( !$ret ) {
$this->errno = -2010;
$this->errmsg = "获取分类信息失败, ErrInfo:".end($query->errorInfo());
return false;
}
$artInfo['cateName'] = $ret[0]['name'];
$data = array(
'id' => intval($artId),
'title'=> $artInfo['title'],
'contents'=> $artInfo['contents'],
'author'=> $artInfo['author'],
'cateName'=> $artInfo['cateName'],
'cateId'=> intval($artInfo['cate']),
'ctime'=> $artInfo['ctime'],
'mtime'=> $artInfo['mtime'],
'status'=> $artInfo['status'],
);
return $data;
}
public function list($pageNo=0, $pageSize=10, $cate=0, $status="online"){
$start=$pageNo*$pageSize+($pageNo==0?0:1);
if( $cate == 0 ) {
$filter = array( $status, intval($start), intval($pageSize) );
$query = $this->_db->prepare("select `id`, `title`,`contents`,`author`,`cate`,`ctime`,`mtime`,`status` from `art` where `status`=? order by `ctime` desc limit ?,? ");
} else {
$filter = array( intval($cate), $status, intval($start), intval($pageSize) );
$query = $this->_db->prepare("select `id`, `title`,`contents`,`author`,`cate`,`ctime`,`mtime`,`status` from `art` where `cate`=? and `status`=? order by `ctime` desc limit ?,? ");
}
$stat=$query->execute($filter);
$ret=$stat->fetchAll();
if(!$ret){
$this->errno = -2011;
$this->errmsg = "获取文章列表失败, ErrInfo:".end($query->errorInfo());
return false;
}
$data = array();
$cateInfo = array();
foreach( $ret as $item ) {
/**
* 获取分类信息
*/
if( isset($cateInfo[$item['cate']]) ){
$cateName = $cateInfo[$item['cate']];
} else {
$query = $this->_db->prepare("select `name` from `cate` where `id`=?");
$query->execute( array( $item['cate']) );
$retCate = $query->fetchAll();
if( !$retCate ) {
$this->errno = -2010;
$this->errmsg = "获取分类信息失败, ErrInfo:".end($query->errorInfo());
return false;
}
$cateName = $cateInfo[$item['cate']] = $retCate[0]['name'];
}
/**
* 正文太长则剪切
*/
$contents = mb_strlen($item['contents'])>30 ? mb_substr($item['contents'], 0, 30)."..." : $item['contents'];
$data[] = array(
'id' => intval($item['id']),
'title'=> $item['title'],
'contents'=> $contents,
'author'=> $item['author'],
'cateName'=> $cateName,
'cateId'=> intval($item['cate']),
'ctime'=> $item['ctime'],
'mtime'=> $item['mtime'],
'status'=> $item['status'],
);
}
return $data;
}
}