From 0d55f5aa35d21b79c5d79f7214c4c9e05b1d2684 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sun, 23 Mar 2014 22:10:43 -0400 Subject: Comment edit/remove actions --- models/acl.php | 3 +- models/comment.php | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 116 insertions(+), 2 deletions(-) (limited to 'models') diff --git a/models/acl.php b/models/acl.php index fe23bbb4..ea7dd5cb 100644 --- a/models/acl.php +++ b/models/acl.php @@ -18,7 +18,8 @@ class Acl extends Base 'app' => array('index'), 'board' => array('index', 'show', 'assign', 'assigntask', 'save'), 'project' => array('tasks', 'index', 'forbidden'), - 'task' => array('show', 'create', 'save', 'edit', 'update', 'close', 'confirmclose', 'open', 'confirmopen', 'comment', 'description', 'duplicate'), + 'task' => array('show', 'create', 'save', 'edit', 'update', 'close', 'confirmclose', 'open', 'confirmopen', 'description', 'duplicate'), + 'comment' => array('save', 'confirm', 'remove', 'update', 'edit'), 'user' => array('index', 'edit', 'update', 'forbidden', 'logout', 'index'), 'config' => array('index'), ); diff --git a/models/comment.php b/models/comment.php index c476e693..453c2afc 100644 --- a/models/comment.php +++ b/models/comment.php @@ -7,10 +7,28 @@ require_once __DIR__.'/base.php'; use \SimpleValidator\Validator; use \SimpleValidator\Validators; +/** + * Comment model + * + * @package model + * @author Frederic Guillot + */ class Comment extends Base { + /** + * SQL table name + * + * @var string + */ const TABLE = 'comments'; + /** + * Get all comments for a given task + * + * @access public + * @param integer $task_id Task id + * @return array + */ public function getAll($task_id) { return $this->db @@ -18,6 +36,8 @@ class Comment extends Base ->columns( self::TABLE.'.id', self::TABLE.'.date', + self::TABLE.'.task_id', + self::TABLE.'.user_id', self::TABLE.'.comment', User::TABLE.'.username' ) @@ -27,6 +47,37 @@ class Comment extends Base ->findAll(); } + /** + * Get a comment + * + * @access public + * @param integer $comment_id Comment id + * @return array + */ + public function getById($comment_id) + { + return $this->db + ->table(self::TABLE) + ->columns( + self::TABLE.'.id', + self::TABLE.'.task_id', + self::TABLE.'.user_id', + self::TABLE.'.date', + self::TABLE.'.comment', + User::TABLE.'.username' + ) + ->join(User::TABLE, 'id', 'user_id') + ->eq(self::TABLE.'.id', $comment_id) + ->findOne(); + } + + /** + * Get the number of comments for a given task + * + * @access public + * @param integer $task_id Task id + * @return integer + */ public function count($task_id) { return $this->db @@ -35,13 +86,54 @@ class Comment extends Base ->count(); } + /** + * Save a comment in the database + * + * @access public + * @param array $values Form values + * @return boolean + */ public function create(array $values) { $values['date'] = time(); - return (bool) $this->db->table(self::TABLE)->save($values); + return $this->db->table(self::TABLE)->save($values); + } + + /** + * Update a comment in the database + * + * @access public + * @param array $values Form values + * @return boolean + */ + public function update(array $values) + { + return $this->db + ->table(self::TABLE) + ->eq('id', $values['id']) + ->update(array('comment' => $values['comment'])); + } + + /** + * Remove a comment + * + * @access public + * @param integer $comment_id Comment id + * @return boolean + */ + public function remove($comment_id) + { + return $this->db->table(self::TABLE)->eq('id', $comment_id)->remove(); } + /** + * Validate comment creation + * + * @access public + * @param array $values Required parameters to save an action + * @return array $valid, $errors [0] = Success or not, [1] = List of errors + */ public function validateCreation(array $values) { $v = new Validator($values, array( @@ -57,4 +149,25 @@ class Comment extends Base $v->getErrors() ); } + + /** + * Validate comment modification + * + * @access public + * @param array $values Required parameters to save an action + * @return array $valid, $errors [0] = Success or not, [1] = List of errors + */ + public function validateModification(array $values) + { + $v = new Validator($values, array( + new Validators\Required('id', t('This value is required')), + new Validators\Integer('id', t('This value must be an integer')), + new Validators\Required('comment', t('Comment is required')) + )); + + return array( + $v->execute(), + $v->getErrors() + ); + } } -- cgit v1.2.3