Вход Регистрация
Файл: admin/applications/forums/modules_public/extras/legends.php
Строк: 87
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Emoticon and BBCode Legends
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author $
 * @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
 * @version        $Rev: 10721 $
 *
 */

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 
public_forums_extras_legends extends ipsCommand
{
    
/**
     * Output
     *
     * @var        string
     */
    
public $output    = "";

    
/**
     * Class entry point
     *
     * @param    object        Registry reference
     * @return    @e void        [Outputs to screen/redirects]
     */
    
public function doExecute( ipsRegistry $registry )
    {
        
/* Load language */
        
$this->registry->class_localization->loadLanguageFile( array( 'public_legends' ), 'forums' );

        
/* What to do */
        
switch( $this->request['do'] )
        {
            case 
'bbcode':
                
$this->bbcodePopUpList();
            break;
                
            case 
'emoticons':            
            default:
                
$this->emoticonsPopUpList();
            break;
        }
        
        
/* If we have any HTML to print, do so... */
        
$this->registry->getClass('output')->setTitle( $this->page_title . ' - ' . ipsRegistry::$settings['board_name'] );
        
$this->registry->getClass('output')->popUpWindow( $this->output );
    }

    
/**
     * Displays the emoticon list popup
     *
     * @return    @e void
     */
     
public function emoticonsPopUpList()
     {
        
/* INIT */
        
$this->page_title = $this->lang->words['emo_title'];
         
$smilie_id        = 0;
         
$editor_id        = IPSText::alphanumericalClean( $this->request['editor_id'] );

        
/* Query the emoticons */
         
$this->DB->build( array( 'select' => 'typed, image', 'from' => 'emoticons', 'where' => "emo_set='".$this->registry->output->skin['set_emo_dir']."'", 'order' => 'emo_position asc' ) );
        
$this->DB->execute();
        
        
/* Loop through and build output array */
        
$rows = array();
        
        if( 
$this->DB->getTotalRows() )
        {
            while( 
$r = $this->DB->fetch() )
            {
                
$smilie_id++;
                
                if( 
strstr( $r['typed'], "&quot;" ) )
                {
                    
$in_delim  = "'";
                    
$out_delim = '"';
                }
                else
                {
                    
$in_delim  = '"';
                    
$out_delim = "'";
                }
                
                
$rows[] = array(
                                
'code'       => stripslashes( $r['typed'] ),
                                
'image'      => stripslashes( $r['image'] ),
                                
'in'         => $in_delim,
                                
'out'        => $out_delim,
                                
'smilie_id' =>    $smilie_id                            
                            
);                    
            }
        }
        
        
/* Output */
        
$this->output .= $this->registry->getClass('output')->getTemplate('legends')->emoticonPopUpList( $editor_id, $rows );
    }
     
    
/**
     * Show BBCode Helpy file
     *
     * @return    @e void
     */
     
public function bbcodePopUpList()
     {
        
/* Load the Parser */
        
IPSText::resetTextClass('bbcode');
        
IPSText::getTextClass( 'bbcode' )->parse_smilies    = 1;
        
IPSText::getTextClass( 'bbcode' )->parse_html        = 0;
        
IPSText::getTextClass( 'bbcode' )->parse_bbcode        = 1;
        
IPSText::getTextClass( 'bbcode' )->parsing_section    = 'global';

        
/* Loop through the bbcode and build the output array */        
        
$rows = array();

        
/* Add in custom bbcode */
        
if( count( $this->caches['bbcode'] ) )
        {
            foreach(
$this->caches['bbcode'] as $row )
            {
                if( 
$row['bbcode_groups'] != 'all' )
                {
                    
$pass        = false;
                    
$groups        = array_diff( explode( ',', $row['bbcode_groups'] ), array('') );
                    
$mygroups    = array( $this->memberData['member_group_id'] );
                    
$mygroups    = array_diff( array_merge( $mygroups, explode( ',', IPSText::cleanPermString( $this->memberData['mgroup_others'] ) ) ), array('') );
                    
                    foreach( 
$groups as $g_id )
                    {
                        if( 
in_array( $g_id, $mygroups ) )
                        {
                            
$pass = true;
                            break;
                        }
                    }
                    
                    if( !
$pass )
                    {
                        continue;
                    }
                }

                if( 
$row['bbcode_tag'] == 'member' )
                {
                    
$row['bbcode_example'] = str_replace( '[member=admin]', '[member=' . $this->memberData['members_display_name'] . ']', $row['bbcode_example'] );
                }

                
$before  = htmlspecialchars( $row['bbcode_example'] );
                
$t       = IPSText::getTextClass( 'bbcode' )->preDisplayParse( IPSText::getTextClass( 'bbcode' )->preDbParse( $before ) );                

                
$before = preg_replace( "#([".$row['bbcode_tag']."(?:[^]]+)?])#is", $this->registry->output->getTemplate('legends')->wrap_tag("\1"), $before );
                
$before = preg_replace( "#([/".$row['bbcode_tag']."])#is"          , $this->registry->output->getTemplate('legends')->wrap_tag("\1"), $before );

                
$rows[] = array( 
                                
'title'  => $row['bbcode_title'],
                                
'desc'   => $row['bbcode_desc'],
                                
'before' => nl2br( $before ),
                                
'after'  => $t,
                            );                
            }
        }
        
        
/* Output */
        
$this->page_title = $this->lang->words['bbc_title'];        
        
$this->output    .= $this->registry->getClass('output')->getTemplate('legends')->bbcodePopUpList( $rows );        
     }
}
Онлайн: 2
Реклама