Viewing file: CakePHPInstaller.php (2.33 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php namespace Composer\Installers;
use Composer\DependencyResolver\Pool; use Composer\Package\PackageInterface; use Composer\Package\LinkConstraint\MultiConstraint; use Composer\Package\LinkConstraint\VersionConstraint;
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) { $repositoryManager = $this->composer->getRepositoryManager(); if ($repositoryManager) { $repos = $repositoryManager->getLocalRepository(); if (!$repos) { return false; } $cake3 = new MultiConstraint(array( new VersionConstraint($matcher, $version), new VersionConstraint('!=', '9999999-dev'), )); $pool = new Pool('dev'); $pool->addRepository($repos); $packages = $pool->whatProvides('cakephp/cakephp'); foreach ($packages as $package) { $installed = new VersionConstraint('=', $package->getVersion()); if ($cake3->matches($installed)) { return true; break; } } } return false; } }
|