where(" page_id = '$page_id' ")->find(); if (!$page || $page['is_del'] == 1) { sleep(1); $this->sendError(10101); return false; } $login_user = $this->checkLogin(false); if (!$this->checkItemVisit($login_user['uid'] , $page['item_id'])) { $this->sendError(10103); return; } $page = $page ? $page : array(); if ($page) { //unset($page['page_content']); $page['addtime'] = date("Y-m-d H:i:s",$page['addtime']); //判断是否包含附件信息 $page['attachment_count'] = D("FilePage")->where("page_id = '$page_id' ")->count(); $singlePage = M("SinglePage")->where(" page_id = '%d' ",array($page_id))->limit(1)->find(); if ($singlePage) { $page['unique_key'] = $singlePage['unique_key'] ; }else{ $page['unique_key'] = '' ; } } $this->sendResult($page); } //删除页面 public function delete(){ $page_id = I("page_id/d")? I("page_id/d") : 0; $page = D("Page")->where(" page_id = '$page_id' ")->find(); $login_user = $this->checkLogin(); if (!$this->checkItemCreator($login_user['uid'] , $page['item_id']) && $login_user['uid'] != $page['author_uid']) { $this->sendError(10303); return ; } if ($page) { $ret = D("Page")->softDeletePage($page_id); //更新项目时间 D("Item")->where(" item_id = '$page[item_id]' ")->save(array("last_update_time"=>time())); } if ($ret) { $this->sendResult(array()); }else{ $this->sendError(10101); } } //保存 public function save(){ $login_user = $this->checkLogin(); $page_id = I("page_id/d") ? I("page_id/d") : 0 ; $is_urlencode = I("is_urlencode/d") ? I("is_urlencode/d") : 0 ; //页面内容是否经过了转义 $page_title = I("page_title") ?I("page_title") : L("default_title"); $page_comments = I("page_comments") ?I("page_comments") :''; $page_content = I("page_content"); $cat_id = I("cat_id/d")? I("cat_id/d") : 0; $item_id = I("item_id/d")? I("item_id/d") : 0; $s_number = I("s_number/d")? I("s_number/d") : ''; $login_user = $this->checkLogin(); if (!$this->checkItemPermn($login_user['uid'] , $item_id)) { $this->sendError(10103); return; } if (!$page_content) { $this->sendError(10103,"不允许保存空内容,请随便写点什么"); return; } if ($is_urlencode) { $page_content = urldecode($page_content); } $data['page_title'] = $page_title ; $data['page_content'] = $page_content ; $data['page_comments'] = $page_comments ; if($s_number)$data['s_number'] = $s_number ; $data['item_id'] = $item_id ; $data['cat_id'] = $cat_id ; $data['addtime'] = time(); $data['author_uid'] = $login_user['uid'] ; $data['author_username'] = $login_user['username']; if ($page_id > 0 ) { //在保存前先把当前页面的版本存档 $page = D("Page")->where(" page_id = '$page_id' ")->find(); if (!$this->checkItemPermn($login_user['uid'] , $page['item_id'])) { $this->sendError(10103); return; } $insert_history = array( 'page_id'=>$page['page_id'], 'item_id'=>$page['item_id'], 'cat_id'=>$page['cat_id'], 'page_title'=>$page['page_title'], 'page_comments'=>$page['page_comments'], 'page_content'=>base64_encode( gzcompress($page['page_content'], 9)), 's_number'=>$page['s_number'], 'addtime'=>$page['addtime'], 'author_uid'=>$page['author_uid'], 'author_username'=>$page['author_username'], ); D("PageHistory")->add($insert_history); $ret = D("Page")->where(" page_id = '$page_id' ")->save($data); //统计该page_id有多少历史版本了 $Count = D("PageHistory")->where(" page_id = '$page_id' ")->Count(); if ($Count > 20 ) { //每个单页面只保留最多20个历史版本 $ret = D("PageHistory")->where(" page_id = '$page_id' ")->limit("20")->order("page_history_id desc")->select(); D("PageHistory")->where(" page_id = '$page_id' and page_history_id < ".$ret[19]['page_history_id'] )->delete(); } //如果是单页项目,则将页面标题设置为项目名 $item_array = D("Item")->where(" item_id = '$item_id' ")->find(); if ($item_array['item_type'] == 2 ) { D("Item")->where(" item_id = '$item_id' ")->save(array("last_update_time"=>time(),"item_name"=>$page_title)); }else{ D("Item")->where(" item_id = '$item_id' ")->save(array("last_update_time"=>time())); } $return = D("Page")->where(" page_id = '$page_id' ")->find(); }else{ $page_id = D("Page")->add($data); //更新项目时间 D("Item")->where(" item_id = '$item_id' ")->save(array("last_update_time"=>time())); $return = D("Page")->where(" page_id = '$page_id' ")->find(); } if (!$return) { $return['error_code'] = 10103 ; $return['error_message'] = 'request fail' ; } $this->sendResult($return); } //历史版本列表 public function history(){ $login_user = $this->checkLogin(false); $page_id = I("page_id/d") ? I("page_id/d") : 0 ; $page = M("Page")->where(" page_id = '$page_id' ")->find(); if (!$this->checkItemVisit($login_user['uid'] , $page['item_id'])) { $this->sendError(10103); return; } $PageHistory = D("PageHistory")->where("page_id = '$page_id' ")->order(" addtime desc")->limit(20)->select(); if ($PageHistory) { foreach ($PageHistory as $key => &$value) { $value['addtime'] = date("Y-m-d H:i:s" , $value['addtime']); $page_content = uncompress_string($value['page_content']); if (!empty($page_content)) { $value['page_content'] = htmlspecialchars_decode($page_content) ; } } $this->sendResult($PageHistory); }else{ $this->sendResult(array()); } } //返回当前页面和历史某个版本的页面以供比较 public function diff(){ $page_id = I("page_id/d"); $page_history_id = I("page_history_id/d"); if (!$page_id) { return false; } $page = M("Page")->where(" page_id = '$page_id' ")->find(); if (!$page) { sleep(1); $this->sendError(10101); return false; } $login_user = $this->checkLogin(false); if (!$this->checkItemVisit($login_user['uid'] , $page['item_id'])) { $this->sendError(10103); return; } $history_page = D("PageHistory")->where(" page_history_id = '$page_history_id' ")->find(); $page_content = uncompress_string($history_page['page_content']); $history_page['page_content'] = $page_content ? $page_content : $history_page['page_content'] ; $this->sendResult(array("page"=>$page,"history_page"=>$history_page)); } //上传图片 public function uploadImg(){ //重定向控制器和方法 R("Attachment/uploadImg"); } //上传附件 public function upload(){ //重定向控制器和方法 R("Attachment/attachmentUpload"); } public function uploadList(){ //重定向控制器和方法 R("Attachment/pageAttachmentUploadList"); } //删除已上传文件 public function deleteUploadFile(){ //重定向控制器和方法 R("Attachment/deletePageUploadFile"); } //创建单页 public function createSinglePage(){ $page_id = I("page_id/d"); $isCreateSiglePage = I("isCreateSiglePage"); $page = M("Page")->where(" page_id = '$page_id' ")->find(); if (!$page || $page['is_del'] == 1) { sleep(1); $this->sendError(10101); return false; } $login_user = $this->checkLogin(false); if (!$this->checkItemPermn($login_user['uid'] , $page['item_id'])) { $this->sendError(10103); return; } D("SinglePage")->where(" page_id = '$page_id' ")->delete(); $unique_key = md5(time().rand()."gbgdhbdgtfgfK3@bv45342regdhbdgtfgftghsdg"); $add = array( "unique_key" => $unique_key , "page_id" => $page_id , ); if ($isCreateSiglePage == 'true') { //这里的布尔值被转成字符串了 D("SinglePage")->add($add); $this->sendResult($add); }else{ $this->sendResult(array()); } } //页面详情 public function infoByKey(){ $unique_key = I("unique_key"); if (!$unique_key) { return false; } $singlePage = M("SinglePage")->where(" unique_key = '%s' ",array($unique_key))->find(); $page_id = $singlePage['page_id']; $page = M("Page")->where(" page_id = '$page_id' ")->find(); if (!$page || $page['is_del'] == 1) { sleep(1); $this->sendError(10101); return false; } $login_user = $this->checkLogin(false); $page = $page ? $page : array(); if ($page) { unset($page['item_id']); unset($page['cat_id']); $page['addtime'] = date("Y-m-d H:i:s",$page['addtime']); //判断是否包含附件信息 $page['attachment_count'] = D("FilePage")->where("page_id = '$page_id' ")->count(); } $this->sendResult($page); } //同一个目录下的页面排序 public function sort(){ $pages = I("pages"); $item_id = I("item_id/d"); $login_user = $this->checkLogin(); if (!$this->checkItemPermn($login_user['uid'] , $item_id)) { $this->sendError(10103); return ; } $ret = ''; $data_array = json_decode(htmlspecialchars_decode($pages) , true) ; if ($data_array) { foreach ($data_array as $key => $value) { $ret = D("Page")->where(" page_id = '$key' and item_id = '$item_id' ")->save(array( "s_number" => $value , )); } } $this->sendResult(array()); } //判断页面是否加了编辑锁 public function isLock(){ $page_id = I("page_id/d"); $lock = 0 ; $now = time() ; $login_user = $this->checkLogin(false); $res = D("PageLock")->where(" page_id = '$page_id' and page_id > 0 and lock_to > '{$now}' ")->find() ; if( $res){ $lock = 1 ; } $this->sendResult(array( "lock" => $lock, "lock_uid" => $res['lock_uid'] ? $res['lock_uid'] : '', "lock_username" => $res['lock_username'] ? $res['lock_username'] : '', "is_cur_user" => $res['lock_uid'] == $login_user['uid'] ? 1 : 0 , )); } //设置页面加锁时间 public function setLock(){ $page_id = I("page_id/d"); $lock_to = I("lock_to/d") ? I("lock_to/d") :(time() + 5*60*60 ) ; $item_id = I("item_id/d"); $login_user = $this->checkLogin(); if (!$this->checkItemPermn($login_user['uid'] , $item_id)) { $this->sendError(10103); return ; } D("PageLock")->where( "page_id = '{$page_id}' ")->delete(); $id = D("PageLock")->add(array( "page_id" => $page_id , "lock_uid" => $login_user['uid'] , "lock_username" => $login_user['username'] , "lock_to" => $lock_to , "addtime" => time() , )); $now = time() ; D("PageLock")->where( "lock_to < '{$now}' ")->delete(); $this->sendResult(array("id"=>$id)); } }