Refactor ProjectActivity model to use Filter and Formatter interface

This commit is contained in:
Frederic Guillot
2016-04-10 12:13:42 -04:00
parent 7b74f55a28
commit 2eadfb2291
23 changed files with 649 additions and 212 deletions

View File

@@ -4,6 +4,7 @@ namespace Kanboard\ServiceProvider;
use Kanboard\Core\Filter\LexerBuilder;
use Kanboard\Core\Filter\QueryBuilder;
use Kanboard\Filter\ProjectActivityTaskTitleFilter;
use Kanboard\Filter\TaskAssigneeFilter;
use Kanboard\Filter\TaskCategoryFilter;
use Kanboard\Filter\TaskColorFilter;
@@ -45,6 +46,25 @@ class FilterProvider implements ServiceProviderInterface
* @return \Pimple\Container
*/
public function register(Container $container)
{
$this->createUserFilter($container);
$this->createProjectFilter($container);
$this->createTaskFilter($container);
return $container;
}
public function createUserFilter(Container $container)
{
$container['userQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
$builder->withQuery($c['db']->table(User::TABLE));
return $builder;
});
return $container;
}
public function createProjectFilter(Container $container)
{
$container['projectGroupRoleQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
@@ -58,18 +78,32 @@ class FilterProvider implements ServiceProviderInterface
return $builder;
});
$container['userQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
$builder->withQuery($c['db']->table(User::TABLE));
return $builder;
});
$container['projectQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
$builder->withQuery($c['db']->table(Project::TABLE));
return $builder;
});
$container['projectActivityLexer'] = $container->factory(function ($c) {
$builder = new LexerBuilder();
$builder->withQuery($c['projectActivity']->getQuery());
$builder->withFilter(new ProjectActivityTaskTitleFilter());
return $builder;
});
$container['projectActivityQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
$builder->withQuery($c['projectActivity']->getQuery());
return $builder;
});
return $container;
}
public function createTaskFilter(Container $container)
{
$container['taskQuery'] = $container->factory(function ($c) {
$builder = new QueryBuilder();
$builder->withQuery($c['taskFinder']->getExtendedQuery());