MediaWiki

## Настройки

* Требования к версиям: https://www.mediawiki.org/wiki/Compatibility/ru
* Изменение главной страницы: сайт/MediaWiki:Mainpage;
* имеются в \includes\DefaultSettings.php, но там их исправлять не нужно, т.к. будут сбиваться после каждого обновления;
* лучше необходимые настройки выносить менять не в \includes\DefaultSettings.php, а выносить в LocalSettings.php;
* подключение иконки страниц:

```
$wgFavicon = "$wgResourceBasePath/favicon.ico";

```

* где искать по умолчанию, массив указывается в $wgNamespacesToBeSearchedDefault = array(..., NS\_CATEGORY => true);

## Хостинг

Использование MediaWiki на бесплатном **хостинге** может вызывать превышение лимитов использования ЦПУ, за которое многие хостинги блокируют профиль.

## Оптимизация

Если очистить историю правок, то база уменьшится, а это не так уж и плохо.

Для очистки истории правок есть специальные расширения, например deleteOldRevisions.

## Перенос

* адрес сайта:
	+ в базе менять не нужно, его там нет, это позволяет легко переносить контент путём загрузки базы с локального хостинга и других сайтов;
	+ в LocalSettings.php прописать адрес сайта в строке: $wgServer = "http://......";
* после переноса:
	+ проверить работу расширений, они могут перестать работать из-за различий на хостинге, например версии php;
		- проверять расширения, например: CategoryTree, MobileFrontend;
		- если какие-то расширения не работают, попробовать:
			* сменить версию php;
			* сменить версии расширения;
	+ восстановить работу **коротких ссылок**.

## Расширения

* **CategoryTree** - в списке категорий отображает возле каждой количество входящих в неё категорий и страниц;
	+ старая версия подключается так:

```
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");

```

* **deleteOldRevisions** - удаляет историю правок, уменьшая базу.
	+ Чтобы очистить историю правок, нужно положить файл deleteOldRevisions.php в папку \maintenance\ сайта, а в командной строке выполнить:

```
d:\OSPanel\modules\php\PHP-5.6\php.exe d:\OSPanel\domains\idei.my\maintenance\deleteOldRevisions.php --delete

```

* **WikiEditor** - добавляет панель с кнопками форматирования текста: шрифт, ссылки, переход на новую строку.

## Ссылки

* Ссылки из адресной строки с кириллическими буквами корректно копируются браузерами Opera и Яндекс, а другие браузеры (Chrome и Firefox) копируют их в закодированном виде.
* Но ссылки на раздел статьи любым браузером копируются в закодированном виде.
* Ссылки на википедию: [[Wikipedia:ru:ХХХХ]]
	+ А чтобы ссылки на русскоязычный раздел Википедии отображалась правильно (не en.wikipedia.org, а wikipedia.org), нужно в базе mediawiki в таблице interwiki удалить строку wikipedia и вместо неё импортировать такую:

```
INSERT INTO interwiki (iw_prefix, iw_url, iw_local, iw_trans) VALUES ('w', 'https://ru.wikipedia.org/wiki/$1', 1, 0);

```

тогда возможно указать ссылку так: [[w:ХХХХ]].

### Короткие ссылки

Чтобы адрес страницы выглядел не как "http://idei.my/index.php/Хостинг", а как "http://idei.my/Хостинг", нужно выполнить:

* LocalSettings.php

```
$wgScriptPath = ""; (здесь в кавычках ставится путь к папке с файлами wiki, например "/w", "/wiki", "")
$wgScriptExtension = ".php";
$wgArticlePath = "/$1";
$wgUsePathInfo = true;

```

* файл .htaccess не переносить на новый хостинг *(там могут быть строки, которые запрещено редактировать)*, добавлять строки:

```
RewriteBase /
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]

```

Если файлы находятся в папке w или wiki, то .htaccess будет выглядеть иначе.

