Add reference hooks

This commit is contained in:
Frederic Guillot
2016-08-13 14:23:53 -04:00
parent 29820bf83b
commit 4ffaba2ba0
8 changed files with 97 additions and 31 deletions

View File

@@ -51,7 +51,7 @@ class LexerBuilder
*/
public function __construct()
{
$this->lexer = new Lexer;
$this->lexer = new Lexer();
$this->queryBuilder = new QueryBuilder();
}

View File

@@ -96,4 +96,21 @@ class Hook
return null;
}
/**
* Hook with reference
*
* @access public
* @param string $hook
* @param mixed $param
* @return mixed
*/
public function reference($hook, &$param)
{
foreach ($this->getListeners($hook) as $listener) {
$listener($param);
}
return $param;
}
}

View File

@@ -44,6 +44,13 @@ class BoardFormatter extends BaseFormatter implements FormatterInterface
{
$swimlanes = $this->swimlaneModel->getSwimlanes($this->projectId);
$columns = $this->columnModel->getAll($this->projectId);
if (empty($swimlanes) || empty($columns)) {
return array();
}
$this->hook->reference('formatter:board:query', $this->query);
$tasks = $this->query
->eq(TaskModel::TABLE.'.project_id', $this->projectId)
->asc(TaskModel::TABLE.'.position')
@@ -52,10 +59,6 @@ class BoardFormatter extends BaseFormatter implements FormatterInterface
$task_ids = array_column($tasks, 'id');
$tags = $this->taskTagModel->getTagsByTasks($task_ids);
if (empty($swimlanes) || empty($columns)) {
return array();
}
return BoardSwimlaneFormatter::getInstance($this->container)
->withSwimlanes($swimlanes)
->withColumns($columns)

View File

@@ -26,11 +26,14 @@ class SubtaskPagination extends Base
*/
public function getDashboardPaginator($user_id, $method, $max)
{
$query = $this->subtaskModel->getUserQuery($user_id, array(SubtaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS));
$this->hook->reference('pagination:dashboard:subtask:query', $query);
return $this->paginator
->setUrl('DashboardController', $method, array('pagination' => 'subtasks', 'user_id' => $user_id))
->setMax($max)
->setOrder(TaskModel::TABLE.'.id')
->setQuery($this->subtaskModel->getUserQuery($user_id, array(SubtaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS)))
->setQuery($query)
->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks');
}
}

View File

@@ -25,11 +25,14 @@ class TaskPagination extends Base
*/
public function getDashboardPaginator($user_id, $method, $max)
{
$query = $this->taskFinderModel->getUserQuery($user_id);
$this->hook->reference('pagination:dashboard:task:query', $query);
return $this->paginator
->setUrl('DashboardController', $method, array('pagination' => 'tasks', 'user_id' => $user_id))
->setMax($max)
->setOrder(TaskModel::TABLE.'.id')
->setQuery($this->taskFinderModel->getUserQuery($user_id))
->setQuery($query)
->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks');
}
}