Файл: admin/sources/classes/tags/bootstrap.php
Строк: 72
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Tagging: Bootstrap
 * Matt Mecham
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author: bfarber $
 * @copyright    (c) 2001 - 2011 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @since        24 Feb 2011
 * @version        $Revision: 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 classes_tags_bootstrap
{
    /**
     * App object
     *
     * @var array
     */
    static protected $apps;
    
    /**
     * Construct
     *
     * @param    string        Application (or aai key)
     * @param    string        Area
     * @return    string
     */
    public static function run( $app=null, $area=null )
    {
        if ( strlen( $app ) == 32 AND $area === null )
        {
            $test = ipsRegistry::DB()->buildAndFetch( array( 'select' => '*',
                                                                  'from'   => 'core_tags',
                                                                 'where'  => 'tag_aai_lookup='' .  ipsRegistry::DB()->addSlashes( $app ) . ''',
                                                                  'limit'  => array( 0, 1 ) ) );
            
            if ( $test['tag_meta_app'] && $test['tag_meta_area'] )
            {
                $app  = $test['tag_meta_app'];
                $area = $test['tag_meta_area'];
            }
        }
        
        if ( $app === null OR $area === null )
        {
            trigger_error( "App or area missing from classes_like", E_USER_WARNING );
        }
        
        /* Pointless comment! */
        $_file    = IPSLib::getAppDir( $app ) . '/extensions/tags/' . $area . '.php';
        $_key    = ( $app && $area ) ? md5( $app . $area ) : 'default';
         
        /* Get from cache if already cached */
        if ( isset( self::$apps[ $_key ] ) )
        {
            return self::$apps[ $_key ];
        }
        
        /* Get other classes */
        require_once( IPS_ROOT_PATH . 'sources/classes/tags/abstract.php');/*noLibHook*/
        
        if ( $app && $area )
        {
            /* Otherwise create object and cache */
            if ( is_file( $_file ) )
            {
                $classToLoad = IPSLib::loadLibrary( $_file, 'tags_' . $app . '_' . $area, $app );
                
                if ( class_exists( $classToLoad ) )
                {
                    self::$apps[ $_key ] = new $classToLoad();
                    self::$apps[ $_key ]->setApp( $app );
                    self::$apps[ $_key ]->setArea( $area );
                    self::$apps[ $_key ]->init();
                    
                }
                else
                {
                    throw new Exception( "No tags class available for $app - $area" );
                }
            }
            else
            {
                /* Allow an application to worry about the 'area' */
                if( is_file( IPSLib::getAppDir( $app ) . '/extensions/tags/default.php' ) )
                {
                    $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( $app ) . '/extensions/tags/default.php', 'tags_' . $app . '_default', $app );
                    
                    if ( class_exists( $classToLoad ) )
                    {
                        self::$apps[ $_key ] = new $classToLoad();
                        self::$apps[ $_key ]->setApp( $app );
                        self::$apps[ $_key ]->setArea( $area );
                        self::$apps[ $_key ]->init();
                    }
                    else
                    {
                        throw new Exception( "No tags class available for $app - $area" );
                    }
                }
                else
                {
                    throw new Exception( "No tags class available for $app - $area" );
                }
            }
        }
        else
        {
            $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/tags/extensions/default.php', 'tags_default' );
            self::$apps[ $_key ] = new $classToLoad();
            self::$apps[ $_key ]->setApp( $app );
            self::$apps[ $_key ]->setArea( $area );
            self::$apps[ $_key ]->init();
        }
        
        return self::$apps[ $_key ];
    }
}