private function parseContentTree($nodeTree, $userGroupType, $arrDynamicPermissionIdsOfGroup, $cssRowClassNr = 1, $level = 0) { global $_ARRAYLANG; foreach ($nodeTree as $nodeData) { $pages = $nodeData['data']; // remove non-existent pages foreach ($pages as $idx => $pageData) { if (!$pageData['attr']['id']) { unset($pages[$idx]); } } $numberOfPages = count($pages); foreach ($pages as $idx => $pageData) { // TODO: handle broken pages differently if ($pageData['attr']['id'] == 'broken') { //continue; } $rowCssClass = array(); if ($idx == 0) { $rowCssClass[] = 'rowFirst'; } if ($idx + 1 == $numberOfPages) { $rowCssClass[] = 'rowLast'; } $protected = $userGroupType == 'backend' && $pageData['attr']['locked'] || $userGroupType == 'frontend' && $pageData['attr']['protected']; if ($protected) { $rowCssClass[] = 'active'; } $published = $nodeData['metadata'][$pageData['attr']['id']]['publishing'] == 'published'; $this->_objTpl->setVariable(array('ACCESS_PAGE_ID' => $pageData['attr']['id'], 'ACCESS_NODE_ID' => $nodeData['attr']['rel_id'], 'ACCESS_NODE_LANG' => $pageData['language'], 'ACCESS_WEBPAGE_CSS_CLASS' => join(' ', $rowCssClass), 'ACCESS_PAGE_SELECTION_DISPLAY' => $protected ? '' : 'none', 'ACCESS_PAGE_PUBLISHING' => $published ? 'published' : 'unpublished', 'ACCESS_PAGE_PROTECTED' => $protected ? 'locked' : '', 'ACCESS_PAGE_PROTECT_BACKEND' => $userGroupType == 'backend' ? 1 : 0, 'ACCESS_WEBPAGE_TEXT_INDENT' => $level * 20, 'ACCESS_WEBPAGE_NAME' => contrexx_raw2xhtml($pageData['title']) . ' [' . $pageData['language'] . ']', 'ACCESS_PAGE_CHECKED' => $protected && in_array($pageData['attr'][$userGroupType . '_access_id'], $arrDynamicPermissionIdsOfGroup) ? 'checked="checked"' : '', 'ACCESS_CLICK_TO_CHANGE_PROTECTION_TXT' => $userGroupType == 'backend' ? $protected ? $_ARRAYLANG['TXT_ACCESS_CLICK_UNLOCK_PAGE_MODIF'] : $_ARRAYLANG['TXT_ACCESS_CLICK_LOCK_PAGE_MODIFY'] : ($protected ? $_ARRAYLANG['TXT_ACCESS_CLICK_UNLOCK_PAGE_ACCESS'] : $_ARRAYLANG['TXT_ACCESS_CLICK_LOCK_PAGE_ACCESS']))); if ($published) { $this->_objTpl->setVariable('ACCESS_WEBPAGE_LINK', \Cx\Core\Routing\URL::fromPageId($pageData['attr']['id'])); $this->_objTpl->parse('access_permission_webpage_preview'); } else { $this->_objTpl->hideBlock('access_permission_webpage_preview'); } $this->_objTpl->parse('access_permission_website'); } if (isset($nodeData['children'])) { $this->parseContentTree($nodeData['children'], $userGroupType, $arrDynamicPermissionIdsOfGroup, $cssRowClassNr, $level + 1); } } }