Удаление дублей в новостях DLE

G-and-Y
На сайте с 29.06.2013
Offline
185
1110

Нашел на просторах интернета

Как удалить повторяющиеся новости в DLE?
Этот вопрос может интересовать многих. Рассмотрим его более подробно...

Очевидно, что дубли нужно искать по заголовку или по латинскому названию (которое используется для ЧПУ в DLE)
В некоторых случаях это может оказаться довольно непростой задачей, если, скажем у нас порядка 1000 повторяющихся статей - согласитесь, искать их в базе и удалять вручную не совсем удобно, тем более в самой админке движка...

Для того, чтобы это сделать, мы и написали простой скрипт, который последовательным запуском из браузера (запуск автоматизирован, с помощью JavaScript) медленно, но верно удаляет дубли ...


PHP сценарий следует закачать в корень сайта, где расположен движок DataLife Engine и запустить из браузера. По окончанию удаления дублей скрипт выдаст магическую фразу "COMPLETE !"

Что скажите юзать? нету там ничего вредоносного или неправильного?

Такой скрипт

<?PHP
// COPYRIGHT FDSTAR.NET
@error_reporting(E_ALL ^ E_NOTICE);
@ini_set('display_errors', true);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL ^ E_NOTICE);

define('DATALIFEENGINE', true);

$member_id = FALSE;
$is_logged = FALSE;
$content = '';

define('ROOT_DIR', dirname (__FILE__));
define('ENGINE_DIR', ROOT_DIR.'/engine');
define('DROP_IMAGES', false);


@include (ENGINE_DIR.'/data/config.php');
if (!$config['version_id']) die("Datalife Engine not installed. Please run install.php");
require_once ENGINE_DIR.'/classes/mysql.php';
require_once ENGINE_DIR.'/data/dbconfig.php';

$sql = "SELECT *,count(*) as `post_counter`
FROM `". PREFIX. "_post`
GROUP BY `alt_name`
ORDER BY `post_counter` DESC";
$res = $db->query($sql);
$row = $db->get_row($res);

if($row && count($row))
{
if($row['post_counter']<=1)
{
die('COMPLETE !');
}
if(DROP_IMAGES)
{
$sql= "SELECT *
FROM `". PREFIX. "_images`
WHERE `news_id`='{$row['id']}' ";

$res2 = $db->query($sql);
while($row2 = $db->get_row($res2))
{
$images_array = split("\|\|\|", $row2['images']);
foreach($images_array as $image)
{
if($image = trim($image))
{
$image = ltrim($image, '/');
if(preg_match('#([0-9]{4}\-[0-9]{2}/)(.*)$#', $image, $match))
{
$img_date_dir = $match[1];
$img_name = basename($match[2]);

$img_thumb_address = ROOT_DIR. '/uploads/posts/'. $img_date_dir. 'thumbs/'. $img_name;
$img_address = ROOT_DIR. '/uploads/posts/'. $img_date_dir. $img_name;

@$img_thumb_address_delete = (int)unlink($img_thumb_address);
@$img_address_delete = (int)unlink($img_address);

$content.= "{$img_address} {$img_address_delete} <br /> {$img_thumb_address} {$img_thumb_address_delete}<hr />";
}
else
{
$content.= '<br />NO IMAGES FOUND<br />';
}
}
}
$sql = "DELETE FROM `". PREFIX. "_images` WHERE `id`='{$row2['id']}'";
$db->query($sql);
$content.= $sql. "<hr />";
}

}

$sql= "DELETE FROM `". PREFIX. "_post` WHERE `id`='{$row['id']}' ";
$db->query($sql);
$content.= $sql. "<hr />";
}


echo <<<HTML

<html>
<head>

<script language="JavaScript" DEFER><!--
function reload_page()
{
document.location.reload();
}
--></script>

</head>
<body onload="reload_page();">
{$content}
</body>
</html>

HTML;

?>
Абузо-устойчивые впс ( http://vps-hosting.lv/?p=13408 )
ProLiant
На сайте с 07.12.2005
Offline
249
#1

А чем не подходят методы Алаева по борьбе с дублями в ДЛЕ?

Выбирай оптимальный хостинг (http://cp.inferno.name/aff.php?aff=2053) для стабильного заработка на файловом трафе (https://espays.com/s.php?f=38). ;)
G-and-Y
На сайте с 29.06.2013
Offline
185
#2

Новости парсяться, и попадаются одинаковые, то есть дубли, так вот этот скрипт удалит?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий