peixunguanwang/apps/api/controller/ListController.php
2022-03-30 09:13:50 +08:00

109 lines
4.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2018年4月20日
* 内容列表接口控制器
*/
namespace app\api\controller;
use core\basic\Controller;
use app\api\model\CmsModel;
use core\basic\Url;
use app\home\controller\ParserController;
class ListController extends Controller
{
protected $model;
public function __construct()
{
$this->model = new CmsModel();
}
public function index()
{
// 获取参数
$acode = request('acode', 'var') ?: get_default_lg();
$scode = request('scode', 'var') ?: '';
$num = request('num', 'int') ?: $this->config('pagesize');
$rorder = request('order');
if (! preg_match('/^[\w\-,\s]+$/', $rorder)) {
$order = 'a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
} else {
switch ($rorder) {
case 'id':
$order = 'a.id DESC,a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC';
break;
case 'date':
$order = 'a.date DESC,a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.id DESC';
break;
case 'sorting':
$order = 'a.sorting ASC,a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.date DESC,a.id DESC';
break;
case 'istop':
$order = 'a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
break;
case 'isrecommend':
$order = 'a.isrecommend DESC,a.istop DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
break;
case 'isheadline':
$order = 'a.isrecommend DESC,a.istop DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
break;
case 'visits':
case 'likes':
case 'oppose':
$order = $rorder . ' DESC,a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
break;
case 'random': // 随机取数
$db_type = get_db_type();
if ($db_type == 'mysql') {
$order = "RAND()";
} elseif ($db_type == 'sqlite') {
$order = "RANDOM()";
}
break;
default:
if ($rorder) {
$orders = explode(',', $rorder);
foreach ($orders as $k => $v) {
if (strpos($v, 'ext_') === 0) {
$orders[$k] = 'e.' . $v;
} else {
$orders[$k] = 'a.' . $v;
}
}
$order = implode(',', $orders);
$order .= ',a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC';
}
}
}
// 读取数据
$data = $this->model->getLists($acode, $scode, $num, $order);
$Parser = new ParserController();
foreach ($data as $key => $value) {
if ($value->outlink) {
$data[$key]->apilink = $value->outlink;
} else {
$data[$key]->apilink = url('/api/content/index/id/' . $value->id, false);
}
$data[$key]->likeslink = url('/home/Do/likes/id/' . $value->id, false);
$data[$key]->opposelink = url('/home/Do/oppose/id/' . $value->id, false);
$data[$key]->content = str_replace(STATIC_DIR . '/upload/', get_http_url() . STATIC_DIR . '/upload/', $value->content);
// 返回网页链接地址便于AJAX调用内容
$data[$key]->contentlink = $Parser->parserLink(2, $value->urlname, 'content', $value->scode, $value->sortfilename, $value->id, $value->filename);
}
// 输出数据
if (request('page') <= PAGECOUNT) {
json(1, $data);
} else {
return json(0, '已经到底了!');
}
}
}