Index: branches/5.2.x/core/units/helpers/permissions_helper.php =================================================================== diff -u -N -r15137 -r15761 --- branches/5.2.x/core/units/helpers/permissions_helper.php (.../permissions_helper.php) (revision 15137) +++ branches/5.2.x/core/units/helpers/permissions_helper.php (.../permissions_helper.php) (revision 15761) @@ -1,6 +1,6 @@ Application->ConfigValue('CheckViewPermissionsInCatalog') ) { + if ( strpos($cat_id, '|') !== false ) { + $category_path = explode('|', substr($cat_id, 1, -1)); + $cat_id = end($category_path); + } - $sql = 'SELECT PermissionConfigId - FROM ' . TABLE_PREFIX . 'CategoryPermissionsConfig - WHERE PermissionName = ' . $this->Conn->qstr($name); - $perm_id = $this->Conn->GetOne($sql); + $sql = 'SELECT PermissionConfigId + FROM ' . TABLE_PREFIX . 'CategoryPermissionsConfig + WHERE PermissionName = ' . $this->Conn->qstr($name); + $perm_id = $this->Conn->GetOne($sql); - $sql = 'SELECT PermId - FROM ' . TABLE_PREFIX . 'CategoryPermissionsCache - WHERE (PermId = ' . $perm_id . ') AND (CategoryId = ' . (int)$cat_id . ')'; + $sql = 'SELECT PermId + FROM ' . TABLE_PREFIX . 'CategoryPermissionsCache + WHERE (PermId = ' . $perm_id . ') AND (CategoryId = ' . (int)$cat_id . ')'; - $view_filters = Array (); - foreach ($groups as $group) { - $view_filters[] = 'FIND_IN_SET(' . $group . ', ACL)'; + $view_filters = Array (); + foreach ($groups as $group) { + $view_filters[] = 'FIND_IN_SET(' . $group . ', ACL)'; + } + $sql .= ' AND (' . implode(' OR ', $view_filters) . ')'; + $perm_value = $this->Conn->GetOne($sql) ? 1 : 0; } - $sql .= ' AND (' . implode(' OR ', $view_filters) . ')'; - $perm_value = $this->Conn->GetOne($sql) ? 1 : 0; + else { + $perm_value = 1; + } $this->Application->setCache('permissions[%CPermSerial%]:' . $cache_key, $perm_value); return $perm_value;