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); } }