DANFA

Форум (модуль phpFOX 3)

Форум - один из модулей phpFOX третей версии, я уже не представляю соцсеть без форума.

Фотографии лайкнувших сообщение в теме форума, отображаются только когда нажмешь на лайк, после перезагрузки страницы фотографий не видно, они спрятаны css свойством display: none. По моему это не правильно. В прежних версиях такого не было, такую ошибку я заметил в 3.8.0, но возможно, что баг появился до этой версии. Покопался и сообразил решение! Открываем файл шаблона: module/feed/template/default/block/comment.html.php, находим:
<div id="js_feed_like_holder_{$aFeed.type_id}_{$aFeed.item_id}" class="comment_mini_content_holder" {if isset($aFeed.bShowEnterCommentBlock) && $aFeed.bShowEnterCommentBlock == false}style="display:none"{/if} > 

И меняем на:
<div id="js_feed_like_holder_{$aFeed.type_id}_{$aFeed.item_id}" class="comment_mini_content_holder"{if isset($aFeed.bShowEnterCommentBlock) && $aFeed.bShowEnterCommentBlock == false && !count($aFeed.likes)} style="display: none;"{/if}> 

Чистим кэш. Готово.

После того, как сообщение будет отредактировано, под сообщением будет написано, что данный пост был изменен таким то участником системы, в такое то время. Неважно, кто будет редактировать пост админ или обычный зарегистрированный пользователь. Я думаю, что пользователю не понравится, если он увидит, что его пост отредактировал админ, хотя он просто мог поставить пробел после запятой (многие пробел после запятой пропускают). И я решил не вносить информацию об редактировании поста, если его редактировал админ. Сделал так:
Открываем файл: module/forum/include/service/post/process.class.php, находим:
        $this->database()->update($this->_sTable, array( 
                'update_time' => PHPFOX_TIME,
                'update_user' => substr(Phpfox::getUserBy('full_name'), 0, 100),
                'total_attachment' => Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($iId, 'forum') : 0,
            ), 'post_id = ' . (int) $iId
        ); 

И меняем на:
        if (Phpfox::isAdmin())
        {
            $this->database()->update($this->_sTable, array(
                    'total_attachment' => Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($iId, 'forum') : 0
                ), 'post_id = ' . (int) $iId
            );            
        }
        else
        {            
            $this->database()->update($this->_sTable, array(
                    'update_time'      => PHPFOX_TIME,
                    'update_user'      => substr(Phpfox::getUserBy('full_name'), 0, 100),
                    'total_attachment' => Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($iId, 'forum') : 0
                ), 'post_id = ' . (int) $iId
            );
        } 

Дальше открываем файл: module/forum/include/service/thread/process.class.php, находим:
        $this->database()->update(Phpfox::getT('forum_post'), array(
                'total_attachment' => (Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($aVals['post_id'], 'forum') : 0),
                'title' => $oParseInput->clean($aVals['title'], 255),
                'update_time' => PHPFOX_TIME,
                'update_user' => substr(Phpfox::getUserBy('full_name'), 0, 100)
            ), 'post_id = ' . (int) $aVals['post_id']
        ); 

Меняем на:
        if (Phpfox::isAdmin())
        {
            $this->database()->update(Phpfox::getT('forum_post'), array(
                    'total_attachment' => (Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($aVals['post_id'], 'forum') : 0),
                    'title'            => $oParseInput->clean($aVals['title'], 255),
                ), 'post_id = ' . (int) $aVals['post_id']
            );
        }
        else
        {
            $this->database()->update(Phpfox::getT('forum_post'), array(
                    'total_attachment' => (Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($aVals['post_id'], 'forum') : 0),
                    'title'            => $oParseInput->clean($aVals['title'], 255),
                    'update_time'      => PHPFOX_TIME,
                    'update_user'      => substr(Phpfox::getUserBy('full_name'), 0, 100)
                ), 'post_id = ' . (int) $aVals['post_id']
            );            
        } 

Готово, теперь информация о изменениях сообщениях будет в том случаи, если пост отредактировал простой участник.
При цитировании сообщения, после тега [quote=xxx] текст сообщения переносится на новую строку, так же переносится на новую строку закрывающий тег [/quote]. Мне показалось это не красиво, так как в блоке цитаты получается много свободного места, и убираю эти переносы на новые строки.

Делаем так: Открываем: module/forum/include/service/post/post.class.php, находим:
            $sQuotes .= "[quote={$aPost['user_id']}]\n" . Phpfox::getLib('parse.bbcode')->stripCode($aPost['text'], array('quote', 'attachment')) . "\n[/quote]\n\n\n";

Меняем на:
            $sQuotes .= "[quote={$aPost['user_id']}]" . Phpfox::getLib('parse.bbcode')->stripCode($aPost['text'], array('quote', 'attachment')) . "[/quote]\n\n"; 
Форум по адресу: site/index.php?do=/forum/ или site/forum/ (в зависимости от настроек сайта), мне показалось, что между двумя блоками слишком маленький отступ (левая сторона):

Форум (модуль phpFOX 3)

Чтобы сделать отступ, как с правой стороны, пока решил сделать так:
Открываю: module/forum/template/default/controller/index.html.php, нахожу:
{template file='forum.block.entry'}

Меняю на:
{if Phpfox::isUser()}
<div style="margin-right: 10px;">
    {template file='forum.block.entry'}
</div>
{else}
{template file='forum.block.entry'}
{/if} 

После очищаю кэш и вот результат:

Форум (модуль phpFOX 3)