Вход Регистрация
Файл: admin/applications/forums/modules_admin/forums/multimods.php
Строк: 317
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Topic Multi-Moderation
 * Last Updated: $LastChangedDate: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author: bfarber $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @subpackage    Forums
 * @link        http://www.invisionpower.com
 * @since        14th May 2003
 * @version        $Rev: 10721 $
 */

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

class 
admin_forums_forums_multimods extends ipsCommand
{
    
/**
     * Forum functions library
     *
     * @var        object
     */
    
protected $forumfunc;

    
/**
     * Main execution point
     *
     * @param    object    ipsRegistry reference
     * @return    @e void
     */
    
public function doExecuteipsRegistry $registry )
    {
        
/* Setup Forum Classes */
        
$this->registry->class_forums->forumsInit();
        
        
$classToLoad IPSLib::loadLibraryIPSLib::getAppDir'forums' ) . "/sources/classes/forums/admin_forum_functions.php"'admin_forum_functions''forums' );
        
$this->forumfunc = new $classToLoad$registry );
        
$this->forumfunc->forumsInit();
        
        
/* Load Skin and Lang */
        
$this->html $this->registry->output->loadTemplate'cp_skin_multimods' );
        
$this->html->form_code    'module=forums&amp;section=multimods&amp;';
        
$this->html->form_code_js 'module=forums&amp;section=multimods&amp;';
        
        
$this->lang->loadLanguageFile( array( 'admin_forums' ) );
        
        
/* Navigation */
        
$this->registry->output->extra_nav[]    = array( ''$this->lang->words['mm_nav'] );
        
$this->registry->output->extra_title[]    = $this->lang->words['mm_nav'];
        
        switch( 
$this->request['do'] )
        {
            case 
'new':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_add' );
                
$this->multiModerationForm'new' );
            break;
                
            case 
'edit':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_edit' );
                
$this->multiModerationForm'edit' );
            break;
                
            case 
'donew':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_add' );
                
$this->multiModerationSaveForm'new' );
            break;
                
            case 
'doedit':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_edit' );
                
$this->multiModerationSaveForm'edit' );
            break;
                
            case 
'delete':
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_delete' );
                
$this->multiModerationDelete();
            break;
                
            case 
'overview':                        
            default:
                
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg'mmod_view' );
                
$this->multiModerationOverview();
            break;
        }
        
        
/* Output */
        
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
        
$this->registry->output->sendOutput();
    }
    
    
/**
     * Removes a multi moderation
     *
     * @return     void
     */
    
public function multiModerationDelete()
    {
        
/* Check ID */
        
if ($this->request['id'] == "")
        {
            
$this->registry->output->showError$this->lang->words['mm_noid'], 11332 );
        }
        
        
/* Delete the record */
        
$this->DB->delete'topic_mmod'"mm_id=" intval$this->request['id'] ) );
        
        
/* Rebuild Cache */
        
$this->multiModerationRebuildCache();
        
        
/* Log and bounce */
        
$this->registry->adminFunctions->saveAdminLog$this->lang->words['mm_removed'] );        
        
$this->registry->output->silentRedirect($this->settings['base_url'] . $this->html->form_code );
        
    }    
    
    
/**
     * Saves the add/edit multi moderation form
     *
     * @param    string  $type  Either 'new' or 'edit'     
     * @return    @e void
     */
    
public function multiModerationSaveForm$type='new' )
    {
        
/* INI */
        
$forums = array();

        
/* Make sure we have a title */
        
if( ! $this->request['mm_title'] )
        {
            
$this->registry->output->showError$this->lang->words['mm_valtitle'], 11333 );
        }
        
        
/* Check for forums */
        
$forums $this->_getSelectedForums();
        
        
/* Check forums */
        
if( ! $forums )
        {
            
$this->registry->output->showError$this->lang->words['mm_forums'], 11334 );
        }
        
        
/* Check move location */
        
if( $this->request['topic_move'] == 'n' )
        {
            
$this->registry->output->showError$this->lang->words['mm_wrong'], 11335 );
        }
        
        
/* Build the insert array */
        
$save = array(
                        
'mm_title'              => $this->request['mm_title'],
                        
'mm_enabled'            => 1,
                        
'topic_state'           => $this->request['topic_state'],
                        
'topic_pin'                => $this->request['topic_pin'],
                        
'topic_move'            => intval$this->request['topic_move'] ),
                        
'topic_move_link'       => intval$this->request['topic_move_link'] ),
                        
'topic_title_st'        => $this->request['topic_title_st'],
                        
'topic_title_end'       => $this->request['topic_title_end'],
                        
'topic_reply'           => intval$this->request['topic_reply'] ),
                        
'topic_reply_content'   => IPSText::stripslashes$_POST['topic_reply_content'] ),
                        
'topic_reply_postcount' => intval$this->request['topic_reply_postcount'] ),
                        
'mm_forums'             => $forums,
                        
'topic_approve'         => intval$this->request['topic_approve'] ),
                     );
         
        
