Вход Регистрация
Файл: vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
Строк: 79
<?php
namespace ComposerInstallers;

use 
ComposerUtilFilesystem;

/**
 * Installer for Bitrix Framework
 *
 * @author Nik Samokhvalov <nik@samokhvalov.info>
 * @author Denis Kulichkin <onexhovia@gmail.com>
 */
class BitrixInstaller extends BaseInstaller
{
    protected 
$locations = array(
        
'module'    => 'bitrix/modules/{$name}/',
        
'component' => 'bitrix/components/{$name}/',
        
'theme'     => 'bitrix/templates/{$name}/',
    );

    
/**
     * @var array Storage for informations about duplicates at all the time of installation packages
     */
    
private static $checkedDuplicates = array();

    
/**
     * {@inheritdoc}
     */
    
protected function templatePath($path, array $vars = array())
    {
        
$templatePath parent::templatePath($path$vars);
        
$this->checkDuplicates($templatePath$vars);

        return 
$templatePath;
    }

    
/**
     * Duplicates search packages
     *
     * @param string $templatePath
     * @param array $vars
     */
    
protected function checkDuplicates($templatePath, array $vars = array())
    {
        
/**
         * Incorrect paths for backward compatibility
         */
        
$oldLocations = array(
            
'module'    => 'local/modules/{$name}/',
            
'component' => 'local/components/{$name}/',
            
'theme'     => 'local/templates/{$name}/'
        
);

        
$packageType substr($vars['type'], strlen('bitrix') + 1);
        
$oldLocation str_replace('{$name}'$vars['name'], $oldLocations[$packageType]);

        if (
in_array($oldLocation, static::$checkedDuplicates)) {
            return;
        }

        if (
$oldLocation !== $templatePath && file_exists($oldLocation) && $this->io && $this->io->isInteractive()) {

            
$this->io->writeError('    <error>Duplication of packages:</error>');
            
$this->io->writeError('    <info>Package ' $oldLocation ' will be called instead package ' $templatePath '</info>');

            while (
true) {
                switch (
$this->io->ask('    <info>Delete ' $oldLocation ' [y,n,?]?</info> ''?')) {
                    case 
'y':
                        
$fs = new Filesystem();
                        
$fs->removeDirectory($oldLocation);
                        break 
2;

                    case 
'n':
                        break 
2;

                    case 
'?':
                    default:
                        
$this->io->writeError(array(
                            
'    y - delete package ' $oldLocation ' and to continue with the installation',
                            
'    n - don't delete and to continue with the installation',
                        ));
                        $this->io->writeError('    
? - print help');
                        break;
                }
            }
        }

        static::$checkedDuplicates[] = $oldLocation;
    }
}
Онлайн: 3
Реклама