You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

392 lines
13 KiB

<?php
namespace Api\Controller;
use Think\Controller;
class PageController extends BaseController
{
function tt()
{
$file = $_FILES["file"];
dump($_FILES);
// exit();
$res = upload_oss($file);
dump($res);
}
public function test()
{
$oss_setting = D("Options")->get("oss_setting");
dump($oss_setting);
}
//页面详情
public function info()
{
$page_id = I("page_id/d");
$page = D("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->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("UploadFile")->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/pageAttachmentUpload");
}
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("UploadFile")->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 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));
}
}