/* Edit */
        
if ( $type == 'edit' )
        {
            
/* ID */
            
$id intval$this->request['id'] );
            
            if( ! 
$id )
            {
                
$this->registry->output->showError$this->lang->words['mm_valid'] );
            }
            
            
/* Update the multi mod */            
            
$this->DB->update'topic_mmod'$save'mm_id='.$id );
        }
        
/* New */
        
else
        {
            
/* Insert the new multi mod */
            
$this->DB->insert'topic_mmod'$save );
        }
        
        
/* Log, Cache, and Bounce */
        
$this->registry->adminFunctions->saveAdminLogsprintf$this->lang->words['mm_update'], $type ) );
        
$this->multiModerationRebuildCache();        
        
$this->registry->output->silentRedirect$this->settings['base_url'] . $this->html->form_code );
    }
    
    
/**
     * Builds the add/edit multi moderation form
     *
     * @param    string  $type  Either 'new' or 'edit'
     * @return    @e void
     */
    
public function multiModerationForm$type='new' )
    {
        if( 
$type == 'new' )
        {
            
/* Setup */
            
$form_code   'donew';
            
$id             0;
            
$description $this->lang->words['mm_addnew'];
            
$button      $this->lang->words['mm_addnew'];
            
            
/* Default Values */
            
$topic_mm     = array( 
                                    
'mm_forums'             => ''
                                    
'mm_title'              => ''
                                    
'topic_title_st'        => '',
                                    
'topic_title_end'       => ''
                                    
'topic_state'           => ''
                                    
'topic_pin'             => '',
                                    
'topic_approve'         => ''
                                    
'topic_move'            => ''
                                    
'topic_move_link'       => '',
                                    
'topic_reply'           => ''
                                    
'topic_reply_content'   => ''
                                    
'topic_reply_postcount' => '' 
                                
);
        }
        else
        {
            
/* Setup */
            
$id intval$this->request['id'] );
            
$form_code   'doedit';
            
$description $this->lang->words['mm_edit'];
            
$button      $this->lang->words['mm_edit'];
            
            
/* Default Values */            
            
$this->DB->build( array( 'select' => '*''from' => 'topic_mmod''where' => "mm_id=$id) );
            
$this->DB->execute();
        
            if ( ! 
$topic_mm $this->DB->fetch() )
            {
                
$this->registry->output->showErrorsprintf$this->lang->words['mm_noinfo'], $id ), 11337 );
            }
        }
        
        
/* State Drop Options */
        
$state_dd = array(
                          
=> array( 'leave'$this->lang->words['mm_leave'] ),
                          
=> array( 'close'$this->lang->words['mm_close'] ),
                          
=> array( 'open' $this->lang->words['mm_open']  ),
                       );
        
        
/* Pinned Drop Down Options */
        
$pin_dd   = array(
                          
=> array( 'leave'$this->lang->words['mm_leave'] ),
                          
=> array( 'pin'  $this->lang->words['mm_pin']   ),
                          
=> array( 'unpin'$this->lang->words['mm_unpin'] ),
                        );
        
        
/* Approved Drop Down Options */
        
$app_dd   = array(
                          
=> array( '0'$this->lang->words['mm_leave']     ),
                          
=> array( '1'$this->lang->words['mm_approve']   ),
                          
=> array( '2'$this->lang->words['mm_unapprove'] ),
                        );
        
        
/* Build forum multiselect */
        
$topic_mm['forums'] = "<select name='forums[]' class='textinput' size='15' multiple='multiple'>n";
        
        
$topic_mm['forums'] .= $topic_mm['mm_forums'] == '*' "<option value='all' selected='selected'>{$this->lang->words['mm_allforums']}</option>n" "<option value='all'>{$this->lang->words['mm_allforums']}</option>n";            
        
        
$forum_jump $this->forumfunc->adForumsForumData();
            
        foreach( 
$forum_jump as $i )
        {
            if( 
strstr"," $topic_mm['mm_forums'] . ",""," $i['id'] . "," ) and $topic_mm['mm_forums'] != '*' )
            {
                
$selected ' selected="selected"';
            }
            else
            {
                
$selected "";
            }
            
            if( !empty( 
$i['redirect_on'] ) )
            {
                continue;
            }
            
            
$fporum_jump[] = array( $i['id'], $i['depthed_name'] );
            
            
$topic_mm['forums']  .= "<option value="{$i['id']}$selected>{$i['depthed_name']}</option>n";
        }
        
        
$topic_mm['forums'] .= "</select>";
        
        
/* Build Form Fields */        
        
$topic_mm['mm_title']              = $this->registry->output->formInput("mm_title"$topic_mm['mm_title'] );
        
$topic_mm['topic_title_st']        = $this->registry->output->formInput("topic_title_st"$topic_mm['topic_title_st'] );
        
$topic_mm['topic_title_end']       = $this->registry->output->formInput("topic_title_end"$topic_mm['topic_title_end'] );
        
