Exemple #1
0
function quickSubscribe($email, $name = '', $memorials = false)
{
    try {
        $subscriber = nc_subscriber::get_object();
        $subscriber->subscription_add(1, 0, 0, false, array("Email" => $email, 'FIO' => $name));
        if ($memorials) {
            update_row("User", array("Memorial_Subscriber" => 1), "Email='" . mysql_real_escape_string($email) . "'");
        }
    } catch (\Exception $e) {
        dump($e->GetMessage());
    }
}
Exemple #2
0
                    break;
                }
                subscribe_toggleItem($id);
                break;
            default:
                subscribe_addItem($cc);
        }
        if ($sub != $MODULE_VARS['subscriber']['SUBSCRIBER_LIST_SUB']) {
            echo s_browse_subscribes();
        }
    }
} else {
    // новая версия модуля
    try {
        // объект для управления рассылками
        $nc_subscriber = nc_subscriber::get_object();
        // рассылка по этому компоненту в разделе
        $mailer = $nc_subscriber->get_mailer_by_cc($cc);
        // если пользователь авторизирован - то его сразу нужно попробовать подписать
        if ($AUTH_USER_ID) {
            $posting = 1;
        }
        // условие подписки
        $cond = $mailer['SubscribeCond'];
        if ($cond && $posting) {
            eval($cond);
        }
        if (!$posting) {
            if (!$AUTH_USER_ID) {
                // неавторизированный пользователь - выводим форму подписки
                eval("\$result= \"" . $nc_subscriber->tools->get_settings('FormSubscribe') . "\";");
Exemple #3
0
function s_auth($cc_env, $action, $posting)
{
    global $nc_core;
    global $admin_mode, $AUTHORIZATION_TYPE, $user_table_mode;
    global $AUTH_USER_ID;
    // редактирование пользователя через лицевую часть
    if ($action == "change" && $user_table_mode && ($AUTH_USER_ID || Authorize())) {
        return true;
    }
    if ($action == "index" || $action == "full" || $action == "search") {
        $action = "read";
    }
    $cc = $cc_env["Sub_Class_ID"];
    $MODULE_VARS = $nc_core->modules->get_module_vars();
    // для модуля подписки версии 2 своя проверка прав
    if ($action == 'subscribe' && $MODULE_VARS['subscriber']['VERSION'] > 1) {
        try {
            $nc_s = nc_subscriber::get_object();
            $mailer_id = $nc_s->get_mailer_by_cc($cc, 'Mailer_ID');
            return $nc_s = $nc_s->check_rights($mailer_id);
        } catch (Exception $e) {
        }
    }
    // параметры текущего раздела
    $sub_env = $nc_core->subdivision->get_current();
    // Если нет сс, то права на доступ нужно взять из раздела
    $instance = is_array($cc_env) && $cc ? "cc_env" : "sub_env";
    switch ($action) {
        case "add":
            $f_access = ${$instance}["Write_Access_ID"];
            break;
        case "change":
            $f_access = ${$instance}["Edit_Access_ID"];
            break;
        case "subscribe":
            $f_access = ${$instance}["Subscribe_Access_ID"];
            break;
        case "comment":
            $f_access = ${$instance}["Comment_Access_ID"];
            break;
        case "moderate":
            $f_access = 3;
            break;
            //модерирование, надо провреить, не забанен ли, а потом проверить на наличие соответ. права
        //модерирование, надо провреить, не забанен ли, а потом проверить на наличие соответ. права
        default:
            $f_access = ${$instance}["Read_Access_ID"];
            break;
    }
    // действия с объектами (изменение, удаление) не доступно неавторизованным
    if ($f_access == 1 && $action == "change") {
        $f_access = 2;
    }
    switch ($f_access) {
        case 1:
            // все
            if ($admin_mode) {
                if (!Authorize()) {
                    return false;
                }
                if (!CheckUserRights($cc, $action, 1)) {
                    return false;
                }
            }
            break;
        case 2:
            // только зарегистрированные
            if (!Authorize()) {
                return false;
            }
            global $perm;
            if ($perm->isBanned($cc_env, $action)) {
                return false;
            }
            break;
        case 3:
            // только уполномочнные
            if (!Authorize()) {
                return false;
            }
            global $perm;
            if ($perm->isBanned($cc_env, $action)) {
                return false;
            }
            if (!CheckUserRights($cc, $action, $posting)) {
                return false;
            }
            break;
        default:
            break;
    }
    return true;
}
Exemple #4
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;
 }