Index: trunk/kernel/include/usersession.php =================================================================== diff -u -N -r5185 -r5218 --- trunk/kernel/include/usersession.php (.../usersession.php) (revision 5185) +++ trunk/kernel/include/usersession.php (.../usersession.php) (revision 5218) @@ -1004,17 +1004,19 @@ { $g = $Groups[$i]; if(strlen($g)>0) - $acl_where[] = "(FIND_IN_SET($g,acl) OR ((NOT FIND_IN_SET($g,dacl)) AND acl='')) "; + $acl_where[] = "FIND_IN_SET($g,acl) "; } if(count($acl_where)) { $acl_where = "(".implode(" OR ",$acl_where).")"; } - else - $acl_where = "(FIND_IN_SET(0,acl))"; + else { + $acl_where = "FIND_IN_SET(0,acl)"; + } } - else - $acl_where = "(FIND_IN_SET(0,acl))"; + else { + $acl_where = "FIND_IN_SET(0,acl)"; + } return $acl_where; } Index: trunk/kernel/units/general/helpers/permissions_helper.php =================================================================== diff -u -N -r5186 -r5218 --- trunk/kernel/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 5186) +++ trunk/kernel/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 5218) @@ -313,25 +313,29 @@ // that (perm cache creator) code thinks that it is allowed & adds corresponding record and code below will // return incorrect results - /*if (preg_match('/(.*)\.VIEW$/', $name) && ($type == 0)) { + if (preg_match('/(.*)\.VIEW$/', $name) && ($type == 0)) { // cached view permission of category: begin - $sql = 'SELECT perm_cache.PermId - FROM '.TABLE_PREFIX.'PermCache perm_cache - LEFT JOIN '.TABLE_PREFIX.'PermissionConfig perm_config ON perm_cache.PermId = perm_config.PermissionConfigId - WHERE (perm_config.PermissionName = '.$this->Conn->qstr($name).' AND perm_cache.CategoryId = '.$cat_id.')'; + $sql = 'SELECT PermissionConfigId + FROM '.TABLE_PREFIX.'PermissionConfig + WHERE PermissionName = '.$this->Conn->qstr($name); + $perm_id = $this->Conn->GetOne($sql); + + $sql = 'SELECT PermId + FROM '.TABLE_PREFIX.'PermCache + WHERE (PermId = '.$perm_id.') AND (CategoryId = '.$cat_id.')'; $view_filters = Array(); $groups = explode(',', $this->Application->RecallVar('UserGroups')); foreach ($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', perm_cache.ACL) || ((NOT FIND_IN_SET('.$group.', perm_cache.DACL)) AND perm_cache.ACL = \'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', ACL)'; } $sql .= ' AND ('.implode(' OR ', $view_filters).')'; $perm_value = $this->Conn->GetOne($sql) ? 1 : 0; $this->Application->setCache('permissions', $cache_key, $perm_value); return $perm_value; // cached view permission of category: end - }*/ + } if ($cat_id == 0) { $cat_hierarchy = Array(0); Index: trunk/kernel/units/general/cat_event_handler.php =================================================================== diff -u -N -r5185 -r5218 --- trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 5185) +++ trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 5218) @@ -324,7 +324,7 @@ $groups = explode( ',', $this->Application->RecallVar('UserGroups') ); foreach($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', perm.acl) || ((NOT FIND_IN_SET('.$group.',perm.dacl)) AND perm.acl=\'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', perm.acl)'; } $view_filter = implode(' OR ', $view_filters); $object->addFilter('perm_filter2', $view_filter); Index: trunk/kernel/units/categories/categories_event_handler.php =================================================================== diff -u -N -r5194 -r5218 --- trunk/kernel/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5194) +++ trunk/kernel/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5218) @@ -69,7 +69,7 @@ // apply permission filters to all users except "root" $groups = explode(',',$this->Application->RecallVar('UserGroups')); foreach ($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', acl) || ((NOT FIND_IN_SET('.$group.',dacl)) AND acl=\'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', acl)'; } $view_filter = implode(' OR ', $view_filters); $object->addFilter('perm_filter2', $view_filter); Index: trunk/core/units/categories/categories_event_handler.php =================================================================== diff -u -N -r5194 -r5218 --- trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5194) +++ trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5218) @@ -69,7 +69,7 @@ // apply permission filters to all users except "root" $groups = explode(',',$this->Application->RecallVar('UserGroups')); foreach ($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', acl) || ((NOT FIND_IN_SET('.$group.',dacl)) AND acl=\'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', acl)'; } $view_filter = implode(' OR ', $view_filters); $object->addFilter('perm_filter2', $view_filter); Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -N -r5185 -r5218 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 5185) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 5218) @@ -324,7 +324,7 @@ $groups = explode( ',', $this->Application->RecallVar('UserGroups') ); foreach($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', perm.acl) || ((NOT FIND_IN_SET('.$group.',perm.dacl)) AND perm.acl=\'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', perm.acl)'; } $view_filter = implode(' OR ', $view_filters); $object->addFilter('perm_filter2', $view_filter); Index: trunk/kernel/parser.php =================================================================== diff -u -N -r4880 -r5218 --- trunk/kernel/parser.php (.../parser.php) (revision 4880) +++ trunk/kernel/parser.php (.../parser.php) (revision 5218) @@ -1531,17 +1531,19 @@ for($i=0;$iClear(); $OrderBy = $objCatList->QueryOrderByClause(TRUE,TRUE,TRUE); $objCatList->LoadCategories("ParentId=$CategoryId AND Status=1",$OrderBy, false); @@ -1658,17 +1660,19 @@ for($i=0;$iApplication->RecallVar('UserGroups')); foreach ($groups as $group) { - $view_filters[] = 'FIND_IN_SET('.$group.', perm_cache.ACL) || ((NOT FIND_IN_SET('.$group.', perm_cache.DACL)) AND perm_cache.ACL = \'\')'; + $view_filters[] = 'FIND_IN_SET('.$group.', ACL)'; } $sql .= ' AND ('.implode(' OR ', $view_filters).')'; $perm_value = $this->Conn->GetOne($sql) ? 1 : 0; $this->Application->setCache('permissions', $cache_key, $perm_value); return $perm_value; // cached view permission of category: end - }*/ + } if ($cat_id == 0) { $cat_hierarchy = Array(0);