Your IP : 172.28.240.42


Current Path : /var/www/html/clients/rebirth.e-nk.ru/sources/action_public/misc/
Upload File :
Current File : /var/www/html/clients/rebirth.e-nk.ru/sources/action_public/misc/multi_moderate.php

<?php

/*
+--------------------------------------------------------------------------
|   Invision Power Board
|   =============================================
|   by Matthew Mecham
|   (c) 2001 - 2006 Invision Power Services, Inc.
|   Nullified by Terabyte
|   =============================================
|   
|   
+---------------------------------------------------------------------------
|   > $Date: 2006-09-22 06:28:54 -0400 (Fri, 22 Sep 2006) $
|   > $Revision: 567 $
|   > $Author: matt $
+---------------------------------------------------------------------------
|
|   > Multi Moderation Module
|   > Module written by Matt Mecham
|   > Date started: 16th May 2003
|
|	> Module Version Number: 1.0.0
|   > DBA Checked: Mon 24th May 2004
+--------------------------------------------------------------------------
*/


if ( ! defined( 'IN_IPB' ) )
{
	print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
	exit();
}

class  mmod {

    var $output    = "";
    var $topic     = array();
    var $forum     = array();
    var $topic_id  = "";
    var $forum_id  = "";
    var $mm_id     = "";
    var $moderator = "";
    var $modfunc   = "";
    var $mm_data   = "";
    var $parser    = "";
    
    //-----------------------------------------
	// @constructor (no, not bob the builder)
	//-----------------------------------------
    
    function auto_run()
    {
		//-----------------------------------------
        // Load modules...
        //-----------------------------------------
        
        $this->ipsclass->load_language('lang_mod');
        
        require( ROOT_PATH.'sources/lib/func_mod.php');
        $this->modfunc           =  new func_mod();
        $this->modfunc->ipsclass =& $this->ipsclass;
        
        //-----------------------------------------
        // Load and config the post parser
        //-----------------------------------------
        
        require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" );
        $this->parser                      =  new parse_bbcode();
        $this->parser->ipsclass            =& $this->ipsclass;
        $this->parser->allow_update_caches =  1;
        
        $this->parser->bypass_badwords = intval($this->ipsclass->member['g_bypass_badwords']);
		
        //-----------------------------------------
		// Clean the incoming
		//-----------------------------------------
        
        $this->ipsclass->input['t'] = intval($this->ipsclass->input['t']);
        $this->mm_id                = intval($this->ipsclass->input['mm_id']);
        
        if ($this->ipsclass->input['t'] < 0 )
        {
            $this->ipsclass->Error( array( LEVEL => '1', MSG => 'missing_files') );
        }
        
        //-----------------------------------------
        // Get the topic id / forum id
        //-----------------------------------------
        
        $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => "tid=".intval($this->ipsclass->input['t']) ) );
		$this->ipsclass->DB->simple_exec();
		
        $this->topic = $this->ipsclass->DB->fetch_row();
        
        $this->forum = $this->ipsclass->forums->forum_by_id[ $this->topic['forum_id'] ];
        					
        //-----------------------------------------
        // Error out if we can not find the forum
        //-----------------------------------------
        
        if (! $this->forum['id'])
        {
        	$this->ipsclass->Error( array( 'LEVEL' => 1,'MSG' => 'missing_files') );
        }
        
        //-----------------------------------------
        // Error out if we can not find the topic
        //-----------------------------------------
        
        if (! $this->topic['tid'])
        {
        	$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files') );
        }
        
        //-----------------------------------------
        // Are we a moderator?
        //-----------------------------------------
		
		if ( ($this->ipsclass->member['id']) and ($this->ipsclass->member['g_is_supmod'] != 1) )
		{
			$this->ipsclass->DB->simple_construct( array( 'select' => '*',
										  				  'from'   => 'moderators',
										 				  'where'  => "forum_id=".$this->forum['id']." AND (member_id='".$this->ipsclass->member['id']."' OR (is_group=1 AND group_id='".$this->ipsclass->member['mgroup']."'))" ) );
										  
			$this->ipsclass->DB->simple_exec();
		
			$this->moderator = $this->ipsclass->DB->fetch_row();
		}
        
        //-----------------------------------------
		// Init modfunc module
		//-----------------------------------------
		
		$this->modfunc->init( $this->forum, $this->topic, $this->moderator );
        
        //-----------------------------------------
		// Do we have permission?
		//-----------------------------------------
		
		if ( $this->modfunc->mm_authorize() != TRUE )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'is_broken_link') );
		}
		
		//-----------------------------------------
		// Get MM data
		//-----------------------------------------
        
        $this->mm_data = $this->ipsclass->cache['multimod'][ $this->mm_id ];
        
        if ( ! $this->mm_data['mm_id'] )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'is_broken_link') );
		}
		
		//-----------------------------------------
        // Does this forum have this mm_id
        //-----------------------------------------
		
		if ( $this->modfunc->mm_check_id_in_forum( $this->forum['id'], $this->mm_data ) != TRUE )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files') );
		}
		
		
        $this->modfunc->stm_init();
        
        //-----------------------------------------
        // Open close?
        //-----------------------------------------
        
        if ( $this->mm_data['topic_state'] != 'leave' )
        {
        	if ( $this->mm_data['topic_state'] == 'close' )
        	{
        		$this->modfunc->stm_add_close();
        	}
        	else if ( $this->mm_data['topic_state'] == 'open' )
        	{
        		$this->modfunc->stm_add_open();
        	}
        }
        
        //-----------------------------------------
        // pin no-pin?
        //-----------------------------------------
        
        if ( $this->mm_data['topic_pin'] != 'leave' )
        {
        	if ( $this->mm_data['topic_pin'] == 'pin' )
        	{
        		$this->modfunc->stm_add_pin();
        	}
        	else if ( $this->mm_data['topic_pin'] == 'unpin' )
        	{
        		$this->modfunc->stm_add_unpin();
        	}
        }
        
        //-----------------------------------------
        // Approve / Unapprove
        //-----------------------------------------
        
        if ( $this->mm_data['topic_approve'] )
        {
        	if ( $this->mm_data['topic_approve'] == 1 )
        	{
        		$this->modfunc->stm_add_approve();
        	}
        	else if ( $this->mm_data['topic_approve'] == 2 )
        	{
        		$this->modfunc->stm_add_unapprove();
        	}
        }
        
        //-----------------------------------------
        // Topic title
        //-----------------------------------------
        
        $title = $this->topic['title'];
        
        if ( $this->mm_data['topic_title_st'] )
        {
        	// Tidy up...
        	
        	$title = preg_replace( "/^".preg_quote($this->mm_data['topic_title_st'], '/')."/", "", $title );
        }
        
        if ( $this->mm_data['topic_title_end'] )
        {
        	// Tidy up...
        	
        	$title = preg_replace( "/".preg_quote($this->mm_data['topic_title_end'], '/')."$/", "", $title );
        }
        
        $this->modfunc->stm_add_title($this->mm_data['topic_title_st'].$title.$this->mm_data['topic_title_end']);
        
        //-----------------------------------------
        // Update what we have so far...
        //-----------------------------------------
        
        $this->modfunc->stm_exec( $this->topic['tid'] );
        
        //-----------------------------------------
        // Add reply?
        //-----------------------------------------
        
        if ( $this->mm_data['topic_reply'] and $this->mm_data['topic_reply_content'] )
        {
       		$this->parser->parse_smilies = 1;
			$this->parser->parse_bbcode  = 1;
		
        	$this->modfunc->auto_update = FALSE;  // Turn off auto forum re-synch, we'll manually do it at the end
        
        	$this->modfunc->topic_add_reply( 
        									$this->parser->pre_db_parse( $this->mm_data['topic_reply_content'] )
										    , array( 0 => array( $this->topic['tid'], $this->forum['id'] ) )
										    , $this->mm_data['topic_reply_postcount']
										   );
		}
		
		//-----------------------------------------
        // Move topic?
        //-----------------------------------------
        
        if ( $this->mm_data['topic_move'] )
        {
        	//-----------------------------------------
        	// Move to forum still exist?
        	//-----------------------------------------
        	
        	$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, sub_can_post', 'from' => 'forums', 'where' => "id=".$this->mm_data['topic_move'] ) );
			$this->ipsclass->DB->simple_exec();
		
        	if ( $r = $this->ipsclass->DB->fetch_row() )
        	{
        		if ( $r['sub_can_post'] != 1 )
        		{
        			$this->ipsclass->DB->do_update( 'topic_mmod', array( 'topic_move' => 0 ), 'mm_id='.$this->mm_id );
        		}
        		else
        		{
        			if ( $r['id'] != $this->forum['id'] )
        			{
        				$this->modfunc->topic_move( $this->topic['tid'], $this->forum['id'], $r['id'], $this->mm_data['topic_move_link']);
        			
        				$this->modfunc->forum_recount( $r['id'] );
        			}
        		}
        	}
        	else
        	{
        		$this->ipsclass->DB->do_update( 'topic_mmod', array( 'topic_move' => 0 ), 'mm_id='.$this->mm_id );
        	}
        }
        
        //-----------------------------------------
        // Recount root forum
        //-----------------------------------------
        
        $this->modfunc->forum_recount( $this->forum['id'] );
        
        //-----------------------------------------
        // Add mod log
        //-----------------------------------------
        
        $this->modfunc->add_moderate_log( $this->forum['id'], $this->topic['tid'], "", $this->topic['title'], "Applied multi-mod: ".$this->mm_data['mm_title'] );
        
        //-----------------------------------------
        // Redirect back with nice fluffy message
        //-----------------------------------------
        
        $this->ipsclass->print->redirect_screen( sprintf($this->ipsclass->lang['mm_applied'], $this->mm_data['mm_title'] ), "showforum=".$this->forum['id'] );
		          
	}
	
	
	
}

?>