Skip to content

Commit

Permalink
Copy Default Files
Browse files Browse the repository at this point in the history
 -  #2
  • Loading branch information
aljawaid committed Oct 2, 2023
1 parent 1298fc3 commit 7a2f37e
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 1 deletion.
37 changes: 37 additions & 0 deletions ExternalLink/NextcloudLink.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Kanboard\ExternalLink;

use Kanboard\Core\ExternalLink\ExternalLinkInterface;

/**
* Web Link
*
* @package externalLink
* @author Frederic Guillot
*/
class NextcloudLink extends BaseLink implements ExternalLinkInterface
{
/**
* Get link title
*
* @access public
* @return string
*/
public function getTitle()
{
$html = $this->httpClient->get($this->url);

if (preg_match('/<title>(.*)<\/title>/siU', $html, $matches)) {
return trim($matches[1]);
}

$components = parse_url($this->url);

if (! empty($components['host']) && ! empty($components['path'])) {
return $components['host'].$components['path'];
}

return t('Title not found');
}
}
77 changes: 77 additions & 0 deletions ExternalLink/NextcloudLinkProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php

namespace Kanboard\ExternalLink;

use Kanboard\Core\ExternalLink\ExternalLinkProviderInterface;

/**
* Web Link Provider
*
* @package externalLink
* @author Frederic Guillot
*/
class NextcloudLinkProvider extends BaseLinkProvider implements ExternalLinkProviderInterface
{
/**
* Get provider name
*
* @access public
* @return string
*/
public function getName()
{
return t('Web Link');
}

/**
* Get link type
*
* @access public
* @return string
*/
public function getType()
{
return 'weblink';
}

/**
* 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()
{
$startWithHttp = strpos($this->userInput, 'http://') === 0 || strpos($this->userInput, 'https://') === 0;
$validUrl = filter_var($this->userInput, FILTER_VALIDATE_URL);

return $startWithHttp && $validUrl;
}

/**
* Get the link found with the properties
*
* @access public
* @return \Kanboard\Core\ExternalLink\ExternalLinkInterface
*/
public function getLink()
{
$link = new WebLink($this->container);
$link->setUrl($this->userInput);

return $link;
}
}
2 changes: 1 addition & 1 deletion Plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function initialize()
//$this->route->addRoute('/ / ', ' ', ' ', 'TaskLinker');

// Register New Link Provider
$this->externalLinkManager->register(new MyLinkProvider($this->container));
$this->externalLinkManager->register(new NextcloudLinkProvider($this->container));
}

public function onStartup()
Expand Down

0 comments on commit 7a2f37e

Please sign in to comment.