|
|
<?php |
|
|
|
|
|
namespace Kanboard\Model; |
|
|
|
|
|
use Pimple\Container; |
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abstract class NotificationTypeModel extends Base |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private $classes; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private $labels = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private $hiddens = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(Container $container) |
|
|
{ |
|
|
parent::__construct($container); |
|
|
$this->classes = new Container; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function setType($type, $label, $class, $hidden = false) |
|
|
{ |
|
|
$container = $this->container; |
|
|
|
|
|
if ($hidden) { |
|
|
$this->hiddens[] = $type; |
|
|
} else { |
|
|
$this->labels[$type] = $label; |
|
|
} |
|
|
|
|
|
$this->classes[$type] = function () use ($class, $container) { |
|
|
return new $class($container); |
|
|
}; |
|
|
|
|
|
return $this; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getType($type) |
|
|
{ |
|
|
return $this->classes[$type]; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getTypes() |
|
|
{ |
|
|
return $this->labels; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getHiddenTypes() |
|
|
{ |
|
|
return $this->hiddens; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function filterTypes(array $types) |
|
|
{ |
|
|
$classes = $this->classes; |
|
|
|
|
|
return array_filter($types, function ($type) use ($classes) { |
|
|
return isset($classes[$type]); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|