$topic_mm['topic_state']           = $this->registry->output->formDropdown("topic_state"$state_dd$topic_mm['topic_state'] );
        
$topic_mm['topic_pin']             = $this->registry->output->formDropdown("topic_pin"$pin_dd$topic_mm['topic_pin'] );
        
$topic_mm['topic_approve']         = $this->registry->output->formDropdown("topic_approve"$app_dd$topic_mm['topic_approve'] );
        
$topic_mm['topic_move']            = $this->registry->output->formDropdown("topic_move"array_merge( array( => array('-1'$this->lang->words['mm_nobodymovenobodygethurt'] ) ), $fporum_jump ), $topic_mm['topic_move'] );
        
$topic_mm['topic_move_link']       = $this->registry->output->formCheckbox('topic_move_link'$topic_mm['topic_move_link'] );
        
$topic_mm['topic_reply']           = $this->registry->output->formYesNo('topic_reply'$topic_mm['topic_reply'] );
        
$topic_mm['topic_reply_content']   = $this->registry->output->formTextarea("topic_reply_content"$topic_mm['topic_reply_content'] );
        
$topic_mm['topic_reply_postcount'] = $this->registry->output->formCheckbox('topic_reply_postcount'$topic_mm['topic_reply_postcount'] );

        
/* Output */
        
$this->registry->output->html .= $this->html->multiModerationForm$id$form_code$description$topic_mm$button );
    }    
    
    
/**
     * Show all available multi mods
     *
     * @return    @e void
     */
    
public function multiModerationOverview()
    {
        
/* Query the multi mods */        
        
$this->DB->build( array( 'select' => '*''from' => 'topic_mmod''order' => "mm_title" ) );
        
$this->DB->execute();
        
        
/* Loop through and build output arrays */
        
$rows = array();
        
        while( 
$r $this->DB->fetch() )
        {
            
$rows[] = $r;
        }
        
        
/* Output */
        
$this->registry->output->html .= $this->html->multiModerationOverview$rows );
    }    
    
    
/**
     * Rebuilds the multi moderation cache
     *
     * @return    @e void
     */
    
public function multiModerationRebuildCache()
    {
        
/* INI */
        
$cache = array();
        
        
/* Get the multi mods */
        
$this->DB->build( array(
                                 
'select' => '*',
                                 
'from'   => 'topic_mmod',
                                 
'order'  => 'mm_title'
                         
)      );
                            
        
$this->DB->execute();
                    
        while (
$i $this->DB->fetch())
        {
            
$cache$i['mm_id'] ] = $i;
        }
        
        
/* Save the cache */
        
$this->cache->setCache'multimod'$cache,  array( 'array' => 1'donow' => ) );        
    }
        
    
/**
     * Get selected forums
     *
     * @return    string    Comma separated list of forum ids
     */ 
    
protected function _getSelectedForums()
    {
        
/* INI */
        
$forumids = array();
        
        
/* Check for the forums array */
        
if( is_array$_POST['forums'] )  )
        {
            
/* Add All Forums */
            
if( in_array'all'$_POST['forums'] ) )
            {
                return 
'*';
            }
            
/* Add selected Forums */
            
else
            {
                
/* Loop through the selected forums */
                
foreach( $_POST['forums'] as $l )
                {
                    if( 
$this->registry->class_forums->forum_by_id$l ] )
                    {
                        
$forumids[] = intval$l );
                    }
                }
                
                if( ! 
count$forumids  ) )
                {
                    return;
                }
                
/* Commented out for bug: http://community.invisionpower.com/tracker/issue-20910-selected-forums-on-topic-multi-moderation/ */
                /* Do we have cats? Give 'em to Charles! */
                //if( count( $forumids  ) )
                //{
                //    foreach( $forumids as $f )
                //    {
                //        $children = $this->registry->class_forums->forumsGetChildren( $f );
                //        
                //        if( is_array( $children ) and count( $children ) )
                //        {
                //            $forumids = array_merge( $forumids, $children );
                //        }
                //    }
                //}
                ///* No forums */
                //else
                //{
                //    return;
                //}
            
}
        }
        
/* Not an array */
        
else
        {
            
/* All Forums */
            
if ( $this->request['forums'] == 'all' )
            {
                return 
'*';
            }
            else
            {
                
/* Anything selected? */
                
if( $this->request['forums'] != "" )
                {
                    
$l intval$this->request['forums'] );
                    
                    
/* Single Forum */
                    
if( $this->registry->class_forums->forum_by_id$l ] )
                    {
                        
$forumids[] = intval$l );
                    }
                    
                    
/* Check subs */
                    
if ( $this->request['searchsubs'] == )
                    {
                        
$children $this->registry->class_forums->forumsGetChildren$l );
                        
                        if( 
is_array ($children ) and count$children ) )
                        {
                            
$forumids array_merge$forumids$children );
                        }
                    }
                }
            }
        }
        
        return 
implode","$forumids );
    }
}
Онлайн: 1
Реклама