public function checkPermission()
{
/** @var Symfony\Component\HttpFoundation\Session\SessionInterface $objSession */
$objSession = System::getContainer()->get('session');
// Prevent deleting referenced elements (see #4898)
if (Input::get('act') == 'deleteAll') {
$objCes = $this->Database->prepare("SELECT cteAlias FROM tl_content WHERE (ptable='tl_article' OR ptable='') AND type='alias'")->execute();
$session = $objSession->all();
$session['CURRENT']['IDS'] = array_diff($session['CURRENT']['IDS'], $objCes->fetchEach('cteAlias'));
$objSession->replace($session);
}
if ($this->User->isAdmin) {
return;
}
// Get the pagemounts
$pagemounts = array();
foreach ($this->User->pagemounts as $root) {
$pagemounts[] = $root;
$pagemounts = array_merge($pagemounts, $this->Database->getChildRecords($root, 'tl_page'));
}
$pagemounts = array_unique($pagemounts);
// Check the current action
switch (Input::get('act')) {
case 'paste':
// Allow
break;
case '':
// empty
// empty
case 'create':
case 'select':
// Check access to the article
$this->checkAccessToElement(CURRENT_ID, $pagemounts, true);
break;
case 'editAll':
case 'deleteAll':
case 'overrideAll':
case 'cutAll':
case 'copyAll':
// Check access to the parent element if a content element is moved
if (Input::get('act') == 'cutAll' || Input::get('act') == 'copyAll') {
$this->checkAccessToElement(Input::get('pid'), $pagemounts, Input::get('mode') == 2);
}
$objCes = $this->Database->prepare("SELECT id FROM tl_content WHERE (ptable='tl_article' OR ptable='') AND pid=?")->execute(CURRENT_ID);
$session = $objSession->all();
$session['CURRENT']['IDS'] = array_intersect($session['CURRENT']['IDS'], $objCes->fetchEach('id'));
$objSession->replace($session);
break;
case 'cut':
case 'copy':
// Check access to the parent element if a content element is moved
$this->checkAccessToElement(Input::get('pid'), $pagemounts, Input::get('mode') == 2);
// NO BREAK STATEMENT HERE
// NO BREAK STATEMENT HERE
default:
// Check access to the content element
$this->checkAccessToElement(Input::get('id'), $pagemounts);
break;
}
}