summaryrefslogtreecommitdiff
path: root/app/ExternalLink
diff options
context:
space:
mode:
Diffstat (limited to 'app/ExternalLink')
-rw-r--r--app/ExternalLink/FileLink.php26
-rw-r--r--app/ExternalLink/FileLinkProvider.php74
2 files changed, 100 insertions, 0 deletions
diff --git a/app/ExternalLink/FileLink.php b/app/ExternalLink/FileLink.php
new file mode 100644
index 00000000..ea13ece8
--- /dev/null
+++ b/app/ExternalLink/FileLink.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Kanboard\ExternalLink;
+
+use Kanboard\Core\ExternalLink\ExternalLinkInterface;
+
+/**
+ * File Link
+ *
+ * @package externalLink
+ * @author Frederic Guillot
+ */
+class FileLink extends BaseLink implements ExternalLinkInterface
+{
+ /**
+ * Get link title
+ *
+ * @access public
+ * @return string
+ */
+ public function getTitle()
+ {
+ $path = parse_url($this->url, PHP_URL_PATH);
+ return basename(str_replace('\\', '/', $path));
+ }
+}
diff --git a/app/ExternalLink/FileLinkProvider.php b/app/ExternalLink/FileLinkProvider.php
new file mode 100644
index 00000000..901f78f8
--- /dev/null
+++ b/app/ExternalLink/FileLinkProvider.php
@@ -0,0 +1,74 @@
+<?php
+
+namespace Kanboard\ExternalLink;
+
+use Kanboard\Core\ExternalLink\ExternalLinkProviderInterface;
+
+/**
+ * File Link Provider
+ *
+ * @package externalLink
+ * @author Frederic Guillot
+ */
+class FileLinkProvider extends BaseLinkProvider implements ExternalLinkProviderInterface
+{
+ /**
+ * Get provider name
+ *
+ * @access public
+ * @return string
+ */
+ public function getName()
+ {
+ return t('Local File');
+ }
+
+ /**
+ * Get link type
+ *
+ * @access public
+ * @return string
+ */
+ public function getType()
+ {
+ return 'file';
+ }
+
+ /**
+ * Get a dictionary of supported dependency types by the provider
+ *
+ * @access public
+ * @return array
+ */
+ public function getDependencies()
+ {
+ return array(
+ 'related' => t('Related'),
+ );
+ }
+
+ /**
+ * Return true if the provider can parse correctly the user input
+ *
+ * @access public
+ * @return boolean
+ */
+ public function match()
+ {
+ return strpos($this->userInput, 'file://') === 0;
+ }
+
+ /**
+ * Get the link found with the properties
+ *
+ * @access public
+ * @return \Kanboard\Core\ExternalLink\ExternalLinkInterface
+ */
+ public function getLink()
+ {
+ $link = new FileLink($this->container);
+ $link->setUrl($this->userInput);
+
+ return $link;
+ }
+}