Посібник:DeleteRevision.php

This page is a translated version of the page Manual:DeleteRevision.php and the translation is 100% complete.
Увага Увага: This script has been removed in MediaWiki 1.30 with commit phabricator:rMW918e4c394c424a287f32853b2967b0c8d4dfc97c.

Деталі

Файл deleteRevision.php — це скрипт технічного обслуговування для видалення однієї чи кількох ревізій шляхом переміщення їх до таблиці архіву. Через це редакція зникне з загальнодоступної версії вікі. Якщо це досягає очікуваного результату, скрипт deleteArchivedRevisions.php можна використовувати для повного видалення редакції з бази даних.

Щоб знайти ідентифікатор редакції, яку потрібно видалити, перегляньте URL-адресу кожної дати на сторінці історії. Це буде виглядати приблизно як http://yourwiki/index.php?title=Page_Title&oldid=1234. Ідентифікатором версії є oldid, 1234 у цьому прикладі. Цю редакцію можна видалити так:

php maintenance/deleteRevision.php 1234

Якщо ви хочете видалити кілька версій, розділіть їх пробілом:

php maintenance/deleteRevision.php 1234 5678

Видалення поточної сторінки перегляд

Цей скрипт також можна використовувати для видалення поточної версії сторінки. У цьому випадку скрипт подбає про оновлення запису сторінки, щоб знову вказати на правильну версію: він оновлює поле page_latest відповідної сторінки в таблиці сторінок. Він відсортує доступні версії за rev_timestamp і встановить page_latest на версію з найновішою міткою часу. Це гарантує збереження цілісності бази даних.

Кріплення rev_parent_id поле

Скрипт не оновлює поле rev_parent_id цієї версії, яка йде після видаленої. Таким чином, напр. різниці розмірів в історії сторінок будуть обчислюватися неправильно, оскільки MediaWiki все ще намагається обчислити їх на основі редакції, яку було видалено. Тому він отримує розмір 0 байт для цієї ревізії і, відповідно, неправильне значення для різниці розмірів.

Наразі це можна виправити лише вручну, оновивши вручну поле rev_parent_id версії, яке слідує за видаленим. У програмі відстеження помилок слід створити проблему, і цю проблему виправити належним чином.

Поки цю проблему не буде вирішено, можна використовувати такі запити, щоб виявити сторінки зі зламаним rev_parent_id:

SELECT * FROM revision where rev_parent_id != "0" and rev_parent_id NOT IN (
   SELECT DISTINCT (rev_id) FROM revision
) order by rev_page, rev_id;

Це відобразить список сторінок, які постраждали (rev_page) і проблемних версій (rev_id). Використовуйте значення з rev_page у такому запиті:

SET @seite = 4711;
# Displaying basic information about that page:
SELECT * FROM page where page_id = @seite;
# Selecting the revisions:
SELECT rev_page, rev_id, rev_parent_id, rev_user_text, rev_user_text FROM revision where rev_page=@seite order by rev_id;

Це відображає список ревізій для відповідної сторінки (тут для сторінки 4711), відсортований за rev_id. Прокрутіть униз до проблемної версії та зафіксуйте її значення rev_parent_id так, щоб воно вказувало на попередню ревізію (значення rev_id наступного старшого рядка в наборі результатів).

Батьківською версією першої версії сторінки завжди є версія 0.

Див. також

  • Extension:DeleteBatch — спеціальне розширення сторінки цього скрипту обслуговування.