Исправление ошибки мобильной версии плагина Компании

Пока еще не готова мобильная версия плагина, но уже известно как исправить проблему из-за которой топики компаний открываются с ошибкой.
Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file 'menu.main.tpl' in 'nav.tpl'' in E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php:127 Stack trace: #0 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #1 E:\www\domains\test\r10\templates\compiled\mobile\071fdd5b85056e33e325611e03241c050a84d9d8.file.nav.tpl.php(54): Smarty_Internal_Template->getSubTemplate('menu.main.tpl', NULL, NULL, NULL, NULL, Array, 0) #2 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d7642c5b8_26229961(Object(Smarty_Internal_Template)) #3 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #4 E:\www\domains\test\r10\templates\compiled\mobile\5274d1dbb4725efda7bc453e43869f54ea5398f9.file.header.tpl.php(201): Smarty_Internal_Template->getSubTemplate('nav.tpl', NULL, NULL, NULL, NULL, Array, 0) #5 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d76146716_97210804(Object(Smarty_Internal_Template)) #6 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #7 E:\www\domains\test\r10\templates\compiled\mobile\c710cafe668729bbd09d441c709278855b551652.file.topic.tpl.php(36): Smarty_Internal_Template->getSubTemplate('header.tpl', NULL, NULL, NULL, NULL, Array, 0) #8 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d75f1e702_48219556(Object(Smarty_Internal_Template)) #9 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(374): Smarty_Internal_TemplateBase->fetch('E:\www\domains\...', NULL, NULL, NULL, true) #10 E:\www\domains\test\r10\engine\modules\viewer\Viewer.class.php(328): Smarty_Internal_TemplateBase->display('E:\www\domains\...') #11 [internal function]: ModuleViewer->Display('E:\www\domains\...') #12 E:\www\domains\test\r10\engine\classes\Engine.class.php(558): call_user_func_array(Array, Array) #13 E:\www\domains\test\r10\engine\classes\Router.class.php(439): Engine->_CallModule('Viewer_Display', Array) #14 E:\www\domains\test\r10\engine\classes\Router.class.php(137): Router->__call('Viewer_Display', Array) #15 E:\www\domains\test\r10\engine\classes\Router.class.php(137): Router->Viewer_Display('E:\www\domains\...') #16 E:\www\domains\test\r10\engine\classes\Router.class.php(127): Router->Shutdown(false) #17 E:\www\domains\test\r10\index.php(34): Router->Exec() #18 {main} thrown in E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php on line 127


Эти изменения я внес в github мобильного шаблона github.com/venticello/lstemplate-mobile/commit/4ada3f5d2a5d6e923b4a629b8a90f16e21a6a5ea подправьте у себя и плагин компании будет работать на мобильной версии.

Livestreet CMS в облаках Infobox

infoboxКомпания Infobox предоставила возможность бесплатно (до 1 февраля) тестировать их облачные сервера, в этой статье напишу как я сделал распределенную систему. Решил сделать два http-сервера и один сервер под базы данных. На самом деле, для не нагруженных проектов можно держать на одном сервере базу данных и http-сервер, а на втором только http-сервер подключать по необходимости, но мне было интересно построить именно такую систему, чтобы при увеличении нагрузок, на нее перейти.
Читать дальше →

А вы уверены что у вас все работает правильно?


Советую всем проверить файл /logs/sql_error.log где установлен livestreet там встречаются интересные ошибки которые возникают в работе сайта, но вы их не видели.
Например с помощью просмотра лога я выявил что в 1.0.1 не удаляются комментарии переписки, если сообщения шли не один за другим, а деревом.
Лечится это одной строчкой, добавил коммит в git livestreet
Ошибка происходит из-за того что есть констрейнт который проверяет целостность комментариев, и так как функция удаляет последовательно он ругается
Cannot delete or update a parent row: a foreign key constraint fails 
(`prefix_comment`, CONSTRAINT `prefix_topic_comment_fk` 
FOREIGN KEY (`comment_pid`) REFERENCES `prefix_comment` (`comment_id`) ON DELETE CASCADE ON UPDATE CASCADE)

нужно чтобы сначала удалялись новые комментарии, а потом старые и ошибки не будет.
Ошибка актуальна для баз InnoDB.

Дружим плагин "Компании" и NiceURL

