/**
* Get a list of the available workflow stages.
*
* @param array $options An array of options for the control
*
* @return array
*
* @since 4.0.0
*/
public static function existing($options)
{
// Get the database object and a new query object.
$db = Factory::getDbo();
$query = $db->getQuery(true);
// Build the query.
$query->select([$db->quoteName('ws.id', 'workflow_stage_id'), $db->quoteName('ws.title', 'workflow_stage_title'), $db->quoteName('w.id', 'workflow_id'), $db->quoteName('w.title', 'workflow_title')])->from($db->quoteName('#__workflow_stages', 'ws'))->join('LEFT', $db->quoteName('#__workflows', 'w'), $db->quoteName('w.id') . ' = ' . $db->quoteName('ws.workflow_id'))->where($db->quoteName('w.published') . ' = 1')->order($db->quoteName('ws.ordering'));
// Set the query and load the options.
$stages = $db->setQuery($query)->loadObjectList();
$workflowStages = array();
// Grouping the stages by workflow
foreach ($stages as $stage) {
// Using workflow ID to differentiate workflows having same title
$workflowStageKey = Text::_($stage->workflow_title) . ' (' . $stage->workflow_id . ')';
if (!array_key_exists($workflowStageKey, $workflowStages)) {
$workflowStages[$workflowStageKey] = array();
}
$workflowStages[$workflowStageKey][] = HTMLHelper::_('select.option', $stage->workflow_stage_id, Text::_($stage->workflow_stage_title));
}
$prefix[] = array(HTMLHelper::_('select.option', '', $options['title']));
return array_merge($prefix, $workflowStages);
}