Beispiel #1
0
require $ADMIN_FOLDER . "subdivision/subclass.inc.php";
require $INCLUDE_FOLDER . "s_files.inc.php";
$Delimeter = " &gt ";
$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) {
Beispiel #2
0
 /**
  * Вернет  массив  с правами пользователя
  * каждая "строчка" - отдельное право, в строчке следующее "столбцы":
  * 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;
 }