Manual:deleteRevision.php
Файл MediaWiki: deleteRevision.php | |
---|---|
Розташування: | maintenance/ |
Вихідний код: | master • 1.41.1 • 1.40.3 • 1.39.7 |
Класи: | DeleteRevision |
Деталі
Файл 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 — спеціальне розширення сторінки цього скрипту обслуговування.