VvebOIDC/admin/controller/content/comments.php

123 lines
3.7 KiB
PHP

<?php
/**
* Vvveb
*
* Copyright (C) 2022 Ziadin Givan
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Vvveb\Controller\Content;
use function Vvveb\__;
use Vvveb\Controller\Listing;
use function Vvveb\humanReadable;
use function Vvveb\model;
use Vvveb\Sql\commentSQL;
use Vvveb\System\CacheManager;
use Vvveb\System\Core\View;
use Vvveb\System\Images;
class Comments extends Listing {
protected $type = 'comment';
protected $list = 'comment';
protected $module = 'content';
protected $listController = 'comments';
function save() {
$type = $this->type;
$comment_id = $this->request->get[$type . '_id'] ?? $this->request->post[$type . '_id'] ?? false;
$status = $this->request->get['newstatus'] ?? $this->request->post['newstatus'] ?? false;
if ($comment_id) {
$comments = model($type);
if ($comments->edit([$type => ['status' => (int) $status], $type . '_id' => $comment_id])) {
//CacheManager::delete($type);
CacheManager::delete();
$this->view->success[] = sprintf(__('%s status changed!'), humanReadable(__($type)));
}
}
return $this->index();
}
function index() {
$view = View :: getInstance();
$type = $this->type;
$controller = $this->controller ?? $type;
$listController = $this->listController ?? $controller;
$module = $this->module;
$list = $this->list ?? $type . 's';
$status = $this->request->get['status'] ?? '';
$comment_status = [
0 => __('Pending'),
1 => __('Approved'),
2 => __('Spam'),
3 => __('Trash'),
-1 => __('All'),
];
$status = $this->request->get['status'] ?? -1;
//$comments = new commentSQL();
$comments = model($type);
$options = [
'type' => $type,
] + $this->global;
unset($options['user_id']);
if ($status > -1) {
$options['status'] = $status;
}
$results = $comments->getAll($options);
$results[$type] = $results[$type] ?? [];
foreach ($results[$type] as $id => &$comment) {
if (isset($comment['image'])) {
$comment['image'] = Images::image($type, $comment['image']);
}
if (isset($comment['avatar'])) {
$comment['avatar'] = Images::image($comment['avatar'], 'user');
}
$url = ['module' => "$module/$listController", 'action' => 'save', 'status' => $status, $type . '_id' => $comment[$type . '_id']];
$postUrl = ['module' => "$module/$controller", $type . '_id' => $comment[$type . '_id']];
$comment['edit-url'] = \Vvveb\url($postUrl);
$comment['delete-url'] = \Vvveb\url(['module' => "$module/$listController", 'action' => 'delete'] + $url);
$comment['approve-url'] = \Vvveb\url(['newstatus' => 1] + $url);
$comment['spam-url'] = \Vvveb\url(['newstatus' => 2] + $url);
$comment['trash-url'] = \Vvveb\url(['newstatus' => 3] + $url);
}
$statuses = "{$type}_status";
$view->$list = $results[$type];
$view->count = $results['count'];
$view->$statuses = $comment_status;
$view->module = $module;
$view->controller = $controller;
$view->limit = $options['limit'];
$view->status = $status;
}
}