| <?php |
|
|
| namespace Kanboard\Api\Procedure; |
|
|
| use Kanboard\Api\Authorization\TaskAuthorization; |
| use Kanboard\Core\ExternalLink\ExternalLinkManager; |
| use Kanboard\Core\ExternalLink\ExternalLinkProviderNotFound; |
|
|
| |
| |
| |
| |
| |
| |
| class TaskExternalLinkProcedure extends BaseProcedure |
| { |
| public function getExternalTaskLinkTypes() |
| { |
| return $this->externalLinkManager->getTypes(); |
| } |
|
|
| public function getExternalTaskLinkProviderDependencies($providerName) |
| { |
| try { |
| return $this->externalLinkManager->getProvider($providerName)->getDependencies(); |
| } catch (ExternalLinkProviderNotFound $e) { |
| $this->logger->error(__METHOD__.': '.$e->getMessage()); |
| return false; |
| } |
| } |
|
|
| public function getExternalTaskLinkById($task_id, $link_id) |
| { |
| TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getExternalTaskLink', $task_id); |
| return $this->taskExternalLinkModel->getById($link_id); |
| } |
|
|
| public function getAllExternalTaskLinks($task_id) |
| { |
| TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getExternalTaskLinks', $task_id); |
| return $this->taskExternalLinkModel->getAll($task_id); |
| } |
|
|
| public function createExternalTaskLink($task_id, $url, $dependency, $type = ExternalLinkManager::TYPE_AUTO, $title = '') |
| { |
| TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'createExternalTaskLink', $task_id); |
|
|
| try { |
| $provider = $this->externalLinkManager |
| ->setUserInputText($url) |
| ->setUserInputType($type) |
| ->find(); |
|
|
| $link = $provider->getLink(); |
|
|
| $values = array( |
| 'task_id' => $task_id, |
| 'title' => $title ?: $link->getTitle(), |
| 'url' => $link->getUrl(), |
| 'link_type' => $provider->getType(), |
| 'dependency' => $dependency, |
| ); |
|
|
| list($valid, $errors) = $this->externalLinkValidator->validateCreation($values); |
|
|
| if (! $valid) { |
| $this->logger->error(__METHOD__.': '.var_export($errors)); |
| return false; |
| } |
|
|
| return $this->taskExternalLinkModel->create($values); |
| } catch (ExternalLinkProviderNotFound $e) { |
| $this->logger->error(__METHOD__.': '.$e->getMessage()); |
| } |
|
|
| return false; |
| } |
|
|
| public function updateExternalTaskLink($task_id, $link_id, $title = null, $url = null, $dependency = null) |
| { |
| TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateExternalTaskLink', $task_id); |
|
|
| $link = $this->taskExternalLinkModel->getById($link_id); |
| $values = $this->filterValues(array( |
| 'title' => $title, |
| 'url' => $url, |
| 'dependency' => $dependency, |
| )); |
|
|
| $values = array_merge($link, $values); |
| list($valid, $errors) = $this->externalLinkValidator->validateModification($values); |
|
|
| if (! $valid) { |
| $this->logger->error(__METHOD__.': '.var_export($errors)); |
| return false; |
| } |
|
|
| return $this->taskExternalLinkModel->update($values); |
| } |
|
|
| public function removeExternalTaskLink($task_id, $link_id) |
| { |
| TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'removeExternalTaskLink', $task_id); |
| return $this->taskExternalLinkModel->remove($link_id); |
| } |
| } |
|
|