Back to Workflow class

Method getDefaultStageByCategory

public bool|int
getDefaultStageByCategory
(mixed $catId = 0)
Try to load a workflow default stage by category ID.
Parameters
  • int $catId The category ID.
Returns
  • bool|int An integer, holding the stage ID or false
Since
  • 4.0.0
Class: Workflow
Project: Joomla

Method getDefaultStageByCategory - Source code

/**
 * Try to load a workflow default stage by category ID.
 *
 * @param   integer   $catId  The category ID.
 *
 * @return  boolean|integer  An integer, holding the stage ID or false
 * @since   4.0.0
 */
public function getDefaultStageByCategory($catId = 0)
{
    // Let's check if a workflow ID is assigned to a category
    $category = new Category($this->db);
    $categories = array_reverse($category->getPath($catId));
    $workflow_id = 0;
    foreach ($categories as $cat) {
        $cat->params = new Registry($cat->params);
        $workflow_id = $cat->params->get('workflow_id');
        if ($workflow_id == 'inherit') {
            $workflow_id = 0;
        } elseif ($workflow_id == 'use_default') {
            $workflow_id = 0;
            break;
        } elseif ($workflow_id > 0) {
            break;
        }
    }
    // Check if the workflow exists
    if ($workflow_id = (int) $workflow_id) {
        $query = $this->db->getQuery(true);
        $query->select([$this->db->quoteName('ws.id')])->from([$this->db->quoteName('#__workflow_stages', 'ws'), $this->db->quoteName('#__workflows', 'w')])->where([$this->db->quoteName('ws.workflow_id') . ' = ' . $this->db->quoteName('w.id'), $this->db->quoteName('ws.default') . ' = 1', $this->db->quoteName('w.published') . ' = 1', $this->db->quoteName('ws.published') . ' = 1', $this->db->quoteName('w.id') . ' = :workflowId', $this->db->quoteName('w.extension') . ' = :extension'])->bind(':workflowId', $workflow_id, ParameterType::INTEGER)->bind(':extension', $this->extension);
        $stage_id = (int) $this->db->setQuery($query)->loadResult();
        if (!empty($stage_id)) {
            return $stage_id;
        }
    }
    // Use default workflow
    $query = $this->db->getQuery(true);
    $query->select([$this->db->quoteName('ws.id')])->from([$this->db->quoteName('#__workflow_stages', 'ws'), $this->db->quoteName('#__workflows', 'w')])->where([$this->db->quoteName('ws.default') . ' = 1', $this->db->quoteName('ws.workflow_id') . ' = ' . $this->db->quoteName('w.id'), $this->db->quoteName('w.published') . ' = 1', $this->db->quoteName('ws.published') . ' = 1', $this->db->quoteName('w.default') . ' = 1', $this->db->quoteName('w.extension') . ' = :extension'])->bind(':extension', $this->extension);
    $stage_id = (int) $this->db->setQuery($query)->loadResult();
    // Last check if we have a workflow ID
    if (!empty($stage_id)) {
        return $stage_id;
    }
    return false;
}