Sergey |
|
---|---|
Это как раз и обозначает, что в таблице sed_pages я добавил поле page_rights в котором и записываю код доступа к строке. Обозначив соответственно биты, как нам надо, можно и будет производить такую выборку.
Однако в котонти осуществлен только групповой доступ к категории. Для этого надо сформировать по правам доступа некоторый массив допусти $all_cat, в котором будут перечислены все категории где данный юзер может читать страницы (имеет нужное право доступа). Затем, этот массив превратить в строку типа Len_cat=cat1,cat2,...catn. в MySQL есть замечательная функция FIND_IN_SET(str,strlist) Возвращает значение от 1 до N, если строка str присутствует в списке strlist, состоящем из N подстрок. Список строк представляет собой строку, состоящую из подстрок, разделенных символами `,'. Если первый аргумент представляет собой строку констант, а второй является столбцом типа SET, функция FIND_IN_SET() оптимизируется для использования двоичной арифметики! Возвращает 0, если str отсутствует в списке strlist или если strlist является пустой строкой. Если один из аргументов равен NULL, возвращается 0. Данная функция не будет корректно работать, если первый аргумент содержит символ `,':в strlist загоняем Len_cat, а str наше поле page_cat . Это я так гипотетически. Следует принять во внимание, что возвращает номер cat из Len_cat Добавлено 17 Минут спустя: Кстати в функции function sed_auth($area, $option, $mask = 'RWA') есть замечательный фрагмент: if(is_array($usr['auth'][$area]))
{
foreach($usr['auth'][$area] as $k => $g)
{
$cnt += (($g & $mn[$ml]) == $mn[$ml]);
}
}
Как быть со всей толпой, соответственно и для толпы есть категория гость. www.cotonti.mobi
|
|
Dieser Beitrag wurde von Sergey (am 5. Februar 2010, 06:45, vor 15 Jahre) bearbeitet |