Back to WorkflowstageField class

Method getGroups

protected array
getGroups
()
Method to get the field option groups.
Returns
  • array The field option objects as a nested array in groups.
Since
  • 4.0.0
-
  • \UnexpectedValueException

Method getGroups - Source code

/**
 * Method to get the field option groups.
 *
 * @return  array  The field option objects as a nested array in groups.
 *
 * @since  4.0.0
 * @throws  \UnexpectedValueException
 */
protected function getGroups()
{
    $db = Factory::getDbo();
    $query = $db->getQuery(true);
    // Select distinct stages for existing articles
    $query->select(['DISTINCT ' . $db->quoteName('ws.id', 'workflow_stage_id'), $db->quoteName('ws.title', 'workflow_stage_title'), $db->quoteName('w.title', 'workflow_title'), $db->quoteName('w.id', 'workflow_id'), $db->quoteName('w.ordering', 'ordering'), $db->quoteName('ws.ordering', 'workflow_stage_ordering')])->from($db->quoteName('#__workflow_stages', 'ws'))->from($db->quoteName('#__workflows', 'w'))->where([$db->quoteName('ws.workflow_id') . ' = ' . $db->quoteName('w.id'), $db->quoteName('w.extension') . ' = :extension'])->bind(':extension', $this->extension)->order([$db->quoteName('w.ordering'), $db->quoteName('ws.ordering')]);
    if ($this->activeonly) {
        $query->from($db->quoteName('#__workflow_associations', 'wa'))->where([$db->quoteName('wa.stage_id') . ' = ' . $db->quoteName('ws.id'), $db->quoteName('wa.extension') . ' = :associationExtension'])->bind(':associationExtension', $this->extension);
    }
    $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));
    }
    // Merge any additional options in the XML definition.
    return array_merge(parent::getGroups(), $workflowStages);
}