|
<?php |
|
|
|
namespace Kanboard\Model; |
|
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CommentModel extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
const TABLE = 'comments'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
const EVENT_UPDATE = 'comment.update'; |
|
const EVENT_CREATE = 'comment.create'; |
|
const EVENT_DELETE = 'comment.delete'; |
|
const EVENT_USER_MENTION = 'comment.user.mention'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getProjectId($comment_id) |
|
{ |
|
return $this->db |
|
->table(self::TABLE) |
|
->eq(self::TABLE.'.id', $comment_id) |
|
->join(TaskModel::TABLE, 'id', 'task_id') |
|
->findOneColumn(TaskModel::TABLE . '.project_id') ?: 0; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getAll($task_id, $sorting = 'ASC') |
|
{ |
|
return $this->db |
|
->table(self::TABLE) |
|
->columns( |
|
self::TABLE.'.id', |
|
self::TABLE.'.date_creation', |
|
self::TABLE.'.date_modification', |
|
self::TABLE.'.task_id', |
|
self::TABLE.'.user_id', |
|
self::TABLE.'.comment', |
|
UserModel::TABLE.'.username', |
|
UserModel::TABLE.'.name', |
|
UserModel::TABLE.'.email', |
|
UserModel::TABLE.'.avatar_path' |
|
) |
|
->join(UserModel::TABLE, 'id', 'user_id') |
|
->orderBy(self::TABLE.'.date_creation', $sorting) |
|
->orderBy(self::TABLE.'.id', $sorting) |
|
->eq(self::TABLE.'.task_id', $task_id) |
|
->findAll(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_creation', |
|
self::TABLE.'.date_modification', |
|
self::TABLE.'.comment', |
|
self::TABLE.'.reference', |
|
UserModel::TABLE.'.username', |
|
UserModel::TABLE.'.name', |
|
UserModel::TABLE.'.email', |
|
UserModel::TABLE.'.avatar_path' |
|
) |
|
->join(UserModel::TABLE, 'id', 'user_id') |
|
->eq(self::TABLE.'.id', $comment_id) |
|
->findOne(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function count($task_id) |
|
{ |
|
return $this->db |
|
->table(self::TABLE) |
|
->eq(self::TABLE.'.task_id', $task_id) |
|
->count(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function create(array $values) |
|
{ |
|
$values['date_creation'] = time(); |
|
$values['date_modification'] = time(); |
|
$comment_id = $this->db->table(self::TABLE)->persist($values); |
|
|
|
if ($comment_id !== false) { |
|
$this->queueManager->push($this->commentEventJob->withParams($comment_id, self::EVENT_CREATE)); |
|
} |
|
|
|
return $comment_id; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function update(array $values) |
|
{ |
|
$result = $this->db |
|
->table(self::TABLE) |
|
->eq('id', $values['id']) |
|
->update(array('comment' => $values['comment'], 'date_modification' => time())); |
|
|
|
if ($result) { |
|
$this->queueManager->push($this->commentEventJob->withParams($values['id'], self::EVENT_UPDATE)); |
|
} |
|
|
|
return $result; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function remove($comment_id) |
|
{ |
|
$this->commentEventJob->execute($comment_id, self::EVENT_DELETE); |
|
return $this->db->table(self::TABLE)->eq('id', $comment_id)->remove(); |
|
} |
|
} |
|
|