| <?php |
|
|
| namespace Kanboard\Model; |
|
|
| use PDO; |
| use Kanboard\Core\Base; |
|
|
| |
| |
| |
| |
| |
| |
| |
| class LinkModel extends Base |
| { |
| |
| |
| |
| |
| |
| const TABLE = 'links'; |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function getById($link_id) |
| { |
| return $this->db->table(self::TABLE)->eq('id', $link_id)->findOne(); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function getByLabel($label) |
| { |
| return $this->db->table(self::TABLE)->eq('label', $label)->findOne(); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function getOppositeLinkId($link_id) |
| { |
| return $this->db->table(self::TABLE)->eq('id', $link_id)->findOneColumn('opposite_id') ?: $link_id; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getAll() |
| { |
| return $this->db->table(self::TABLE)->findAll(); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getMergedList() |
| { |
| return $this->db |
| ->execute(' |
| SELECT |
| links.id, links.label, opposite.label as opposite_label |
| FROM links |
| LEFT JOIN links AS opposite ON opposite.id=links.opposite_id |
| ') |
| ->fetchAll(PDO::FETCH_ASSOC); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function getList($exclude_id = 0, $prepend = true) |
| { |
| $labels = $this->db->hashtable(self::TABLE)->neq('id', $exclude_id)->asc('id')->getAll('id', 'label'); |
|
|
| foreach ($labels as &$value) { |
| $value = t($value); |
| } |
|
|
| return $prepend ? array('') + $labels : $labels; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function create($label, $opposite_label = '') |
| { |
| $this->db->startTransaction(); |
|
|
| if (! $this->db->table(self::TABLE)->insert(array('label' => $label))) { |
| $this->db->cancelTransaction(); |
| return false; |
| } |
|
|
| $label_id = $this->db->getLastId(); |
|
|
| if (! empty($opposite_label)) { |
| $this->db |
| ->table(self::TABLE) |
| ->insert(array( |
| 'label' => $opposite_label, |
| 'opposite_id' => $label_id, |
| )); |
|
|
| $this->db |
| ->table(self::TABLE) |
| ->eq('id', $label_id) |
| ->update(array( |
| 'opposite_id' => $this->db->getLastId() |
| )); |
| } |
|
|
| $this->db->closeTransaction(); |
|
|
| return (int) $label_id; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function update(array $values) |
| { |
| return $this->db |
| ->table(self::TABLE) |
| ->eq('id', $values['id']) |
| ->update(array( |
| 'label' => $values['label'], |
| 'opposite_id' => $values['opposite_id'], |
| )); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function remove($link_id) |
| { |
| $this->db->table(self::TABLE)->eq('opposite_id', $link_id)->update(array('opposite_id' => 0)); |
| return $this->db->table(self::TABLE)->eq('id', $link_id)->remove(); |
| } |
| } |
|
|