[Muestra] artículos en espera de aprobación en admin
This commit is contained in:
parent
a802566fc9
commit
0465bdb134
|
@ -21,15 +21,30 @@ defined('NABU') || exit();
|
|||
require_once 'models/adminModel.php';
|
||||
|
||||
class adminController {
|
||||
private const limit = 10;
|
||||
|
||||
// Renderiza la página de administración para aprobar un artículo
|
||||
// y aprueba un artículo con el método POST.
|
||||
static public function approve_articles() {
|
||||
$view = NABU_ROUTES['approve-articles'];
|
||||
$max = 246;
|
||||
$query = '';
|
||||
|
||||
$adminModel = new adminModel();
|
||||
|
||||
$articles = $adminModel -> sent();
|
||||
// Obtiene el número total de artículos autorizados.
|
||||
$total = $adminModel -> count_sent($query);
|
||||
|
||||
unset($adminModel);
|
||||
$pagination = utils::pagination($total, self::limit, $view);
|
||||
|
||||
// Lista de artículos en espera de aprobación.
|
||||
$articles = $adminModel -> sent(self::limit, $pagination['accumulation'], $query);
|
||||
|
||||
$page = $pagination['page'];
|
||||
|
||||
unset($adminModel, $total, $pagination);
|
||||
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/admin/approve-articles.php';
|
||||
|
@ -38,26 +53,49 @@ class adminController {
|
|||
// Renderiza la página de administración para editar un artículo
|
||||
// y actualiza los datos del artículo con el método POST.
|
||||
static public function review_article() {
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/admin/review-article.php';
|
||||
}
|
||||
|
||||
// Renderiza la página para eliminar un artículo.
|
||||
static public function delete_article() {
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/pages/confirm-password.php';
|
||||
}
|
||||
|
||||
// Renderiza la página autorizar la publicación de un artículo
|
||||
// Renderiza la página para autorizar la publicación de un artículo.
|
||||
static public function authorize_article() {
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/pages/confirm-password.php';
|
||||
}
|
||||
|
||||
// Renderiza la página de administración para buscar artículos publicados.
|
||||
static public function published_articles() {
|
||||
$view = NABU_ROUTES['published-articles'];
|
||||
$max = 246;
|
||||
$query = '';
|
||||
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/admin/published-articles.php';
|
||||
}
|
||||
|
||||
// Renderiza la página de administración para buscar usuarios registrados.
|
||||
static public function registered_users() {
|
||||
$view = NABU_ROUTES['registered-users'];
|
||||
$max = 255;
|
||||
$query = '';
|
||||
|
||||
$token = csrf::generate();
|
||||
$messages = messages::get();
|
||||
|
||||
require_once 'views/admin/registered-users.php';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,4 +103,33 @@ class utils {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
// @return un array asociativo con la gestión de páginas de resultados.
|
||||
public static function pagination(int $total, int $limit, string $route) {
|
||||
// Página de resultado inicial.
|
||||
$page = 1;
|
||||
|
||||
// Calcula el número total de páginas de resultados.
|
||||
$results = ceil($total/$limit);
|
||||
|
||||
if (isset($_GET['page']) && is_numeric($_GET['page']))
|
||||
$page = $_GET['page'];
|
||||
|
||||
if ($page < 1)
|
||||
self::redirect($route);
|
||||
|
||||
if ($results < 1)
|
||||
$results = 1;
|
||||
|
||||
if ($page > $results)
|
||||
self::redirect($route . '&page=' . $results);
|
||||
|
||||
// Calcula el número de resultados acumulados por paginación.
|
||||
$pagination = array(
|
||||
'page' => $page,
|
||||
'accumulation' => ($page - 1) * $limit
|
||||
);
|
||||
|
||||
return $pagination;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,14 +23,12 @@ class adminModel extends dbConnection {
|
|||
parent::__construct();
|
||||
}
|
||||
|
||||
// @return un array asociativo de artículos en espera de aprobación.
|
||||
public function sent(string $pattern = '') {
|
||||
$query = 'SELECT a.title, a.slug, u.username AS author ' .
|
||||
'FROM articles AS a INNER JOIN users AS u ON a.user_id = u.id ' .
|
||||
'WHERE a.authorized = FALSE ORDER BY a.creation_date DESC';
|
||||
// @return el número total de artículos en espera de aprobación.
|
||||
public function count_sent(string $pattern) {
|
||||
$query = 'SELECT COUNT(*) AS total FROM articles WHERE authorized = FALSE';
|
||||
|
||||
if (!empty($pattern))
|
||||
$query = $query . 'LIMIT ? OFFSET ?';
|
||||
$query = $query . 'AND title LIKE ?';
|
||||
|
||||
try {
|
||||
$prepare = $this -> pdo -> prepare($query);
|
||||
|
@ -38,7 +36,38 @@ class adminModel extends dbConnection {
|
|||
if (empty($pattern))
|
||||
$prepare -> execute();
|
||||
else
|
||||
$prepare -> execute();
|
||||
$prepare -> execute(array('%' . $pattern . '%'));
|
||||
|
||||
$count = $prepare -> fetch();
|
||||
|
||||
if (empty($count))
|
||||
return $count;
|
||||
|
||||
return $count['total'];
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$this -> errors($e -> getMessage(), 'tuvimos un problema para calcular el número total de artículos en espera de aprobación');
|
||||
}
|
||||
}
|
||||
|
||||
// @return un array asociativo de artículos en espera de aprobación.
|
||||
public function sent(int $limit, int $accumulation, string $pattern) {
|
||||
$query = 'SELECT a.title, a.slug, u.username AS author ' .
|
||||
'FROM articles AS a INNER JOIN users AS u ON a.user_id = u.id ' .
|
||||
'WHERE a.authorized = FALSE ';
|
||||
|
||||
if (!empty($pattern))
|
||||
$query = $query . 'AND a.title LIKE ? ';
|
||||
|
||||
$query = $query . 'ORDER BY a.creation_date DESC LIMIT ? OFFSET ?';
|
||||
|
||||
try {
|
||||
$prepare = $this -> pdo -> prepare($query);
|
||||
|
||||
if (empty($pattern))
|
||||
$prepare -> execute(array($limit, $accumulation));
|
||||
else
|
||||
$prepare -> execute(array('%' . $pattern . '%', $limit, $accumulation));
|
||||
|
||||
$articles = $prepare -> fetchAll();
|
||||
|
||||
|
|
|
@ -20,8 +20,11 @@
|
|||
<?php $head_title = 'Aprobar artículos' ?>
|
||||
|
||||
<?php require_once 'views/components/dashboard.php' ?>
|
||||
|
||||
<h1>Aprobar artículos</h1>
|
||||
|
||||
<?php require_once 'views/components/admin-search.php' ?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Título</th>
|
||||
|
@ -41,4 +44,5 @@
|
|||
<?php endforeach ?>
|
||||
</table>
|
||||
|
||||
<?php require_once 'views/components/pagination.php' ?>
|
||||
<?php require_once 'views/components/footer.php' ?>
|
||||
|
|
|
@ -20,5 +20,9 @@
|
|||
<?php $head_title = 'Artículos publicados' ?>
|
||||
|
||||
<?php require_once 'views/components/dashboard.php' ?>
|
||||
|
||||
<h1>Artículos publicados</h1>
|
||||
|
||||
<?php require_once 'views/components/admin-search.php' ?>
|
||||
|
||||
<?php require_once 'views/components/footer.php' ?>
|
||||
|
|
|
@ -20,5 +20,9 @@
|
|||
<?php $head_title = 'Usuarios registrados' ?>
|
||||
|
||||
<?php require_once 'views/components/dashboard.php' ?>
|
||||
|
||||
<h1>Usuarios registrados</h1>
|
||||
|
||||
<?php require_once 'views/components/admin-search.php' ?>
|
||||
|
||||
<?php require_once 'views/components/footer.php' ?>
|
||||
|
|
|
@ -20,5 +20,9 @@
|
|||
<?php $head_title = 'Revisar artículo' ?>
|
||||
|
||||
<?php require_once 'views/components/dashboard.php' ?>
|
||||
|
||||
<h1>Revisar artículo</h1>
|
||||
|
||||
<?php require_once 'views/components/admin-search.php' ?>
|
||||
|
||||
<?php require_once 'views/components/footer.php' ?>
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<!--
|
||||
* Este archivo es parte de Nabu.
|
||||
*
|
||||
* Nabu es software libre: puedes redistribuirlo y/o modificarlo
|
||||
* bajo los términos de la Licencia Pública General de GNU Affero publicada por
|
||||
* la Free Software Foundation, ya sea la versión 3 de la Licencia, o
|
||||
* (a su elección) cualquier versión posterior.
|
||||
*
|
||||
* Nabu se distribuye con la esperanza de que sea de utilidad,
|
||||
* pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de
|
||||
* COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
* Licencia Pública General de GNU Affero para obtener más detalles.
|
||||
*
|
||||
* Debería haber recibido una copia de la Licencia Pública General de GNU Affero
|
||||
* junto con este programa. De lo contrario, consulte <https://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<?php defined('NABU') || exit() ?>
|
||||
|
||||
<form class="form" method="POST" action="<?= $view ?>">
|
||||
<input type="hidden" name="csrf" value="<?= $token ?>">
|
||||
<input type="text" name="q" minlength="1" maxlength="<?= $max ?>" required>
|
||||
</form>
|
|
@ -24,8 +24,5 @@
|
|||
<input class="search__input" type="text" name="q" minlength="1" placeholder="Buscar un blogpost" maxlength="246" required>
|
||||
<span class="glass__icon"></span>
|
||||
</div>
|
||||
<!-- <span>
|
||||
<input type="submit" name="search-submit" value="🔎">
|
||||
</span> -->
|
||||
</form>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue