Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Модуль "Поиск и замена" по отдельным категориям новостей, как адаптировать под dle16 ?

Модуль "Поиск и замена" по отдельным категориям новостей, как адаптировать под dle16 ?


     25.07.2024    Общие вопросы, Модули, Хаки    322

Ответа пока нет


4 комментария

javer
Юзер

javer - 26 июля 2024 01:08 -

Попробовал адаптировать код сам под dle 16. В "поиск замене" при выборе категории и при изменения текста, изменяет тест во всех новостях и категориях, а не в выбранной мною.

Код прилагаю, посмотрите пожалуйста, где тут ошибка.

<?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group 
-----------------------------------------------------
 http://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004-2023 SoftNews Media Group
=====================================================
 This code is protected by copyright
=====================================================
 File: search.php
-----------------------------------------------------
 Use: search and replace text in database
=====================================================
*/

if( !defined( 'DATALIFEENGINE' ) OR !defined( 'LOGGED_IN' ) ) {
	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../' );
	die( "Hacking attempt!" );
}

if($member_id['user_group'] != 1){ msg("error", $lang['addnews_denied'], $lang['db_denied']); }

if ($_POST['action'] == "replace") {

	if ($_REQUEST['user_hash'] == "" OR $_REQUEST['user_hash'] != $dle_login_hash) {

		  die("Hacking attempt! User not found");

	}

	$find = $db->safesql(addslashes(trim($_POST['find'])));
	$replace = $db->safesql(addslashes(trim($_POST['replace'])));

	$find_2 = $db->safesql(trim($_POST['find']));
	$replace_2 = $db->safesql(trim($_POST['replace']));
	
	$find_3 = $db->safesql( htmlspecialchars( strip_tags(trim($_POST['find'])), ENT_QUOTES, $config['charset'] ) );
	$replace_3 = $db->safesql( htmlspecialchars( strip_tags(trim($_POST['replace'])), ENT_QUOTES, $config['charset'] ) );
	
	if ($find == "" OR !count($_POST['table'])) {
		msg("error",$lang['addnews_error'],$lang['vote_alert'], "javascript:history.go(-1)");
	}

	


//именено "начало" 
	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 `descr`=REPLACE(`descr`,'$find_3','$replace_3')");
			$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')");
			$db->query("UPDATE `" . PREFIX . "_post` SET `full_story`=REPLACE(`full_story`,'$find','$replace')");
			$db->query("UPDATE `" . PREFIX . "_post` SET `xfields`=REPLACE(`xfields`,'$find','$replace')");
			$db->query("UPDATE `" . PREFIX . "_post` SET `title`=REPLACE(`title`,'$find','$replace')");

		}

	}
	clear_cache ();
	msg("success", $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'].'" >-- '.$row['name'].'</option>';
	}
	$db->free ();
	
	
	
//именено "конец" 	
	
	
echoheader( "<i class=\"fa fa-exchange position-left\"></i><span class=\"text-semibold\">{$lang['opt_sfind']}</span>", $lang['find_main']);

echo <<<HTML
<form action="" method="post" class="form-horizontal">
<input type="hidden" name="action" value="replace">
<input type="hidden" name="user_hash" value="{$dle_login_hash}">
<div class="panel panel-default">
  <div class="panel-heading">
    {$lang['find_main']}
  </div>

	<div class="panel-body">
		{$lang['find_info']}
	</div>
	<div class="panel-body">
	
		<div class="form-group">
		  <label class="control-label col-md-2 col-sm-3">{$lang['find_ftable']}</label>
		  <div class="col-md-10 col-sm-9">
			<select name="table[]" class="categoryselect" data-placeholder=" " title=" " multiple>
				<optgroup label="{$lang['find_rnews']}">{$categoryes_option}</optgroup>
				<option value="comments" selected>{$lang['find_rcomms']}</option>
				<option value="pm" selected>{$lang['find_rpm']}</option>
				<option value="static" selected>{$lang['find_rstatic']}</option>
				<option value="polls" selected>{$lang['find_rpolls']}</option>
				<option value="tags" selected>{$lang['find_rtags']}</option>
				<option value="banners" selected>{$lang['find_rbanners']}</option>
		</select>
		   </div>
	    </div>
		<div class="form-group">
		  <label class="control-label col-md-2 col-sm-3">{$lang['find_ftext']}</label>
		  <div class="col-md-10 col-sm-9">
			<textarea name="find" class="classic width-450" style="height:150px;"></textarea>
		   </div>
	    </div>
		<div class="form-group">
		  <label class="control-label col-md-2 col-sm-3">{$lang['find_rtext']}</label>
		  <div class="col-md-10 col-sm-9">
			<textarea name="replace" class="classic width-450" style="height:150px;"></textarea>
		   </div>
	    </div>
	
	</div>
	<div class="panel-footer">
		<button type="submit" class="btn bg-teal btn-sm btn-raised position-left"><i class="fa fa-exchange position-left"></i>{$lang['find_rstart']}</button>
	</div>
</div>
</form>
<script>
	$(function(){

		$('.categoryselect').chosen({no_results_text: '{$lang['addnews_cat_fault']}'});

	});
</script>
HTML;


echofooter();
?>

derebas
Юзер

derebas - 27 июля 2024 14:53 -

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 `descr`=REPLACE(`descr`,'$find_3','$replace_3')");
        $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");
        $db->query("UPDATE `" . PREFIX . "_post` SET `title`=REPLACE(`title`,'$find','$replace') WHERE $where_category");
    }
}

javer
Юзер

javer - 27 июля 2024 20:52 -

Выдает ошибку:

MySQL Error!
MySQL error in file: /engine/cache/system/plugins/b7dd164f835fa9fcf0c1ee1f095eede5.php at line 65
Error Number: 3685
The Error returned was:
Illegal argument to a regular expression.
SQL query:

UPDATE `dle_post` SET `short_story`=REPLACE(`short_story`,'и прогноз его развития на','в Казахстане, а также прогноз его развития на') WHERE category REGEXP '[[:<:]](99)[[:>:]]'

javer
Юзер

javer - 27 июля 2024 21:03 -

Вот, вроде должно теперь работать, подправил в коде запрос.

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 `descr`=REPLACE(`descr`,'$find_3','$replace_3')");
        $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 '([[:punct:]]|^)(" . $value . ")([[:punct:]]|$)'";
        } 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");
        $db->query("UPDATE `" . PREFIX . "_post` SET `title`=REPLACE(`title`,'$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'].'" >-- '.$row['name'].'</option>';

	}

	$db->free ();

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх