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

use 
ComposerDependencyResolverPool;
use 
ComposerPackagePackageInterface;

class 
CakePHPInstaller extends BaseInstaller
{
    protected 
$locations = array(
        
'plugin' => 'Plugin/{$name}/',
    );

    
/**
     * Format package name to CamelCase
     */
    
public function inflectPackageVars($vars)
    {
        if (
$this->matchesCakeVersion('>=''3.0.0')) {
            return 
$vars;
        }

        
$nameParts explode('/'$vars['name']);
        foreach (
$nameParts as &$value) {
            
$value strtolower(preg_replace('/(?<=\w)([A-Z])/''_\1'$value));
            
$value str_replace(array('-''_'), ' '$value);
            
$value str_replace(' '''ucwords($value));
        }
        
$vars['name'] = implode('/'$nameParts);

        return 
$vars;
    }

    
/**
     * Change the default plugin location when cakephp >= 3.0
     */
    
public function getLocations()
    {
        if (
$this->matchesCakeVersion('>=''3.0.0')) {
            
$this->locations['plugin'] =  $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/';
        }
        return 
$this->locations;
    }

    
/**
     * Check if CakePHP version matches against a version
     *
     * @param string $matcher
     * @param string $version
     * @return bool
     */
    
protected function matchesCakeVersion($matcher$version)
    {
        if (
class_exists('ComposerSemverConstraintMultiConstraint')) {
            
$multiClass 'ComposerSemverConstraintMultiConstraint';
            
$constraintClass 'ComposerSemverConstraintConstraint';
        } else {
            
$multiClass 'ComposerPackageLinkConstraintMultiConstraint';
            
$constraintClass 'ComposerPackageLinkConstraintVersionConstraint';
        }

        
$repositoryManager $this->composer->getRepositoryManager();
        if (
$repositoryManager) {
            
$repos $repositoryManager->getLocalRepository();
            if (!
$repos) {
                return 
false;
            }
            
$cake3 = new $multiClass(array(
                new 
$constraintClass($matcher$version),
                new 
$constraintClass('!=''9999999-dev'),
            ));
            
$pool = new Pool('dev');
            
$pool->addRepository($repos);
            
$packages $pool->whatProvides('cakephp/cakephp');
            foreach (
$packages as $package) {
                
$installed = new $constraintClass('='$package->getVersion());
                if (
$cake3->matches($installed)) {
                    return 
true;
                    break;
                }
            }
        }
        return 
false;
    }
}
Онлайн: 5
Реклама