Analitycs

Показаны сообщения с ярлыком phpbb. Показать все сообщения
Показаны сообщения с ярлыком phpbb. Показать все сообщения

вторник, 17 января 2012 г.

Email от PHPBB падает в spam

Диагноз и причина

Оповещения от русской версии PHPBB падают в спам.

X-Amavis-Alert: BAD HEADER SECTION, Non-encoded 8-bit data (char D3 hex): 
   Subject: 323342345344356354353345355350345 356341 
   356[...] 
X-Spam-Flag: NO 
X-Spam-Score: 4.301 
X-Spam-Level: **** 
X-Spam-Status: No, score=4.301 tagged_above=-10 required=5 
   tests=[BAYES_50=0.8, RCVD_IN_DNSWL_NONE=-0.0001, 
   SUBJECT_NEEDS_ENCODING=0.049, SUBJ_ILLEGAL_CHARS=1.518, 
   TO_NO_BRKTS_MSFT=1.934] autolearn=no

subject уходит с сервера в iso-8859-1/quoted. В этой кодировке русских букв нет.

Subject: 
   =?iso-8859-1?Q?=D3=E2=E5=E4=EE=EC=EB=E5=ED=E8=E5_=EE=E1_=EE=F2=E2?= 
   =?iso-8859-1?Q?=E5=F2=E5_=E2_=F2=E5=EC=E5_-_=D7=F2=EE_=ED=E5_=ED=F0=E0=E2?= 
   =?iso-8859-1?Q?=E8=F2=F1=FF_=ED=E0_=F1=E0=E9=F2=E5?=

Хотя тело сообщения - нормально в Windows-1251

MIME-Version: 1.0
Content-type: text/plain; charset=windows-1251 
Content-transfer-encoding: 8bit 

Лечение


Нужно изменить кодировку Subject на необходимую с русскими буквами(win1251, utf8, koi8r).

файл

PHPBB_DIR/include/emailer.php

после строчки

$this->subject = (($this->subject != '') ? $this->subject : 'No Subject');

Добавляется

$this->subject = '=?'.trim($lang['ENCODING']).'?B?'.base64_encode($this->subject).'?=';

И после - вуаля

X-Spam-Flag: NO 
X-Spam-Score: 0.034 
X-Spam-Level: 
X-Spam-Status: No, score=0.034 tagged_above=-10 required=4 
   tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, 
   TO_NO_BRKTS_MSFT=1.934] autolearn=no

По материалам этой темы, спасибо коллеге BW4ever за баг-репорт

понедельник, 9 января 2012 г.

Как подключить Яндекс-Спеллер (Yandex-Speller) к PHPBB?

Есть у Яндекс одна хорошая штука, до которой у меня долго не доходили руки...  а именно - проверка орфографии в формочках ввода - Яндекс-Спеллер. Оказалось, что зря откладывал - не так сложно.

Как подключить к форуму PHPBB2 (как модуль на RunCMS)? По идее - в чистом PHPBB2/3 не должно сильно отличаться, разве что файлы  будут другие, скорей всего...

1) Разместить на сайте папку с самим спеллером в /class/xoopsform/yandex_speller/ Затем

2) файл include/viewtopic_quickreply.php
 
$addon_html = '
<script type="text/javascript" src="'.XOOPS_URL.'/class/xoopsform/yandex_speller/spell.js"></script>

// YandexSpeller 

var speller = 

new Speller({ url:"/class/xoopsform/yandex_speller", lang:"ru", options:Speller.IGNORE_URLS });
// Настройка параметров проверки http://api.yandex.ru/speller/doc/dg/reference/speller-js.xml  

<button name="cmdSpell_message" onclick="speller.check([document.getElementById(\'message\')])" type="button">'._CORE_CHECK_ORPHO.'</button>
';

$template->assign_vars(array(
  'U_POST_SQR_TOPIC' => 'javascript:sqr_show_hide();',
  'SQR_IMG' => $images['quickreply'],
  'L_POST_SQR_TOPIC' => $lang['Show_hide_quick_reply_form'],

  'L_EMPTY_MESSAGE' => $lang['Empty_message'],
  'L_QUICK_REPLY' => $lang['Quick_Reply'],
  'L_USERNAME' => $lang['Username'],
  'L_NO_TEXT_SELECTED' => $lang['Qreply_no_text_selected'],
  'L_SUBJECT' => $lang['Subject'],
  'L_MESSAGE_BODY' => $lang['Message_body'],
  'L_PREVIEW' => $lang['Preview'],
  'L_SUBMIT' => $lang['Submit'],
  'S_POST_ACTION' => append_sid("posting.php"),
  'S_HIDDEN_FORM_FIELDS' => $hidden_form_fields,
  'ADDON_HTML' => $addon_html,
  )
);

где _CORE_CHECK_ORPHO - наш новый языковой дефайн, 'ADDON_HTML' => $addon_html, - добавленная строчка в код и шаблон.

3) правим шаблон

Особо расписывать не вижу смысла - все просто как грабли.


Как подключить спеллер к формам - читать тут.
Полное API
Навеяно вот этим хаком

вторник, 30 августа 2011 г.

Как вырезать BB-code из текста на PHPBB?

Если нужно вырезать BB-коды из PHP - поможет следующий регексп.

$text = preg_replace ('/\[[^]]*\]/', '', $text);

Особенно актуально для PHPBB 2 версии, так как в 3-й уже появилась функция strip_code.

А хранит PHPBB в базе сложные коды вида [url:12DAsca][/url:12DAsca], где 12DAsca - дополнительная защита - так что стандартные функции CMS не прокатывают.