Я не хочу делать ветку разработки, поскольку считаю что команда разработчиков WackoWiki does the excellent job и не стоит уходить далеко от их разработки.
Тем не менее, я постараюсь класть сюда дополнения, которые у меня появляются в процессе эксплуатации.
- RomanIvanov: А мы постараемся их включать в ваку, если Вы не против =)
- AN Разумеется. Я же пользуюсь результатами вашего труда.
Backup / Restore
Сделал пока Backup в виде отдельной страницы на PHP. Сливает всю базу страниц непосредственно в указанный каталог на сервере, пакуя в gz. Кластеры сливаются в виде подкаталогов.
- RomanIvanov: предвижу кучу проблем в виде safe mode. В котором exec и fwrite урезаны в возможностях напрочь. Имхо, стоило бы этот бекап отдавать через fpassthru браузеру запросившего бекап.
- AN Это я тоже сделал... Хотя файл все равно придется куда-то писать, например в TEMP. И пофайлово делать DL/UL – удобно ли ?
Нет проблем сделать заливку обратно, если только кто-то из знающих Wiki Internals скажет, какие заклинания надо сказать, чтобы имея текст страницы и ее название, залить это в базу.
<?php
// add page (revisions)
$body_r = $this->SavePage($tag, $body);
// now we render it internally so we can write the updated link table.
$this->ClearLinkTable();
$this->StartLinkTracking();
$dummy = $this->Format($body_r, "post_wacko"); //for R3.5 or older use post_links instead
$this->StopLinkTracking();
$this->WriteLinkTable();
$this->ClearLinkTable();
?>
Ну или я сам потихоньку разберусь. Плюс такого подхода: файлы просто постранично аплоадятся на сервер (напр. по ftp) и заливаются в базу. Права на заливку можно проверять стандартным способом или как-то еще.
YuriMakarov Возможно лучше было бы в XML (+gz если нужно) сливать. Разница не велика (только теги расставить), а универсальности сильно прибавится.
AlexanderNickolsky Мне в общем-то пофигу, куда сливать. Можно настройку сделать. Главное – потом залить, вот в чем проблема.
Cluster syntax removal
Что это и для чего – можно прочесть
здесь. Длинная дискуссия, закончившаяся ничем.
Небольшое дополнение убирает ! / и прочие символы кластерной адресации из отображаемого текста.
В файл
post_links.php или
post_wacko.php добавляем такой текст:
if($text == $url)
{
$text = preg_replace("/^(\/.+\/)+/","",$text);
$text = preg_replace("/^\!\//","",$text);
$text=preg_replace("/^\.\.\//","",$text);
$text=preg_replace("/^\//","",$text);
}
после заклинания
if ($url)
{
$url = str_replace(" ", "", $url);
$text=trim(preg_replace("/\xA4\xA4|__|\[\[|\(\(/","",$text));
(оно немного отличается в разных версиях, но найти его можно.)
В результате если ссылку поставить в скобки [[ или ((, то исчезает обозначение принадлежности страницы к кластеру. То есть вместо
!/ПодСтраница отображается
ПодСтраница,
[[/СинтаксисФорматирования/Кластеры/ПодСтраница]] отображается как
ПодСтраница
RomanIvanov: Теперь это делается гораздо проще. Шаблоны ссылок в вашем распоряжении.