public function getAuthorisedCategories($component, $action)
{
$db = Factory::getDbo();
$subQuery = $db->getQuery(true)->select($db->quoteName(['id', 'asset_id']))->from($db->quoteName('#__categories'))->where([$db->quoteName('extension') . ' = :component', $db->quoteName('published') . ' = 1']);
$query = $db->getQuery(true)->select($db->quoteName(['c.id', 'a.name']))->from('(' . $subQuery . ') AS ' . $db->quoteName('c'))->join('INNER', $db->quoteName('#__assets', 'a'), $db->quoteName('c.asset_id') . ' = ' . $db->quoteName('a.id'))->bind(':component', $component);
$db->setQuery($query);
$allCategories = $db->loadObjectList('id');
$allowedCategories = array();
foreach ($allCategories as $category) {
if ($this->authorise($action, $category->name)) {
$allowedCategories[] = (int) $category->id;
}
}
return $allowedCategories;
}