|
|
<?php |
|
|
|
|
|
namespace Kanboard\ExternalLink; |
|
|
|
|
|
use Kanboard\Core\ExternalLink\ExternalLinkProviderInterface; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AttachmentLinkProvider extends BaseLinkProvider implements ExternalLinkProviderInterface |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected $extensions = array( |
|
|
'html', |
|
|
'htm', |
|
|
'xhtml', |
|
|
'php', |
|
|
'jsp', |
|
|
'do', |
|
|
'action', |
|
|
'asp', |
|
|
'aspx', |
|
|
'cgi', |
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getName() |
|
|
{ |
|
|
return t('Attachment'); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getType() |
|
|
{ |
|
|
return 'attachment'; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getDependencies() |
|
|
{ |
|
|
return array( |
|
|
'related' => t('Related'), |
|
|
); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function match() |
|
|
{ |
|
|
if (preg_match('/^https?:\/\/.*\/.*\.([^\/]+)$/', $this->userInput, $matches)) { |
|
|
return $this->isValidExtension($matches[1]); |
|
|
} |
|
|
|
|
|
return false; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getLink() |
|
|
{ |
|
|
$link = new AttachmentLink($this->container); |
|
|
$link->setUrl($this->userInput); |
|
|
|
|
|
return $link; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function isValidExtension($extension) |
|
|
{ |
|
|
$extension = strtolower($extension); |
|
|
|
|
|
foreach ($this->extensions as $ext) { |
|
|
if ($extension === $ext) { |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|