public function setRoodId() { if ($this->User->isAdmin) { return; } $arrRoot = array(); if (is_array($this->User->finanzen_archiv) && $this->User->inherit != 'group') { $arrRoot = array_merge($arrRoot, $this->User->finanzen_archiv); } if ($this->User->inherit != 'custom') { foreach ($this->User->groups as $intGroup) { print $intGroup; $objGroup = \UserGroupModel::findByPk($intGroup); if ($objGroup) { //@FIXME Group nicht von Haste abgeleitet!!!!! $objFinanzenArchiv = $objGroup->getRelated('finanzen_archiv'); var_dump($objFinanzenArchiv); if ($objFinanzenArchiv) { while ($objFinanzenArchiv->next()) { $arrRoot[] = $objFinanzenArchiv->id; var_dump($objFinanzenArchiv); } } } } } var_dump($arrRoot); $GLOBALS['TL_DCA']['tl_finanzen_archiv']['list']['sorting']['root'] = array_unique($arrRoot); if (!$this->User->isAdmin) { unset($GLOBALS['TL_DCA']['tl_finanzen_archiv']['list']['global_operations']['all']); unset($GLOBALS['TL_DCA']['tl_finanzen_archiv']['list']['operations']['editheader']); unset($GLOBALS['TL_DCA']['tl_finanzen_archiv']['list']['operations']['delete']); $GLOBALS['TL_DCA']['tl_finanzen_archiv']['config']['closed'] = true; } }
/** * Check permissions to edit table tl_photoalbums2_archive */ public function checkPermission() { if ($this->User->isAdmin) { return; } // Set root IDs if (!is_array($this->User->photoalbums2s) || empty($this->User->photoalbums2s)) { $root = array(0); } else { $root = $this->User->photoalbums2s; } $GLOBALS['TL_DCA']['tl_photoalbums2_archive']['list']['sorting']['root'] = $root; // Check permissions to add archives if (!$this->User->hasAccess('create', 'photoalbums2p')) { $GLOBALS['TL_DCA']['tl_photoalbums2_archive']['config']['closed'] = true; } // Check current action switch ($this->Input->get('act')) { case 'create': case 'select': // Allow break; case 'edit': // Dynamically add the record to the user profile if (!in_array($this->Input->get('id'), $root)) { $arrNew = $this->Session->get('new_records'); if (is_array($arrNew['tl_photoalbums2_archive']) && in_array($this->Input->get('id'), $arrNew['tl_photoalbums2_archive'])) { // Add permissions on user level if ($this->User->inherit == 'custom' || !$this->User->groups[0]) { $objUser = \UserModel::findByPk($this->User->id); $arrPhotoalbums2p = deserialize($objUser->photoalbums2p); if (is_array($arrPhotoalbums2p) && in_array('create', $arrPhotoalbums2p)) { $arrPhotoalbums2s = deserialize($objUser->photoalbums2s); $arrPhotoalbums2s[] = $this->Input->get('id'); $objUser->photoalbums2s = serialize($arrPhotoalbums2s); $objUser->save(); } } elseif ($this->User->groups[0] > 0) { $objGroup = \UserGroupModel::findByPk($this->User->groups[0]); $arrPhotoalbums2p = deserialize($objGroup->photoalbums2p); if (is_array($arrPhotoalbums2p) && in_array('create', $arrPhotoalbums2p)) { $arrPhotoalbums2s = deserialize($objGroup->photoalbums2s); $arrPhotoalbums2s[] = $this->Input->get('id'); $objGroup->photoalbums2s = serialize($arrPhotoalbums2s); $objGroup->save(); } } // Add new element to the user object $root[] = $this->Input->get('id'); $this->User->photoalbums2s = $root; } } // No break; // No break; case 'copy': case 'delete': case 'show': if (!in_array($this->Input->get('id'), $root) || $this->Input->get('act') == 'delete' && !$this->User->hasAccess('delete', 'photoalbums2p')) { $this->log('Not enough permissions to ' . $this->Input->get('act') . ' photoalbums2 archive ID "' . $this->Input->get('id') . '"', 'tl_photoalbums2_archive checkPermission', TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; case 'editAll': case 'deleteAll': case 'overrideAll': $session = $this->Session->getData(); if ($this->Input->get('act') == 'deleteAll' && !$this->User->hasAccess('delete', 'photoalbums2p')) { $session['CURRENT']['IDS'] = array(); } else { $session['CURRENT']['IDS'] = array_intersect($session['CURRENT']['IDS'], $root); } $this->Session->setData($session); break; default: if (strlen($this->Input->get('act'))) { $this->log('Not enough permissions to ' . $this->Input->get('act') . ' photoalbums2 archives', 'tl_photoalbums2_archive checkPermission', TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; } }