CMS TextPattern: почтовая подписка на комментарии

23.07.2010

Ну вот, наконец-то, впервые после переезда с blogspot.com в моём блоге снова можно подписаться на комментарии к любой заметке через email. Это всё же случилось.

Проблема была в том, что в TextPattern почему-то изначально не предусмотрено такой востребованной функции, а изобилие плагинов пополнялось всем чем угодно, но только не плагинами для email-подписки.

Только сравнительно недавно появились два плагина: phq_subscribe и glg_subscribe_comments. Но ничерта они не работали как надо. У первого вообще странная логика, второй же теоретически мог работать только на сервере автора, да и то некоторые функции он явно даже не протестировал.

Древний анекдот

Примерно так нужно обрабатывать плагины Попали к буржуям секретные чертежи советского истребителя. Те офигенно обрадовались, начинают собирать… а вместо самолета у них паровоз получается. Чешут репу, смотрят инструкцию — вроде все правильно. Разбирают паровоз и снова, по винтику, начинают собирать. Опять паровоз! Да что ж ты будешь делать?
Буржуи чуть не плача звонят в советское посольство и говорят:
— Все, не можем больше. Собираем ваш самолет, а вместо него паровоз, мать его, получается.
А наши им отвечают:
— Какие же вы тупые! Третий пункт инструкции читали? Там черным по белому написано: «ПОСЛЕ СБОРКИ ОБРАБОТАТЬ НАПИЛЬНИКОМ»!

Процесс и результат

В общем, мы, русские, напильник в руках держать умеем :) Я опубликовал проект на free-lance.ru и нашёлся Imenem, который за 15 буржуйских денег всё же научил плагин отправлять письма.

Ошибка найдена, решение тоже. Описание проблемы (можете использовать для консультаций пользователей с похожей проблемой, на ваше усмотрение):
Функция mail одним из своих параметров (необязательных) принимает параметры командной строки. На некоторых серверах с Linux политиками безопасности может быть запрещено передавать параметры командной строки исполняемым файлам, что приводит к отказу в отправке письма. Скорее всего, наличие данной проблемы вызвано желанием разработчика использовать максимум предоставляемых в PHP возможностей и отсутствием тестирования на shared-хостингах с параноидальными настройками безопасности (вплоть до safe mode). Для устранения проблемы необходимо найти в коде плагина текст mail($glg_email, $subject, $body, $headers, $params); и заменить его на mail($glg_email, $subject, $body, $headers); после чего сохранить плагин.

Ну а потом я сам ещё несколько часов пообрабатывал получившееся изделие и доточил его до вполне годного состояния:

Всё вышеперечисленное, как вы понимаете, просто не работало. Так что если вам нужен плагин подписки на комментарии для TextPattern, рекомендую пока скачать мою версию, но я надеюсь, что когда-то Gregory Le Garec внесёт все эти исправления в основную ветку для развития.

Комментарии

  1. # aktuba

    >Для устранения проблемы необходимо найти в коде плагина текст mail($glg_email, $subject, $body, $headers, $params); и заменить его на mail($glg_email, $subject, $body, $headers); после чего сохранить плагин.

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

  2. # Тормоз

    Нет, всё равно не понимаю, как именно в этом случае помог бы ООПный подход. Внутри класса ведь была бы примерно таже функция, разве нет?

  3. # gdever

    2Тормоз
    Эта функция была бы в недрах грамотно сделанного класса и все параметры, передаваемые в неё проходили бы достаточно жёстукю валидацию. Хотя на таких мелких задачах преимущества ООП практически незаметны.

  4. # Тормоз

    «Была бы»! Функция тоже «могла бы» грамотней быть написана, да «бы» мешает :) Всё же я думаю, что ООП далеко не гарантирует качества кода.

  5. # wlad2

    итак пасибо за плагин, вот еще бы кто настроил нормальный переезд с wordpress на textpattern без глюков..

  6. # Grégocentrique

    Thanks for your tweet, Brokenbrake.

    The google russian to french translation is a mess but I think I got the issue.

    I tested the plugin on my local machine and on my blog host, that’s all. I had a doubt about email function parameters.

    I will take a look at your file and compare to mine, and will edit my plugin as soon as possible.

    Thanks. :)

    PS : If you got a russian translation of the plugin I’m interested (see the forum thread forum.textpattern.co…)

  7. # Тормоз

    Thank you too! :) Russian version yet, but might find time to do it later.

  8. # J-zef

    А не подскажете, что делать, если плагин не хочет устанавливаться?
    У меня почему-то даже таблица не создаётся. Попробовал создать «ручками», запросом
    CREATE TABLE `glg_subscription` (glg_subscription_id BIGINT AUTO_INCREMENT PRIMARY KEY, glg_event INT, glg_email VARCHAR, glg_article_id INT)’
    но не сказать чтобы сработало.
    И в «настройках» не получается ничего выставить: при сохранении всё сбрасывается :(

  9. # Тормоз

    Странно. Видимо, почему-то не пишутся в базу изменения. Рекомендую попробовать в настройках TxP найти «диагностику» и посмотреть, чего она покажет.

  10. # J-zef

    Диагностика показала, что я неправильно таблицу назвал – нужно было с префиксом. Но проблема не решилась: изменить настройки плагина на его вкладке (Расширения -> Subscriptions) всё равно не получается.
    Если вручную внести в форму комментария тег чекбокса, то какая-то инфа в базу вносится; но уведомления на мыло не приходят.
    От чего это вообще может зависеть? :(

  11. # J-zef

    Кажется, проблема в том, что не создались поля в таблицах txp_prefs, txp_discuss (и, возможно, ещё каких-то).

  12. # Тормоз

    Ну вот значит надо выяснить, почему они не создались.

  13. # Лох: 

    я лох

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют