Chris@0: 'Plugin/{$name}/', Chris@0: ); Chris@0: Chris@0: /** Chris@0: * Format package name to CamelCase Chris@0: */ Chris@0: public function inflectPackageVars($vars) Chris@0: { Chris@0: if ($this->matchesCakeVersion('>=', '3.0.0')) { Chris@0: return $vars; Chris@0: } Chris@0: Chris@0: $nameParts = explode('/', $vars['name']); Chris@0: foreach ($nameParts as &$value) { Chris@0: $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value)); Chris@0: $value = str_replace(array('-', '_'), ' ', $value); Chris@0: $value = str_replace(' ', '', ucwords($value)); Chris@0: } Chris@0: $vars['name'] = implode('/', $nameParts); Chris@0: Chris@0: return $vars; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Change the default plugin location when cakephp >= 3.0 Chris@0: */ Chris@0: public function getLocations() Chris@0: { Chris@0: if ($this->matchesCakeVersion('>=', '3.0.0')) { Chris@0: $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; Chris@0: } Chris@0: return $this->locations; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Check if CakePHP version matches against a version Chris@0: * Chris@0: * @param string $matcher Chris@0: * @param string $version Chris@0: * @return bool Chris@0: */ Chris@0: protected function matchesCakeVersion($matcher, $version) Chris@0: { Chris@0: if (class_exists('Composer\Semver\Constraint\MultiConstraint')) { Chris@0: $multiClass = 'Composer\Semver\Constraint\MultiConstraint'; Chris@0: $constraintClass = 'Composer\Semver\Constraint\Constraint'; Chris@0: } else { Chris@0: $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint'; Chris@0: $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint'; Chris@0: } Chris@0: Chris@0: $repositoryManager = $this->composer->getRepositoryManager(); Chris@0: if ($repositoryManager) { Chris@0: $repos = $repositoryManager->getLocalRepository(); Chris@0: if (!$repos) { Chris@0: return false; Chris@0: } Chris@0: $cake3 = new $multiClass(array( Chris@0: new $constraintClass($matcher, $version), Chris@0: new $constraintClass('!=', '9999999-dev'), Chris@0: )); Chris@0: $pool = new Pool('dev'); Chris@0: $pool->addRepository($repos); Chris@0: $packages = $pool->whatProvides('cakephp/cakephp'); Chris@0: foreach ($packages as $package) { Chris@0: $installed = new $constraintClass('=', $package->getVersion()); Chris@0: if ($cake3->matches($installed)) { Chris@0: return true; Chris@0: } Chris@0: } Chris@0: } Chris@0: return false; Chris@0: } Chris@0: }