## Правка статей

### Перенаправления

#REDIRECT [[Новая статья]]

## Проблемы

### Ошибки

Ошибки могут возникать после установки, переноса, обновления. Может попробовать:

* сменить версию PHP;
* см. **Проблемы с сайтом**.

### Ошибка cookies, хотя они включены

Проблема не в базе, а в файлах, можно их перезалить.
Больше **здесь**.

### Новые версии

При установке MediaWiki, начиная с версии 1.27.3, есть проблема с категориями:

* при импорте статей их категории пустые (на заполняется таблица связей категорий и статей);
* при ручном добавлении статей они попадают в категории через раз.

Проверял следующие версии:

* версия "если всего один пользователь" - *отпала*;
* проблема даже, если статьи сделаны админом;
* версия "может из-за того, что при экспорте убрана" пустая строка - **отпала**;
* версия php (как раз эти версии mediawiki созданы для более высокой версии php): PHP 5.5.38 MySQL 5.6.37) - та же проблема;
* PHP 5.6, MySQL 5.7 - та же проблема.

## Порядок обновления версии

* Качаем движок, распаковываем.
* Предупреждаем людей.
* Делаем копии движка и базы, скачиваем их.
* Заливаем index.php с текстом "Сайт временно отключен, ведутся технические работы, время окончания работ предположительно….".
* Заливаем поверх старого новый движок.
* Смотрим по инструкции какой файл запустить для обновления базы, запускаем его.
* Если обновление незначительное, то база может и не обновляться, только движок.
* Восстанавливаем счётчики посещений в файле \skins\Monobook и Vector.
* Восстановить стиль по умолчанию в \includes\DefaultSettings.php в строке $wgDefaultSkin = 'monobook';
* Возвращаем ссылку на основной сайт с картинки, в файле \skins/MonoBook\MonoBookTemplate.php (или MonoBook.php) ищем:

```
'href' => $this->data['nav_urls']['mainpage']['href'],

```

и меняем на

```
'href' => "http://xxxx.ru/", а в файле VectorTemplate.php (или Vector.php)

```

находим:

```
href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>"

```

(или часть этого текста), меняем на href="http://.....ru/"

* Текст писем при регистрации пользователей можно подправить на странице: http://www.wiki.xxxx.ru/index.php?title=MediaWiki:Createaccount-text

Все подобные мелкие настроечки, доступные для редактирования можно посмотреть в таблице l10n\_cache, если сохранить её в кодировке Windows-1251. Всё что там стоит во втором столбце после текста «messages:» нужно подставить в адрес после этого места: «http://www.wiki.xxxx.ru/index.php?title=MediaWiki:». (Например текст письма при сбросе пароля: MediaWiki:Passwordreset-emailtext-user).

* Чтобы после каждого обновления не исправлять настройки в DefaultSettings.php, нужно все их перенести из DefaultSettings.php в LocalSettings.php.

И сначала настроить LocalSettings.php и (если уж пришлось) DefaultSettings.php, а потом вместе с этими файлами выкладывать новую версию движка.

Но. Если хоть один параметр $wgGroupPermissions перенести в LocalSettings.php, то в DefaultSettings.php больше ни один параметр читаться не будет, т.е. переносить нужно весь массив $wgGroupPermissions.

Но. Если позакрывать всё незарегистрированным пользователям, то многое пропадёт и у админов и у зарегистрированных пользователей. Поэтому, всё что закрыли всем нужно потом открыть зарегистрированным пользователям, оно тогда откроется и админам тоже.

Для того, чтобы пользователь, который пытается войти под своим паролем, но не помнит его, мог сбросить пароль, нельзя закрывать всем пользователям в

```
$wgGroupPermissions ['*']['editmyprivateinfo'], ну тогда и ['*']['viewmyprivateinfo'] можно оставить.

```

* Для установки версии MediaWiki 1.27.0 нужен PHP 5.5.9.