+0.53
Рейтинг
0.04
Сила

Karel

`/var/log/apache2/` и где-то там.
Я пытаюсь реанимировать один ролевой ресурс, попавший мне в руки после того, как предыдущий админ 5 лет забивал на него болт.

Ресурс ползает на Livestreet 1.0.3 и чинить его — боль и страдание.

Хоть сам пиши движок под задачу, тем более что в эпоху фреймворков он пишется на коленке за неделю-две. Но — дизайн. Я не дизайнер.

Ваша сборка выглядит работоспособной. Не знаю, что там внутри и какие есть плагины — но хочется хотя бы цену услышать.
цена вопроса?
Вообще из документации совершенно неочевидно, каким образом сделать очередность вызова методов на одном хуке.

Всего-то нужно после добавления топика в базу выполнить некое действие (записать что-то в лог).

Вешаем хук на module_topic_addtopic_after — и функция вызывается с переданным вот таким объектом:
array(2) {
  ["result"]=>
  &object(PluginNiceurl_ModuleTopic_EntityTopic)#333 (6) {
    ["aExtra":protected]=>
    NULL
    ["_aData":protected]=>
....

При этом плагин NiceUrl ЕЩЕ НЕ ОТРАБОТАЛ.

Возникает вопрос — каким образом сделать вызов хука ПОСЛЕ того как отработает тот же хук, перехваченный плашином niceurl.

Гугл? Нет, нет ответа.
Код плагина для 1.0.3 вызывает тягостное недоумение.

NiceUrl.class.php, строчка 72:
$oNiceurlTopic->setTitleLat($sTitle);

Но в коде движка НИГДЕ нет метода
setTitleLat


Логично ожидать ошибку в логах, но ошибки… нет. Все работает как ни в чем не бывало.
Оно прикольное, но это совершенно не социальная сеть. Это что-то похожее на фейсбучек.
Это я и поставил ;-) И вы же признали его ;-)

Здесь комментарий — как решение, в поисках которого приходят из ПС, а на гитхабе — как уведомление разработчикам ;-)
Совместим ли плагин с PHP 7+ и поддерживается ли он на данный момент?
Добавлю: это реализовано через одно место как в 1.0.3, так и в 2.0

P.S. И такими темпами перееедет в 3.0
Дело в том, что создатели библиотеки DbSimple зачем-то передают настройки подключения к базе как URL.

Я не знаю, какому идиоту пришло в голову, что в пароле НЕ может быть слэша, тем не менее реализовано это вот так:

github.com/livestreet/livestreet-framework/blob/f0d3f5ddf0266e408d86db15d2e7514cee9d4e99/libs/vendor/DbSimple/Generic.php#L133

public static function parseDSN($dsn)
    {
        if (is_array($dsn)) return $dsn;
        $parsed = parse_url($dsn);
        if (!$parsed) return null;


Ну и так далее.

Разумеется, если в пароле есть символ, который не встречается в стандартных URL-ах по RFC — он распарсится строго как попало, из функции вернется нулл, Connect на null будет null со всеми вытекающими.