/** * @param BuildBefore $event */ public function onBuildBefore(BuildBefore $event) { $config = $event->getConfig(); // get root entity $rootEntity = null; $rootEntityAlias = null; $from = $config->offsetGetByPath('[source][query][from]'); if ($from) { $firstFrom = current($from); if (!empty($firstFrom['table']) && !empty($firstFrom['alias'])) { $rootEntity = $this->updateEntityClass($firstFrom['table']); $rootEntityAlias = $firstFrom['alias']; } } $groupBy = $config->offsetGetByPath('[source][query][groupBy]', null); if (!$rootEntity || !$rootEntityAlias || $groupBy) { return; } // whether entity has active workflow and entity should render workflow step field $isShowWorkflowStep = $this->workflowManager->hasApplicableWorkflowByEntityClass($rootEntity) && $this->isShowWorkflowStep($rootEntity); // check whether grid contains workflow step column $columns = $config->offsetGetByPath('[columns]', array()); $workflowStepColumns = array_intersect($this->workflowStepColumns, array_keys($columns)); // remove workflow step if it must be hidden but there are workflow step columns if (!$isShowWorkflowStep && $workflowStepColumns) { $this->removeWorkflowStep($config, $workflowStepColumns); } // add workflow step if it must be shown and there are no workflow step columns if ($isShowWorkflowStep && empty($workflowStepColumns)) { $this->addWorkflowStep($config, $rootEntity, $rootEntityAlias); } }
/** * Check for workflow instances * * @param string $entityClass * @return bool */ public function hasWorkflow($entityClass) { if (!$entityClass) { return false; } return $this->workflowManager->hasApplicableWorkflowByEntityClass($entityClass); }
/** * @param bool $result * @dataProvider trueFalseDataProvider */ public function testHasApplicableWorkflowByEntityClass($result) { $entityClass = 'TestEntity'; $this->workflowRegistry->expects($this->once())->method('hasActiveWorkflowByEntityClass')->with($entityClass)->will($this->returnValue($result)); $this->assertEquals($result, $this->workflowManager->hasApplicableWorkflowByEntityClass($entityClass)); }