Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Не сортируются сообщения IPB 3.3.4

Опубликовано:

Всем доброго время суток.. Столкнулся с такой проблемой, не сортируются сообщения в теме. А точнее сортируются но не так как мне нужно.. Я выставил сортировку от Я до А а сортируются они от А до Я. После написания сообщения они становятся правильно но после обновления страницы они подымаются в первый пост. может кто то знает в чем может быть проблема?!?!? Я уже голову сломал..

Вот изменения которые я делал до этого инцидента:

Змамина код со старого форума applications/forums/modules_admin/forums/forums.php потому что в АЦ не открывалась вкладка форумы я вот думаю что то тут не правильно..

 

Вот код:

 

/**

*

* Invision Power Services

* IP.Board v3.3.4

* Forum management

* Last Updated: $Date: 2012-06-15 08:09:05 -0400 (Fri, 15 Jun 2012) $

*

 

*

* @author $Author: AndyMillne $

* @copyright © 2001 - 2009 Invision Power Services, Inc.

* @license Nulled by IPBZona.ru

* @package IP.Board

* @subpackage Forums

* @link http://www.invisionpower.com

* @since Tuesday 17th August 2004

* @version $Revision: 10929 $

*/

 

if ( ! defined( 'IN_ACP' ) )

{

print "

Incorrect access

You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";

exit();

}

 

class admin_forums_forums_forums extends ipsCommand

{

/**

* Skin HTML object

*

* @var object

*/

protected $html;

 

/**

* Main entry point

*

* @param object ipsRegistry reference

* @return @e void Outputs to screen

*/

public function doExecute( ipsRegistry $registry )

{

//-----------------------------------------

// Load skin & lang

//-----------------------------------------

 

$this->html = $this->registry->output->loadTemplate( 'cp_skin_forums' );

$this->html->form_code = 'module=forums&section=forums&';

$this->html->form_code_js = 'module=forums&section=forums&';

 

$this->lang->loadLanguageFile( array( 'admin_forums' ) );

 

//-----------------------------------------

// LOAD HTML

//-----------------------------------------

 

$this->registry->getClass('class_forums')->html =& $this->html;

 

/* Load tagging stuff */

if ( ! $this->registry->isClassLoaded('tags') )

{

require_once( IPS_ROOT_PATH . 'sources/classes/tags/bootstrap.php' );/*noLibHook*/

$this->registry->setClass( 'tags', classes_tags_bootstrap::run( 'forums', 'topics' ) );

}

 

/* Init */

if ( ! $this->registry->isClassLoaded('topics') )

{

$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' );

$this->registry->setClass( 'topics', new $classToLoad( $this->registry ) );

}

 

//-----------------------------------------

// To do...

//-----------------------------------------

 

switch( $this->request['do'] )

{

case 'forum_add':

case 'new':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_add' );

$this->forumForm( 'new' );

break;

case 'donew':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_add' );

$this->forumSave( 'new' );

break;

//------------------- ----------------------

case 'edit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_edit' );

$this->forumForm( 'edit' );

break;

case 'doedit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_edit' );

$this->forumSave( 'edit' );

break;

//-----------------------------------------

case 'pedit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_permissions' );

$this->permEditForm();

break;

case 'pdoedit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_permissions' );

$this->permDoEdit();

break;

//-----------------------------------------

case 'doreorder':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_reorder' );

$this->doReorder();

break;

//-----------------------------------------

case 'delete':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_delete' );

$this->deleteForm();

break;

case 'dodelete':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_delete' );

$this->doDelete();

break;

//-----------------------------------------

case 'recount':

$this->recount();

break;

//-----------------------------------------

case 'empty':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_empty' );

$this->emptyForum();

break;

case 'doempty':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_empty' );

$this->doEmpty();

break;

//-----------------------------------------

case 'frules':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_rules' );

$this->showRules();

break;

case 'dorules':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_rules' );

$this->doRules();

break;

//-----------------------------------------

case 'skinedit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_skins' );

$this->skinEdit();

break;

case 'doskinedit':

$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'forums_skins' );

$this->doSkinEdit();

break;

//-----------------------------------------

case 'forums_overview':

default:

$this->request['do'] = 'forums_overview';

$this->showForums();

break;

}

 

//-----------------------------------------

// Pass to CP output hander

//-----------------------------------------

 

$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();

$this->registry->output->sendOutput();

}

 

/**

* Edit skins assigned to forums

*

* @return @e void Outputs to screen

*/

public function skinEdit()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

 

if( $this->request['f'] == "" )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1131 );

}

 

/* Forum Data */

$forum = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ];

 

/* Check the forum */

if ( ! $forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1132 );

}

 

if ( ! $forum['skin_id'] )

{

$forum['skin_id'] = -1;

}

 

/* Skins */

$skin_list = array_merge( array( array( -1, $this->lang->words['for_noneall'] ) ), $this->registry->output->generateSkinDropdown() );

 

/* Form Data */

$forum['fsid'] = $this->registry->output->formDropdown( 'fsid', $skin_list, $forum['skin_id'] );

$forum['apply_to_children'] = $this->registry->output->formYesNo( 'apply_to_children' );

 

/* Output */

$this->registry->output->extra_nav[] = array( '', $this->lang->words['modify_skin_head'] );

$this->registry->output->html .= $this->html->forumSkinOptions( $this->request['f'], $forum );

}

 

/**

* Save the skin assigned to the forum

*

* @return @e void Outputs to screen

*/

public function doSkinEdit()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

 

/* Check the forum */

if ($this->request['f'] == "")

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1133 );

}

 

/* Forum Data */

$forum = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ];

 

/* Update the forum */

$this->DB->update( 'forums', array( 'skin_id' => $this->request['fsid'] ), 'id='.$this->request['f'] );

 

/* Apply to children */

if( $this->request['apply_to_children'] )

{

$ids = $this->registry->getClass('class_forums')->forumsGetChildren( $this->request['f'] );

 

if ( count( $ids ) )

{

$this->DB->update( 'forums', array( 'skin_id' => $this->request['fsid'] ), 'id IN ('.implode(",",$ids).')' );

}

}

 

$this->registry->output->global_message = $this->lang->words['for_skinup'];

 

$this->registry->getClass('class_forums')->forumsInit();

 

/* Bounce */

$this->request['f'] = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ]['parent_id'];

$this->showForums();

}

 

/**

* Show the form to edit rules

*

* @return @e void Outputs to screen

*/

public function showRules()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

 

if( ! $this->request['f'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1134 );

}

 

$this->DB->build( array( 'select' => 'id, name, show_rules, rules_title, rules_text, rules_raw_html', 'from' => 'forums', 'where' => "id=".$this->request['f'] ) );

$this->DB->execute();

 

//-----------------------------------------

// Make sure we have a legal forum

//-----------------------------------------

 

if ( ! $this->DB->getTotalRows() )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1135 );

}

 

$forum = $this->DB->fetch();

 

/* Load editor stuff */

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );

$_editor = new $classToLoad();

 

$_editor->setAllowHtml( 1 );

$_editor->setAllowSmilies( 1 );

$_editor->setContent( $forum['rules_text'], 'rules' );

 

$forum['_editor'] = $_editor->show( 'body', array( 'height' => 350, 'isHtml' => 1 ) );

 

/* Form Fields */

$forum['_show_rules'] = $this->registry->output->formDropdown( "show_rules", array(

array( '0' , $this->lang->words['for_rulesdont'] ),

array( '1' , $this->lang->words['for_ruleslink'] ),

array( '2' , $this->lang->words['for_rulesfull'] )

), $forum['show_rules'] );

 

$forum['_title'] = $this->registry->output->formInput( "title", IPSText::stripslashes( str_replace( "'", ''', $forum['rules_title'] ) ) );

 

$forum['rules_raw_html'] = $this->registry->output->formCheckbox( 'rules_raw_html', $forum['rules_raw_html'] );

 

/* Output */

$this->registry->output->extra_nav[] = array( '', $this->lang->words['frm_rulessetup'] );

$this->registry->output->html .= $this->html->forumRulesForm( $forum['id'], $forum );

}

 

/**

* Save the forum rules

*

* @return @e void Outputs to screen

*/

public function doRules()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

 

if( $this->request['f'] == "" )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1136 );

}

 

/* Load editor stuff */

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );

$_editor = new $classToLoad();

 

/* About me editor */

$_editor->setAllowHtml( 1 );

$_editor->setAllowSmilies( 0 );

 

$_POST['body'] = $_editor->process( $_POST['body'] );

 

IPSText::getTextClass('bbcode')->parsing_section = 'rules';

$_POST['body'] = IPSText::getTextClass('bbcode')->preDbParse( $_POST['body'] );

 

$rules = array(

'rules_title' => IPSText::stripslashes( $_POST['title'] ),

'rules_text' => IPSText::stripslashes( $_POST['body'] ),

'show_rules' => $this->request['show_rules'],

//'rules_raw_html' => intval($this->request['rules_raw_html']),

);

 

$this->DB->update( 'forums', $rules, 'id='.$this->request['f'] );

 

$this->registry->output->global_message = $this->lang->words['for_rulesup'];

 

//-----------------------------------------

// Bounce back to parent...

//-----------------------------------------

 

$this->request['f'] = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ]['parent_id'];

$this->showForums();

}

 

/**

* Recount the forum

*

* @param integer [optional] Forum id

* @return @e void Outputs to screen

*/

public function recount($f_override="")

{

//-----------------------------------------

// Remap

//-----------------------------------------

 

if( $f_override )

{

ipsRegistry::$request['f'] = $f_override;

}

 

$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/moderate.php', 'moderatorLibrary', 'forums' );

$modfunc = new $classToLoad( $this->registry );

 

$modfunc->forumRecount($this->request['f']);

 

$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['for_recountedlog'], $this->registry->getClass('class_forums')->forum_by_id[$this->request['f']]['name'] ) );

 

$this->registry->output->global_message = $this->lang->words['for_resynched'];

 

//-----------------------------------------

// Bounce back to parent...

//-----------------------------------------

 

ipsRegistry::$request['f'] = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ]['parent_id'] ;

$this->showForums();

}

 

/**

* Show the form to empty a forum

*

* @return @e void Outputs to screen

*/

public function emptyForum()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

$form_array = array();

 

if( !$this->request['f'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1137 );

}

 

$forum = $this->DB->buildAndFetch( array( 'select' => 'id, name', 'from' => 'forums', 'where' => "id=" . $this->request['f'] ) );

 

//-----------------------------------------

// Make sure we have a legal forum

//-----------------------------------------

 

if ( ! $forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 1138 );

}

 

/* Now lets check and see if we've any archived topics and that */

$count = $this->registry->topics->getTopics( array( 'forumId' => array( $forum['id'] ),

'archiveState' => array( 'archived', 'working', 'restore' ),

'getCountOnly' => true ) );

 

if ( $count )

{

$this->registry->output->showError( $this->lang->words['contains_archived_topics_so_there_haha'], '1138.1' );

}

 

//-----------------------------------------

 

$this->registry->output->extra_nav[] = array( '', $this->lang->words['frm_emptytitle'] );

$this->registry->output->html .= $this->html->forumEmptyForum( $forum );

}

 

/**

* Empty a forum

*

* @return @e void Outputs to screen

*/

public function doEmpty()

{

/* INI */

$this->request['f'] = intval( $this->request['f'] );

$soFar = intval($this->request['sofar']);

$thisCycle = 0;

 

//-----------------------------------------

// Get module

//-----------------------------------------

 

$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/moderate.php', 'moderatorLibrary', 'forums' );

$modfunc = new $classToLoad( $this->registry );

 

if( !$this->request['f'] )

{

$this->registry->output->showError( $this->lang->words['for_noid_source'], 1139 );

}

 

//-----------------------------------------

// Check to make sure its a valid forum.

//-----------------------------------------

 

$forum = $this->DB->buildAndFetch( array( 'select' => 'id, name, posts, topics', 'from' => 'forums', 'where' => "id=" . $this->request['f'] ) );

 

if( !$forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_nodetails'], 11310 );

}

 

$this->DB->build( array( 'select' => 'tid', 'from' => 'topics', 'where' => "forum_id=" . $this->request['f'], 'limit' => array( 0, 200 ) ) );

$outer = $this->DB->execute();

 

//-----------------------------------------

// What to do..

//-----------------------------------------

 

while( $t = $this->DB->fetch($outer) )

{

$modfunc->topicDeleteFromDB( $t['tid'] );

$thisCycle++;

}

 

//-----------------------------------------

// Rebuild stats and cache if we're done

//-----------------------------------------

 

if( !$thisCycle )

{

$modfunc->forumRecount( $this->request['f'] );

 

$this->cache->rebuildCache( 'stats', 'global' );

 

$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['for_emptiedlog'], $forum['name'] ) );

 

$this->request['f'] = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ]['parent_id'];

 

$this->registry->output->global_message = $this->lang->words['for_emptied'];

$this->showForums();

}

else

{

$soFar = $soFar + $thisCycle;

$this->registry->output->html .= $this->registry->output->global_template->temporaryRedirect( $this->settings['base_url'] . $this->html->form_code . "&do=doempty&f={$this->request['f']}&sofar={$soFar}", sprintf( $this->lang->words['emptyforum_sofarcycle'], $soFar ) );

}

}

 

/**

* Show the form to delete a form

*

* @return @e void Outputs to screen

*/

public function deleteForm()

{

//-----------------------------------------

// Init

//-----------------------------------------

 

$this->request['f'] = intval( $this->request['f'] );

$form_array = array();

if ( ! $this->request['f'] )

{

$this->registry->output->showError( $this->lang->words['for_noid_delete'], 11311 );

}

 

$this->DB->build( array( 'select' => 'id, name, parent_id', 'from' => 'forums', 'order' => 'position' ) );

$forums = $this->DB->execute($forums);

 

if( $this->DB->getTotalRows() < 2 )

{

$this->registry->output->showError( $this->lang->words['for_lastforum'], 11312 );

}

 

/* Now lets check and see if we've any archived topics and that */

$count = $this->registry->topics->getTopics( array( 'forumId' => array( $this->request['f'] ),

'archiveState' => array( 'archived', 'working', 'restore' ),

'getCountOnly' => true ) );

 

if ( $count )

{

$this->registry->output->showError( $this->lang->words['contains_archived_topics_so_there_haha'], '11312.1' );

}

 

while( $r = $this->DB->fetch( $forums ) )

{

 

if( $r['id'] == $this->request['f'] )

{

 

$name = $r['name'];

$is_cat = $r['parent_id'] > 0 ? 0 : 1;

continue;

}

}

 

//-----------------------------------------

// Where would you like to move topics?

//-----------------------------------------

 

$posts = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'topics', 'where' => 'forum_id='.$this->request['f'] ) );

if( $posts['count'] )

{

$move = $this->registry->output->formDropdown( "MOVE_ID", array_merge( array( array( 0, $this->lang->words['forum_delete_select'] ) ), $this->registry->getClass('class_forums')->adForumsForumList( 1, TRUE, array( $this->request['f'] ) ) ) );

}

 

//-----------------------------------------

// Where would you like to move subforums?

//-----------------------------------------

 

$subforums = array();

$this->DB->build( array( 'select' => 'id', 'from' => 'forums', 'where' => "parent_id={$this->request['f']}" ) );

$this->DB->execute();

while ( $row = $this->DB->fetch() )

{

$subforums[] = $row['id'];

}

 

if ( !empty( $subforums ) )

{

$subforums[] = $this->request['f'];

$subs = $this->registry->output->formDropdown( "new_parent_id", array_merge( array( array( 0, $this->lang->words['forum_delete_select'] ) ), $this->registry->getClass('class_forums')->adForumsForumList( FALSE, FALSE, $subforums ) ) );

}

 

//-----------------------------------------

// Output

//-----------------------------------------

 

/* Output */

$this->registry->output->extra_nav[] = array( '', $this->lang->words['frm_deletebutton'] );

$this->registry->output->html .= $this->html->forumDeleteForm( $this->request['f'], $name, $move, $is_cat, $subs );

}

 

/**

* Delete a forum

*

* @return @e void Outputs to screen

*/

public function doDelete()

{

//-----------------------------------------

// Auth check...

//-----------------------------------------

 

$this->registry->adminFunctions->checkSecurityKey();

 

//-----------------------------------------

// Continue

//-----------------------------------------

 

$this->request['f'] = intval( $this->request['f'] );

$this->request['new_parent_id'] = intval( $this->request['new_parent_id'] );

 

$forum = $this->registry->class_forums->forum_by_id[ $this->request['f'] ];

 

if( ! $forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_noid_source'], 11313 );

}

 

if( ! $this->request['new_parent_id'] )

{

$this->request['new_parent_id'] = -1;

}

else

{

if( $this->request['new_parent_id'] == $this->request['f'] )

{

$this->registry->output->global_message = $this->lang->words['for_child_no_parent'];

$this->deleteForm();

return;

}

}

 

//-----------------------------------------

// Would deleting this category orphan the only

// remaining forums?

//-----------------------------------------

 

if( $forum['parent_id'] == -1 )

{

$otherParent = 0;

 

foreach( $this->registry->class_forums->forum_by_id as $id => $data )

{

if( $data['parent_id'] == -1 )

{

$otherParent = $id;

break;

}

}

 

if( !$otherParent )

{

$this->registry->output->showError( $this->lang->words['nodelete_last_cat'], 11364 );

}

}

 

//-----------------------------------------

// Get library

//-----------------------------------------

 

$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/moderate.php', 'moderatorLibrary', 'forums' );

$modfunc = new $classToLoad( $this->registry );

 

/* Load tagging stuff */

if ( ! $this->registry->isClassLoaded('tags') )

{

require_once( IPS_ROOT_PATH . 'sources/classes/tags/bootstrap.php' );/*noLibHook*/

$this->registry->setClass( 'tags', classes_tags_bootstrap::run( 'forums', 'topics' ) );

}

 

//-----------------------------------------

// Move stuff

//-----------------------------------------

 

if ( isset( $this->request['MOVE_ID'] ) )

{

$this->request['MOVE_ID'] = intval( $this->request['MOVE_ID'] );

 

if ( ! $this->request['MOVE_ID'] )

{

$this->registry->output->global_error = $this->lang->words['forum_delete_none_selected'];

$this->deleteForm();

return;

}

 

if ( $this->request['MOVE_ID'] == $this->request['f'] )

{

$this->registry->output->global_error = $this->lang->words['for_wherewhatwhy'];

$this->deleteForm();

return;

}

 

//-----------------------------------------

// Move topics...

//-----------------------------------------

 

$this->DB->update( 'topics', array( 'forum_id' => $this->request['MOVE_ID'] ), 'forum_id='.$this->request['f'] );

 

//-----------------------------------------

// Move polls...

//-----------------------------------------

 

$this->DB->update( 'polls', array( 'forum_id' => $this->request['MOVE_ID'] ), 'forum_id='.$this->request['f'] );

 

//-----------------------------------------

// Move voters...

//-----------------------------------------

 

$this->DB->update( 'voters', array( 'forum_id' => $this->request['MOVE_ID'] ), 'forum_id='.$this->request['f'] );

 

/* Move tags */

$this->registry->tags->moveTagsByParentId( $this->request['f'], $this->request['MOVE_ID'] );

 

$modfunc->forumRecount( $this->request['MOVE_ID'] );

}

 

//-----------------------------------------

// Delete the forum

//-----------------------------------------

 

$this->DB->delete( 'forums', "id=".$this->request['f'] );

$this->DB->delete( 'permission_index', "app='forums' AND perm_type='forum' AND perm_type_id=".$this->request['f'] );

 

//-----------------------------------------

// Remove moderators from this forum

//-----------------------------------------

 

$this->DB->build( array( 'select' => '*', 'from' => 'moderators', 'where' => "forum_id LIKE '%,{$this->request['f']},%'" ) );

$outer = $this->DB->execute();

 

while( $r = $this->DB->fetch($outer) )

{

$forums = explode( ',', IPSText::cleanPermString( $r['forum_id'] ) );

$newForums = array();

 

foreach( $forums as $aForumId )

{

if( $aForumId != $this->request['f'] )

{

$newForums[] = $aForumId;

}

}

 

if( !count($newForums) )

{

$this->DB->delete( 'moderators', "mid=" . $r['mid'] );

}

else

{

$this->DB->update( 'moderators', array( 'forum_id' => ',' . implode( ',', $newForums ) . ',' ), 'mid=' . $r['mid'] );

}

}

 

//-----------------------------------------

// Delete forum subscriptions

//-----------------------------------------

 

require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/

$_like = classes_like::bootstrap( 'forums', 'forums' );

$_like->remove( $this->request['f'] );

 

//-----------------------------------------

// Update children

//-----------------------------------------

 

$this->DB->update( 'forums', array( 'parent_id' => $this->request['new_parent_id'] ), "parent_id=" . $this->request['f'] );

 

//-----------------------------------------

// Rebuild moderator cache

//-----------------------------------------

 

$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'forums' ) . '/modules_admin/forums/moderator.php', 'admin_forums_forums_moderator' );

$moderator = new $classToLoad();

$moderator->makeRegistryShortcuts( $this->registry );

$moderator->rebuildModeratorCache();

 

$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['for_removedlog'], $forum['name'] ) );

 

$this->registry->output->global_message = $this->lang->words['for_removed'];

$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );

}

 

/**

* Show the form to edit a forum

*

* @param string [new|edit]

* @param boolean Whether to change forum to category/back

* @return @e void Outputs to screen

*/

public function forumForm( $type='edit', $changetype=0 )

{

//-----------------------------------------

// INIT

//-----------------------------------------

 

$addnew_type = ( isset( $this->request['type'] ) ) ? $this->request['type'] : 'forum';

 

$form = array();

$forum = array();

$forum_id = $this->request['f'] ? intval( $this->request['f'] ) : 0;

$parentid = intval( $this->request['p'] ) ? intval( $this->request['p'] ) : -1;

$cat_id = $this->request['c'] ? intval( $this->request['c'] ) : 0;

$f_name = $this->request['name'] ? $this->request['name'] : '';

$subcanpost = $cat_id == 1 ? 0 : 1;

$perm_matrix = "";

$dd_state = array( 0 => array( 1, $this->lang->words['for_active'] ), 1 => array( 0, $this->lang->words['for_readonly'] ) );

$dd_moderate = array(

0 => array( 0, $this->lang->words['for_no'] ),

1 => array( 1, $this->lang->words['for_modall'] ),

2 => array( 2, $this->lang->words['for_modtop'] ),

3 => array( 3, $this->lang->words['for_modrep'] ),

);

$dd_prune = array(

0 => array( 1, $this->lang->words['for_today'] ),

1 => array( 5, $this->lang->words['for_last5'] ),

2 => array( 7, $this->lang->words['for_last7'] ),

3 => array( 10, $this->lang->words['for_last10'] ),

4 => array( 15, $this->lang->words['for_last15'] ),

5 => array( 20, $this->lang->words['for_last20'] ),

6 => array( 25, $this->lang->words['for_last25'] ),

7 => array( 30, $this->lang->words['for_last30'] ),

8 => array( 60, $this->lang->words['for_last60'] ),

9 => array( 90, $this->lang->words['for_last90'] ),

10=> array( 100, $this->lang->words['for_showall'] ),

);

 

$dd_order = array(

0 => array( 'last_post', $this->lang->words['for_s_last'] ),

1 => array( 'title' , $this->lang->words['for_s_topic'] ),

2 => array( 'starter_name', $this->lang->words['for_s_name'] ),

3 => array( 'posts' , $this->lang->words['for_s_post'] ),

4 => array( 'views' , $this->lang->words['for_s_view'] ),

5 => array( 'start_date', $this->lang->words['for_s_date'] ),

6 => array( 'last_poster_name' , $this->lang->words['for_s_poster'] )

);

 

$dd_by = array(

0 => array( 'Z-A', $this->lang->words['for_desc'] ),

1 => array( 'A-Z', $this->lang->words['for_asc'] )

);

 

$dd_filter = array(

0 => array( 'all', $this->lang->words['for_all'] ),

1 => array( 'open', $this->lang->words['for_open'] ),

2 => array( 'hot', $this->lang->words['for_hot'] ),

3 => array( 'poll', $this->lang->words['for_poll'] ),

4 => array( 'locked', $this->lang->words['for_locked'] ),

5 => array( 'moved', $this->lang->words['for_moved'] ),

6 => array( 'istarted', $this->lang->words['for_istarted'] ),

7 => array( 'ireplied', $this->lang->words['for_ireplied'] ),

);

 

//-----------------------------------------

// EDIT

//-----------------------------------------

 

if ( $type == 'edit' or $this->request['duplicate'] )

{

//-----------------------------------------

// Check

//-----------------------------------------

 

if ( ! $forum_id )

{

$this->registry->output->showError( $this->lang->words['for_noforumselected'], 11314 );

}

 

//-----------------------------------------

// Do not show forum in forum list

//-----------------------------------------

 

$this->registry->getClass('class_forums')->exclude_from_list = $forum_id;

 

//-----------------------------------------

// Get this forum

//-----------------------------------------

 

$forum = $this->registry->class_forums->getForumById( $forum_id );

 

//-----------------------------------------

// Check

//-----------------------------------------

 

if( !$forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 11315 );

}

 

//-----------------------------------------

// Set up code buttons

//-----------------------------------------

 

$addnew_type = $forum['parent_id'] == -1 ? 'category' : 'forum';

 

if( $changetype )

{

$addnew_type = $addnew_type == 'category' ? 'forum' : 'category';

}

 

if( $addnew_type == 'category' )

{

$title = sprintf( $this->lang->words['for_editcat'], $forum['name'] );

$button = $this->lang->words['for_editcat_button'];

$code = "doedit";

}

else

{

$title = sprintf( $this->lang->words['for_editfor'], $forum['name'] );

$button = $this->lang->words['for_editfor_button'];

$code = "doedit";

}

 

//-----------------------------------------

// Duplicating?

//-----------------------------------------

 

if ( $this->request['duplicate'] )

{

$forum['id'] = 0;

$this->request['f'] = 0;

$code = 'donew';

}

}

 

//-----------------------------------------

// NEW

//-----------------------------------------

 

else

{

# Ensure there is an ID

$this->request['f'] = 0;

 

if( $changetype )

{

$addnew_type = $addnew_type == 'category' ? 'forum' : 'category';

}

 

if( $addnew_type == 'category' )

{

$forum = array(

'sub_can_post' => $subcanpost,

'name' => $f_name ? $f_name : $this->lang->words['for_newcat'],

'parent_id' => $parentid,

'use_ibc' => 1,

'allow_poll' => 1,

'prune' => 100,

'topicfilter' => 'all',

'sort_key' => 'last_post',

'sort_order' => 'Z-A',

'inc_postcount' => 1,

'description' => '',

'redirect_url' => '',

'password' => '',

'password_override' => '',

'redirect_on' => 0,

'redirect_hits' => 0,

'permission_showtopic' => '',

'permission_custom_error' => '',

'use_html' => 0,

'allow_pollbump' => 0,

'forum_allow_rating' => 0,

'preview_posts' => 0,

'notify_modq_emails' => 0,

'can_view_others' => 1,

 

);

 

$title = $this->lang->words['for_addcat'];

$button = $this->lang->words['for_addcat'];

$code = "donew";

}

else

{

$forum = array(

'sub_can_post' => $subcanpost,

'name' => $f_name ? $f_name : $this->lang->words['for_newfor'],

'parent_id' => $parentid,

'use_ibc' => 1,

'allow_poll' => 1,

'prune' => 100,

'topicfilter' => 'all',

'sort_key' => 'last_post',

'sort_order' => 'Z-A',

'inc_postcount' => 1,

'description' => '',

'redirect_url' => '',

'password' => '',

'password_override' => '',

'redirect_on' => 0,

'redirect_hits' => 0,

'permission_showtopic' => '',

'permission_custom_error' => '',

'use_html' => 0,

'allow_pollbump' => 0,

'forum_allow_rating' => 0,

'preview_posts' => 0,

'notify_modq_emails' => 0,

'min_posts' => 0,

'hide_last_info' => 0,

'can_view_others' => 1,

);

 

$title = $this->lang->words['for_addfor'];

$button = $this->lang->words['for_addfor'];

$code = "donew";

}

}

 

//-----------------------------------------

// Build forumlist

//-----------------------------------------

 

$forumlist = $this->registry->getClass('class_forums')->adForumsForumList();

 

//-----------------------------------------

// Build group list

//-----------------------------------------

 

$mem_group = array();

 

foreach( $this->caches['group_cache'] as $g_id => $group )

{

$mem_group[] = array( $g_id , $group['g_title'] );

}

 

//-----------------------------------------

// Generate form items

//-----------------------------------------

 

# Main settings

$form['name'] = $this->registry->output->formInput( 'name' , IPSText::parseCleanValue( !empty( $_POST['name'] ) ? $_POST['name'] : $forum['name'] ) );

$form['description'] = $this->registry->output->formTextarea("description" , IPSText::br2nl( !empty( $_POST['description']) ? $_POST['description'] : $forum['description'] ) );

$form['parent_id'] = $this->registry->output->formDropdown("parent_id" , $forumlist, !empty($_POST['parent_id'] ) ? $_POST['parent_id'] : $forum['parent_id'] );

$form['sub_can_post'] = $this->registry->output->formYesNo( 'sub_can_post', !empty($_POST['sub_can_post']) ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) );

 

# Redirect options

$form['redirect_url'] = $this->registry->output->formInput( 'redirect_url' , !empty($_POST['redirect_url']) ? $_POST['redirect_url'] : $forum['redirect_url'] );

$form['redirect_on'] = $this->registry->output->formYesNo('redirect_on' , !empty($_POST['redirect_on']) ? $_POST['redirect_on'] : $forum['redirect_on'] );

$form['redirect_hits'] = $this->registry->output->formInput( 'redirect_hits', !empty($_POST['redirect_hits']) ? $_POST['redirect_hits'] : $forum['redirect_hits'] );

 

# Permission settings

$form['permission_showtopic'] = $this->registry->output->formYesNo( 'permission_showtopic' , !empty($_POST['permission_showtopic']) ? $_POST['permission_showtopic'] : $forum['permission_showtopic'] );

$form['permission_custom_error'] = $this->registry->output->formTextarea("permission_custom_error", IPSText::br2nl( !empty($_POST['permission_custom_error']) ? $_POST['permission_custom_error'] : $forum['permission_custom_error'] ) );

 

# Forum settings

$form['use_html'] = $this->registry->output->formYesNo('use_html' , !empty($_POST['use_html']) ? $_POST['use_html'] : $forum['use_html'] );

$form['use_ibc'] = $this->registry->output->formYesNo('use_ibc' , !empty($_POST['use_ibc']) ? $_POST['use_ibc'] : $forum['use_ibc'] );

$form['allow_poll'] = $this->registry->output->formYesNo('allow_poll' , !empty($_POST['allow_poll']) ? $_POST['allow_poll'] : $forum['allow_poll'] );

$form['allow_pollbump'] = $this->registry->output->formYesNo('allow_pollbump' , !empty($_POST['allow_pollbump']) ? $_POST['allow_pollbump'] : $forum['allow_pollbump'] );

$form['inc_postcount'] = $this->registry->output->formYesNo('inc_postcount' , !empty($_POST['inc_postcount']) ? $_POST['inc_postcount'] : $forum['inc_postcount'] );

$form['forum_allow_rating'] = $this->registry->output->formYesNo('forum_allow_rating', !empty($_POST['forum_allow_rating']) ? $_POST['forum_allow_rating'] : $forum['forum_allow_rating'] );

$form['min_posts_post'] = $this->registry->output->formInput('min_posts_post' , !empty($_POST['min_posts_post']) ? $_POST['min_posts_post'] : $forum['min_posts_post'] );

$form['min_posts_view'] = $this->registry->output->formInput('min_posts_view' , !empty($_POST['min_posts_view']) ? $_POST['min_posts_view'] : $forum['min_posts_view'] );

$form['can_view_others'] = $this->registry->output->formYesNo('can_view_others' , !empty($_POST['can_view_others']) ? $_POST['can_view_others'] : $forum['can_view_others'] );

$form['hide_last_info'] = $this->registry->output->formYesNo('hide_last_info' , !empty($_POST['hide_last_info']) ? $_POST['hide_last_info'] : $forum['hide_last_info'] );

$form['disable_sharelinks'] = $this->registry->output->formYesNo('disable_sharelinks' , !empty($_POST['disable_sharelinks']) ? $_POST['disable_sharelinks'] : $forum['disable_sharelinks'] );

 

# Mod settings

$form['preview_posts'] = $this->registry->output->formDropdown( "preview_posts" , $dd_moderate, !empty($_POST['preview_posts']) ? $_POST['preview_posts'] : $forum['preview_posts'] );

$form['notify_modq_emails'] = $this->registry->output->formInput( 'notify_modq_emails' , !empty($_POST['notify_modq_emails']) ? $_POST['notify_modq_emails'] : $forum['notify_modq_emails'] );

$form['password'] = $this->registry->output->formInput( 'password' , !empty($_POST['password']) ? $_POST['password'] : $forum['password'] );

$form['password_override'] = $this->registry->output->formMultiDropdown( 'password_override[]' , $mem_group, !empty($_POST['password_override']) ? $_POST['password_override'] : explode( ",", $forum['password_override'] ) );

 

# Sorting settings

$form['prune'] = $this->registry->output->formDropdown("prune" , $dd_prune, !empty($_POST['prune']) ? $_POST['prune'] : $forum['prune'] );

$form['sort_key'] = $this->registry->output->formDropdown("sort_key" , $dd_order, !empty($_POST['sort_key']) ? $_POST['sort_key'] : $forum['sort_key'] );

$form['sort_order'] = $this->registry->output->formDropdown("sort_order", $dd_by , !empty($_POST['sort_order']) ? $_POST['sort_order'] : $forum['sort_order'] );

$form['topicfilter'] = $this->registry->output->formDropdown("topicfilter", $dd_filter, !empty($_POST['topicfilter']) ? $_POST['topicfilter'] : $forum['topicfilter'] );

 

$form['bw_disable_tagging'] = $this->registry->output->formYesNo("bw_disable_tagging", !empty($_POST['bw_disable_tagging']) ? $_POST['bw_disable_tagging'] : $forum['bw_disable_tagging'] );

$form['bw_disable_prefixes'] = $this->registry->output->formYesNo("bw_disable_prefixes", !empty($_POST['bw_disable_prefixes']) ? $_POST['bw_disable_prefixes'] : $forum['bw_disable_prefixes'] );

$form['tag_predefined'] = $this->registry->output->formTextarea("tag_predefined", IPSText::br2nl( !empty($_POST['tag_predefined']) ? $_POST['tag_predefined'] : $forum['tag_predefined'] ) );

 

 

# Trim the form for categories...

$form['addnew_type'] = $addnew_type;

$this->request['type'] = $addnew_type;

$form['addnew_type_upper'] = ucwords($addnew_type);

 

//-----------------------------------------

// Show permission matrix

//-----------------------------------------

 

if ( $type != 'edit' OR $addnew_type == 'category' )

{

/* Permission Class */

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' );

$permissions = new $classToLoad( ipsRegistry::instance() );

 

if( $addnew_type == 'category' )

{

$perm_matrix = $permissions->adminPermMatrix( 'forum', $forum, 'forums', 'view' );

}

else

{

$perm_matrix = $permissions->adminPermMatrix( 'forum', $forum );

}

}

 

/* Application Tabs */

$form['tabStrip'] = '';

$form['tabContent'] = '';

 

$tabsUsed = 2;

$firstTab = empty($this->request['_initTab']) ? false : trim($this->request['_initTab']);

 

IPSLib::loadInterface( 'admin/forum_form.php' );

 

foreach( IPSLib::getEnabledApplications() as $app_dir => $app_data )

{

if ( is_file( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/forum_form.php' ) )

{

$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/forum_form.php', 'admin_forum_form__'.$app_dir, $app_dir );

 

if ( class_exists( $_class ) )

{

$_object = new $_class( $this->registry );

 

$data = $_object->getDisplayContent( $forum, $tabsUsed );

$form['tabContent'] .= $data['content'];

$form['tabStrip'] .= $data['tabs'];

 

$tabsUsed = $data['tabsUsed'] ? ( $tabsUsed + $data['tabsUsed'] ) : ( $tabsUsed + 1 );

 

if ( $this->request['_initTab'] == $app_dir )

{

$firstTab = $tabsUsed;

}

}

}

}

 

//-----------------------------------------

// Show form...

//-----------------------------------------

 

$this->registry->output->extra_nav[] = array( '', $title );

$this->registry->output->html .= $this->html->forumForm( $form, $button, $code, $title, $forum, $perm_matrix, $firstTab );

}

 

/**

* Save the forum

*

* @param string $type [new|edit]

* @return @e void

*/

public function forumSave( $type='new' )

{

/* If this is not a redirect forum anymore empty the redirect url - #35126 */

if ( $this->request['forum_type'] != 'redirect' )

{

$this->request['redirect_url'] = '';

}

 

//-----------------------------------------

// Converting the type?

//-----------------------------------------

 

if( $this->request['convert'] )

{

$this->forumForm( $type, 1 );

return;

}

 

//-----------------------------------------

// INIT

//-----------------------------------------

 

$this->request['name'] = trim( $this->request['name'] );

$this->request['f'] = intval( $this->request['f'] );

$this->request['parent_id'] = !empty($this->request['parent_id']) ? intval($this->request['parent_id']) : -1;

$forum_cat_lang = intval( $this->request['parent_id'] ) == -1 ? $this->lang->words['for_iscat_y'] : $this->lang->words['for_iscat_n'];

 

//-----------------------------------------

// Auth check...

//-----------------------------------------

 

$this->registry->adminFunctions->checkSecurityKey();

 

//-----------------------------------------

// Check

//-----------------------------------------

 

if( $this->request['name'] == "" )

{

$this->registry->output->global_message = sprintf( $this->lang->words['for_entertitle'], mb_strtolower( $forum_cat_lang ) );

$this->forumForm( $type );

return;

}

 

//-----------------------------------------

// Are we trying to do something stupid

// like running with scissors or moving

// the parent of a forum into itself

// spot?

//-----------------------------------------

 

if( $this->request['parent_id'] != $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ]['parent_id'] )

{

$ids = $this->registry->getClass('class_forums')->forumsGetChildren( $this->request['f'] );

$ids[] = $this->request['f'];

 

if ( in_array( $this->request['parent_id'], $ids ) )

{

$this->registry->output->global_error = $this->lang->words['for_whymovethere'];

$this->forumForm( $type );

return;

}

}

 

//if( $this->request['parent_id'] < 1 )

//{

// $this->request['sub_can_post'] = 1;

//}

 

//-----------------------------------------

// Save array

//-----------------------------------------

 

$save = array( 'name' => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['name'] ) ) ),

'name_seo' => IPSText::makeSeoTitle( $this->request['name'] ),

'description' => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['description'] ) ) ),

'use_ibc' => isset( $this->request['use_ibc'] ) ? intval($this->request['use_ibc']) : 1,

'use_html' => intval($this->request['use_html']),

'password' => $this->request['password'],

'password_override' => is_array($this->request['password_override']) ? implode( ",", $this->request['password_override'] ) : '',

'sort_key' => $this->request['sort_key'],

'sort_order' => $this->request['sort_order'],

'prune' => intval($this->request['prune']),

'topicfilter' => $this->request['topicfilter'],

'preview_posts' => intval($this->request['preview_posts']),

'allow_poll' => intval($this->request['allow_poll']),

'allow_pollbump' => intval($this->request['allow_pollbump']),

'forum_allow_rating' => intval($this->request['forum_allow_rating']),

'inc_postcount' => intval($this->request['inc_postcount']),

'parent_id' => intval($this->request['parent_id']),

'sub_can_post' => intval($this->request['sub_can_post']),

'redirect_on' => intval($this->request['redirect_on']),

'redirect_hits' => intval($this->request['redirect_hits']),

'redirect_url' => $this->request['redirect_url'],

'notify_modq_emails' => $this->request['notify_modq_emails'],

'permission_showtopic' => $this->request['parent_id'] == -1 ? 1 : intval($this->request['permission_showtopic']),

'min_posts_post' => intval( $this->request['min_posts_post'] ),

'min_posts_view' => intval( $this->request['min_posts_view'] ),

'can_view_others' => intval( $this->request['can_view_others'] ),

'hide_last_info' => intval( $this->request['hide_last_info'] ),

'disable_sharelinks' => intval( $this->request['disable_sharelinks'] ),

'tag_predefined' => $this->request['tag_predefined'],

'forums_bitoptions' => IPSBWOPtions::freeze( $this->request, 'forums', 'forums' ),

'permission_custom_error' => nl2br( IPSText::stripslashes($_POST['permission_custom_error']) ) );

 

/* Save data from application tabs */

IPSLib::loadInterface( 'admin/forum_form.php' );

 

$_forumPlugins = array();

 

foreach( IPSLib::getEnabledApplications() as $app_dir => $app_data )

{

if ( is_file( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/forum_form.php' ) )

{

$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/forum_form.php', 'admin_forum_form__'.$app_dir, $app_dir );

$_forumPlugins[ $_class ] = new $_class( $this->registry );

 

$remote = $_forumPlugins[ $_class ]->getForSave();

 

$save = array_merge( $save, $remote );

}

}

 

//-----------------------------------------

// ADD

//-----------------------------------------

 

if ( $type == 'new' )

{

$this->DB->build( array( 'select' => 'MAX(id) as top_forum', 'from' => 'forums' ) );

$this->DB->execute();

 

$row = $this->DB->fetch();

 

if ( $row['top_forum'] < 1 )

{

$row['top_forum'] = 0;

}

 

$row['top_forum']++;

 

/* Forum Information */

//$save['id'] = $row['top_forum'];

$save['position'] = $row['top_forum'];

$save['topics'] = 0;

$save['posts'] = 0;

$save['last_post'] = 0;

$save['last_poster_id'] = 0;

$save['last_poster_name'] = "";

 

/* Insert the record */

$this->DB->insert( 'forums', $save );

$forum_id = $this->DB->getInsertId();

 

/* Permissions */

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' );

$permissions = new $classToLoad( ipsRegistry::instance() );

$permissions->savePermMatrix( $this->request['perms'], $forum_id, 'forum' );

 

if( !$save['can_view_others'] )

{

$this->DB->update( 'permission_index', array( 'owner_only' => 1 ), "app='forums' AND perm_type='forum' AND perm_type_id={$forum_id}" );

}

 

/* Done */

$this->registry->output->global_message = $forum_cat_lang . $this->lang->words['for__created'];

$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang . " '" . $this->request['name'] . "'" . mb_strtolower ( $this->lang->words['for__created'] ) );

}

else

{

$forumData = $this->registry->class_forums->getForumById( $this->request['f'] );

 

if ( $this->request['parent_id'] == -1 )

{

$save['can_view_others'] = 1;

 

/* Permissions */

//$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' );

//$permissions = new $classToLoad( ipsRegistry::instance() );

//$permissions->savePermMatrix( $this->request['perms'], $this->request['f'], 'forum' );

 

if( ! $save['can_view_others'] )

{

$this->DB->update( 'permission_index', array( 'owner_only' => 1 ), "app='forums' AND perm_type='forum' AND perm_type_id={$this->request['f']}" );

}

else

{

$this->DB->update( 'permission_index', array( 'owner_only' => 0 ), "app='forums' AND perm_type='forum' AND perm_type_id={$this->request['f']}" );

}

}

 

$this->DB->update( 'forums', $save, "id=" . $this->request['f'] );

$forum_id = $this->request['f'];

 

/* Tags */

$this->registry->getClass('class_forums')->forumsInit();

$this->registry->tags->updatePermssionsByParentId( $this->request['f'] );

 

/* Did we enable/disable tagging? @todo find a better way to do this. Perhaps another field in tags? */

if ( isset( $this->request['bw_disable_tagging'] ) )

{

if ( $forumData['bw_disable_tagging'] != $this->request['bw_disable_tagging'] )

{

$toggle = ( $this->request['bw_disable_tagging'] ) ? 0 : 1;

 

$this->registry->tags->updateVisibilityByParentId( $this->request['f'], $toggle );

 

if ( $this->request['bw_disable_tagging'] == 0 )

{

/* We just restored all tags, so lets return hidden topics back to 0 */

$this->DB->build( array( 'select' => 'tid',

'from' => 'topics',

'where' => 'forum_id=' . $this->request['f'] . ' AND ' . $this->registry->class_forums->fetchTopicHiddenQuery( array( 'sdeleted', 'hidden', 'pdelete', 'oktoremove' ) ),

'order' => 'last_post DESC',

'limit' => array( 0, 500 ) ) );

$this->DB->execute();

 

$topics = array();

while( $row = $this->DB->fetch() )

{

$topics[] = $row['tid'];

}

 

if ( count( $topics ) )

{

$this->registry->tags->updateVisibilityByMetaId( $topics, 0 );

}

}

}

}

 

$this->registry->output->global_message = $forum_cat_lang.$this->lang->words['for__edited'];

 

$this->registry->adminFunctions->saveAdminLog( $forum_cat_lang." '" . $this->request['name'] . "' " . mb_strtolower ( $this->lang->words['for__edited'] ) );

}

 

$this->request['f'] = '';

if( $save['parent_id'] > 0 )

{

$this->request['f'] = $save['parent_id'];

}

 

//-----------------------------------------

// Post save callbacks

//-----------------------------------------

 

if( count($_forumPlugins) )

{

foreach( $_forumPlugins as $_className => $_object )

{

if( method_exists( $_object, 'postSave' ) )

{

$_object->postSave( $forum_id );

}

}

}

 

$this->registry->getClass('class_forums')->forumsInit();

 

$this->showForums();

}

 

/**

* Show the form to edit permissions

*

* @return @e void Outputs to screen

*/

public function permEditForm()

{

//-----------------------------------------

// INIT

//-----------------------------------------

 

$this->request['f'] = intval( $this->request['f'] );

 

//-----------------------------------------

// check..

//-----------------------------------------

 

if ( ! $this->request['f'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 11316 );

}

 

//-----------------------------------------

// Get this forum details

//-----------------------------------------

 

$forum = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['f'] ];

 

if( $this->request['copyForumPerms'] )

{

$forumToCopy = $this->registry->getClass('class_forums')->forum_by_id[ $this->request['copyForumPerms'] ];

 

foreach( array( 'perm_view', 'perm_2', 'perm_3', 'perm_4', 'perm_5', 'perm_6' ) as $field )

{

$forum[ $field ] = $forumToCopy[ $field ];

}

}

 

//-----------------------------------------

// Next id...

//-----------------------------------------

 

$relative = $this->getNextId( $this->request['f'] );

 

//-----------------------------------------

// check...

//-----------------------------------------

 

if ( ! $forum['id'] )

{

$this->registry->output->showError( $this->lang->words['for_noid'], 11317 );

}

 

//-----------------------------------------

// HTML

//-----------------------------------------

 

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' );

$permissions = new $classToLoad( ipsRegistry::instance() );

 

if( $forum['parent_id'] != 'root' )

{

$perm_matrix = $permissions->adminPermMatrix( 'forum', $forum );

}

else

{

$perm_matrix = $permissions->adminPermMatrix( 'forum', $forum, 'forums', 'view' );

}

 

$forumCopyDropdown = $this->registry->output->formDropdown( 'copyForumPerms', $this->registry->getClass('class_forums')->adForumsForumList( TRUE, FALSE, array( $forum['id'] ) ) );

 

$this->registry->output->html .= $this->html->forumPermissionForm( $forum, $relative, $perm_matrix, $forum, $forumCopyDropdown );

}

 

/**

* Get the id of the next forum

*

* @param integer Last forum id

* @return @e void Outputs to screen

*/

public function getNextId($fid)

{

$nextid = 0;

$ids = array();

$index = 0;

$count = 0;

 

foreach( $this->registry->getClass('class_forums')->forum_cache['root'] as $forum_data )

{

$ids[ $count ] = $forum_data['id'];

 

if ( $forum_data['id'] == $fid )

{

$index = $count;

}

 

$count++;

 

if ( isset($this->registry->getClass('class_forums')->forum_cache[ $forum_data['id'] ]) AND is_array( $this->registry->getClass('class_forums')->forum_cache[ $forum_data['id'] ] ) )

{

foreach( $this->registry->getClass('class_forums')->forum_cache[ $forum_data['id'] ] as $forum_data )

{

$children = $this->registry->getClass('class_forums')->forumsGetChildren( $forum_data['id'] );

 

$ids[ $count ] = $forum_data['id'];

 

if ( $forum_data['id'] == $fid )

{

$index = $count;

}

 

$count++;

 

if ( is_array($children) and count($children) )

{

foreach( $children as $kid )

{

$ids[ $count ] = $kid;

 

if ( $kid == $fid )

{

$index = $count;

}

 

$count++;

}

}

}

}

}

 

return array( 'next' => $ids[ $index + 1 ], 'previous' => $ids[ $index - 1 ] );

}

 

/**

* Save the permissions

*

* @return @e void Outputs to screen

*/

public function permDoEdit()

{

/* INI */

$perms = array();

$this->request['f'] = intval( $this->request['f'] );

 

/* Security Check */

$this->registry->adminFunctions->checkSecurityKey();

 

/* Save the permissions */

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php', 'classPublicPermissions' );

$permissions = new $classToLoad( ipsRegistry::instance() );

$permissions->savePermMatrix( $this->request['perms'], $this->request['f'], 'forum' );

 

/* Log */

$this->registry->adminFunctions->saveAdminLog( sprintf( $this->lang->words['for_permeditedin'], $this->request['name'] ) );

 

/* Previous Forum */

if ( $this->request['doprevious'] AND $this->request['doprevious'] and $this->request['previd'] > 0 )

{

$this->registry->output->global_message = $this->lang->words['for_permedited'];

 

$this->request['f'] = $this->request['previd'];

 

$this->registry->output->silentRedirect( "{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f'] );

}

/* Next Forum */

else if ( $this->request['donext'] AND $this->request['donext'] and $this->request['nextid'] > 0 )

{

$this->registry->output->global_message = $this->lang->words['for_permedited'];

 

$this->request['f'] = $this->request['nextid'];

 

$this->registry->output->silentRedirect( "{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f'] );

}

/* Reload */

else if ( $this->request['reload'] AND $this->request['reload'] )

{

$this->registry->output->silentRedirect( "{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f'] );

}

/* Done */

else

{

$this->registry->output->global_message = $this->lang->words['for_permedited2'];

$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );

}

}

 

/**

* Reorder the child forums

*

* @return @e void Outputs to screen

*/

public function doReorder()

{

//-----------------------------------------

// INIT

//-----------------------------------------

 

$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classAjax.php', 'classAjax' );

$ajax = new $classToLoad();

 

//-----------------------------------------

// Checks...

//-----------------------------------------

 

if( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false )

{

$ajax->returnString( $this->lang->words['postform_badmd5'] );

exit();

}

 

//-----------------------------------------

// Save new position

//-----------------------------------------

 

$position = 1;

 

if( is_array($this->request['forums']) AND count($this->request['forums']) )

{

foreach( $this->request['forums'] as $this_id )

{

$this->DB->update( 'forums', array( 'position' => $position ), 'id=' . $this_id );

 

$position++;

}

}

 

$ajax->returnString( 'OK' );

exit();

}

 

/**

* List the forums

*

* @return @e void Outputs to screen

*/

public function showForums()

{

//-----------------------------------------

// INIT

//-----------------------------------------

 

$this->request['f'] = intval( $this->request['f'] );

 

//-----------------------------------------

// Grab the moderators

//-----------------------------------------

 

$this->registry->getClass('class_forums')->moderators = array();

$this->registry->getClass('class_forums')->type = 'manage';

 

$this->DB->build( array(

'select' => 'm.*',

'from' => array( 'moderators' => 'm' ),

'add_join' => array(

array(

'select' => 'mm.members_display_name',

'from' => array( 'members' => 'mm' ),

'where' => 'mm.member_id=m.member_id AND m.is_group=0',

'type' => 'left'

)

)

) );

$this->DB->execute();

 

while( $r = $this->DB->fetch() )

{

$this->registry->getClass('class_forums')->moderators[] = $r;

}

 

//-----------------------------------------

// Print screen

//-----------------------------------------

 

$this->registry->output->html .= $this->html->renderForumHeader();

 

$this->registry->getClass('class_forums')->forumsListForums();

 

//-----------------------------------------

// Add footer

//-----------------------------------------

 

$this->registry->output->html .= $this->html->renderForumFooter();

}

}

 

При возможности посетите форум dnepr-server.ru (не реклама) посмотрите проблему.

 

Заранее спасибо =)

Рекомендованные сообщения

Опубликовано:
Обратите внимание

По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них.

Опубликовано:

Неужели кто-то в этот хлам Counter Strike еще играет?

Опубликовано:
  • Автор

ну вопервых не хлам а игра времен!! а во вторых тема вроде на другую тему!!

Опубликовано:

Сообщения в темах не могут сортироваться по алфавиту, сортируются только темы, а сообщения либо по дате либо по ай-ди.

Опубликовано:
  • Автор

ну раньше была сортировка от старых к новым а теперь наоборот от новых к старым! все исправил.

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.