/**
* Method to get a list of options for a list input.
*
* @return array An array of HTMLHelper options.
*
* @since 4.0.0
*/
protected function getOptions()
{
// Let's get the id for the current item, either category or content item.
$jinput = Factory::getApplication()->input;
// Initialise variable.
$db = Factory::getDbo();
$extension = $this->extension;
$workflowStage = (int) $this->workflowStage;
$query = $db->getQuery(true)->select([$db->quoteName('t.id', 'value'), $db->quoteName('t.title', 'text')])->from([$db->quoteName('#__workflow_transitions', 't'), $db->quoteName('#__workflow_stages', 's'), $db->quoteName('#__workflow_stages', 's2')])->whereIn($db->quoteName('t.from_stage_id'), [-1, $workflowStage])->where([$db->quoteName('t.to_stage_id') . ' = ' . $db->quoteName('s.id'), $db->quoteName('s.workflow_id') . ' = ' . $db->quoteName('s2.workflow_id'), $db->quoteName('s.workflow_id') . ' = ' . $db->quoteName('t.workflow_id'), $db->quoteName('s2.id') . ' = :stage1', $db->quoteName('t.published') . ' = 1', $db->quoteName('s.published') . ' = 1'])->bind(':stage1', $workflowStage, ParameterType::INTEGER)->order($db->quoteName('t.ordering'));
$items = $db->setQuery($query)->loadObjectList();
Factory::getLanguage()->load('com_workflow', JPATH_ADMINISTRATOR);
$parts = explode('.', $extension);
$component = reset($parts);
if (\count($items)) {
$user = Factory::getUser();
$items = array_filter($items, function ($item) use($user, $component) {
return $user->authorise('core.execute.transition', $component . '.transition.' . $item->value);
});
foreach ($items as $item) {
$item->text = Text::_($item->text);
}
}
// Get workflow stage title
$query = $db->getQuery(true)->select($db->quoteName('title'))->from($db->quoteName('#__workflow_stages'))->where($db->quoteName('id') . ' = :stage')->bind(':stage', $workflowStage, ParameterType::INTEGER);
$workflowName = $db->setQuery($query)->loadResult();
$default = [HTMLHelper::_('select.option', '', Text::_($workflowName))];
$options = array_merge(parent::getOptions(), $items);
if (\count($options)) {
$default[] = HTMLHelper::_('select.option', '-1', '--------', ['disable' => true]);
}
// Merge with defaults
return array_merge($default, $options);
}