require $ADMIN_FOLDER . "subdivision/subclass.inc.php"; require $INCLUDE_FOLDER . "s_files.inc.php"; $Delimeter = " > "; $CatalogueURL = "" . $ADMIN_PATH . "catalogue/?phase=6&CatalogueID="; $SubdivisionURL = "" . $ADMIN_PATH . "subdivision/?phase=4&SubdivisionID="; $loc = new SubdivisionLocation($CatalogueID, $ParentSubID, $SubdivisionID); $sh = new SubdivisionHierarchy($Delimeter, $CatalogueURL, $SubdivisionURL); $main_section = "control"; $item_id = 1; $Title1 = "<a href=" . $ADMIN_PATH . "catalogue/>" . SECTION_CONTROL_CONTENT_CATALOGUE . "</a>"; $Title1 .= $Delimeter . $sh->Link; $Title2 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_CLASSLIST_SECTION; $Title2_1 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_CLASSLIST_SITE; $Title3 = "<a href=\"" . $ADMIN_PATH . "subdivision/SubClass.php?CatalogueID=" . $CatalogueID . "&SubdivisionID=" . $SubdivisionID . "\">" . CONTROL_CONTENT_SUBDIVISION_SUBCLASS_CLASSLIST_SECTION . "</a>"; $Title4 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_ADDCLASS; $Title5 = GetSubClassName($SubClassID); $Title6 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_ADDCLASS; $Title7 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_OPTIONSCLASS; $Title8 = CONTROL_CONTENT_SUBDIVISION_SUBCLASS_ADDCLASSSITE; $Title9 = "<a href=" . $ADMIN_PATH . "subdivision/SubClass.php?CatalogueID=" . $CatalogueID . ">" . CONTROL_CONTENT_SUBDIVISION_SUBCLASS_CLASSLIST_SITE . "</a>"; if (in_array($phase, array(2, 4, 5))) { if (!$nc_core->token->verify()) { BeginHtml($Title2, $Title2, ""); nc_print_status(NETCAT_TOKEN_INVALID, 'error'); EndHtml(); exit; } } try { if (isset($phase)) { if ($SubClassID || $SubdivisionID) {
/** * Вернет массив с правами пользователя * каждая "строчка" - отдельное право, в строчке следующее "столбцы": * ID, live (время жизни), AdminType, title, 0, 1,2,3 4,5, ... * 0 1 2 3 4 5 - это чтение, добавление, изменнение, подписка, мод-ние и адм-ние (берется из констант, могут быть в другом порядке) * эти элменты - тоже массивы, ключи: 'checkbox' - 0 - нету, 1 - есть, 2 - есть всегда, 3 - нету в принипе * 'mask' - маска для этого права - берется из констант (1, 2,4,8,16....) * но может быть не массив, а "-1" - значит нету ничего в принципе (директор, ...) * * @param int UserID * @param int GroupID * @return array */ public static function GetAllPermission($UserID, $GroupID = 0) { global $nc_core, $db; //Получим все права if ($GroupID) { $Result = $db->get_results("SELECT * FROM `Permission` WHERE `PermissionGroup_ID`='" . (int) $GroupID . "'", ARRAY_A); } else { $Result = $db->get_results("SELECT * FROM `Permission` WHERE `User_ID`='" . (int) $UserID . "'", ARRAY_A); } foreach ((array) $Result as $prm) { $id = $prm['Permission_ID']; // если есть дата - преобразуем ее if ($prm['PermissionBegin']) { $prm['PermissionBegin'] = strtotime($prm['PermissionBegin']); $prm['PermissionBegin'] = strftime("%d.%m.%y %H:%M", $prm['PermissionBegin']); } if ($prm['PermissionEnd']) { $prm['PermissionEnd'] = strtotime($prm['PermissionEnd']); $prm['PermissionEnd'] = strftime("%d.%m.%y %H:%M", $prm['PermissionEnd']); } switch (true) { // определение live - времени жизни case !$prm['PermissionBegin'] && !$prm['PermissionEnd']: $ret[$id]['live'] = "<nobr>" . CONTROL_USER_RIGHTS_UNLIMITED . "</nobr>"; break; case $prm['PermissionBegin'] && $prm['PermissionEnd']: $ret[$id]['live'] = "<nobr>c " . $prm['PermissionBegin'] . "</nobr><br><nobr>по " . $prm['PermissionEnd'] . "</nobr>"; break; case $prm['PermissionBegin'] && !$prm['PermissionEnd']: $ret[$id]['live'] = "<nobr>c " . $prm['PermissionBegin'] . "</nobr>"; break; case !$prm['PermissionBegin'] && $prm['PermissionEnd']: $ret[$id]['live'] = "<nobr>по " . $prm['PermissionEnd'] . "</nobr>"; break; } $ret[$id]['AdminType'] = $prm['AdminType']; $ret[$id]['ID'] = $prm['AdminType']; $ps = $prm['PermissionSet']; // ps - permission set $c_id = $prm['Catalogue_ID']; // r - read, e - edit, d - add, s - subsribe, m - moderate, a - admin, l - delete, h -checked //в зависимости от этих переменных, включатся-выключатся checkbox'ы $r = $ps & MASK_READ ? 1 : 0; $d = $ps & MASK_ADD ? 1 : 0; $e = $ps & MASK_EDIT ? 1 : 0; $s = $ps & MASK_SUBSCRIBE ? 1 : 0; $m = $ps & MASK_MODERATE ? 1 : 0; $a = $ps & MASK_ADMIN ? 1 : 0; $c = $ps & MASK_COMMENT ? 1 : 0; $l = $ps & MASK_DELETE ? 1 : 0; $h = $ps & MASK_CHECKED ? 1 : 0; $ret[$id]['title'] = Permission::GetPermNameByID($prm['AdminType']); $ret[$id]['title'] .= " "; switch ($prm['AdminType']) { case DIRECTOR: case SUPERVISOR: case GUEST: //для них нету просмотр-измениие....-админ-ние вообще $r = $c = $e = $d = $s = $m = $a = $l = $h = -1; break; case SUBSCRIBER: $r = $c = $e = $d = $s = $m = $a = $l = $h = -1; $nc_s = nc_subscriber::get_object(); $ret[$id]['title'] = Permission::GetPermNameByID($prm['AdminType']) . " на рассылку " . $nc_s->get($c_id, 'Name'); break; case BAN_SITE: $m = $a = 3; // нету модерирования и админисрирования if ($c_id) { //определенный сайт $ret[$id]['title'] .= "\"" . $nc_core->catalogue->get_by_id($c_id, "Catalogue_Name") . "\""; } else { // все сайты $ret[$id]['title'] = CONTROL_USER_RIGHTS_SITEALL; } break; case CATALOGUE_ADMIN: if ($c_id) { $ret[$id]['title'] .= "\"" . $nc_core->catalogue->get_by_id($c_id, "Catalogue_Name") . "\""; } else { $ret[$id]['title'] = CONTROL_USER_RIGHTS_CATALOGUEADMINALL; } break; case BAN_SUB: $m = $a = 3; // нету модерирования и админисрирования // zdec break ne nugen // нету модерирования и админисрирования // zdec break ne nugen case SUBDIVISION_ADMIN: $catalogue_name = $nc_core->catalogue->get_by_id($nc_core->subdivision->get_by_id($c_id, 'Catalogue_ID'), 'Catalogue_Name'); $ret[$id]['title'] .= " \"" . $nc_core->subdivision->get_by_id($c_id, "Subdivision_Name") . "\" " . CONTROL_USER_FUNCS_FROMCAT . " \"" . $catalogue_name . "\""; break; case BAN_CC: $m = $a = 3; // zdec break ne nugen // zdec break ne nugen case SUB_CLASS_ADMIN: $ret[$id]['title'] .= " \"" . GetSubClassName($c_id) . "\" " . CONTROL_USER_FUNCS_FROMSEC . " \"" . $nc_core->subdivision->get_by_id(GetSubdivisionBySubClass($c_id), "Subdivision_Name") . "\""; break; case CLASSIFICATOR_ADMIN: $r = 2; $s = 3; $a = 3; $c = 3; $l = 3; $h = 3; // Просмотр - всегда, подписки и админ-ния нет if ($c_id) { $ret[$id]['title'] .= "\"" . Permission::_GetClassificatorNameByID($c_id) . "\""; } else { $ret[$id]['title'] = CONTROL_USER_RIGHTS_CLASSIFICATORADMINALL; } break; case MODERATOR: $r = 2; $s = $a = 3; $c = 3; $h = 3; $l = 3; // Просмотр - всегда, подписки и админ-ния нет break; } $ret[$id][NC_PERM_READ_ID]['checkbox'] = $r; $ret[$id][NC_PERM_READ_ID]['mask'] = MASK_READ; $ret[$id][NC_PERM_ADD_ID]['checkbox'] = $d; $ret[$id][NC_PERM_ADD_ID]['mask'] = MASK_ADD; $ret[$id][NC_PERM_EDIT_ID]['checkbox'] = $e; $ret[$id][NC_PERM_EDIT_ID]['mask'] = MASK_EDIT; $ret[$id][NC_PERM_SUBCRIBE_ID]['checkbox'] = $s; $ret[$id][NC_PERM_SUBCRIBE_ID]['mask'] = MASK_SUBSCRIBE; $ret[$id][NC_PERM_MODERATE_ID]['checkbox'] = $m; $ret[$id][NC_PERM_MODERATE_ID]['mask'] = MASK_MODERATE; $ret[$id][NC_PERM_ADMIN_ID]['checkbox'] = $a; $ret[$id][NC_PERM_ADMIN_ID]['mask'] = MASK_ADMIN; $ret[$id][NC_PERM_COMMENT_ID]['checkbox'] = $c; $ret[$id][NC_PERM_COMMENT_ID]['mask'] = MASK_COMMENT; $ret[$id][NC_PERM_CHECKED_ID]['checkbox'] = $h; $ret[$id][NC_PERM_CHECKED_ID]['mask'] = MASK_CHECKED; $ret[$id][NC_PERM_DELETE_ID]['checkbox'] = $l; $ret[$id][NC_PERM_DELETE_ID]['mask'] = MASK_DELETE; } // отсортируем массив с помощью пользователськой ф-цией cmp if (!empty($ret)) { uasort($ret, 'Permission::_cmp'); } return $ret; }