diff options
Diffstat (limited to 'app/Model')
| -rw-r--r-- | app/Model/TaskExternalLink.php | 99 | ||||
| -rw-r--r-- | app/Model/TaskFinder.php | 11 | ||||
| -rw-r--r-- | app/Model/User.php | 2 | 
3 files changed, 106 insertions, 6 deletions
diff --git a/app/Model/TaskExternalLink.php b/app/Model/TaskExternalLink.php new file mode 100644 index 00000000..f2c756b4 --- /dev/null +++ b/app/Model/TaskExternalLink.php @@ -0,0 +1,99 @@ +<?php + +namespace Kanboard\Model; + +/** + * Task External Link Model + * + * @package  model + * @author   Frederic Guillot + */ +class TaskExternalLink extends Base +{ +    /** +     * SQL table name +     * +     * @var string +     */ +    const TABLE = 'task_has_external_links'; + +    /** +     * Get all links +     * +     * @access public +     * @param  integer $task_id +     * @return array +     */ +    public function getAll($task_id) +    { +        $types = $this->externalLinkManager->getTypes(); + +        $links = $this->db->table(self::TABLE) +            ->columns(self::TABLE.'.*', User::TABLE.'.name AS creator_name', User::TABLE.'.username AS creator_username') +            ->eq('task_id', $task_id) +            ->asc('title') +            ->join(User::TABLE, 'id', 'creator_id') +            ->findAll(); + +        foreach ($links as &$link) { +            $link['dependency_label'] = $this->externalLinkManager->getDependencyLabel($link['link_type'], $link['dependency']); +            $link['type'] = isset($types[$link['link_type']]) ? $types[$link['link_type']] : t('Unknown'); +        } + +        return $links; +    } + +    /** +     * Get link +     * +     * @access public +     * @param  integer $link_id +     * @return array +     */ +    public function getById($link_id) +    { +        return $this->db->table(self::TABLE)->eq('id', $link_id)->findOne(); +    } + +    /** +     * Add a new link in the database +     * +     * @access public +     * @param  array  $values  Form values +     * @return boolean|integer +     */ +    public function create(array $values) +    { +        unset($values['id']); +        $values['creator_id'] = $this->userSession->getId(); +        $values['date_creation'] = time(); +        $values['date_modification'] = $values['date_creation']; + +        return $this->persist(self::TABLE, $values); +    } + +    /** +     * Modify external link +     * +     * @access public +     * @param  array  $values  Form values +     * @return boolean +     */ +    public function update(array $values) +    { +        $values['date_modification'] = time(); +        return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values); +    } + +    /** +     * Remove a link +     * +     * @access public +     * @param  integer $link_id +     * @return boolean +     */ +    public function remove($link_id) +    { +        return $this->db->table(self::TABLE)->eq('id', $link_id)->remove(); +    } +} diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php index 1c83136b..ab290bce 100644 --- a/app/Model/TaskFinder.php +++ b/app/Model/TaskFinder.php @@ -88,11 +88,12 @@ class TaskFinder extends Base          return $this->db              ->table(Task::TABLE)              ->columns( -                '(SELECT count(*) FROM '.Comment::TABLE.' WHERE task_id=tasks.id) AS nb_comments', -                '(SELECT count(*) FROM '.File::TABLE.' WHERE task_id=tasks.id) AS nb_files', -                '(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id) AS nb_subtasks', -                '(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id AND status=2) AS nb_completed_subtasks', -                '(SELECT count(*) FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id) AS nb_links', +                '(SELECT COUNT(*) FROM '.Comment::TABLE.' WHERE task_id=tasks.id) AS nb_comments', +                '(SELECT COUNT(*) FROM '.File::TABLE.' WHERE task_id=tasks.id) AS nb_files', +                '(SELECT COUNT(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id) AS nb_subtasks', +                '(SELECT COUNT(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id AND status=2) AS nb_completed_subtasks', +                '(SELECT COUNT(*) FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id) AS nb_links', +                '(SELECT COUNT(*) FROM '.TaskExternalLink::TABLE.' WHERE '.TaskExternalLink::TABLE.'.task_id = tasks.id) AS nb_external_links',                  '(SELECT DISTINCT 1 FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id AND '.TaskLink::TABLE.'.link_id = 9) AS is_milestone',                  'tasks.id',                  'tasks.reference', diff --git a/app/Model/User.php b/app/Model/User.php index 0174a040..dd622207 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -265,7 +265,7 @@ class User extends Base       *       * @access public       * @param  array  $values  Form values -     * @return array +     * @return boolean       */      public function update(array $values)      {  | 
