Разрабатывая систему документации хотелось бы, чтобы была возможность редактирования документации через блогклиент, так как в нем удобно редактировать и проверять ошибки в тексте (собственно поэтому мои посты легче читать, чем мои комментарии). Но как всегда но: посты, тикеты и документы имеют разный тип (класс), а по умолчанию создаются экземпляры класса tpost, когда как для тикетов и доки требуется tticket и tcodedoc. Как быть? В таблице постов не хранятся имена классов, а имена классов хранятся в таблице урлов, где сопоставляется урл имени класса. При обращении через xmlrpc будут дергаться только посты. Как быть? Одно из решений - соклассы. Проблема сокалсса в том, что сокласс встраивается абсолютно во все посты, когда как в одном пространстве мы имеем посты, тикеты и доку. Блогклиенты понимают и имеют дело только со свойствами поста и соответственно не имеют никаких средств управления другими свойствами. Как же разрулить эту ситуацию? Правильный путь говорит о том, что необходимо перед созданием поста сопоставить его id - имени класса. Как это сделать? Для бд это означает + 1 запрос к бд, а для файлов необходимо тоже где то хранить эту инфу. Для подавляющего числа сайтов, не использующих ни тикет систему, ни доку это будет и только тратой ресурсов. Как же этого избежать? Логично добавить куда нибудь событие создания поста и потом вешать на это событие свои обработчики. Тоже вариант.

Как же быть с текстом поста и его редактирование в блогклиенте? Я пока что придумал следующее: отдавать сырой контент в виде псевдо ini файла, ну то есть простынка имя = "значение". Ну и потом обратно парсить отредактированный текст в свойства поста. Для обыкновенных постов такого не делать. Этим должен будет заниматься отдельный спецплагин -- проходить по списку существующих свойств поста и при его наличии устанавливать значение. В блоголёте есть прототип этого класса - tposttransform, который преобразует данные между бд и свойствами поста.

Поскольку тикет система и дока я ограничил бд версией, то не будет никаких проблем для подобного плагина сделать alter table таблицы постов, чтобы добавить туда имя класса поста, либо завести отдельную спецтаблицу. Оптимальным вариантом было бы alter table, но тогда придется придумывать некий алгоритм, когда данные из бд запрошены, а пост еще не создан. Сейчас движок работает следующим образом (одинаково для бд и файлов): создается пост (тикет, дока) и потом объект запрашивает данные из бд (восстанавливает из файла). Ну и нет веских причин менять такой удобный алгоритм. Следовательно придется делать спецтаблицу имен классов, точнее даже так - таблица пар id поста, id имени класса. Имен классов раз два и обчелся, а постов сотни. Для таких пар уже существует класс titemsposts, который уже используется в метках/рубриках, файлах, подписчики, голосовалка, и так далее. Для имен классов постов таблица будет даже вредной - достаточно их хранит в опциях, например в опциях базового класс tposts. На самом деле имена классов обязан и будет хранить класс прокладка между id постов и именами классов. Поскольку такой класс сложно оформить в плагин в виду отсутствия в нем очевидной функциональности, то его надо будет добавить в ядро, а потом уже тикеты и доки будут сами цепляться к этому классу.

Таким образом совместное существование тикетов и документации сводится к добавлению класса прокладки и плагина конвертатора свойств в ini формат.