<?php
/**
* [PHPFOX_HEADER]
*/
defined('PHPFOX') or exit('NO DICE!');
/**
*
*
* @copyright [PHPFOX_COPYRIGHT]
* @author Raymond Benc
* @package Module_Forum
* @version $Id: ajax.class.php 6864 2013-11-07 12:48:15Z Miguel_Espinoza $
*/
class Forum_Component_Ajax_Ajax extends Phpfox_Ajax
{
public function addReply()
{
Phpfox::isUser(true);
$aVals = $this->get('val');
if (!Forum_Service_Thread_Thread::instance()->canReplyOnThread($aVals['thread_id'])){
return false;
}
Ban_Service_Ban::instance()->checkAutomaticBan($aVals['text']);
if (Phpfox::getLib('parse.format')->isEmpty($aVals['text']))
{
$this->alert(_p('provide_a_reply'));
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 1000);');
return false;
}
$aCallback = false;
if (isset($aVals['module'])
&& Phpfox::isModule($aVals['module'])
&& isset($aVals['item'])
&& Phpfox::hasCallback($aVals['module'], 'addForum')
)
{
$aCallback = Phpfox::callback($aVals['module'] . '.addForum', $aVals['item']);
if ($aCallback === false)
{
$this->alert(_p('only_members_can_add_a_reply_to_threads'));
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
}
$bPassCaptcha = true;
if (Phpfox::isModule('captcha') && Phpfox::getUserParam('forum.enable_captcha_on_posting') && !Captcha_Service_Captcha::instance()->checkHash($aVals['image_verification']))
{
$bPassCaptcha = false;
$this->call("$('#js_captcha_image').ajaxCall('captcha.reload', 'sId=js_captcha_image&sInput=image_verification'); $('#js_post_entry').message('" . _p('captcha_failed_please_try_again', array('phpfox_squote' => true)) . "', 'error').slideDown('slow'); $('#js_quick_reply_form .button').attr('disabled', false).removeClass('disabled'); $('#js_quick_reply_form #text').attr('disabled', false).removeClass('disabled'); $('#js_reply_process').html('');");
}
if (!$bPassCaptcha)
{
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($aVals['thread_id'], $aCallback);
if ($aThread['is_closed'])
{
$this->alert(_p('thread_is_closed_for_posting'));
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
if ($aCallback === false && $aThread['is_announcement'])
{
$this->alert(_p('thread_is_closed_for_posting'));
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
if (!isset($aThread['thread_id']))
{
return false;
}
$bPass = false;
if ((Phpfox::getUserParam('forum.can_reply_to_own_thread') && $aThread['user_id'] == Phpfox::getUserId()) || Phpfox::getUserParam('forum.can_reply_on_other_threads') || Forum_Service_Moderate_Moderate::instance()->hasAccess($aThread['forum_id'], 'can_reply'))
{
$bPass = true;
}
if ($bPass === false)
{
$this->alert(_p('insufficient_permission_to_reply_to_this_thread'));
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
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 // Seconds);
)
);
// actually check if flooding
if (Phpfox::getLib('spam')->check($aFlood))
{
$this->alert(_p('posting_a_new_thread_a_little_too_soon') . ' ' . Phpfox::getLib('spam')->getWaitTime());
$this->call('setTimeout(\'tb_remove();$Core.processForm("#js_forum_form", true);\', 2000);');
return false;
}
}
$aVals['forum_id'] = $aThread['forum_id'];
Phpfox::getLib('parse.output')->setEmbedParser(array(
'width' => 640,
'height' => 360
)
);
if ($iId = Forum_Service_Post_Process::instance()->add($aVals, $aCallback))
{
$aPost = Forum_Service_Post_Post::instance()->getPost($iId);
Forum_Service_Thread_Process::instance()->updateTrack($aThread['thread_id']);
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($aPost['thread_id']);
$aPost['count'] = $aThread['total_post'];
$this->template()->assign(array(
'aPost' => $aPost,
'aThread' => $aThread,
'aCallback' => $aCallback
)
)->getTemplate('forum.block.post');
$this->append('#js_post_new_thread', $this->getContent(false))->call('$Core.forum.processReply(' . $aPost['post_id'] . ');');
}
else
{
if (Phpfox::getUserParam('forum.approve_forum_post') && $aCallback === false)
{
$this->call('js_box_remove($(\'#js_forum_form\'));');
$this->alert(_p('your_post_has_successfully_been_added_however_it_is_pending_an_admins_approval_before_it_can_be_displayed_publicly'));
$this->call('$("#js_reply_process").hide();');
}
}
$this->call('$Core.loadInit();');
return null;
}
public function deletePost()
{
Phpfox::isUser(true);
$aPost = Forum_Service_Post_Post::instance()->getPost($this->get('id'));
$bHasAccess = false;
if ((int) $aPost['group_id'] > 0)
{
if (Pages_Service_Pages::instance()->isAdmin($aPost['group_id']))
{
$bHasAccess = true;
}
}
else
{
if ((Forum_Service_Moderate_Moderate::instance()->hasAccess($aPost['forum_id'], 'delete_post') || User_Service_Auth::instance()->hasAccess('forum_post', 'post_id', $this->get('id'), 'forum.can_delete_own_post', 'forum.can_delete_other_posts')))
{
$bHasAccess = true;
}
}
if ($bHasAccess && Forum_Service_Post_Process::instance()->delete($this->get('id')))
{
}
}
public function getModerators()
{
Phpfox::isUser(true);
Phpfox::getUserParam('admincp.has_admin_access', true);
Phpfox::getUserParam('forum.can_manage_forum_moderators', true);
Phpfox::getBlock('forum.admincp.moderator', array('id' => $this->get('id')));
$this->html('#js_forum_edit_content', $this->getContent(false));
}
public function getModerator()
{
Phpfox::isUser(true);
Phpfox::getUserParam('admincp.has_admin_access', true);
Phpfox::getUserParam('forum.can_manage_forum_moderators', true);
$mUserData = Forum_Service_Moderate_Moderate::instance()->getUserPerm($this->get('forum_id'), $this->get('user_id'));
$this->call('$Core.forum.build(' . $mUserData . ');');
}
public function removeModerator()
{
Phpfox::isUser(true);
Phpfox::getUserParam('admincp.has_admin_access', true);
Phpfox::getUserParam('forum.can_manage_forum_moderators', true);
Forum_Service_Moderate_Process::instance()->delete($this->get('id'));
}
public function updateModerator()
{
Phpfox::isUser(true);
Phpfox::getUserParam('admincp.has_admin_access', true);
Phpfox::getUserParam('forum.can_manage_forum_moderators', true);
$aVals = $this->get('val');
if (empty($aVals['user_id']) && ((!isset($aVals['users'])) || (isset($aVals['users']) && !count($aVals['users']))))
{
$this->html('#js_update_mod', '')->alert(_p('select_moderators'));
return false;
}
if (Forum_Service_Moderate_Process::instance()->add($this->get('val')))
{
$this->html('#js_update_mod', _p('done'), '.fadeOut(5000)');
}
return null;
}
public function getText()
{
Phpfox::isUser(true);
$aPost = Forum_Service_Post_Post::instance()->getForEdit($this->get('post_id'));
$bHasAccess = false;
if ((int) $aPost['group_id'] > 0)
{
if ((Phpfox::getUserParam('forum.can_edit_own_post') && $aPost['user_id'] == Phpfox::getUserId()) || Phpfox::getUserParam('forum.can_edit_other_posts'))
{
$bHasAccess = true;
}
}
else
{
if ((Forum_Service_Moderate_Moderate::instance()->hasAccess($aPost['forum_id'], 'edit_post') || User_Service_Auth::instance()->hasAccess('forum_post', 'post_id', $this->get('post_id'), 'forum.can_edit_own_post', 'forum.can_edit_other_posts')))
{
$bHasAccess = true;
}
}
(($sPlugin = Phpfox_Plugin::get('forum.component_ajax_get_text')) ? eval($sPlugin) : false);
if (!isset($bHasPluginCall))
{
if ($bHasAccess)
{
$this->call("$('#js_quick_edit_id" . $this->get('id') . "').html('<div><div id=\"sJsEditorMenu\" class=\"editor_menu\" style=\"display:block;\">' + Editor.setId('js_quick_edit" . $this->get('id') . "').getEditor(true) + '</div><textarea style=\"width:98%;\" name=\"quick_edit_input\" cols=\"90\" rows=\"10\" id=\"js_quick_edit" . $this->get('id') . "\">" . Phpfox::getLib('parse.output')->ajax($aPost['text']) . "</textarea></div>');");
}
}
}
public function updateText()
{
Phpfox::isUser(true);
$aVals = (array) $this->get('val');
$sTxt = $aVals['text'];
if (Phpfox::getLib('parse.format')->isEmpty($sTxt))
{
$this->alert(_p('add_some_text'));
return false;
}
$aPost = Forum_Service_Post_Post::instance()->getPost($this->get('edit'));
$bHasAccess = false;
if ((int) $aPost['group_id'] > 0)
{
if ((Phpfox::getUserParam('forum.can_edit_own_post') && $aPost['user_id'] == Phpfox::getUserId()) || Phpfox::getUserParam('forum.can_edit_other_posts'))
{
$bHasAccess = true;
}
}
else
{
if ((Forum_Service_Moderate_Moderate::instance()->hasAccess($aPost['forum_id'], 'edit_post') || User_Service_Auth::instance()->hasAccess('forum_post', 'post_id', $this->get('edit'), 'forum.can_edit_own_post', 'forum.can_edit_other_posts')))
{
$bHasAccess = true;
}
}
if ($bHasAccess)
{
if (Forum_Service_Post_Process::instance()->updateText($this->get('edit'), $sTxt, $aVals))
{
$aPost = Forum_Service_Post_Post::instance()->getPost($this->get('edit'));
$this->html('#js_post_edit_text_' . $aPost['post_id'], Phpfox::getLib('parse.output')->split(Phpfox::getLib('parse.output')->parse($aPost['text']), 55));
$this->call('$("#js_post_edit_text_' . $aPost['post_id'] . '").removeClass("twa_built");');
$this->call('tb_remove();');
if(isset($aPost['attachments']) && count($aPost['attachments']) > 0)
{
Phpfox::getBlock('attachment.list', array('sType' => 'forum', 'attachments' => $aPost['attachments']));
$this->call("$('#post" . $aPost['post_id'] . "').find('.attachment_holder_view').remove();");
$this->call("$('" . $this->getContent() . "').insertAfter('#js_post_edit_text_" . $aPost['post_id'] . "');");
}
$this->call('$Core.loadInit();');
}
}
return null;
}
public function move()
{
Phpfox::isUser(true);
if (!Phpfox::getUserParam('forum.can_move_forum_thread'))
{
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
if (!Forum_Service_Moderate_Moderate::instance()->hasAccess($aThread['forum_id'], 'move_thread'))
{
$this->alert(_p('not_permitted_to_move_threads'));
return false;
}
}
Phpfox::getBlock('forum.move');
}
public function processMove()
{
Phpfox::isUser(true);
if ((Phpfox::getUserParam('forum.can_move_forum_thread') || Forum_Service_Moderate_Moderate::instance()->hasAccess($this->get('forum_id'), 'move_thread')) && Forum_Service_Thread_Process::instance()->move($this->get('thread_id'), $this->get('forum_id')))
{
$aForum = Forum_Service_Forum::instance()
->id($this->get('forum_id'))
->getForum();
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
$sUrl = Phpfox_Url::instance()->makeUrl('forum', array($aForum['name_url'] . '-' . $aForum['forum_id'], $aThread['title_url']));
Phpfox::addMessage(_p('thread_successfully_moved'));
$this->call('window.location.href = \'' . $sUrl . '\';');
}
else
{
$this->alert(_p('you_are_not_permitted_to_move_this_thread_to_this_specific_forum'));
}
}
public function copy()
{
Phpfox::isUser(true);
Phpfox::getBlock('forum.copy');
}
public function processCopy()
{
Phpfox::isUser(true);
if ((Phpfox::getUserParam('forum.can_copy_forum_thread') || Forum_Service_Moderate_Moderate::instance()->hasAccess($this->get('forum_id'), 'copy_thread')) && Forum_Service_Thread_Process::instance()->copy($this->get('thread_id'), $this->get('forum_id'), $this->get('title')))
{
$aForum = Forum_Service_Forum::instance()
->id($this->get('forum_id'))
->getForum();
$sUrl = Phpfox_Url::instance()->makeUrl('forum', array($aForum['name_url'] . '-' . $aForum['forum_id'], Phpfox::getLib('parse.input')->prepareTitle('forum', $this->get('title'), 'title_url', null, Phpfox::getT('forum_thread'), true)));
Phpfox::addMessage(_p('successfully_copied_the_thread'));
$this->call('window.location.href= \'' . $sUrl . '\';');
}
else
{
$this->alert(_p('you_are_not_permitted_to_copy_this_thread_to_this_specific_forum'));
}
}
public function deleteThread()
{
Phpfox::isUser(true);
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
$bHasAccess = false;
if ((int) $aThread['group_id'] > 0)
{
if ((Phpfox::getUserParam('forum.can_delete_own_post') && $aThread['user_id'] == Phpfox::getUserId()) || Phpfox::getUserParam('forum.can_delete_other_posts'))
{
$bHasAccess = true;
}
}
else
{
if ((Forum_Service_Moderate_Moderate::instance()->hasAccess($aThread['forum_id'], 'delete_post') || User_Service_Auth::instance()->hasAccess('forum_thread', 'thread_id', $this->get('thread_id'), 'forum.can_delete_own_post', 'forum.can_delete_other_posts')))
{
$bHasAccess = true;
}
}
if ($bHasAccess)
{
Forum_Service_Thread_Process::instance()->delete($this->get('thread_id'));
Phpfox::addMessage(_p('thread_successfully_deleted'));
if ((int) $aThread['group_id'] > 0)
{
$aPage = Pages_Service_Callback::instance()->addForum($aThread['group_id']);
if (isset($aPage['url_home']))
{
$this->call('window.location.href = \'' . $aPage['url_home'] . 'forum/\';');
}
}
else
{
$this->call('window.location.href = \'' . Phpfox_Url::instance()->makeUrl('forum') . '\';');
}
}
}
public function stickThread()
{
Phpfox::isUser(true);
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
$bHasAccess = false;
if ((int) $aThread['group_id'] > 0)
{
$sType = Phpfox::getPagesType($aThread['group_id']);
if ($sType == 'pages') {
if (Phpfox::isModule('pages') && Pages_Service_Pages::instance()->isAdmin($aThread['group_id'])) {
$bHasAccess = true;
}
} elseif ($sType == 'groups') {
if (Phpfox::isModule('groups') && Phpfox::getService('groups')->isAdmin($aThread['group_id'])) {
$bHasAccess = true;
}
}
}
else
{
if ((Phpfox::getUserParam('forum.can_stick_thread') || Forum_Service_Moderate_Moderate::instance()->hasAccess($aThread['forum_id'], 'post_sticky')))
{
$bHasAccess = true;
}
}
if ($bHasAccess)
{
if (Forum_Service_Thread_Process::instance()->stick($this->get('thread_id'), $this->get('type_id')))
{
if ($this->get('type_id') == 1)
{
$this->html('#js_stick_thread', '<li id="js_stick_thread"><a href="#" onclick="return $Core.forum.stickThread(\'' . $this->get('thread_id') . '\', 0);">' . _p('unstick_thread') . '</a></li>')->alert(_p('thread_successfully_stuck'));
}
else
{
$this->html('#js_stick_thread', '<li id="js_stick_thread"><a href="#" onclick="return $Core.forum.stickThread(\'' . $this->get('thread_id') . '\', 1);">' . _p('stick_thread') . '</a></li>')->alert(_p('thread_successfully_unstuck'));
}
}
}
}
public function closeThread()
{
Phpfox::isUser(true);
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
$bHasAccess = false;
if ((int) $aThread['group_id'] > 0)
{
}
else
{
if ((Phpfox::getUserParam('forum.can_close_a_thread') || Forum_Service_Moderate_Moderate::instance()->hasAccess($aThread['forum_id'], 'close_thread')))
{
$bHasAccess = true;
}
}
if ($bHasAccess)
{
if (Forum_Service_Thread_Process::instance()->close($this->get('thread_id'), $this->get('type_id')))
{
if ($this->get('type_id') == 1)
{
$this->html('#js_close_thread', '<li id="js_close_thread"><a href="#" onclick="return $Core.forum.closeThread(\'' . $this->get('thread_id') . '\', 0);">' . _p('open_thread') . '</a></li>')->hide('#js_quick_reply')->alert(_p('thread_successfully_closed'));
}
else
{
$this->html('#js_close_thread', '<li id="js_close_thread"><a href="#" onclick="return $Core.forum.closeThread(\'' . $this->get('thread_id') . '\', 1);">' . _p('close_thread') . '</a></li>')->show('#js_quick_reply')->alert(_p('thread_successfully_opened'));
}
}
}
}
public function merge()
{
Phpfox::isUser(true);
Phpfox::getBlock('forum.merge');
}
public function processMerge()
{
Phpfox::isUser(true);
$this->error(false);
$aThread = Forum_Service_Thread_Thread::instance()->getActualThread($this->get('thread_id'));
$bHasAccess = false;
$mReturn = false;
if ((int) $aThread['group_id'] > 0)
{
$aPage = Pages_Service_Pages::instance()->getForView($aThread['group_id']);
if (isset($aPage['is_admin']) && $aPage['is_admin'])
{
$bHasAccess = true;
}
}
else
{
if ((Phpfox::getUserParam('forum.can_merge_forum_threads') || Forum_Service_Moderate_Moderate::instance()->hasAccess($this->get('forum_id'), 'merge_thread')))
{
$bHasAccess = true;
}
}
if ($bHasAccess)
{
$mReturn = Forum_Service_Thread_Process::instance()->merge($this->get('thread_id'), $this->get('forum_id'), $this->get('url'));
}
else
{
Phpfox_Error::set(_p('not_allowed_to_merge_threads_from_this_specific_forum'));
}
if ($mReturn !== false)
{
Phpfox::addMessage(_p('threads_successfully_merged'));
$this->call('window.location.href = \'' . $mReturn . '\';');
}
else
{
$aErrors = Phpfox_Error::get();
$sErrors = '';
foreach ($aErrors as $sError)
{
$sErrors .= '<div class="error_message">' . $sError . '</div>';
}
$this->html('#js_error_message', '' . $sErrors . '');
}
}
public function subscribe()
{
if ($this->get('subscribe'))
{
Forum_Service_Subscribe_Process::instance()->add($this->get('thread_id'), Phpfox::getUserId());
}
else
{
Forum_Service_Subscribe_Process::instance()->delete($this->get('thread_id'), Phpfox::getUserId());
}
}
/**
* Only meant ofr the ajax call available to admins and moderators, regular users should use the
* link to the ad.sponsor
* type 1 = sponsor; 0|else = unsponsor
*/
public function sponsor()
{
$iThreadId = (int)$this->get('thread_id');
$iType = (int)$this->get('type');
if (!Phpfox::isModule('ad'))
{
return $this->alert('your_request_is_invalid');
}
if (Forum_Service_Thread_Process::instance()->sponsor($iThreadId, $iType))
{
// ajax call to change the hidden status for the spans
if ($iType == '2')
{
Phpfox::getService('ad.process')->addSponsor(array('module' => 'forum', 'section'=>'thread', 'item_id' => $iThreadId));
// making sponsored means hide sponsor and show unsponsor
$this->call('$("#js_sponsor_thread_'.$iThreadId.'").hide();');
$this->call('$("#js_unsponsor_thread_'.$iThreadId.'").show();');
$this->alert(_p('thread_successfully_sponsored'));
}
else
{
Phpfox::getService('ad.process')->deleteAdminSponsor('forum-thread', $iThreadId);
$this->call('$("#js_sponsor_thread_'.$iThreadId.'").show();');
$this->call('$("#js_unsponsor_thread_'.$iThreadId.'").hide();');
$this->alert(_p('thread_successfully_unsponsored'));
}
}
}
public function approvePost()
{
Phpfox::getUserParam('forum.can_approve_forum_post', true);
if (Forum_Service_Post_Process::instance()->approve($this->get('post_id')))
{
$this->call('$(\'#post' . $this->get('post_id') . '\').find(\'.forum_content:first\').removeClass(\'row_moderate\');');
}
}
public function thanks()
{
Phpfox::isUser(true);
Phpfox::getUserParam('forum.can_thank_on_forum_posts', true);
if ($iThankId = Forum_Service_Post_Process::instance()->thank($this->get('post_id'))) {
$this->call('$("#forum_thanks_btn_' . $this->get('post_id') . '").addClass("thanked");');
$this->call('$("#forum_thanks_btn_' . $this->get('post_id') . '").attr("onclick","$.ajaxCall(\'forum.removeThanks\', \'thank_id=' . $iThankId . '\');return false;");');
$iThanksCount = Forum_Service_Post_Post::instance()->getThanksCount($this->get('post_id'));
$sCountPhrase = _p('thanks_count', array('count' => $iThanksCount));
$this->show('#js_thank_' . $this->get('post_id'));
$this->call('$("#js_thank_' . $this->get('post_id') . ' a").html("' . $sCountPhrase . '");');
}
}
public function removeThanks()
{
Phpfox::isUser(true);
if ($iPostId = Forum_Service_Post_Process::instance()->deleteThanks($this->get('thank_id'))) {
if(!$this->get('popup', false) || ($this->get('user_id', 0) == Phpfox::getUserId())) {
$this->call('$("a#forum_thanks_btn_' . $iPostId . '").removeClass("thanked");');
$this->call('$("a#forum_thanks_btn_' . $iPostId . '").attr("onclick","$.ajaxCall(\'forum.thanks\', \'post_id=' . $iPostId . '\');return false;");');
}
if($this->get('popup', false)) {
$this->slideUp('#js_post_' . $iPostId . '_thank_' . $this->get('user_id', 0));
}
$iThanksCount = Forum_Service_Post_Post::instance()->getThanksCount($iPostId);
if ($iThanksCount == 0) {
$this->hide('div#js_thank_' . $iPostId);
}
else {
$sCountPhrase = _p('thanks_count', array('count' => $iThanksCount));
$this->call('$("div#js_thank_' . $iPostId . ' a").html("' . $sCountPhrase . '");');
}
}
}
public function thanksBrowse()
{
$this->error(false);
Phpfox::getBlock('forum.thanks');
$sTitle = _p('people_who_thanked_this');
$this->setTitle($sTitle);
$this->call('<script>$Core.loadInit();</script>');
}
public function loadPermissions()
{
Phpfox::isUser(true);
Phpfox::getUserParam('forum.can_manage_forum_permissions', true);
if ($this->get('user_group_id'))
{
$this->template()->assign('aPerms', Forum_Service_Forum::instance()->getUserGroupAccess($this->get('forum_id'), $this->get('user_group_id')))->getTemplate('forum.block.admincp.permission');
$aUserGroup = User_Service_Group_Group::instance()->getGroup($this->get('user_group_id'));
$this->slideDown('#js_display_perms')
->show('#js_save_perms')
->html('#js_form_perm_group', $aUserGroup['title'])
->html('#js_display_list_perms', $this->getContent(false));
$this->call('$Core.loadInit();');
}
}
public function savePerms()
{
Phpfox::isUser(true);
Phpfox::getUserParam('forum.can_manage_forum_permissions', true);
if (Forum_Service_Process::instance()->savePerms($this->get('val')))
{
$this->softNotice(_p('permissions_saved_successfully'));
}
}
public function permReset()
{
Phpfox::isUser(true);
Phpfox::getUserParam('forum.can_manage_forum_permissions', true);
Forum_Service_Process::instance()->resetPerms($this->get('forum_id'), $this->get('user_group_id'));
$this->template()->assign('aPerms', Forum_Service_Forum::instance()->getUserGroupAccess($this->get('forum_id'), $this->get('user_group_id')))->getTemplate('forum.block.admincp.permission');
$this->html('#js_display_list_perms', $this->getContent(false));
}
public function deletePoll()
{
if (User_Service_Auth::instance()->hasAccess('poll', 'poll_id', $this->get('poll_id'), 'poll.poll_can_delete_own_polls', 'poll.poll_can_delete_others_polls'))
{
Poll_Service_Process::instance()->moderatePoll($this->get('poll_id'), 2);
Phpfox_Database::instance()->update(Phpfox::getT('forum_thread'), array('poll_id' => '0'), 'thread_id = ' . (int) $this->get('thread_id'));
$this->show('#js_attach_poll')->html('#js_attach_poll_question', '');
}
}
public function reply()
{
define('PHPFOX_FORUM_REPLY_THREAD', true);
if (!$this->get('edit') && !$this->get('quote'))
{
$this->setTitle(_p('post_a_reply'));
}
Phpfox::getComponent('forum.post', array(), 'controller');
(($sPlugin = Phpfox_Plugin::get('forum.component_ajax_reply')) ? eval($sPlugin) : false);
$this->call('<script>$Core.loadInit();</script>');
}
public function moderation()
{
Phpfox::isUser(true);
switch ($this->get('action'))
{
case 'approve':
Phpfox::getUserParam('forum.can_approve_forum_thread', true);
foreach ((array) $this->get('item_moderate') as $iId)
{
Forum_Service_Thread_Process::instance()->approve($iId);
$this->call('$(".js_selector_class_' . $iId . '").parent().prev().remove();');
$this->call('$(".js_selector_class_' . $iId . '").parent().remove();');
}
$this->updateCount();
$sMessage = _p('thread_s_successfully_approved');
break;
case 'delete':
Phpfox::getUserParam('forum.can_delete_other_posts', true);
foreach ((array) $this->get('item_moderate') as $iId)
{
Forum_Service_Thread_Process::instance()->delete($iId);
$this->call('$(".js_selector_class_' . $iId . '").parent().prev().remove();');
$this->call('$(".js_selector_class_' . $iId . '").parent().remove();');
}
$sMessage = _p('thread_s_successfully_deleted');
break;
default:
$sMessage = '';
break;
}
$this->alert($sMessage, _p('moderation'), 300, 150, true);
$this->hide('.moderation_process');
}
public function postModeration()
{
Phpfox::isUser(true);
switch ($this->get('action'))
{
case 'approve':
Phpfox::getUserParam('forum.can_approve_forum_thread', true);
foreach ((array) $this->get('item_moderate') as $iId)
{
Forum_Service_Post_Process::instance()->approve($iId);
$this->call('$(\'#post' . $iId . '\').parent().remove();');
}
$this->updateCount();
$sMessage = _p('post_s_successfully_approved');
break;
case 'delete':
Phpfox::getUserParam('forum.can_delete_other_posts', true);
foreach ((array) $this->get('item_moderate') as $iId)
{
Forum_Service_Post_Process::instance()->delete($iId);
$this->call('$(\'#post' . $iId . '\').parent().remove();');
}
$sMessage = _p('post_s_successfully_deleted');
break;
default:
$sMessage = '';
break;
}
$this->alert($sMessage, 'Moderation', 300, 150, true);
$this->hide('.moderation_process');
}
}