Хак "Поиск и замена продвинуто". DataLife Engine

Категория: Web-программирование, Хаки (DLE) | 6 октября 2009 | Просмотров: 4455



Хак "Поиск и замена продвинуто". DataLife Engine

Суть: при замене контента файла можно будет в админке (модуль "Поиск и замена", DataLife Engine) заменять текст не для всех новостей, а только для конкретных категорий.
По сути изменения не очень то и глобальные, но в администрировани помагают
Отмечу, что работает с поддержкой мультикатегорий.

Инструкция:
в файле ./engine/inc/search.php найти:
        if (in_array("news", $_POST['table'])) {
                $db->query("UPDATE `" . PREFIX . "_post` SET `short_story`=REPLACE(`short_story`,'$find','$replace')
");
                $db->query("UPDATE `" . PREFIX . "_post` SET `full_story`=REPLACE(`full_story`,'$find','$replace')
");
                $db->query("UPDATE `" . PREFIX . "_post` SET `xfields`=REPLACE(`xfields`,'$find','$replace')"
);

        }

        if (in_array("comments", $_POST['table'])) {
                $db->query("UPDATE `" . PREFIX . "_comments` SET `text`=REPLACE(`text`,'$find','$replace')")
;
        }

        if (in_array("pm", $_POST['table'])) {
                $db->query("UPDATE `" . USERPREFIX . "_pm` SET `text`=REPLACE(`text`,'$find','$replace')")
;
        }

        if (in_array("static", $_POST['table'])) {
                $db->query("UPDATE `" . PREFIX . "_static` SET `template`=REPLACE(`template`,'$find','$replace')"
);

        }

        if (in_array("tags", $_POST['table'])) {
                $db->query("UPDATE `" . PREFIX . "_tags` SET `tag`=REPLACE(`tag`,'$find','$replace')");
                $db->query("UPDATE `" . PREFIX . "_post` SET `tags`=REPLACE(`tags`,'$find','$replace')")
;
         }

        clear_cache ();
        msg("info", $lang['find_done_h'], $lang['find_done'], "?mod=search");

}


и заменить на:
        foreach ( $_POST['table'] as $value ) {
        
                if ($value == "comments") {
                        $db->query("UPDATE `" . PREFIX . "_comments` SET `text`=REPLACE(`text`,'$find','$replace')")
;
                }
        
                elseif ($value == "pm") {
                        $db->query("UPDATE `" . USERPREFIX . "_pm` SET `text`=REPLACE(`text`,'$find','$replace')")
;
                }
        
                elseif ($value == "static") {
                        $db->query("UPDATE `" . PREFIX . "_static` SET `template`=REPLACE(`template`,'$find','$replace')"
);
                }
        
                elseif ($value == "tags") {
                        $db->query("UPDATE `" . PREFIX . "_tags` SET `tag`=REPLACE(`tag`,'$find','$replace')");
                        $db->query("UPDATE `" . PREFIX . "_post` SET `tags`=REPLACE(`tags`,'$find','$replace')")
;
                }

                else {
                        if ($config['allow_multi_category'])
                                $where_category = "category regexp '[[:<:]](" . $value . ")[[:>:]]'";
                        else
                                $where_category = "category = '{$value}'";
        
                        $db->query("UPDATE `" . PREFIX . "_post` SET `short_story`=REPLACE(`short_story`,'$find','$replace')
WHERE {$where_category};");
                        $db->query("UPDATE `" . PREFIX . "_post` SET `full_story`=REPLACE(`full_story`,'$find','$replace')
WHERE {$where_category};");
                        $db->query("UPDATE `" . PREFIX . "_post` SET `xfields`=REPLACE(`xfields`,'$find','$replace') WHERE {$where_category};");
                }
        }

        clear_cache ();
        msg("info", $lang['find_done_h'], $lang['find_done'], "?mod=search");

}


        $categoryes = array ();
        $db->query ( "SELECT id, name FROM " . PREFIX . "_category ORDER BY posi ASC" );
        while ( $row = $db->get_row () ) {
                $categoryes_option .= '<option value="'.$row['id'].'" selected>-- '.$row['name'].'</option>';
        }
        $db->free ();




найти:
<option value="news" selected>{$lang['find_rnews']}</option>



заменить на:
<optgroup label="{$lang['find_rnews']}">{$categoryes_option}</optgroup>



КСТАТИ, для удобства: в этом же файле найти:
<select name="table[]" style="height:72px;" multiple>


заменить на:
<select name="table[]" style="height:272px;" multiple>



Вот и все.
Актуально для DLE 6.5 - DLE 8.2

Скачать файлы уже измененные для всех вышеуказанных версий DataLife Engine (6.5, 6.7, 7.0, 7.2, 7.3, 7.5, 8.0, 8.2):
find_and_replace_new_www.fed.name.rar [15.31 Kb] (cкачиваний: 160)

Ключевые теги: dle, хак
 (голосов: 0)

Views Просмотров: 4455   Comms Комментарии (0)