Вход Регистрация
Файл: admin/applications/core/sources/classes/hooksFunctions.php
Строк: 250
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Library of shared methods for hooks installation/configuration
 * 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    Core
 * @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 'admin.php'.";
    exit();
}

class 
hooksFunctions
{
    
/**
     * Registry Object Shortcuts
     *
     * @var        $registry
     * @var        $DB
     * @var        $settings
     * @var        $request
     * @var        $lang
     * @var        $member
     * @var        $memberData
     * @var        $cache
     * @var        $caches
     */
    
protected $registry;
    protected 
$DB;
    protected 
$settings;
    protected 
$request;
    protected 
$lang;
    protected 
$member;
    protected 
$memberData;
    protected 
$cache;
    protected 
$caches;
    
    
/**
     * Constructor
     *
     * @param    object        $registry        Registry object
     * @return    @e void
     */
    
public function __constructipsRegistry $registry )
    {
        
//-----------------------------------------
        // Make object
        //-----------------------------------------
        
        
$this->registry     $registry;
        
$this->DB            $this->registry->DB();
        
$this->settings        =& $this->registry->fetchSettings();
        
$this->request        =& $this->registry->fetchRequest();
        
$this->member       $this->registry->member();
        
$this->memberData    =& $this->registry->member()->fetchMemberData();
        
$this->cache        $this->registry->cache();
        
$this->caches        =& $this->registry->cache()->fetchCaches();
        
$this->lang         $this->registry->class_localization;
        
        
$this->lang->loadLanguageFile( array( 'admin_applications' ), 'core' );
    }
    
    
/**
     * Get all the available hook ids in a function for a given type
     *
     * @param    string         Skin Function
     * @param    string        Hook type [foreach|if]
     * @return    array         Settings for dropdown
     */
    
public function getHookIds$template=''$type=''$group='' )
    {
        if( !
$template )
        {
            return array();
        }

        
$type    $type $type 'foreach';
        
$return = array();
        
        
$this->DB->build( array( 'select' => 'template_content''from' => 'skin_templates''where' => "template_set_id=0 AND template_name='{$template}'" . ( $group " AND template_group='{$group}'" '' ) ) );
        
$this->DB->execute();

        while( 
$r $this->DB->fetch() )
        {
            
/* Use regex to try to find the ids */
            
            
$matches = array();
            
            if( 
$type == 'foreach' )
            {
                
preg_match_all"#<foreachs+loop="(.+?):(.+?)">#i"$r['template_content'], $matches );
            }
            else
            {
                
preg_match_all"#<ifs+test="([^>]+?):|:(.+?)">#i"$r['template_content'], $matches );
            }

            if( 
is_array($matches[1]) AND count($matches[1]) )
            {
                foreach( 
$matches[1] as $match )
                {
                    
$return$match ] = array( $match$match );
                }
            }
        }
        
        
/* Put the ids in alphabetical order, kinda hacky, oh well ;) */
        
ksort$return );
        
        
array_unshift$return, array( 0$this->lang->words['h_selectid'] ) );
                
        return 
$return;
    }
    
    
/**
     * Get all the available skin files
     *
     * @return    array         Settings for dropdown
     */
    
public function getSkinGroups()
    {
        
$return        = array( array( 0$this->lang->words['h_selectfile'] ) );
        
        
$this->DB->build( array( 'select' => $this->DB->buildDistinct'template_group' ), 'from' => 'skin_templates''order' => 'template_group ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['template_group'], $r['template_group'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Get all the available skin templates in a skin group
     *
     * @param    string         Skin Group
     * @return    array         Settings for dropdown
     */
    
public function getSkinMethods$file='' )
    {
        if( !
$file )
        {
            return array();
        }

        
$return        = array( array( 0$this->lang->words['h_selecttemp'] ) );
        
        
$this->DB->build( array( 'select' => $this->DB->buildDistinct'template_name' ), 'from' => 'skin_templates''where' => "template_group='{$file}'"'order' => 'template_name ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['template_name'], $r['template_name'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Retrieve css files for multiselect
     *
     * @return    array         Settings for multiselect
     */
    
public function getCSSFiles()
    {
        
/* Query CSS Files */
        
$this->DB->build( array( 'select' => $this->DB->buildDistinct('css_group'), 'from' => 'skin_css''order' => 'css_group ASC' ) );
        
$this->DB->execute();
        
        
/* Loop through CSS Files and add to array */
        
$cssFiles = array();
        
        while( 
$r $this->DB->fetch() )
        {
            
$cssFiles[] = array( $r['css_group'], $r['css_group'] );
        }
        
        return 
$cssFiles;
    }
    
    
/**
     * Retrieve skin replacements for multiselect
     *
     * @return    array         Settings for multiselect
     */
    
public function getSkinReplacements()
    {
        
/* Query CSS Files */
        
$this->DB->build( array( 'select' => $this->DB->buildDistinct('replacement_key'), 'from' => 'skin_replacements''order' => 'replacement_key ASC' ) );
        
$this->DB->execute();
        
        
/* Loop through CSS Files and add to array */
        
$replacements = array();
        
        while( 
$r $this->DB->fetch() )
        {
            
$replacements[] = array( $r['replacement_key'], $r['replacement_key'] );
        }
        
        return 
$replacements;
    }
    
    
/**
     * Retrieve setting groups for multiselect
     *
     * @return    array         Settings for multiselect
     */
    
public function getSettingGroups()
    {
        
$return        = array();
        
        
$this->DB->build( array( 'select' => 'conf_title_keyword, conf_title_title''from' => 'core_sys_settings_titles''order' => 'conf_title_title ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['conf_title_keyword'], $r['conf_title_title'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Retrieve settings for multiselect
     *
     * @return    array         Settings for multiselect
     */
    
public function getSettings()
    {
        
$return        = array();
        
        
$this->DB->build( array( 'select' => 'conf_key, conf_title''from' => 'core_sys_conf_settings''order' => 'conf_title ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['conf_key'], $r['conf_title'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Retrieve available modules for export
     *
     * @return    array         Settings for multiselect
     */
    
public function getModules()
    {
        
$return        = array();
        
        
$this->DB->build(
                                array(
                                    
'select'    => 'm.sys_module_application, m.sys_module_key, m.sys_module_title, m.sys_module_admin',
                                    
'from'        => array( 'core_sys_module' => 'm' ),
                                    
'order'        => 'a.app_title ASC, m.sys_module_title ASC',
                                    
'add_join'    => array(
                                                        array(
                                                                
'select'    => 'a.app_title',
                                                                
'from'        => array( 'core_applications' => 'a' ),
                                                                
'where'        => 'a.app_directory=m.sys_module_application',
                                                                
'type'        => 'left'
                                                            
)
                                                        )
                                    )
                            );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$admin  $r['sys_module_admin'] ? $this->lang->words['hook_admin_module']     : $this->lang->words['hook_public_module'];
            
$prefix $r['sys_module_admin'] ? 'admin' 'public';
            
            
$return[] = array( $prefix '-' $r['sys_module_application'] . '-' $r['sys_module_key'], $r['app_title'] . ':: ' $r['sys_module_title'] . ' ' $admin );
        }
        
        return 
$return;
    }
    
    
/**
     * Retrieve available Help Files for export
     *
     * @return    array         Settings for multiselect
     */
    
public function getHelpFiles()
    {
        
$return        = array();
        
        
$this->DB->build( array( 'select' => 'id, title''from' => 'faq''order' => 'title ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['title'], $r['title'] );
        }
        
        return 
$return;
    }

    
/**
     * Retrieve available tasks for export
     *
     * @return    array         Settings for multiselect
     */
    
public function getTasks()
    {
        
$return        = array();
        
        
$this->DB->build( array( 'select' => 'task_key, task_title''from' => 'task_manager''order' => 'task_title ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['task_key'], $r['task_title'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Get all the available language files
     *
     * @return    array         Settings for dropdown
     */
    
public function getLanguageFiles()
    {
        
$return        = array( array( 0$this->lang->words['selectafile'] ) );
        
        
$this->DB->build( array( 'select' => 'word_app, word_pack''from' => 'core_sys_lang_words''group' => 'word_app, word_pack''order' => 'word_app, word_pack' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['word_app'] . '_' $r['word_pack'], $r['word_app'] . '_' $r['word_pack'] );
        }
        
        return 
$return;
    }
    
    
/**
     * Get all the available language strings in a given file
     *
     * @param    string         Language file
     * @return    array         Settings for multiselect
     */
    
public function getStrings$file='' )
    {
        if( !
$file )
        {
            return array();
        }
        
        
$bits    explode'_'$file );
        
$app    $bits[0];
        
$pack    str_replace$app '_'''$file );
        
$return    = array();
        
        
$this->DB->build( array( 'select' => $this->DB->buildDistinct'word_key' ), 'from' => 'core_sys_lang_words''where' => "word_app='{$app}' AND word_pack='{$pack}'"'order' => 'word_key ASC' ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
$return[] = array( $r['word_key'], $r['word_key'] );
        }
        
        return 
$return;
    }
}
Онлайн: 0
Реклама