Изменение идентификатора новости для 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]'" ); }
Вот собственно и все!
Информация по теме