Перейти к публикации

Поиск и замена (провдинуто)  

7 пользователей проголосовало

  1. 1. Пригодился на практике мой хак???

    • Да
      3
    • Нет
      4


"Поиск и замена" по отдельным категориям новостей (модуль в админке)


Рекомендованные сообщения

Делал для одного человека на заказ (платно, но выкладываю здесь для общего доступа)

Суть: при замене контента файла можно будет в админке в модуле "Поиск и замена" заменять текст не для всех новостей, а только для конкретных новостей.

По сути изменения не очень то и глобальные, но в администрировани помагают :)

Отмечу, что работает с поддержкой мультикатегорий.

Как сделать вышеописаное? - открыть файл ./engine/inc/search.php и заменить весь контент с него на следующий:

<?php

/*

=====================================================

 DataLife Engine - by SoftNews Media Group 

-----------------------------------------------------

 http://dle-news.ru/

-----------------------------------------------------

 Copyright (c) 2004,2009 SoftNews Media Group

=====================================================

 Данный код защищен авторскими правами

=====================================================

 Файл: search.php

-----------------------------------------------------

 Назначение: поиск и замена текста в базе данных

=====================================================

*/

if(!defined('DATALIFEENGINE'))

{

  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");


	}


	if( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) {


		$_POST['find'] = stripslashes( $_POST['find'] );

		$_POST['replace'] = stripslashes( $_POST['replace'] );


	} 


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

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


	if ($find == "" OR !count($_POST['table'])) msg("error",$lang['addnews_error'],$lang['vote_alert'], "java script: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 `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 ();



echoheader("", "");


echo <<<HTML

<form action="" method="post">

<div style="padding-top:5px;padding-bottom:2px;">

<table width="100%">

	<tr>

		<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>

		<td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>

		<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>

	</tr>

	<tr>

		<td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>

		<td style="padding:5px;" bgcolor="#FFFFFF">

<table width="100%">

	<tr>

		<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$lang['find_main']}</div></td>

	</tr>

</table>

<div class="unterline"></div>

<table width="100%">

	<tr>

		<td style="padding:2px;" colspan="2">{$lang['find_info']}</td>

	</tr>

	<tr>

		<td style="padding:2px;" colspan="2">&nbsp;</td>

	</tr>

	<tr>

		<td style="padding:2px;" width="150" valign="top">{$lang['find_ftable']}</td>

		<td style="padding:2px;" width="100%"><select name="table[]" style="height:272px;" 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="tags" selected>{$lang['find_rtags']}</option>

		</select></td>

	</tr>

	<tr>

		<td style="padding:2px;" width="150" valign="top" nowrap>{$lang['find_ftext']}</td>

		<td style="padding:2px;" width="100%"><textarea class="edit" name="find" style="width:350px;height:100px;"></textarea></td>

	</tr>

	<tr>

		<td style="padding:2px;" valign="top">{$lang['find_rtext']}</td>

		<td style="padding:2px;"><textarea class="edit" name="replace" style="width:350px;height:100px;"></textarea></td>

	</tr>

	<tr>

		<td style="padding:2px;" colspan="2">&nbsp;</td>

	</tr>

	<tr>

		<td style="padding:2px;" colspan="2"><input type="submit" class="buttons" value="{$lang['find_rstart']}"><input type="hidden" name="action" value="replace"><input type="hidden" name="user_hash" value="{$dle_login_hash}"></td>

	</tr>

</table>

</td>

		<td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>

	</tr>

	<tr>

		<td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>

		<td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>

		<td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>

	</tr>

</table>

</div></form>

HTML;



echofooter();

?>

если есть вопросы - задавайте, только в теме!

Ссылка на сообщение
Поделиться на других сайтах

Я наверно тебя разачарую но за такой хак я бы пнул разработчика как следует, вернее даже не за хак а за мануал, мануал вида "заменить все на это" это не мануал, он просто не пригоден в случае обновления движка на новую версию, короче говоря, простите но мануал гавно, даже тестить нет смысла.

Изменено пользователем spam
Ссылка на сообщение
Поделиться на других сайтах

Я наверно тебя разачарую но за такой хак я бы пнул разработчика как следует, вернее даже не за хак а за мануал, мануал вида "заменить все на это" это не мануал, он просто не пригоден в случае обновления движка на новую версию, короче говоря, простите но мануал гавно, даже тестить нет смысла.

SPAM, нада нормальный мануал? - пожалуйста:

для версии ДЛЕ 7.5 - 8.0:

в файле ./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 7.5, DLE 8.0

(кому нада для 6.5-7.3 или еще ранее версий - пишите в приват) (бесплатно!)

Изменено пользователем fed.work
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...