21.09.2017 04:32:38 pm
После установки Load Comments via AJAX в true (настройки комментов: admincp/setting/edit/module-id_comment/), можем наблюдать такую ошибку - после перехода на страницу фотографии, которую вы лайкнули, кнопка Like будет отображаться, будто вы ее ещё не нажимали, а нажав на нее, получим сообщение:
При этом не будет отображаться ссылка пожаловаться на фотографию.
После установки Group Duplicate Feeds на 0 (настройки стены: admincp/setting/edit/module-id_feed/), под всеми каналами (постами) на стене исчезает кнопка Report (Жалоба).

Для исправления бага, открыть: module/feed/include/service/feed.class.php, найти:
Выше вставить:
С этим решением помогли на другом форуме.
Читайте еще: Недоработки движка phpFOX 3 по удалению заметок.
You have already "liked" this feed.
При этом не будет отображаться ссылка пожаловаться на фотографию.
После установки Group Duplicate Feeds на 0 (настройки стены: admincp/setting/edit/module-id_feed/), под всеми каналами (постами) на стене исчезает кнопка Report (Жалоба).

Для исправления бага, открыть: module/feed/include/service/feed.class.php, найти:
$aReturn['feed_month_year'] = date('m_Y', $aRow['feed_time_stamp']);
Выше вставить:
if (isset($aRow['type_id']))
{
$aModule = explode('_', $aRow['type_id']);
if (isset($aModule[0]) && Phpfox::isModule($aModule[0]) && Phpfox::hasCallback($aModule[0] . (isset($aModule[1]) ? '_' . $aModule[1] : ''), 'getReportRedirect'))
{
$aReturn['report_module'] = $aRows[$sKey]['report_module'] = $aModule[0] . (isset($aModule[1]) ? '_' . $aModule[1] : '');
$aReturn['report_phrase'] = $aRows[$sKey]['report_phrase'] = Phpfox::getPhrase('feed.report_this_entry');
$aReturn['force_report'] = $aRows[$sKey]['force_report'] = true;
}
}
С этим решением помогли на другом форуме.
Читайте еще: Недоработки движка phpFOX 3 по удалению заметок.
- Жалоба
21.09.2017 04:34:18 pm
В мобильной версии сайта можно получить 502 ошибку. Как её получить: создаём страницу (сайт/pages/add/), изменяем её URL, то есть в место сайт/pages/ID/ будет, например: сайт/namepage/. Дальше переходим в мобильный стиль сайта, заходим на страницу, и переходим на форум страницы: (сайт/mobile/namepage/forum/). Вместо списка тем, вылетит 502 ошибка.
Покопавшись, решил проблему так:
Открываю: module/forum/include/component/controller/forum.class.php, нахожу:
И удаляю эти строки. Готово.
Покопавшись, решил проблему так:
Открываю: module/forum/include/component/controller/forum.class.php, нахожу:
if (Phpfox::isMobile() && Phpfox::getLib('module')->getFullControllerName() == 'forum.forum' && !$this->request()->getInt('req2') && !in_array($this->request()->get('view'), array('subscribed','new','my-thread')))
{
return Phpfox::getLib('module')->setController('forum.index');
}
И удаляю эти строки. Готово.
21.09.2017 04:35:17 pm
При отключенном HTML - /admincp/setting/edit/setting-id_20/, вставив текст между тегами BBcode
На экране можно получить такую картинку:
Тут, слово
Я решил эту проблему так: открываю: include/library/phpfox/parse/output.class.php, нахожу:
Заменяю на:
То есть просто удалил пробел тут:
Обратите внимание, что у меня название переменных может отличаться от ваших переменных.
[code][/code]
, например, такой:<!-- Форма, куда будут вставлены ники -->
На экране можно получить такую картинку:
<!-- Форма, куда будут вставлен ;ы ники -->
Тут, слово
вставлены
выведено с точкой запятой, после буквы н: вставлен ;ы
Я решил эту проблему так: открываю: include/library/phpfox/parse/output.class.php, нахожу:
$newstr .= preg_replace('#([^\n\r(?!PHPFOX_) ]{' . $count . '})#iu', '\\1 ' . ($break ? '<br />' : ''), $char[0]);
Заменяю на:
$newstr .= preg_replace('#([^\n\r(?!PHPFOX_) ]{' . $count . '})#iu', '\\1' . ($break ? '<br />' : ''), $char[0]);
То есть просто удалил пробел тут:
'\\1 '
.Обратите внимание, что у меня название переменных может отличаться от ваших переменных.
05.11.2017 10:58:30 am
Заметил: если между BBcode поставить ноль (0), то он не отобразится, где этот ноль вырезан.
Данный баг я решил так:
Открываю: include/library/phpfox/parse/output.class.php, нахожу:
Меняю на:
Готово. Теперь ноль отображается. Пример:
Данный баг я решил так:
Открываю: include/library/phpfox/parse/output.class.php, нахожу:
if (!empty($aChar[0]))
Меняю на:
if ($aChar[0] == 0 | !empty($aChar[0]))
Готово. Теперь ноль отображается. Пример:
0
.
30.06.2018 02:04:03 pm
При удалении комментария статуса пользователя, не обновляется количество комментариев, то есть, например, было десять комментов, удалили три, комментов стало семь, а в поле "total_comment" осталось значение
Меняю:
Готово.
10
. Чтобы обновлялось значение, я открываю: "module/feed/include/service/callback.class.php", нахожу: public function deleteComment($iId)
{
}
Меняю:
public function deleteComment($id)
{
$this->database()
->update(Phpfox::getT('feed_comment'), array(
'total_comment' => array('= total_comment -', 1)
), 'feed_comment_id = ' . (int) $id
);
}
Готово.
13.07.2020 07:24:43 am
Очередной баг с форумом и вложениями. Если в первом сообщении темы есть вложения, например, картинки, то эти вложения можно отредактировать только при редактировании первого поста темы, а не темы (Не путать!). По сути мы редактируем один и тот же пост (Самый первый в теме), но в одном случае вложения видно, в другом их нет. Я считаю, что это не правильно. Баг исправил, сейчас вложения есть во всех случаях редактирования. Но, что менял, не помню. По этому я выкладу код своего файла: "module/forum/include/component/controller/post.class.php" целиком, именно в нем я правил код:
<?php
class forum_component_controller_post extends phpfox_component
{
public function process()
{
phpfox::isUser(true);
$bCanEditPersonalData = true;
$aCallback = false;
if ($this->request()->get('module'))
{
$this->template()->assign(array('bIsGroup' => '1'));
}
if (($sModule = $this->request()->get('module'))
&& phpfox::isModule($sModule)
&& ($iItemId = $this->request()->getInt('item'))
&& phpfox::hasCallback($sModule, 'addForum'))
{
$aCallback = phpfox::callback($sModule . '.addForum', $iItemId);
$this->template()->setBreadcrumb(phpfox::getPhrase('forum.pages'), $this->url()->makeUrl('pages'));
$this->template()->setBreadcrumb($aCallback['title'], $aCallback['url_home']);
$this->template()->setBreadcrumb(phpfox::getPhrase('forum.discussions'), $aCallback['url_home'] . 'forum/');
if ($sModule == 'pages' && !phpfox::getService('pages')->hasPerm($iItemId, 'forum.share_forum'))
{
return phpfox_error::display(phpfox::getPhrase('forum.unable_to_view_this_item_due_to_privacy_settings'));
}
}
else
{
$this->template()->setBreadcrumb(phpfox::getPhrase('forum.forum'), $this->url()->makeUrl('forum'));
}
$id = $this->request()->getInt('id');
if (phpfox::isModule('poll'))
{
$this->template()->setHeader('cache', [
'poll.js' => 'module_poll',
'<script type="text/javascript">$Behavior.loadSortableAnswers = function() {$(".sortable").sortable({placeholder: "placeholder", axis: "y"});}</script>'
]
);
}
if (phpfox::isModule('video'))
{
$this->template()->setHeader('cache', [
'player/flowplayer/flowplayer.js' => 'static_script',
'player/' . phpfox::getParam('core.default_music_player') . '/core.js' => 'static_script'
]
);
}
$this->template()
->setEditor()
->setTitle(phpfox::getPhrase('forum.forum'))
->setHeader('cache', [
'switch_legend.js' => 'static_script',
'switch_menu.js' => 'static_script',
'pager.css' => 'style_css',
'forum.css' => 'module_forum'
]
);
$bIsEdit = false;
if ($this->request()->get('req3') == 'thread')
{
if ($iEditId = $this->request()->getInt('edit'))
{
$thread = phpfox::getService('forum.thread')->getForEdit($iEditId);
if (empty($thread['thread_id']))
{
return phpfox_error::display(phpfox::getPhrase('forum.not_a_valid_thread'));
}
if (phpfox::isAdmin() | !empty($thread['group_id']) && phpfox::getService('pages')->isAdmin($thread['group_id']))
{
$bIsEdit = true;
if (phpfox::getUserParam('forum.can_edit_other_posts') && phpfox::getUserId() != $thread['user_id'])
{
$bCanEditPersonalData = false;
}
$id = $thread['forum_id'];
$post = phpfox::getService('forum.post')->getForEdit($thread['start_id']);
$thread['total_attachment'] = $post['total_attachment'];
$this->template()->assign([
'aForms' => $thread,
'iEditId' => $thread['thread_id']
]
);
}
else
{
return phpfox_error::display(phpfox::getPhrase('forum.insufficient_permission_to_edit_this_thread'));
}
}
if ($aCallback === false)
{
$aForum = phpfox::getService('forum')
->id($id)
->getForum();
if (empty($aForum['forum_id']))
{
return phpfox_error::display(phpfox::getPhrase('forum.not_a_valid_forum'));
}
if ($aForum['is_closed'])
{
return phpfox_error::display(phpfox::getPhrase('forum.forum_is_closed'));
}
}
if (!$bIsEdit)
{
$bPass = false;
if (phpfox::getUserParam('forum.can_add_new_thread') | phpfox::getService('forum.moderate')->hasAccess($aForum['forum_id'], 'add_thread'))
{
$bPass = true;
}
if ($bPass === false)
{
return phpfox_error::display(phpfox::getPhrase('forum.insufficient_permission_to_reply_to_this_thread'));
}
}
$aValidation = [
'title' => phpfox::getPhrase('forum.provide_a_title_for_your_thread'),
'text' => phpfox::getPhrase('forum.provide_some_text')
];
$oValid = phpfox::getLib('validator')->set([
'formName' => 'js_form',
'aParams' => $aValidation
]
);
$bPosted = false;
if ($aVals = $this->request()->getArray('val'))
{
if ($oValid->isValid($aVals))
{
if ($bIsEdit)
{
$aVals['post_id'] = $thread['start_id'];
$aVals['forum_id'] = $thread['forum_id'];
if (phpfox::getService('forum.thread.process')->update($thread['thread_id'], $thread['user_id'], $aVals))
{
$this->url()->permalink('forum.thread', $thread['thread_id'], null, true, phpfox::getPhrase('forum.thread_successfully_updated'));
}
}
else
{
if (($iFlood = phpfox::getUserParam('forum.forum_thread_flood_control')) !== 0)
{
$aFlood = array(
'action' => 'last_post', # The SPAM action
'params' => array(
'field' => 'time_stamp', # The time stamp field
'table' => phpfox::getT('forum_thread'), # Database table we plan to check
'condition' => 'user_id = ' . phpfox::getUserId(), # Database WHERE query
'time_stamp' => $iFlood * 60
)
);
# actually check if flooding
if (phpfox::getLib('spam')->check($aFlood))
{
phpfox_error::set(phpfox::getPhrase('forum.posting_a_new_thread_a_little_too_soon') . ' ' . phpfox::getLib('spam')->getWaitTime());
}
}
if (phpfox_error::isPassed() && ($id = phpfox::getService('forum.thread.process')->add($aVals, $aCallback)))
{
$this->url()->permalink('forum.thread', $id, null, true);
}
}
}
}
if ($aCallback === false)
{
$this->template()
->setBreadcrumb($aForum['breadcrumb'])
->setBreadcrumb($aForum['name'], $this->url()->permalink('forum', $aForum['forum_id']))
->setBreadcrumb(($bIsEdit ? phpfox::getPhrase('forum.editing_thread') . ': ' . $thread['title'] : phpfox::getPhrase('forum.post_new_thread')), $this->url()->makeUrl('forum.post.thread'), true);
}
else
{
$this->template()
->setBreadcrumb(($bIsEdit ? phpfox::getPhrase('forum.editing_thread') . ': ' . $thread['title'] : phpfox::getPhrase('forum.post_new_thread')), $this->url()->makeUrl('forum.post.thread'), true);
}
$this->template()->assign([
'iForumId' => $id,
'sFormLink' => ($aCallback == false ? $this->url()->makeUrl('forum.post.thread', array('id' => $id)) : $this->url()->makeUrl('forum.post.thread', array('module' => $sModule, 'item' => $iItemId))),
'sCreateJs' => $oValid->createJS(),
'sGetJsForm' => $oValid->getJsForm(),
'bPosted' => $bPosted,
'sReturnLink' => ($bIsEdit ? ($aCallback === false ? $this->url()->makeUrl('forum', array($aForum['name_url'] . '-' . $aForum['forum_id'])) : $this->url()->makeUrl($aCallback['url_home'] . '.forum')) : ''),
'bIsEdit' => $bIsEdit,
'aCallback' => $aCallback,
'canPoll' => (!empty($id) && $id > 0 | !empty($sModule)) ? true : false
]
);
if (phpfox::getUserParam('forum.can_add_forum_attachments'))
{
$this->setParam('attachment_share', [
'type' => 'forum',
'id' => 'js_forum_form',
'edit_id' => $thread['start_id']
]
);
}
}
else
{
if ($iEditId = $this->request()->getInt('edit'))
{
$post = phpfox::getService('forum.post')->getForEdit($iEditId);
if (empty($post['post_id']))
{
return phpfox_error::display(phpfox::getPhrase('forum.not_a_valid_post'));
}
$canEditPost = phpfox::isAdmin() | !empty($post['group_id']) && phpfox::getService('pages')->isAdmin($post['group_id']) | $post['user_id'] == phpfox::getUserId() && phpfox::getLib('common')->inspectionTime($post['time_stamp']);
if ($canEditPost)
{
$bIsEdit = true;
if (phpfox::getUserParam('forum.can_edit_other_posts') && phpfox::getUserId() != $post['user_id'])
{
$bCanEditPersonalData = false;
}
$id = $post['thread_id'];
$this->template()->assign([
'aForms' => $post,
'iEditId' => $post['post_id']
]
);
if (PHPFOX_IS_AJAX)
{
phpfox::getLib('ajax')->setTitle(phpfox::getPhrase('forum.editing_post') . ': ' . (empty($post['title']) ? '#' . $post['post_id'] : phpfox::getLib('parse.output')->shorten($post['title'], 80, '...')));
}
}
else
{
return phpfox_error::display(phpfox::getPhrase('forum.insufficient_permission_to_edit_this_thread'));
}
}
$thread = phpfox::getService('forum.thread')->getActualThread($id, $aCallback);
if (empty($thread['thread_id']))
{
return phpfox_error::display(phpfox::getPhrase('forum.not_a_valid_thread'));
}
if ($thread['is_closed'] && ((isset($canEditPost) && !$canEditPost) | empty($canEditPost)))
{
return phpfox_error::display(phpfox::getPhrase('forum.thread_is_closed'));
}
if ($aCallback === false && $thread['forum_is_closed'])
{
return phpfox_error::display(phpfox::getPhrase('forum.forum_is_closed'));
}
if (!$bIsEdit)
{
$bPass = false;
if ((phpfox::getUserParam('forum.can_reply_to_own_thread') && $thread['user_id'] == phpfox::getUserId()) | phpfox::getUserParam('forum.can_reply_on_other_threads') | phpfox::getService('forum.moderate')->hasAccess($thread['forum_id'], 'can_reply'))
{
$bPass = true;
}
if ($bPass === false)
{
return phpfox_error::display(phpfox::getPhrase('forum.insufficient_permission_to_reply_to_this_thread'));
}
}
$sExtraText = '';
if ($sSavedText = $this->request()->get('save_text'))
{
$sExtraText .= phpfox::getLib('parse.output')->clean($sSavedText);
}
if (phpfox::getUserParam('forum.can_multi_quote_forum') && (($iQuote = $this->request()->getInt('quote')) | (($sCookie = phpfox::getCookie('forum_quote')) && !empty($sCookie))))
{
$sCookie = phpfox::getCookie('forum_quote');
if (!empty($sCookie))
{
$iQuote = $sCookie . $iQuote;
}
$sExtraText .= phpfox::getService('forum.post')->getQuotes($thread['thread_id'], $iQuote);
}
if (($iQuoteId = $this->request()->getInt('quote')) && ($aQuotePost = phpfox::getService('forum.post')->getForEdit($iQuoteId)))
{
phpfox::getLib('ajax')->setTitle(phpfox::getPhrase('forum.replying_to_a_post_by_full_name', array('full_name' => phpfox::getLib('parse.output')->shorten($aQuotePost['full_name'], 80, '...'))));
}
$aSubForms = array();
if (isset($thread['is_subscribed']))
{
$aSubForms['is_subscribed'] = $thread['is_subscribed'];
}
if (!empty($sExtraText))
{
$aSubForms['text'] = $sExtraText;
}
if (isset($canEditPost) && $canEditPost)
{
$aSubForms = array_merge($aSubForms, $post);
}
$this->template()->assign('aForms', $aSubForms);
$aValidation = array(
'text' => phpfox::getPhrase('forum.provide_some_text')
);
if (phpfox::isModule('captcha') && phpfox::getUserParam('forum.enable_captcha_on_posting'))
{
$aValidation['image_verification'] = phpfox::getPhrase('captcha.complete_captcha_challenge');
}
$oValid = phpfox::getLib('validator')->set([
'formName' => 'js_form',
'aParams' => $aValidation
]
);
$aForum = phpfox::getService('forum')
->id($thread['forum_id'])
->getForum();
if ($aVals = $this->request()->getArray('val'))
{
$aVals['forum_id'] = $thread['forum_id'];
if ($oValid->isValid($aVals))
{
phpfox::setCookie('forum_quote', '', -1);
if ($bIsEdit)
{
if (phpfox::getService('forum.post.process')->update($post['post_id'], $post['user_id'], $aVals))
{
$this->url()->permalink('forum', $thread['thread_id'], null, true, null, array('post' => $post['post_id']));
}
}
else
{
if (($iFlood = phpfox::getUserParam('forum.forum_post_flood_control')) !== 0)
{
$aFlood = array(
'action' => 'last_post', # The SPAM action
'params' => array(
'field' => 'time_stamp', # The time stamp field
'table' => phpfox::getT('forum_post'), # Database table we plan to check
'condition' => 'user_id = ' . phpfox::getUserId(), # Database WHERE query
'time_stamp' => $iFlood * 60
)
);
# actually check if flooding
if (phpfox::getLib('spam')->check($aFlood))
{
phpfox_error::set(phpfox::getPhrase('forum.posting_a_reply_a_little_too_soon') . ' ' . phpfox::getLib('spam')->getWaitTime());
}
}
if (phpfox_error::isPassed())
{
if (($id = phpfox::getService('forum.post.process')->add($aVals, $aCallback)))
{
$this->url()->permalink('forum', $thread['thread_id'], null, true, null, array('post' => $id));
}
else
{
if (phpfox::getUserParam('forum.approve_forum_post'))
{
$this->url()->permalink('forum', $thread['thread_id'], null, true, phpfox::getPhrase('forum.your_post_has_successfully_been_added_however_it_is_pending_an_admins_approval_before_it_can_be_displayed_publicly'), array('post' => $id));
}
}
}
}
}
}
if ($aCallback === false)
{
$this->template()
->setBreadcrumb($aForum['breadcrumb'])
->setBreadcrumb($aForum['name'], $this->url()->makeUrl('forum', $aForum['name_url'] . '-' . $aForum['forum_id']));
}
$this->template()
->setBreadcrumb($thread['title'], ($aCallback === false ? $this->url()->makeUrl('forum', array($aForum['name_url'] . '-' . $aForum['forum_id'])) : $this->url()->makeUrl($aCallback['url_home'] . '.forum')))
->setBreadcrumb(($bIsEdit ? phpfox::getPhrase('forum.editing_post') . ': ' . (empty($post['title']) ? '#' . $post['post_id'] : $post['title']) : phpfox::getPhrase('forum.post_new_reply')), ($bIsEdit ? ($aCallback === false ? $this->url()->makeUrl('forum', array($thread['forum_url'] . '-' . $thread['forum_id'], null, 'post_' . $post['post_id'])) : $this->url()->makeUrl($aCallback['url_home'] . '.forum', array('post' => $post['post_id']))) : null), true)
->assign(array(
'iThreadId' => $id,
'sFormLink' => ($aCallback === false ? $this->url()->makeUrl('forum.post.reply', array('id' => $id)) : $this->url()->makeUrl('forum.post.reply', array('id' => $id, 'module' => $sModule, 'item' => $iItemId))),
'sCreateJs' => $oValid->createJS(),
'sGetJsForm' => $oValid->getJsForm((PHPFOX_IS_AJAX ? false : true)),
'sReturnLink' => ($bIsEdit ? ($aCallback === false ? $this->url()->makeUrl('forum', array($thread['forum_url'] . '-' . $thread['forum_id'], null, 'post_' . $post['post_id'])) : $this->url()->makeUrl($aCallback['url_home'] . '.forum')) : ''),
'sThreadReturnLink' => ($aCallback === false ? $this->url()->makeUrl('forum', array($thread['forum_url'] . '-' . $thread['forum_id'])) : $this->url()->makeUrl($aCallback['url_home'], array('forum'))),
'aPreviews' => phpfox::getService('forum.post')->getPreview($thread['thread_id']),
'iTotalPosts' => $thread['total_post'],
'bIsEdit' => $bIsEdit,
'aCallback' => $aCallback,
'iTotalPostPreview' => phpfox::getParam('forum.total_forum_post_preview')
)
);
if (phpfox::getUserParam('forum.can_add_forum_attachments'))
{
$this->setParam('attachment_share', [
'type' => 'forum',
'inline' => (PHPFOX_IS_AJAX ? true : false),
'id' => 'js_forum_form',
'edit_id' => ($bIsEdit ? $post['post_id'] : '')
]
);
}
}
}
}