Некоторые улучшения ядра instant CMS 1.9 - вырезка ютюб и отправка нтмл писем

13 марта 2012 - Dream

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

вот такой вот код - файл core/cms.php function badTagClear строка 3297 

$bad_tags = array (
"'<script[^>]*?>.*?</script>'si",
"'<style[^>]*?>.*?</style>'si",
"'<meta[^>]*?>'si",
'/<iframe.*?src=(?!"http:\/\/www\.youtube\.com\/embed\/|"http:\/\/vkontakte\.ru\/video_ext\.php\?).*?>.*?<\/iframe>/i',
'/<iframe.*>.+<\/iframe>/i'
);

в общем тут понятно что удалить - получается

$bad_tags = array (
"'<script[^>]*?>.*?</script>'si",
"'<style[^>]*?>.*?</style>'si",
"'<meta[^>]*?>'si"
);

идем дальше

meta generator - ну по идее пусть и будет там ссылка на instantcms.ru но мне для некоторых проектов лучше бы спрятать

файл core/classes/page.class.php строка 182     echo '<meta name="generator" content="InstantCMS - www.instantcms.ru"/>' ."\n";  - меняем на что хотим

       
там-же строка 220 - echo 'Сайт работает на <a href="http://www.instantcms.ru/">InstantCMS</a> v'.CORE_VERSION.'<br/>'; - не разбирался остается ли она в теме, потом посмотрим - просто удалил

форум - искал в шаблоне где удалить при создании темы "описание"  - лишнее это - нет, все до сих пор в коде

файл components/forum/frontend.php строка 756 там две строчки просто заккоментировать

------------------------------

теперь с отправкой в нормальном виде писем с сайта

неизвестно куда смотрели разработчики - но по умолчанию письма приходят одной строкой даже без переносов... не говоря уже о гипер ссылках.

но это можно исправить:

По умолчанию письмо отправляется в формате 'text/plain'. Для того чтобы приходило в формате 'text/html', нужно найти в файле /components/users/model.php строку 886 (в методе sendNotificationByEmail())

Код PHP:
1 $inCore->mailText($to_email$_LANG['YOU_HAVE_NEW_MESS'].'! - '.$inConf->sitename,$letter);

и заменить на 

Код PHP:
1 $inCore->mailText($to_email$_LANG['YOU_HAVE_NEW_MESS'].'! - '.$inConf->sitename,$letter"text/html");

Затем в файле /includes/letters/newmessage.txt сделать разметку как вам нужно html-тегами.
Того же эффекта можно добиться и заменой строки 3329 в файле /core/cms.php

Код PHP:
1 public function mailText($email$subject$message$content='text/plain'){

на

Код PHP:
1 public function mailText($email$subject$message$content='text/html'){

Но тогда все письма по умолчанию будут отправляться в формате 'text/html'. 

Рейтинг: +3 Голосов: 3 3243 просмотра
Комментарии (8)
index # 2 апреля 2012 в 22:30 -2
Если вырезать данные теги '/.*?/i', '/.+/i' то, по сути, открывается огромная брешь в безопасности сайта. Любой пользователь сможет вставить iframe код в любой материалы, а это черевато( А так конечно есть неудобство то что в блогах, форумах и тд.(где используются bb коды) фильтруется iframe с контакта и ютуба. Было бы универсальное решение и для статей было бы супер.
Dream # 8 апреля 2012 в 20:16 0
ну можно написать код разрешающий только для контактов-ютюбов, но лично я думаю что iframe не такая уж и большая брешь, то есть сайт не взломают, а код вируса разместить могут, но нынче это не очень актуально
Linus Torwalds # 30 июля 2012 в 02:30 -1
Это не все. Две куки отображают "Имя: InstantCMS[userid]". Не знаешь где их выловить?
Linus Torwalds # 30 июля 2012 в 02:42 -1
Включи fckeditor и bb-code гостям.
Linus Torwalds # 30 июля 2012 в 18:25 -1
В общем Кука InstantCMS[userid] редактируется в /core/cms.php. Строки: 1366-1376; 1387-1388. //////////////////////////////////////////////////// Еще вопрос такой: для конвертации писем в HTML воспользовался подсказкой выше. Отредактировал файлы в папке includes/letters. После подписки на уведомления, приходит сообщение такого типа: "Дата: [ДД ММ ГГГГ] [ЧЧ:ММ] Новый комментарий: http://www.mysite.com------------------------------------------------------- [Собственно само сообщение]" Как его сделать вида "Дата: [ДД ММ ГГГГ] [ЧЧ:ММ] Новый комментарий: http://www.mysite.com ------------------------------------------------------- Сообщение: [Собственно само сообщение]" - КТО ЗНАЕТ???
Linus Torwalds # 30 июля 2012 в 18:34 -1
В общем Кука InstantCMS[userid] редактируется в /core/cms.php. Строки: 1366-1376; 1387-1388.
Код PHP:
  1. 1366: setcookie('InstantCMS['.$name.']', $value, $time, '/');
Код PHP:
  1. 1376: setcookie('InstantCMS['.$name.']', '', time()-3600, '/');
Код PHP:
  1. 1387: if (isset($_COOKIE['InstantCMS'][$name])){
Код PHP:
  1. 1388: return $_COOKIE['InstantCMS'][$name];
////////////////////////////////////////////////////

Еще вопрос такой: для конвертации писем в HTML воспользовался подсказкой выше. Отредактировал файлы в папке includes/letters.
После подписки на уведомления, приходит сообщение такого типа:
"Дата: [ДД ММ ГГГГ] [ЧЧ:ММ] Новый комментарий: http://www.mysite.com------------------------------------------------------- [Собственно само сообщение]"

Как его сделать вида

"Дата: [ДД ММ ГГГГ] [ЧЧ:ММ]
Новый комментарий: http://www.mysite.com
-------------------------------------------------------
Сообщение: [Собственно само сообщение]" - КТО ЗНАЕТ???
Linus Torwalds # 30 июля 2012 в 18:38 -1
Под выражением
Linus torwalds:
После подписки на уведомления, приходит сообщение такого типа: "Дата: [ДД ММ ГГГГ] [ЧЧ:ММ] Новый комментарий: http://www.mysite.com------------------------------------------------------- [Собственно само сообщение]"
я имелл ввиду, что в папке includes/letters нету и не намека на это сообщение.
Dream # 4 августа 2012 в 12:15 -1
мне тоже интересно, постараюсь найти