[Actualiza] los datos de un artículo

This commit is contained in:
Ricardo García Jiménez 2022-02-16 17:25:02 -06:00
parent dd0b15a9c7
commit 12e781557a
2 changed files with 93 additions and 1 deletions

View file

@ -94,11 +94,67 @@ class adminController {
// Valida el formulario para actualizar los datos de un artículo.
$data = $validations -> validate($form, array(
array('field' => 'cover', 'type' => 'image'),
array('field' => 'cover', 'type' => 'image', 'optional' => true),
array('field' => 'title', 'trim_all' => true, 'min_length' => 1, 'max_length' => 246),
array('field' => 'synopsis', 'trim_all' => true, 'min_length' => 1, 'max_length' => 255),
array('field' => 'body', 'trim' => true, 'min_length' => 1, 'max_length' => NABU_DEFAULT['article-size'])
));
$update = array();
// Valida si hay cambios en la portada del artículo.
if (isset($data['cover'])) {
$update['cover'] = utils::update_image('adminModel', 'cover', $article['cover'], $data['cover']);
if ($update['cover'] === false) {
messages::add('¡Lo sentimos mucho! 😞, por el momento no podemos actualizar la portada del artículo');
unset($update['cover']);
}
else
messages::add('La porta del artículo se ha actualizado correctamente');
}
// Valida si hay cambios en el título del artículo.
if ($data['title'] != $article['title']) {
$data['slug'] = utils::url_slug($data['title']);
// Valida la longitud de la URL.
$validations -> validate($data, array(
array('field' => 'slug', 'min_length' => 1, 'max_length' => 255)
));
if (empty($adminModel -> get_article($data['slug']))) {
$update['title'] = $data['title'];
$update['slug'] = $data['slug'];
messages::add('El título del artículo se ha actualizado correctamente');
}
else
messages::add('Por favor define un título diferente o espera máximo un día para actualizar el artículo');
}
// Valida si hay cambios en el resumen del artículo.
if ($data['synopsis'] != $article['synopsis']) {
$update['synopsis'] = $data['synopsis'];
messages::add('El resumen del artículo se ha actualizado correctamente');
}
// Valida si hay cambios en el cuerpo del artículo.
if ($data['body'] != $article['body']) {
$update['body'] = $data['body'];
messages::add('El contenido del artículo se ha actualizado correctamente');
}
// Actualiza los datos del artículo en la base de datos.
if (!empty($update)) {
$adminModel -> update_article($article['id'], $update);
if (!empty($update['slug']))
$view = NABU_ROUTES['review-article'] . '&slug=' . $update['slug'];
}
utils::redirect($view);
}
// Renderiza la página para eliminar un artículo.

View file

@ -97,6 +97,42 @@ class adminModel extends dbConnection {
}
}
// @return el id de un artículo si existe una imagen.
public function find_image(string $column, string $filename) {
$query = 'SELECT id FROM articles WHERE ' . $column . ' = ? LIMIT 1';
try {
$prepare = $this -> pdo -> prepare($query);
$prepare -> execute(array($filename));
return $prepare -> fetch();
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para buscar la portada del artículo');
}
}
// Actualiza los datos de un artículo.
public function update_article(int $id, array $data) {
$columns = array_keys($data);
$query = '';
foreach ($columns as $column)
$query = $query . $column . ' = :' . $column . ', ';
$query = 'UPDATE articles SET ' . rtrim($query, ', ') . ' WHERE id = :id';
$data['id'] = $id;
try {
$this -> pdo -> prepare($query) -> execute($data);
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para actualizar los datos del artículo');
}
}
public function __destruct() {
parent::__destruct();
$this -> pdo = null;