public function getAvailableActions()
{
$status = $this->getElementStatus();
if (!$this->workflow->isValidStatus($status)) {
throw new \Exception("Element [{$this->element->getId()}] does not have a valid status [{$status}] within the workflow");
}
$availableActions = $this->workflow->getValidGlobalActions();
$availableActions = array_merge($this->workflow->getValidActionsForStatus($status), $availableActions);
//check user permissions on available actions
$allowedActions = [];
foreach ($availableActions as $actionName) {
if ($this->userCanPerformAction($actionName)) {
$allowedActions[$actionName] = $this->workflow->getActionConfig($actionName, $status);
}
}
$result = \Pimcore::getEventManager()->trigger("workflowmanagement.preReturnAvailableActions", $allowedActions, ['manager' => $this]);
if (!$result->isEmpty()) {
//get the last set of available actions only
//todo maybe allow multiple events to controll available actions
$last = $result->last();
$allowedActions = $last['availableActions'] ?: $allowedActions;
}
return $allowedActions;
}