Вход Регистрация
Файл: base-sys/base/import.php
Строк: 177
<?php

class BASE_Import extends DATAIMPORTER_CLASS_Import
{
    public 
$configs;

    public function 
import( $params )
    {
        
$importDir = $params['importDir'];

        
$sqlFile = $importDir . 'configs.sql';

        
//import configs
        
if ( file_exists($sqlFile) )
        {
            
DATAIMPORTER_BOL_ImportService::getInstance()->sqlImport($sqlFile);
        }

        
$configFile = $importDir . 'config.txt';

        
$string = file_get_contents($configFile);
        
$this->configs = json_decode($string, true);

        
$this->importAvatars($this->configs['avatarUrl']);

        
$this->importTheme($importDir);

        
$this->importMediaPanelFiles();

        if ( 
PEEP::getPluginManager()->getPlugin('dataimporter') )
        {
            if ( 
file_exists(PEEP::getPluginManager()->getPlugin('dataimporter')->getRootDir() . 'langs.zip') )
            {
                
PEEP::getLanguage()->importPluginLangs(PEEP::getPluginManager()->getPlugin('dataimporter')->getRootDir() . 'langs.zip', 'dataimporter');
            }
        }

        
$languageId = PEEP::getLanguage()->getCurrentId();
        
BOL_LanguageService::getInstance()->generateCache($languageId);

        
PEEP::getDbo()->query( "TRUNCATE " . PEEP_DB_PREFIX . 'base_component_place_cache' ); //TODO: Use service function

        // ADD MENU ITEMS add plugin and add theme
        
try
        {
            
PEEP::getDbo()->query( "INSERT IGNORE INTO `" . PEEP_DB_PREFIX ."base_menu_item` ( `prefix`, `key`, `documentKey`, `type`, `order`, `routePath`, `externalUrl`, `newWindow`, `visibleFor`) VALUES ( 'admin', 'sidebar_menu_plugins_add', '', 'admin_plugins', 3, 'admin_plugins_add', NULL, 0, 2) ");
        }
        catch( 
Exception $ex )
        {
            
        }

        try
        {
            
PEEP::getDbo()->query( "INSERT IGNORE INTO `" . PEEP_DB_PREFIX ."base_menu_item` ( `prefix`, `key`, `documentKey`, `type`, `order`, `routePath`, `externalUrl`, `newWindow`, `visibleFor`) VALUES ( 'admin', 'sidebar_menu_themes_add', '', 'admin_appearance', 3, 'admin_themes_add_new', NULL, 0, 3) ");
        }
        catch( 
Exception $ex )
        {

        }
    }

    private function 
importAvatars( $avatarUrl )
    {
       
$avatarUrl = trim($avatarUrl);

        if ( 
substr($avatarUrl, -1) === '/' )
        {
            
$avatarUrl = substr($avatarUrl, 0, -1);
        }

        
$avatarDir = BOL_AvatarService::getInstance()->getAvatarsDir();

        
$first = 0;
        
$count = 150;

        while ( 
true )
        {
            
$list = BOL_UserService::getInstance()->findList($first, $count, true);

            
$first += $count;
            if ( empty(
$list) )
            {
                break;
            }

            foreach ( 
$list as $user )
            {
                for ( 
$size = 1; $size < 4; $size++ )
                {
                    
$path = BOL_AvatarService::getInstance()->getAvatarPath($user->id, $size);
                    
$avatarName = str_replace($avatarDir, '', $path);
                    
$content = file_get_contents($avatarUrl . '/' . $avatarName);

                    if ( !empty(
$content) )
                    {
                        
PEEP::getStorage()->fileSetContent($path, $content);
                    }
                }
            }
        }
    }

    private function 
importTheme( $importDir )
    {
        
$theme = new BOL_Theme();

        
$theme->name = $this->configs['currentTheme']['name'];
        
$theme->customCss = $this->configs['currentTheme']['customCss'];
        
$theme->customCssFileName = $this->configs['currentTheme']['customCssFileName'];
        
$theme->description = $this->configs['currentTheme']['description'];
        
$theme->sidebarPosition = $this->configs['currentTheme']['sidebarPosition'];
        
$theme->title = $this->configs['currentTheme']['title'];

        if ( !
defined('PEEP_PLUGIN_XP') )
        {
            
PEEP::getStorage()->copyDir($importDir . ($theme->name) . DS, BOL_ThemeService::getInstance()->getRootDir($theme->name));
        }

        
PEEP::getStorage()->copyDir($importDir . 'themes' . DS, PEEP_DIR_THEME_USERFILES);

        
BOL_ThemeService::getInstance()->processAllThemes();
        
        
$oldTheme = BOL_ThemeService::getInstance()->findThemeByName($theme->name);        
        
$theme->id = $oldTheme->id;
        
        
BOL_ThemeService::getInstance()->saveTheme($theme);

        
$controlValues = array();
        
$url_pattern = '/http://[^s]+/([w.]+)/i';
        
        foreach ( 
$this->configs['controlValue'] as $key => $controlValue )
        {
            
$value = $controlValue;
            
            if ( 
preg_match($url_pattern, $controlValue, $matches) )
            {
                
$imgFile = BOL_ThemeService::getInstance()->getUserfileImagesDir() . $matches[1];
                
                if ( !empty(
$matches[1]) && file_exists($imgFile) && is_file($imgFile) )
                {
                    
$value = 'url(' . BOL_ThemeService::getInstance()->getUserfileImagesUrl() . $matches[1] . ')';
                }
            }

            
$controlValues[$key] = $value;
        }
        
        
BOL_ThemeService::getInstance()->importThemeControls($theme->id, $controlValues);
        
BOL_ThemeService::getInstance()->processAllThemes();
    }
    
    private function 
importMediaPanelFiles()
    {
        
$mediaPanelUrl = $this->configs['media_panel_url'];

        
$list = array();

        
$list = BOL_MediaPanelService::getInstance()->findAll();
        
        
$list = is_array($list)?  $list: array();
        
        foreach (
$list as $dto)/*@var $dto BOL_MediaPanelFile*/
        
{
            
$filename = $dto->getId().'-'.$dto->getData()->name;
            
            
$fileContent = file_get_contents($mediaPanelUrl.'/'.$filename);

            if ( !empty(
$fileContent) )
            {
                
PEEP::getStorage()->fileSetContent(PEEP::getPluginManager()->getPlugin('base')->getUserFilesDir().$filename, $fileContent);
            }
        }
    }
}
Онлайн: 0
Реклама