Отслеживайте любые изменения статей (Mediawiki 1.23)

Я новичок в Mediawiki.

У меня есть записи в базе данных, связанные с некоторыми элементами содержимого статей. Данные в базе данных полностью зависят от содержания статей и должны обновляться при изменении соответствующих элементов. Немного MediaWiki крючки предоставить часть требуемой функциональности, но я не уверен, что это правильное решение, потому что я должен использовать несколько разных хуков для одной и той же задачи, и она выглядит слишком сложной в такой тривиальной ситуации, как эта.

Как я могу сделать это наиболее подходящим способом?

Я использую page_id для ссылки на статьи внутри базы данных. Это правильно в этом случае?

Какие перехватчики MediaWiki я должен использовать для всех ситуаций, когда необходимо обновить базу данных? В настоящее время я хочу использовать это:

  • ArticleInsertComplete
  • ArticleDeleteComplete
  • ArticleRevisionUndeleted
  • PageContentSaveComplete
  • ArticleRollbackComplete
  • ArticleMergeComplete

Или как я могу поймать недавние изменения?

1

Решение

Вы правы, нет ни одного хука для запуска вашего кода для каких-либо изменений, которые могут произойти со страницей. Это по двум связанным причинам:

  1. Есть бесчисленное множество путей, которые могут изменить страницу: не все из них находятся в ядре, некоторые предоставляются расширениями; изменения могут исходить с другой страницы (например, шаблона); или даже другую вики (например, файловый репозиторий или даже шаблон, который вы страшно транслируете);
  2. не стоит разбираться со всеми случаями одинаково, потому что некоторые обновления можно безопасно игнорировать, другие могут убить вашу вики, если они сделаны массово, и их следует отложить в очереди заданий, другие должны быть запущены немедленно.

Итак, да, вы должны выяснить все хуки (ваш список уже хороший, для ядра; его нужно пересматривать с каждым установленным расширением). Если вид обновления, который вам нужен, всегда один и тот же, вы можете просто прикреплять та же функция для всех хуков, поэтому дублирование минимально.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]