Вход Регистрация
Файл: admin/applications/core/modules_admin/ajax/templatesandr.php
Строк: 166
<?php

/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * AJAX Functions For applications/core/js/ipb3Templates.js file
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * Author: Matt Mecham
 *
 * @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
 * @since        Friday 19th May 2006 17:33
 * @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 
admin_core_ajax_templatesandr extends ipsAjaxCommand 
{
    
/**
     * Skin functions object handle
     *
     * @var        object
     */
    
protected $skinFunctions;
    
    
/**
     * Main executable
     *
     * @param    object    registry object
     * @return    @e void
     */
    
public function doExecuteipsRegistry $registry )
    {
        
$registry->getClass('class_localization')->loadLanguageFile( array( 'admin_templates' ), 'core' );
        
        
//-----------------------------------------
        // Load functions and cache classes
        //-----------------------------------------
    
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinFunctions.php' );/*noLibHook*/
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinCaching.php' );/*noLibHook*/
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinDifferences.php' );/*noLibHook*/
        
        
$this->skinFunctions = new skinDifferences$registry );
        
        
/* Check... */
        
if ( !$registry->getClass('class_permissions')->checkPermission'templates_manage'ipsRegistry::$current_application'templates' ) )
        {
            
$this->returnJsonError$registry->getClass('class_localization')->words['sk_ajax_noperm'] );
        }
        
        
//-----------------------------------------
        // What shall we do?
        //-----------------------------------------
        
        
switch( $this->request['do'] )
        {
            default:
            case 
'getTemplateBitList':
                
$this->_getTemplateBitList();
            break;
            case 
'replace':
                
$this->_replace();
            break;
        }
    }
    
    
/**
     * Fetch a JSON list of template bits for the template group
     *
     * @return    @e void
     */
    
protected function _replace()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------
        
        
$finalIDs      = array();
        
$templates   = array();
        
$sessionID     IPSText::md5Clean$this->request['sessionID'] );

        
$sessionData $this->DB->buildAndFetch( array( 'select' => '*',
                                                        
'from'   => 'template_sandr',
                                                        
'where'  => "sandr_session_id='" addslashes$sessionID ) ."'" ) );
        
        
$templateData unserialize$sessionData['sandr_results'] );
        
        if ( 
is_array$templateData ) )
        {
            foreach( 
$templateData as $_group => $_data )
            {
                if ( !empty( 
$_POST['groups'][ $_group ] ) )
                {
                    foreach( 
$_data as $_name => $_id )
                    {
                        
$finalIDs[] = $_id;
                    }
                }
                else
                {
                    foreach( 
$_data as $_name => $_id )
                    {
                        if ( !empty( 
$_POST['templates'][ $_id ] ) )
                        {
                            
$finalIDs[] = $_id;
                        }
                    }
                }
            }
        }
        
        
/* Check... */
        
if ( ! count$finalIDs ) )
        {
            
$this->returnJsonError$this->lang->words['ajax_missing_data'] );
        }
        
        
/* Load templates */
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'skin_templates',
                                 
'where'  => 'template_id IN ('implode','$finalIDs ) . ')' ) );
                                
        
$this->DB->execute();
        
        while( 
$row $this->DB->fetch() )
        {
            
$templates$row['template_id'] ] = $row;
        }
        
        
/* Perform the replacement */
        
foreach( $templates as $template_id => $template )
        {
            if ( 
$sessionData['sandr_is_regex'] )
            {
                
$before str_replace'#''#'IPSText::stripslashes$sessionData['sandr_search_for'] ) );
                
$after  preg_replace'#\\\\(d+?)#i''$\1'$sessionData['sandr_replace_with'] );
                
                
$template['template_content'] = preg_replace"#{$before}#si"$after$template['template_content'] );
            
            }
            else
            {
                
$template['template_content'] = str_ireplace$sessionData['sandr_search_for'], $sessionData['sandr_replace_with'], $template['template_content'] );
            }
            
            
/* Save it */
            
$this->skinFunctions->saveTemplateBitFromEdit$template['template_id'], $sessionData['sandr_set_id'], $template['template_content'], $template['template_data'] );
        }
        
        
/* Done */
        
$this->returnJsonArray( array( 'status' => 'ok' ) );
    }
    
    
/**
     * Fetch a JSON list of template bits for the template group
     *
     * @return    @e void
     */
    
protected function _getTemplateBitList()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------
        
        
$setID         intval$this->request['setID'] );
        
$templateGroup IPSText::alphanumericalClean$this->request['templateGroup'] );
        
$sessionID       IPSText::md5Clean$this->request['sessionID'] );
        
$templates       = array();
        
        
//-----------------------------------------
        // Checks...
        //-----------------------------------------
        
        
if ( ! $setID OR ! $templateGroup or ! $sessionID )
        { 
            
$this->returnJsonError$this->lang->words['ajax_missing_data'] );
        }

        
//-----------------------------------------
        // Get templates
        //-----------------------------------------
        
        
$sessionData $this->DB->buildAndFetch( array( 'select' => '*',
                                                        
'from'   => 'template_sandr',
                                                        
'where'  => "sandr_session_id='" addslashes$sessionID ) ."'" ) );
        
        
$templateIDs unserialize$sessionData['sandr_results'] );
        
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'skin_templates',
                                 
'where'  => 'template_id IN ('implode','array_values$templateIDs$templateGroup] ) ) . ')' ) );
                                
        
$this->DB->execute();
        
        while( 
$row $this->DB->fetch() )
        {
            unset( 
$row['template_content'] );
            
$templates[] = $row;
        }
        
        
$this->returnJsonArray( array( 'templates' => $templates ) );
    }
}
Онлайн: 2
Реклама