Хак [RC] [0.9] [DLE 10.2] "Список сторонних модулей"

Тема в разделе "DLE", создана пользователем Горбушка, 20 май 2014.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.209
    Симпатии:
    2.237
    Название: "Список сторонних модулей"
    Тип: Хак
    Версия: [RC] 0.9 *
    Описание: Хак добавляет в навигацию в новой панели управления от версии 10.2 список сторонних модулей
    Автор: Горбушка

    Совместимость: 10.2

    Если Вы уже ставили версию 10.2, то могли заметить досадный косяк. В левой удобной навигации нет списка сторонних модулей.
    Данный хак исправляет несправедливость. Хак учитывает права доступа к модулям и показывает только нужные для группы пользователей. Если нет доступных модулей - раздел полностью скрывается, как в 10.1.

    Стоит заметить, что если разработчик ДЛЕ будет вводить аналогичный функционал в 10.3+, то, скорее всего, будет изменён алгоритм работы прав доступа к модулям. Либо к сторонним, либо к штатным. Свой вариант считаю более элегантным решением, не требующим глобальных изменений ни от DLE, ни от разработчиков, к тому же, от работы explode и substr нагрузка просто не значительна.

    В планах добавить кэширование, чтобы убрать SQL-запрос. Так же вскоре модуль получит автоматический установщик.

    1.JPG 2.JPG 3.PNG

    В работе DLE и модулей ничего не меняется. Установка стандартная через добавление записи в таблицу MySQL dle_admin_sections

    Открываем \engine\inc\include\functions.inc.php, находим:
    PHP:
    function echoheader($header_title$header_subtitle) {
    global 
    $PHP_SELF$skin_header$skin_footer$member_id$user_group$js_array$config$lang$is_loged_in$mod$action$langdate;
    Заменяем на:
    PHP:
    function echoheader($header_title$header_subtitle) {
    global 
    $db$PHP_SELF$skin_header$skin_footer$member_id$user_group$js_array$config$lang$is_loged_in$mod$action$langdate;
    Открываем \engine\skins\default.skin.php, находим:
    PHP:
    foreach ( $options as $sub_options => $value ) {
    Добавляем ВЫШЕ:
    PHP:
        $db->query"SELECT * FROM " PREFIX "_admin_sections" );
        
        while ( 
    $row $db->get_array() ) {
            
            
    $options['mods'][] = array (
            
                
    'name' => $row['title'], 
                
    'url' => "$PHP_SELF?mod=" $row['name'], 
                
    'mod' => $row['name'],
                
    'access' => "mod,".$row['allow_groups']  
            
            );
        
        }
    Находим:
    PHP:
    if ($member_id['user_group'] != AND  $value[$i]['access'] == "admin") unset( $options[$sub_options][$i] );
    Вставляем НИЖЕ:
    PHP:
                if ( substr($value[$i]['access'], 03) == "mod") {
                    
                    
    $groups explode(","$value[$i]['access']);
                    if ( 
    in_array($member_id['user_group'], $groups) AND $member_id['user_group'] !=) continue;
                    else unset( 
    $options[$sub_options][$i] );
                    
                }
    Находим:
    PHP:
    if( $subs == ) { $menu_item_header $lang['opt_s_oth']; $icon"link";}
    Вставляем НИЖЕ:
    PHP:
    if( $subs == ) { $menu_item_header $lang['admin_other_section']; $icon"sitemap";}
    Сохраняем все изменения, чистим кэш в панели администратора кнопкой на главной странице.

    Установка закончена.


    Прошу высказывать свои предложения по развитию идеи.

    * [RC] означает, что данная версия является практически финальной. Тем не менее, в ней могут быть уязвимости и недоработки..
     
    Последнее редактирование: 21 май 2014
  2. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Стоит ли начинать? Может это будет исправлено в будущих версиях?
     
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.209
    Симпатии:
    2.237
    Ну значит стырят очередной мой код... Не велика потеря. Зато будет очередной втык, что вместо диалога тырит идеи...
     
  4. Ali_MiX

    Ali_MiX Создатель

    Регистр.:
    8 авг 2012
    Сообщения:
    21
    Симпатии:
    3
    а если сделать более глобальный мод, то бисть админ панель как в 10.2 для 10.х + строка сторонние модули
     
  5. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.209
    Симпатии:
    2.237
    Тогда уж ровно наоборот. Админка 10.х хорошо работала на мобилах, 10.2 - нет. В 10.х были известные баги и ограничения, но они не мешали работать и больше касались девелоперов, в 10.2 - ровно наоборот.

    Поэтому смысла от натягивания 10.2 на 10.х нулевой.

    P.s. выложил хак
     
    Последнее редактирование: 21 май 2014
Статус темы:
Закрыта.