1. Важное и срочное обновление IPB 3.4.5 - https://nulled.cc/threads/243375/

[Помощь] Спрятать от гостей attachment

Тема в разделе "IPB", создана пользователем SabOnEzZZ, 1 июн 2009.

Статус темы:
Закрыта.
Модераторы: Maybe
  1. SabOnEzZZ

    SabOnEzZZ Читатель

    Заблокирован
    Регистр.:
    30 май 2009
    Сообщения:
    8
    Симпатии:
    0
    Суть такая. Установил себе хайд для IPB, спрятал аттач под хайд, но когда я захожу гостем на сайте то вижу этот сранный аттач, как его скрыть от гостей? :bc::bc:

    ps когда на сайте залогинился аттач отображается нор

    [​IMG]
     
  2. maxdam

    maxdam Читатель

    Заблокирован
    Регистр.:
    16 ноя 2008
    Сообщения:
    157
    Симпатии:
    13
    править настройки прав доступа.
     
  3. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    править настройки не поможет
    нужно еще отредактировать пару файлов:
    открываем sources\classes\attach\class_attach.php (этим скрываем инфу о аттачах в самих постах)
    находим там
    PHP:
                    if ( $this->ipsclass->vars['show_img_upload'] and $row['attach_is_image'] )
                    {
    добавляем перед ней
    PHP:
                    if ( $this->ipsclass->check_perms($this->ipsclass->forums->forum_by_id$attach['forum_id'] ]['download_perms']) === FALSE )
                            {
                            
    $final_blocks$row['attach_rel_id'] ]['attach'] = "У вас нет доступа к вложенным файлам.";
                            }
                    else        
    открываем sources\action_public\attach.php (а этим скрываем инфу о аттачах "по скрепке" в списке топиков)
    находим
    PHP:
        function show_topic_attachments()
        {
    добавляем после
    PHP:
            if ( $this->ipsclass->check_perms($this->ipsclass->forums->forum_by_id$attach['forum_id'] ]['read_perms']) === FALSE )
                {
                
    $this->ipsclass->Error( array( 'LEVEL' => 1'MSG' => 'no_permission' ) );
                }

            if ( 
    $this->ipsclass->check_perms($this->ipsclass->forums->forum_by_id$attach['forum_id'] ]['download_perms']) === FALSE )
                {
                
    $this->ipsclass->Error( array( 'LEVEL' => 1'MSG' => 'no_permission' ) );
                }
    в итоге тем у кого есть запрет качать аттачи (в масках доступа должна быть погашена галочка download) не увидят ссылок на аттачи, ни имен файлов ни статиистику сколько скачали.

    ЗЫ: может что и пропустил, но вроде аттачи видны только в этих 2 местах
     
  4. SabOnEzZZ

    SabOnEzZZ Читатель

    Заблокирован
    Регистр.:
    30 май 2009
    Сообщения:
    8
    Симпатии:
    0
    сделал всё как написано, но теперь никто не может качать аттачи, даже главные админы
    в масках галочка на загрузку и скачку стоит, в чём пролбема?

    зы в дабавок кнопка хайда исчезла ))))
    видать я зря обновил кем и сделал пересчёт файлов + изображений )))
     
  5. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    а какой именно мод хайда стоит?
    посмотрю может у меня такой же.

    насчет "никто не может качать аттачи" это странно
    check_perms не должен выдавать false для разрешенных групп
    но это надо проверить, я вчера скрыл инфу от гостей и успокоился :)

    пока закоменти изменения

    -----------------
    да, проблема есть.
    check_perms на самом деле мало что делает, тут главное передать ей правильные параметры
    а внутри render_attachments() это сделать проблематично, т.к в нее не передается идентификатор форума


    Решений этой проблемы может быть несоклько.
    1. найти все вызовы render_attachments()
    и сделать проверку до нее.
    например в коде sources\action_public\topics.php
    PHP:
                 //-----------------------------------------
                // Not got permission to view downloads?
                //-----------------------------------------
                
                
    if ( $this->ipsclass->check_perms($this->ipsclass->forums->forum_by_id$this->topic['forum_id'] ]['download_perms']) === FALSE )
                {
                    
    $this->ipsclass->vars['show_img_upload'] = 0;
                }
                
                
    //-----------------------------------------
                // Continue...
                //-----------------------------------------
                
                
    $this->class_attach->type  'post';
                
    $this->class_attach->init();
            
                
    $this->output $this->class_attach->render_attachments$this->output$this->attach_pids );
    предвингуть скобку '}' в поледнюю строку
    тогда когда прав нету функция не будет вызываться и аттача мы не увидем, как и сообщения о том что аттач вообще есть но не хватает прав
    это тоже можно исправить, через else добавив нужный текст.

    Файлов вызывающих эту функцию много, у меня :
    sources\action_public\messenger.php
    sources\action_public\misc\print_page.php
    sources\action_public\search.php
    sources\action_public\topics.php
    sources\action_public\xmlout.php
    sources\classes\post\class_post.php
    sources\components_public\profile\posts.php
    sources\components_public\profile\topics.php
    sources\lib\search_mysql_ftext.php
    ources\portal_plugins\recent_topics.php
    и возможно не во всех нужно делать проверку

    2. использовать show_img_upload
    она предназначена для скрытия картинок от непривилегированных групп, но можно скрыть и аттачи совсем
    тогда в render_attachments()
    вместо
    PHP:
    if ( $this->ipsclass->vars['show_img_upload'] and $row['attach_is_image'] )
    {
    // аттач с эскизами, показ эскизов
    }
    else
    {
    // аттач - файл, показ ссылки на скачивание
    }
    делаем
    PHP:
    if($this->ipsclass->vars['show_img_upload'])
    {
    if ( 
    $this->ipsclass->vars['show_img_upload'] and $row['attach_is_image'] )
    {
    // аттач с эскизами, показ эскизов
    }
    else
    {
    // аттач - файл, показ ссылки на скачивание
    }
    }
    else
    {
    //показываем фигу
    }
    можно еще чтонибудь придумать как более сложное так и более простое.
     
Статус темы:
Закрыта.