При использовании плагина NiceURL топик компании показывается без «шапки» компании, что не очень красиво и удобно.
Чтобы это исправить откройте файл \plugins\niceurl\classes\hooks\HookUrl.class.php
найдите строку
if ($oTopic->getBlog()->getType()=='personal') {

и сделайте конструкцию вида:
if ($oTopic->getBlog()->getType()=='personal') {
   Router::Action($sActionRewrite,$oTopic->getId().'.html',array());
} elseif($oTopic->getBlog()->getType()=='company') {
   Router::Action('company',$oTopic->getBlog()->getUrl(),array('blog',$oTopic->getId().'.html'));
} else {
   Router::Action($sActionRewrite,$oTopic->getBlog()->getUrl(),array($oTopic->getId().'.html'));
}

и все, топики компаний будут отображаться правильно с новыми адресами.

Если у вас ошибки циклической переадресации ссылок, то активируйте плагин NiceURL после плагина компании и все будет работать.

Защита сервера от перебора паролей. Установка и настройка Fail2ban

Защита сервера, fail2banЕсли вы посмотрите лог аутентификации сервера /var/log/auth.log вы увидите, что там частые неудачные попытки авторизации на сервер, под разными именами или только под root, боты постоянно щупают сервера на слабость защиты. Есть вероятность что все таки подберут пароль, а так же их обращения негативно влияют на производительность сервера и увеличивают логи. Чтобы этого избежать поставьте простую программу fail2ban, это займет не больше чем 5 минут, она при трех неудачных попытках подбора пароля злоумышленником будет блокировать его доступ к серверу, на определенное вами время.
Читать дальше →

Как сменить URL с 'company' на любой другой

Если вы решили использовать плагин «Компании» под особый проект возможно потребуется изменить URL на более красиво звучащий, например на 'game'.
Открываем конфиг файл плагина \plugins\company\config\config.php
И меняем настройку:
Config::Set('module.company.prefix', 'company'); 	// префикс для компаний (ссылка в URL)

на
Config::Set('module.company.prefix', 'game'); 	// префикс для компаний (ссылка в URL)

А если требуется еще поменять URL списка компаний, то в конфиг нужно добавить строку, например
Config::Set('router.rewrite.companies', 'games');

и список компаний будет отображаться по адресу сайт.ру/games/

Как подружить плагин "Sitemap" и плагин "Компании"

По умолчанию в плагине sitemap не отображаются топики компаний, чтобы они там отображались необходимо в файле плагина sitemap доработать файл \plugins\sitemap\classes\modules\topic\Topic.class.php
в нем есть функция фильтра которая показывает какие топики нужно отображать в карте сайта:
protected function _getFilterForTopics() {
        return array(
            'blog_type' => array(
                'open', 'personal',
            ),
            'topic_publish' => 1,
        );
    }


нужно в нее добавить блоги типа company, в итоге получится
protected function _getFilterForTopics() {
        return array(
            'blog_type' => array(
                'open', 'personal', 'company',
            ),
            'topic_publish' => 1,
        );
    }

И теперь топики компаний будут отображаться.

Повышаем безопасность livestreet CMS

Безопасность livestreet XSSНаверное вы как и многие устанавливаете множество различных плагинов, но не имеете опыта чтобы разобраться с их кодом и понять на сколько они безопасны для использования, в этой статье я напишу два совета как увеличить безопасность сервера и сайта.
1. Защищаем сайт от возможных XSS уязвимостей.
В livestreet CMS 1.0.1 по умолчанию включен доступ к cookie авторизации пользователей через javascript, соответственно какой то вредоносный скрипт может позволить злоумышленнику от имени другого пользователя пользоваться сайтом. Я уже внес изменения в github livestreet CMS, так что в новой версии такой возможности у злоумышленников не будет. А сейчас можно сделать это вручную.

Читать дальше →

Установка и настройка Sphinx 2.0.5 Debian 6.0 (squeeze)

Сфинкс. Полнотекстовый поискSphinx (англ. SQL Phrase Index) — бесплатная система полнотекстового поиска, которая позволяет очень быстро индексировать и искать данные на сайте.
У многих возникают трудности с установкой и настройкой, на самом деле все очень прост, нужно лишь выполнить несколько простых действий.
1. Устанавливаем необходимые библиотеки, чтобы не было ошибок при установке сфинкса
apt-get install libmysql++-dev

2. Скачиваем сфинкс

wget http://sphinxsearch.com/files/sphinx-2.0.5-release.tar.gz

Выбрать более свежую версию можно sphinxsearch.com/downloads/
3. Распаковываем и конфигурируем
tar xzvf sphinx-2.0.5-release.tar.gz
cd sphinx-2.0.5-release
./configure --prefix=/usr/local/sphinx --with-mysql

устанавливается в /usr/local/sphinx с поддержкой MySQL
если возникают ошибки то можно дописать ./configure --prefix=/usr/local/sphinx --with-mysql --with-mysql-libs=/usr/lib

4. устанавливаем
make
make install


Читать дальше →