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

From mediawiki.org
This page is a translated version of the page Manual:DeleteRevision.php and the translation is 67% complete.
Outdated translations are marked like this.
Увага Увага: This script has been removed in MediaWiki 1.30 with commit phabricator:rMW918e4c394c424a287f32853b2967b0c8d4dfc97c.

Деталі

Файл deleteRevision.php — це скрипт технічного обслуговування для видалення однієї чи кількох ревізій шляхом переміщення їх до таблиці архіву. Через це редакція зникне з загальнодоступної версії вікі. Якщо це досягає очікуваного результату, скрипт $delarchive можна використовувати для повного видалення редакції з бази даних. This makes the revision disappear from the public version of the wiki. If this achieves the expected result, the deleteArchivedRevisions.php script can be used to completely remove the revision from the database.

Щоб знайти ідентифікатор редакції, яку потрібно видалити, перегляньте 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 на версію з найновішою міткою часу. Це гарантує збереження цілісності бази даних. In this case the script takes care to update the page record to point to the correct revision again: It updates the page_latest field of the according page in the page table. It will sort the available revisions by rev_timestamp and will set page_latest to the revision with the newest timestamp. This makes sure that database integrity is preserved.

Кріплення 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 — спеціальне розширення сторінки цього скрипту обслуговування.