Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Config/FileSaver.php
Строк: 67
<?php
namespace ConcreteCoreConfig;

use 
IlluminateFilesystemFilesystem;
use 
ConcreteCoreCacheOpCache;

class 
FileSaver implements SaverInterface
{
    
/**
     * The filesystem instance.
     *
     * @var IlluminateFilesystemFilesystem
     */
    
protected $files;

    public function 
__construct(Filesystem $files)
    {
        
$this->files $files;
    }

    protected function 
getStorageDirectory()
    {
        return 
DIR_APPLICATION '/config/generated_overrides';
    }

    protected function 
getFilename($group$path null)
    {
        if (!
$path) {
            return 
'group.php';
        } else {
            return 
"{$path}/{$group}.php";
        }
    }

    public function 
save($item$value$environment$group$namespace null)
    {
        
$path $this->getStorageDirectory();

        if (!
$this->files->exists($path)) {
            
$this->files->makeDirectory($path0777);
        } elseif (!
$this->files->isDirectory($path)) {
            
$this->files->delete($path);
            
$this->files->makeDirectory($path0777);
        }

        
$ns_string 'null';
        if (
$namespace) {
            
$ns_string $namespace;
            
$path "{$path}/{$namespace}";

            if (!
$this->files->exists($path)) {
                
$this->files->makeDirectory($path0777);
            } elseif (!
$this->files->isDirectory($path)) {
                
$this->files->delete($path);
                
$this->files->makeDirectory($path0777);
            }
        }

        
$file $this->getFilename($group$path);

        
$current = array();
        if (
$this->files->exists($file)) {
            if (
Config::get('concrete.config.temp_save'true)) {
                
// Make sure that we miss cache.
                
$temp_file tempnam($path$group '_');
                
$contents $this->files->get($file);
                
$this->files->put($temp_file$contents);

                
$current $this->files->getRequire($temp_file);
                
$this->files->delete($temp_file);
            } else {
                
$current $this->files->getRequire($file);
            }
        }

        
array_set($current$item$value);

        
$renderer = new Renderer($current);

        
$header = array(
            
"<?php",
            
"",
            
"/**",
            
" * -----------------------------------------------------------------------------",
            
" * Generated " date(DATE_ATOM),
            
" *",
            
" * DO NOT EDIT THIS FILE DIRECTLY",
            
" *",
            
" * @item      {$item}",
            
" * @group     {$group}",
            
" * @namespace {$ns_string}",
            
" * -----------------------------------------------------------------------------",
            
" */",
            
"return ",
        );

        
$rendered $renderer->render(PHP_EOL'    'implode(PHP_EOL$header));
        
$result $this->files->put($file$rendered) !== false;
        if (
$result) {
            
OpCache::clear($file);
        }

        return 
$result;
    }
}
Онлайн: 0
Реклама