/**
* 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;
}