Изменение идентификатора новости для DLE


Данная модификация позволит менять идентификаторы существующих новостей для DLE.
Тестировалось на версии DLE 10.1, но подойдет думаю к многим версиям.

Открыть engine/inc/addnews.php

Найти:

if( $member_id['user_group'] == 1 ) {

$author_info = "<input type=\"text\" name=\"new_author\" size=\"20\" class=\"edit bk\" style=\"vertical-align: middle;\" value=\"{$member_id['name']}\">";

} else {

$author_info = "";

}

Добавить ниже:

$author_info .= ", идентификатор: <input type=\"text\" name=\"news_id\" size=\"5\" class=\"edit bk\" style=\"vertical-align: middle;\" value=\"\">";

Найти:

$parse = new ParseFilter( Array (), Array (), 1, 1 );

Добавить ниже:

if(isset($_POST['news_id'])){
$news_id = intval( $_POST['news_id'] ); 
} else {
$news_id = 0;
}

Найти:

$db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('$thistime', '{$author}', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}')" );

$row = $db->insert_id();

Заменить на:

if( $news_id > 0 ) 
{
$row = $db->super_query( "SELECT id FROM " . PREFIX . "_post WHERE id = '{$news_id}'" );

if( $row['id'] > 0 ) {
msg( "error", "Ошибка", "Идентификатор новости уже занят! Введите другой.", "javascript:history.go(-1)" );
} else {

$db->query( "INSERT INTO " . PREFIX . "_post (id, date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('$news_id', '$thistime', '{$author}', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}')" );

$row = $news_id;

}

} else {

$db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('$thistime', '{$author}', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}')" );

$row = $db->insert_id(); 

}

Открыть engine/inc/editnews.php
Найти:

$categories_list = CategoryNewsSelection( $cat_list, 0 );
if( $config['allow_multi_category'] ) $category_multiple = "class=\"categoryselect\" multiple";
else $category_multiple = "class=\"categoryselect\"";

Добавить ниже:

$news_id_info = "<input type=\"text\" name=\"news_id\" size=\"5\" class=\"edit bk\" style=\"vertical-align: middle;\" value=\"{$row['id']}\">";

Найти:

<b>{$row['id']}</b>

Заменить на:

{$news_id_info}

Найти:

$id = intval( $_GET['id'] );

Добавить ниже:

if(isset($_POST['news_id'])){
$news_id = intval( $_POST['news_id'] ); 
} else {
$news_id = 0;
}
if( $news_id > 0 && $news_id != $id) 
{
$row = $db->super_query( "SELECT id FROM " . PREFIX . "_post WHERE id = '{$news_id}'" );
if( $row['id'] > 0 ) {
msg( "error", "Ошибка", "Идентификатор новости уже занят! Введите другой.", "javascript:history.go(-1)" );
}
}

Найти:

// Облако тегов
if( $_POST['tags'] != $item_db[2] or $approve != $item_db[3] ) {
$db->query( "DELETE FROM " . PREFIX . "_tags WHERE news_id = '$item_db[0]'" );

if( $_POST['tags'] != "" and $approve ) {

$tags = array ();

$_POST['tags'] = explode( ",", $_POST['tags'] );

foreach ( $_POST['tags'] as $value ) {

$tags[] = "('" . $item_db[0] . "', '" . trim( $value ) . "')";
}

$tags = implode( ", ", $tags );
$db->query( "INSERT INTO " . PREFIX . "_tags (news_id, tag) VALUES " . $tags );

}
}

Добавить ниже:

if( $news_id > 0 && $news_id != $id ) 
{
$db->query( "UPDATE " . PREFIX . "_post SET id='{$news_id}' WHERE id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_post_extras SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_images SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_files SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_comments SET post_id='{$news_id}' WHERE post_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_poll SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_poll_log SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_post_log SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_tags SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" );
$db->query( "UPDATE " . PREFIX . "_logs SET news_id='{$news_id}' WHERE news_id='$item_db[0]'" ); 
}

 

Вот собственно и все!

Информация по теме