This commit is contained in:
KhaiNguyen
2020-02-13 10:39:37 +07:00
commit 59401cb805
12867 changed files with 4646216 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitfc14807bbec51b6e553ff476d14d61ad::getLoader();

View File

@@ -0,0 +1,125 @@
<?php
/**
* This file `autoload_packages.php`was generated by automattic/jetpack-autoloader.
*
* From your plugin include this file with:
* require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
*
* @package automattic/jetpack-autoloader
*/
// phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound
namespace Automattic\Jetpack\Autoloader;
if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) {
global $jetpack_packages_classes;
if ( ! is_array( $jetpack_packages_classes ) ) {
$jetpack_packages_classes = array();
}
/**
* Adds the version of a package to the $jetpack_packages global array so that
* the autoloader is able to find it.
*
* @param string $class_name Name of the class that you want to autoload.
* @param string $version Version of the class.
* @param string $path Absolute path to the class so that we can load it.
*/
function enqueue_package_class( $class_name, $version, $path ) {
global $jetpack_packages_classes;
if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
}
// If we have a @dev version set always use that one!
if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) {
return;
}
// Always favour the @dev version. Since that version is the same as bleeding edge.
// We need to make sure that we don't do this in production!
if ( 'dev-' === substr( $version, 0, 4 ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
return;
}
// Set the latest version!
if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
}
}
}
if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) {
/**
* Used for autoloading jetpack packages.
*
* @param string $class_name Class Name to load.
*/
function autoloader( $class_name ) {
global $jetpack_packages_classes;
if ( isset( $jetpack_packages_classes[ $class_name ] ) ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
if ( function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) {
_doing_it_wrong(
esc_html( $class_name ),
sprintf(
/* translators: %s Name of a PHP Class */
esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ),
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$class_name
),
esc_html( $jetpack_packages_classes[ $class_name ]['version'] )
);
}
}
if ( file_exists( $jetpack_packages_classes[ $class_name ]['path'] ) ) {
require_once $jetpack_packages_classes[ $class_name ]['path'];
return true;
}
}
return false;
}
// Add the jetpack autoloader.
spl_autoload_register( __NAMESPACE__ . '\autoloader' );
}
/**
* Prepare all the classes for autoloading.
*/
function enqueue_packages_391d6e4434acf75f41618d6743408fb9() {
$class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php';
foreach ( $class_map as $class_name => $class_info ) {
enqueue_package_class( $class_name, $class_info['version'], $class_info['path'] );
}
$autoload_file = __DIR__ . '/composer/autoload_files.php';
$includeFiles = file_exists( $autoload_file )
? require $autoload_file
: array();
foreach ( $includeFiles as $fileIdentifier => $file ) {
if ( empty( $GLOBALS['__composer_autoload_files'][ $fileIdentifier ] ) ) {
require $file;
$GLOBALS['__composer_autoload_files'][ $fileIdentifier ] = true;
}
}
}
enqueue_packages_391d6e4434acf75f41618d6743408fb9();

View File

@@ -0,0 +1,44 @@
A custom autoloader for Composer
=====================================
This is a custom autoloader generator that uses a classmap to always load the latest version of a class.
The problem this autoloader is trying to solve is conflicts that arise when two or more plugins use the same package, but one of the plugins uses an older version of said package.
This is solved by keeping an in memory map of all the different classes that can be loaded, and updating the map with the path to the latest version of the package for the autoloader to find when we instantiate the class.
This only works if we instantiate the class after all the plugins have loaded. That is why the class produces an error if the plugin calls a class but has not loaded all the plugins yet.
It diverges from the default Composer autoloader setup in the following ways:
* It creates an `autoload_classmap_package.php` file in the `vendor/composer` directory.
* This file includes the version numbers from each package that is used.
* The autoloader will only load the latest version of the library no matter what plugin loads the library.
* Only call the library classes after all the plugins have loaded and the `plugins_loaded` action has fired.
Usage
-----
In your project's `composer.json`, add the following lines:
```json
{
"require-dev": {
"automattic/jetpack-autoloader": "^1"
}
}
```
After the next update/install, you will have a `vendor/autoload_packages.php` file.
Load the file in your plugin via main plugin file.
In the main plugin you will also need to include the files like this.
```php
require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
```
Current Limitations
-----
We currently only support packages that autoload via psr-4 definition in their package.

View File

@@ -0,0 +1,28 @@
{
"name": "automattic/jetpack-autoloader",
"description": "Creates a custom autoloader for a plugin or theme.",
"type": "composer-plugin",
"license": "GPL-2.0-or-later",
"require": {
"composer-plugin-api": "^1.1"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5"
},
"autoload": {
"psr-4": {
"Automattic\\Jetpack\\Autoloader\\": "src"
}
},
"extra": {
"class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin"
},
"scripts": {
"phpunit": [
"@composer install",
"./vendor/phpunit/phpunit/phpunit --colors=always"
]
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@@ -0,0 +1,286 @@
<?php
/**
* Autoloader Generator.
*
* @package automattic/jetpack-autoloader
*/
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
// phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
// phpcs:disable PHPCompatibility.FunctionDeclarations.NewClosure.Found
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_dirFound
// phpcs:disable WordPress.Files.FileName.InvalidClassFileName
// phpcs:disable WordPress.Files.FileName.NotHyphenatedLowercase
// phpcs:disable WordPress.Files.FileName.InvalidClassFileName
// phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_export
// phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
// phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fopen
// phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fwrite
// phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
// phpcs:disable WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase
// phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
// phpcs:disable WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
namespace Automattic\Jetpack\Autoloader;
use Composer\Autoload\AutoloadGenerator as BaseGenerator;
use Composer\Autoload\ClassMapGenerator;
use Composer\Config;
use Composer\Installer\InstallationManager;
use Composer\IO\IOInterface;
use Composer\Package\PackageInterface;
use Composer\Repository\InstalledRepositoryInterface;
use Composer\Util\Filesystem;
/**
* Class AutoloadGenerator.
*/
class AutoloadGenerator extends BaseGenerator {
/**
* Instantiate an AutoloadGenerator object.
*
* @param IOInterface $io IO object.
*/
public function __construct( IOInterface $io = null ) {
$this->io = $io;
}
/**
* Dump the autoloader.
*
* @param Config $config Config object.
* @param InstalledRepositoryInterface $localRepo Installed Reposetories object.
* @param PackageInterface $mainPackage Main Package object.
* @param InstallationManager $installationManager Manager for installing packages.
* @param string $targetDir Path to the current target directory.
* @param bool $scanPsr0Packages Whether to search for packages. Currently hard coded to always be false.
* @param string $suffix The autoloader suffix, ignored since we want our autoloader to only be included once.
*/
public function dump(
Config $config,
InstalledRepositoryInterface $localRepo,
PackageInterface $mainPackage,
InstallationManager $installationManager,
$targetDir,
$scanPsr0Packages = null, // Not used we always optimize.
$suffix = null
) {
$filesystem = new Filesystem();
$filesystem->ensureDirectoryExists( $config->get( 'vendor-dir' ) );
$basePath = $filesystem->normalizePath( realpath( getcwd() ) );
$vendorPath = $filesystem->normalizePath( realpath( $config->get( 'vendor-dir' ) ) );
$targetDir = $vendorPath . '/' . $targetDir;
$filesystem->ensureDirectoryExists( $targetDir );
$packageMap = $this->buildPackageMap( $installationManager, $mainPackage, $localRepo->getCanonicalPackages() );
$autoloads = $this->parseAutoloads( $packageMap, $mainPackage );
$classMap = $this->getClassMap( $autoloads, $filesystem, $vendorPath, $basePath );
// Generate the files.
file_put_contents( $targetDir . '/autoload_classmap_package.php', $this->getAutoloadClassmapPackagesFile( $classMap ) );
$this->io->writeError( '<info>Generated ' . $targetDir . '/autoload_classmap_package.php</info>', true );
file_put_contents( $vendorPath . '/autoload_packages.php', $this->getAutoloadPackageFile( $suffix ) );
$this->io->writeError( '<info>Generated ' . $vendorPath . '/autoload_packages.php</info>', true );
}
/**
* This function differs from the composer parseAutoloadsType in that beside returning the path.
* It also return the path and the version of a package.
*
* Currently supports only psr-4 and clasmap parsing.
*
* @param array $packageMap Map of all the packages.
* @param string $type Type of autoloader to use, currently not used, since we only support psr-4.
* @param PackageInterface $mainPackage Instance of the Package Object.
*
* @return array
*/
protected function parseAutoloadsType( array $packageMap, $type, PackageInterface $mainPackage ) {
$autoloads = array();
if ( 'psr-4' !== $type && 'classmap' !== $type ) {
return parent::parseAutoloadsType( $packageMap, $type, $mainPackage );
}
foreach ( $packageMap as $item ) {
list($package, $installPath) = $item;
$autoload = $package->getAutoload();
if ( $package === $mainPackage ) {
$autoload = array_merge_recursive( $autoload, $package->getDevAutoload() );
}
if ( null !== $package->getTargetDir() && $package !== $mainPackage ) {
$installPath = substr( $installPath, 0, -strlen( '/' . $package->getTargetDir() ) );
}
if ( 'psr-4' === $type && isset( $autoload['psr-4'] ) && is_array( $autoload['psr-4'] ) ) {
foreach ( $autoload['psr-4'] as $namespace => $paths ) {
$paths = is_array( $paths ) ? $paths : array( $paths );
foreach ( $paths as $path ) {
$relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
$autoloads[ $namespace ][] = array(
'path' => $relativePath,
'version' => $package->getVersion(), // Version of the class comes from the package - should we try to parse it?
);
}
}
}
if ( 'classmap' === $type && isset( $autoload['classmap'] ) && is_array( $autoload['classmap'] ) ) {
foreach ( $autoload['classmap'] as $paths ) {
$paths = is_array( $paths ) ? $paths : array( $paths );
foreach ( $paths as $path ) {
$relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
$autoloads[] = array(
'path' => $relativePath,
'version' => $package->getVersion(), // Version of the class comes from the package - should we try to parse it?
);
}
}
}
}
return $autoloads;
}
/**
* Take the autoloads array and return the classMap that contains the path and the version for each namespace.
*
* @param array $autoloads Array of autoload settings defined defined by the packages.
* @param Filesystem $filesystem Filesystem class instance.
* @param string $vendorPath Path to the vendor directory.
* @param string $basePath Base Path.
*
* @return array $classMap
*/
private function getClassMap( array $autoloads, Filesystem $filesystem, $vendorPath, $basePath ) {
$blacklist = null;
if ( ! empty( $autoloads['exclude-from-classmap'] ) ) {
$blacklist = '{(' . implode( '|', $autoloads['exclude-from-classmap'] ) . ')}';
}
$classmapString = '';
// Scan the PSR-4 and classmap directories for class files, and add them to the class map.
foreach ( $autoloads['psr-4'] as $namespace => $packages_info ) {
foreach ( $packages_info as $package ) {
$dir = $filesystem->normalizePath(
$filesystem->isAbsolutePath( $package['path'] )
? $package['path']
: $basePath . '/' . $package['path']
);
$namespace = empty( $namespace ) ? null : $namespace;
$map = ClassMapGenerator::createMap( $dir, $blacklist, $this->io, $namespace );
foreach ( $map as $class => $path ) {
$classCode = var_export( $class, true );
$pathCode = $this->getPathCode( $filesystem, $basePath, $vendorPath, $path );
$versionCode = var_export( $package['version'], true );
$classmapString .= <<<CLASS_CODE
$classCode => array(
'version' => $versionCode,
'path' => $pathCode
),
CLASS_CODE;
$classmapString .= PHP_EOL;
}
}
}
foreach ( $autoloads['classmap'] as $package ) {
$dir = $filesystem->normalizePath(
$filesystem->isAbsolutePath( $package['path'] )
? $package['path']
: $basePath . '/' . $package['path']
);
$map = ClassMapGenerator::createMap( $dir, $blacklist, $this->io, null );
foreach ( $map as $class => $path ) {
$classCode = var_export( $class, true );
$pathCode = $this->getPathCode( $filesystem, $basePath, $vendorPath, $path );
$versionCode = var_export( $package['version'], true );
$classmapString .= <<<CLASS_CODE
$classCode => array(
'version' => $versionCode,
'path' => $pathCode
),
CLASS_CODE;
$classmapString .= PHP_EOL;
}
}
return 'array( ' . PHP_EOL . $classmapString . ');' . PHP_EOL;
}
/**
* Generate the PHP that will be used in the autoload_classmap_package.php files.
*
* @param srting $classMap class map array string that is to be written out to the file.
*
* @return string
*/
private function getAutoloadClassmapPackagesFile( $classMap ) {
return <<<INCLUDE_CLASSMAP
<?php
// This file `autoload_classmap_packages.php` was auto generated by automattic/jetpack-autoloader.
\$vendorDir = dirname(__DIR__);
\$baseDir = dirname(\$vendorDir);
return $classMap
INCLUDE_CLASSMAP;
}
/**
* Generate the PHP that will be used in the autoload_packages.php files.
*
* @param string $suffix Unique suffix added to the jetpack_enqueue_packages function.
*
* @return string
*/
private function getAutoloadPackageFile( $suffix ) {
$sourceLoader = fopen( __DIR__ . '/autoload.php', 'r' );
$file_contents = stream_get_contents( $sourceLoader );
$file_contents .= <<<INCLUDE_FILES
/**
* Prepare all the classes for autoloading.
*/
function enqueue_packages_$suffix() {
\$class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php';
foreach ( \$class_map as \$class_name => \$class_info ) {
enqueue_package_class( \$class_name, \$class_info['version'], \$class_info['path'] );
}
\$autoload_file = __DIR__ . '/composer/autoload_files.php';
\$includeFiles = file_exists( \$autoload_file )
? require \$autoload_file
: array();
foreach ( \$includeFiles as \$fileIdentifier => \$file ) {
if ( empty( \$GLOBALS['__composer_autoload_files'][ \$fileIdentifier ] ) ) {
require \$file;
\$GLOBALS['__composer_autoload_files'][ \$fileIdentifier ] = true;
}
}
}
enqueue_packages_$suffix();
INCLUDE_FILES;
return $file_contents;
}
}

View File

@@ -0,0 +1,90 @@
<?php
/**
* Custom Autoloader Composer Plugin, hooks into composer events to generate the custom autoloader.
*
* @package automattic/jetpack-autoloader
*/
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
// phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
// phpcs:disable WordPress.Files.FileName.NotHyphenatedLowercase
// phpcs:disable WordPress.Files.FileName.InvalidClassFileName
// phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
namespace Automattic\Jetpack\Autoloader;
use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Script\Event;
use Composer\Script\ScriptEvents;
use Composer\Plugin\PluginInterface;
use Composer\EventDispatcher\EventSubscriberInterface;
/**
* Class CustomAutoloaderPlugin.
*
* @package automattic/jetpack-autoloader
*/
class CustomAutoloaderPlugin implements PluginInterface, EventSubscriberInterface {
/**
* IO object.
*
* @var IOInterface IO object.
*/
private $io;
/**
* Composer object.
*
* @var Composer Composer object.
*/
private $composer;
/**
* Do nothing.
*
* @param Composer $composer Composer object.
* @param IOInterface $io IO object.
*/
public function activate( Composer $composer, IOInterface $io ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
$this->composer = $composer;
$this->io = $io;
}
/**
* Tell composer to listen for events and do something with them.
*
* @return array List of succribed events.
*/
public static function getSubscribedEvents() {
return array(
ScriptEvents::POST_AUTOLOAD_DUMP => 'postAutoloadDump',
);
}
/**
* Generate the custom autolaoder.
*
* @param Event $event Script event object.
*/
public function postAutoloadDump( Event $event ) {
$installationManager = $this->composer->getInstallationManager();
$repoManager = $this->composer->getRepositoryManager();
$localRepo = $repoManager->getLocalRepository();
$package = $this->composer->getPackage();
$config = $this->composer->getConfig();
$optimize = true;
$suffix = $config->get( 'autoloader-suffix' )
? $config->get( 'autoloader-suffix' )
: md5( uniqid( '', true ) );
$generator = new AutoloadGenerator( $this->io );
$generator->dump( $config, $localRepo, $package, $installationManager, 'composer', $optimize, $suffix );
$this->generated = true;
}
}

View File

@@ -0,0 +1,102 @@
<?php
/**
* This file `autoload_packages.php`was generated by automattic/jetpack-autoloader.
*
* From your plugin include this file with:
* require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
*
* @package automattic/jetpack-autoloader
*/
// phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound
namespace Automattic\Jetpack\Autoloader;
if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) {
global $jetpack_packages_classes;
if ( ! is_array( $jetpack_packages_classes ) ) {
$jetpack_packages_classes = array();
}
/**
* Adds the version of a package to the $jetpack_packages global array so that
* the autoloader is able to find it.
*
* @param string $class_name Name of the class that you want to autoload.
* @param string $version Version of the class.
* @param string $path Absolute path to the class so that we can load it.
*/
function enqueue_package_class( $class_name, $version, $path ) {
global $jetpack_packages_classes;
if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
}
// If we have a @dev version set always use that one!
if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) {
return;
}
// Always favour the @dev version. Since that version is the same as bleeding edge.
// We need to make sure that we don't do this in production!
if ( 'dev-' === substr( $version, 0, 4 ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
return;
}
// Set the latest version!
if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) {
$jetpack_packages_classes[ $class_name ] = array(
'version' => $version,
'path' => $path,
);
}
}
}
if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) {
/**
* Used for autoloading jetpack packages.
*
* @param string $class_name Class Name to load.
*/
function autoloader( $class_name ) {
global $jetpack_packages_classes;
if ( isset( $jetpack_packages_classes[ $class_name ] ) ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
if ( function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) {
_doing_it_wrong(
esc_html( $class_name ),
sprintf(
/* translators: %s Name of a PHP Class */
esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ),
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
$class_name
),
esc_html( $jetpack_packages_classes[ $class_name ]['version'] )
);
}
}
if ( file_exists( $jetpack_packages_classes[ $class_name ]['path'] ) ) {
require_once $jetpack_packages_classes[ $class_name ]['path'];
return true;
}
}
return false;
}
// Add the jetpack autoloader.
spl_autoload_register( __NAMESPACE__ . '\autoloader' );
}

View File

@@ -0,0 +1,445 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Autoload;
/**
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
* // register classes with namespaces
* $loader->add('Symfony\Component', __DIR__.'/component');
* $loader->add('Symfony', __DIR__.'/framework');
*
* // activate the autoloader
* $loader->register();
*
* // to enable searching the include path (eg. for PEAR packages)
* $loader->setUseIncludePath(true);
*
* In this example, if you try to use a class in the Symfony\Component
* namespace or one of its children (Symfony\Component\Console for instance),
* the autoloader will first look for the class under the component/
* directory, and it will then fallback to the framework/ directory if not
* found before giving up.
*
* This class is loosely based on the Symfony UniversalClassLoader.
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
private $fallbackDirsPsr4 = array();
// PSR-0
private $prefixesPsr0 = array();
private $fallbackDirsPsr0 = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoritative = false;
private $missingClasses = array();
private $apcuPrefix;
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
}
return array();
}
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
public function getClassMap()
{
return $this->classMap;
}
/**
* @param array $classMap Class to filename map
*/
public function addClassMap(array $classMap)
{
if ($this->classMap) {
$this->classMap = array_merge($this->classMap, $classMap);
} else {
$this->classMap = $classMap;
}
}
/**
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*/
public function add($prefix, $paths, $prepend = false)
{
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
);
}
return;
}
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace.
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 base directories
*/
public function set($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr0 = (array) $paths;
} else {
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
}
}
/**
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*/
public function setPsr4($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr4 = (array) $paths;
} else {
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
}
}
/**
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
*/
public function setUseIncludePath($useIncludePath)
{
$this->useIncludePath = $useIncludePath;
}
/**
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return bool
*/
public function getUseIncludePath()
{
return $this->useIncludePath;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = $classMapAuthoritative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function isClassMapAuthoritative()
{
return $this->classMapAuthoritative;
}
/**
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
* The APCu prefix in use, or null if APCu caching is not enabled.
*
* @return string|null
*/
public function getApcuPrefix()
{
return $this->apcuPrefix;
}
/**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
}
/**
* Unregisters this instance as an autoloader.
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
if (null !== $this->apcuPrefix) {
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
if ($hit) {
return $file;
}
}
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
if (null !== $this->apcuPrefix) {
apcu_add($this->apcuPrefix.$class, $file);
}
if (false === $file) {
// Remember that this class does not exist.
$this->missingClasses[$class] = true;
}
return $file;
}
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
$first = $class[0];
if (isset($this->prefixLengthsPsr4[$first])) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
}
}
}
// PSR-4 fallback dirs
foreach ($this->fallbackDirsPsr4 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
return $file;
}
}
// PSR-0 lookup
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
} else {
// PEAR-like class name
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
}
if (isset($this->prefixesPsr0[$first])) {
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
}
}
}
// PSR-0 fallback dirs
foreach ($this->fallbackDirsPsr0 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
// PSR-0 include paths.
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
return false;
}
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
}

View File

@@ -0,0 +1,21 @@
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,9 @@
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);

View File

@@ -0,0 +1,930 @@
<?php
// This file `autoload_classmap_packages.php` was auto generated by automattic/jetpack-autoloader.
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Composer\\Installers\\GravInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php'
),
'Composer\\Installers\\AttogramInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AttogramInstaller.php'
),
'Composer\\Installers\\DrupalInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php'
),
'Composer\\Installers\\CraftInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php'
),
'Composer\\Installers\\CiviCrmInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php'
),
'Composer\\Installers\\ItopInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ItopInstaller.php'
),
'Composer\\Installers\\ReIndexInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php'
),
'Composer\\Installers\\TheliaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/TheliaInstaller.php'
),
'Composer\\Installers\\SilverStripeInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php'
),
'Composer\\Installers\\ShopwareInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php'
),
'Composer\\Installers\\DokuWikiInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php'
),
'Composer\\Installers\\PPIInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php'
),
'Composer\\Installers\\KirbyInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/KirbyInstaller.php'
),
'Composer\\Installers\\LaravelInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php'
),
'Composer\\Installers\\ElggInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php'
),
'Composer\\Installers\\VanillaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/VanillaInstaller.php'
),
'Composer\\Installers\\YawikInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/YawikInstaller.php'
),
'Composer\\Installers\\RoundcubeInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php'
),
'Composer\\Installers\\VgmcpInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php'
),
'Composer\\Installers\\UserFrostingInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php'
),
'Composer\\Installers\\RadPHPInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php'
),
'Composer\\Installers\\KnownInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/KnownInstaller.php'
),
'Composer\\Installers\\SMFInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/SMFInstaller.php'
),
'Composer\\Installers\\PhiftyInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php'
),
'Composer\\Installers\\MakoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php'
),
'Composer\\Installers\\TYPO3CmsInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php'
),
'Composer\\Installers\\CockpitInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CockpitInstaller.php'
),
'Composer\\Installers\\CodeIgniterInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php'
),
'Composer\\Installers\\TaoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/TaoInstaller.php'
),
'Composer\\Installers\\AimeosInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AimeosInstaller.php'
),
'Composer\\Installers\\KohanaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php'
),
'Composer\\Installers\\Plugin' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/Plugin.php'
),
'Composer\\Installers\\ExpressionEngineInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php'
),
'Composer\\Installers\\OctoberInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/OctoberInstaller.php'
),
'Composer\\Installers\\WolfCMSInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php'
),
'Composer\\Installers\\LithiumInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php'
),
'Composer\\Installers\\ZendInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php'
),
'Composer\\Installers\\Symfony1Installer' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php'
),
'Composer\\Installers\\LavaLiteInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php'
),
'Composer\\Installers\\MoodleInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MoodleInstaller.php'
),
'Composer\\Installers\\HuradInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php'
),
'Composer\\Installers\\BaseInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php'
),
'Composer\\Installers\\CakePHPInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php'
),
'Composer\\Installers\\RedaxoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php'
),
'Composer\\Installers\\ModxInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ModxInstaller.php'
),
'Composer\\Installers\\MauticInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MauticInstaller.php'
),
'Composer\\Installers\\MagentoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php'
),
'Composer\\Installers\\Concrete5Installer' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php'
),
'Composer\\Installers\\FuelphpInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php'
),
'Composer\\Installers\\FuelInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php'
),
'Composer\\Installers\\PrestashopInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php'
),
'Composer\\Installers\\OxidInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php'
),
'Composer\\Installers\\TuskInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/TuskInstaller.php'
),
'Composer\\Installers\\TYPO3FlowInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php'
),
'Composer\\Installers\\PiwikInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php'
),
'Composer\\Installers\\PuppetInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PuppetInstaller.php'
),
'Composer\\Installers\\AglInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php'
),
'Composer\\Installers\\PimcoreInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php'
),
'Composer\\Installers\\EliasisInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/EliasisInstaller.php'
),
'Composer\\Installers\\Redaxo5Installer' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/Redaxo5Installer.php'
),
'Composer\\Installers\\BitrixInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/BitrixInstaller.php'
),
'Composer\\Installers\\AsgardInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AsgardInstaller.php'
),
'Composer\\Installers\\WHMCSInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php'
),
'Composer\\Installers\\KanboardInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/KanboardInstaller.php'
),
'Composer\\Installers\\WordPressInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php'
),
'Composer\\Installers\\MajimaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MajimaInstaller.php'
),
'Composer\\Installers\\DframeInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DframeInstaller.php'
),
'Composer\\Installers\\PlentymarketsInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php'
),
'Composer\\Installers\\EzPlatformInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php'
),
'Composer\\Installers\\MODXEvoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php'
),
'Composer\\Installers\\OntoWikiInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php'
),
'Composer\\Installers\\AnnotateCmsInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php'
),
'Composer\\Installers\\MODULEWorkInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php'
),
'Composer\\Installers\\OsclassInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php'
),
'Composer\\Installers\\ChefInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ChefInstaller.php'
),
'Composer\\Installers\\JoomlaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php'
),
'Composer\\Installers\\Installer' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php'
),
'Composer\\Installers\\KodiCMSInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php'
),
'Composer\\Installers\\PhpBBInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php'
),
'Composer\\Installers\\MediaWikiInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php'
),
'Composer\\Installers\\ImageCMSInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php'
),
'Composer\\Installers\\PortoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PortoInstaller.php'
),
'Composer\\Installers\\DolibarrInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php'
),
'Composer\\Installers\\BonefishInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/BonefishInstaller.php'
),
'Composer\\Installers\\MayaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MayaInstaller.php'
),
'Composer\\Installers\\CroogoInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php'
),
'Composer\\Installers\\PxcmsInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php'
),
'Composer\\Installers\\DecibelInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DecibelInstaller.php'
),
'Composer\\Installers\\SyDESInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/SyDESInstaller.php'
),
'Composer\\Installers\\LanManagementSystemInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php'
),
'Composer\\Installers\\ClanCatsFrameworkInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php'
),
'Composer\\Installers\\ZikulaInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php'
),
'Composer\\Installers\\SiteDirectInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php'
),
'Composer\\Installers\\MicroweberInstaller' => array(
'version' => '1.7.0.0',
'path' => $vendorDir . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\WPPostStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/WPPostStore.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\Order' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/Order.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\ThemeUpgrader' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/ThemeUpgrader.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\ThemeUpgraderSkin' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/ThemeUpgraderSkin.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\OrderTraits' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/OrderTraits.php'
),
'Automattic\\WooCommerce\\Admin\\Overrides\\OrderRefund' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Overrides/OrderRefund.php'
),
'Automattic\\WooCommerce\\Admin\\Loader' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Loader.php'
),
'Automattic\\WooCommerce\\Admin\\ReportCSVEmail' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/ReportCSVEmail.php'
),
'Automattic\\WooCommerce\\Admin\\FeaturePlugin' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/FeaturePlugin.php'
),
'Automattic\\WooCommerce\\Admin\\ReportsSync' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/ReportsSync.php'
),
'Automattic\\WooCommerce\\Admin\\ReportCSVExporter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/ReportCSVExporter.php'
),
'Automattic\\WooCommerce\\Admin\\Install' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Install.php'
),
'Automattic\\WooCommerce\\Admin\\CategoryLookup' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/CategoryLookup.php'
),
'Automattic\\WooCommerce\\Admin\\Package' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Package.php'
),
'Automattic\\WooCommerce\\Admin\\ReportExporter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/ReportExporter.php'
),
'Automattic\\WooCommerce\\Admin\\Features\\OnboardingTasks' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Features/OnboardingTasks.php'
),
'Automattic\\WooCommerce\\Admin\\Features\\ActivityPanels' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Features/ActivityPanels.php'
),
'Automattic\\WooCommerce\\Admin\\Features\\Onboarding' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Features/Onboarding.php'
),
'Automattic\\WooCommerce\\Admin\\Features\\Analytics' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Features/Analytics.php'
),
'Automattic\\WooCommerce\\Admin\\Features\\AnalyticsDashboard' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Features/AnalyticsDashboard.php'
),
'Automattic\\WooCommerce\\Admin\\Events' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Events.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_New_Sales_Record' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_New_Sales_Record.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Historical_Data' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Historical_Data.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Tracking_Opt_In' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Tracking_Opt_In.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Giving_Feedback_Notes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Giving_Feedback_Notes.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Order_Milestones' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Order_Milestones.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Onboarding_Email_Marketing' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Onboarding_Email_Marketing.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Onboarding_Profiler' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Onboarding_Profiler.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Mobile_App' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Mobile_App.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Woo_Subscriptions_Notes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Woo_Subscriptions_Notes.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Facebook_Extension' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Facebook_Extension.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Onboarding' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Onboarding.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\NoteTraits' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/NoteTraits.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Welcome_Message' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Welcome_Message.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Settings_Notes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Settings_Notes.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes_Add_First_Product' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes_Add_First_Product.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Notes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Notes.php'
),
'Automattic\\WooCommerce\\Admin\\Notes\\WC_Admin_Note' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Notes/WC_Admin_Note.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Taxes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Taxes.php'
),
'Automattic\\WooCommerce\\Admin\\API\\ProductReviews' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/ProductReviews.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Init' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Init.php'
),
'Automattic\\WooCommerce\\Admin\\API\\OnboardingProfile' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/OnboardingProfile.php'
),
'Automattic\\WooCommerce\\Admin\\API\\OnboardingTasks' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/OnboardingTasks.php'
),
'Automattic\\WooCommerce\\Admin\\API\\DataDownloadIPs' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/DataDownloadIPs.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Themes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Themes.php'
),
'Automattic\\WooCommerce\\Admin\\API\\SettingOptions' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/SettingOptions.php'
),
'Automattic\\WooCommerce\\Admin\\API\\NoteActions' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/NoteActions.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Notes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Notes.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Coupons' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Coupons.php'
),
'Automattic\\WooCommerce\\Admin\\API\\ProductCategories' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/ProductCategories.php'
),
'Automattic\\WooCommerce\\Admin\\API\\ProductVariations' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/ProductVariations.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Leaderboards' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Leaderboards.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Data' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Data.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Options' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Options.php'
),
'Automattic\\WooCommerce\\Admin\\API\\OnboardingPlugins' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/OnboardingPlugins.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Products' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Products.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Customers' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Customers.php'
),
'Automattic\\WooCommerce\\Admin\\API\\OnboardingThemes' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/OnboardingThemes.php'
),
'Automattic\\WooCommerce\\Admin\\API\\DataCountries' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/DataCountries.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Orders' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Orders.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Customers\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Customers/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\DataStoreInterface' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/DataStoreInterface.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Stats\\Segmenter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Stats/Segmenter.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Products\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Products/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\TimeInterval' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/TimeInterval.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\ExportableInterface' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/ExportableInterface.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Cache' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Cache.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Variations\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Variations/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Variations\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Variations/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Variations\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Variations/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\ExportableTraits' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/ExportableTraits.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Stats\\Segmenter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Stats/Segmenter.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Coupons\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Coupons/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\ParameterException' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/ParameterException.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Segmenter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Segmenter.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Stats\\Segmenter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Stats/Segmenter.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Taxes\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Taxes/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\PerformanceIndicators\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/PerformanceIndicators/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Stats\\Segmenter' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Stats/Segmenter.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Orders\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Orders/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Export\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Export/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Stock\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Stock/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Stock\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Stock/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Stock\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Stock/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Stock\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Stock/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Revenue\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Revenue/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Revenue\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Revenue/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Import\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Import/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Files\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Files/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Stats\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Stats/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Stats\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Stats/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Downloads\\Stats\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Downloads/Stats/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Categories\\Controller' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Categories/Controller.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Categories\\DataStore' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Categories/DataStore.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\Categories\\Query' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/Categories/Query.php'
),
'Automattic\\WooCommerce\\Admin\\API\\Reports\\SqlQuery' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/API/Reports/SqlQuery.php'
),
'Automattic\\WooCommerce\\Admin\\PageController' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/PageController.php'
),
'Automattic\\WooCommerce\\Admin\\Schedulers\\ImportScheduler' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Schedulers/ImportScheduler.php'
),
'Automattic\\WooCommerce\\Admin\\Schedulers\\OrdersScheduler' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Schedulers/OrdersScheduler.php'
),
'Automattic\\WooCommerce\\Admin\\Schedulers\\SchedulerTraits' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Schedulers/SchedulerTraits.php'
),
'Automattic\\WooCommerce\\Admin\\Schedulers\\ImportInterface' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Schedulers/ImportInterface.php'
),
'Automattic\\WooCommerce\\Admin\\Schedulers\\CustomersScheduler' => array(
'version' => 'dev-release/0.25.1',
'path' => $baseDir . '/src/Schedulers/CustomersScheduler.php'
),
'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => array(
'version' => '1.4.0.0',
'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php'
),
'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => array(
'version' => '1.4.0.0',
'path' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php'
),
);

View File

@@ -0,0 +1,9 @@
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);

View File

@@ -0,0 +1,12 @@
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
'Automattic\\WooCommerce\\Admin\\' => array($baseDir . '/src'),
'Automattic\\Jetpack\\Autoloader\\' => array($vendorDir . '/automattic/jetpack-autoloader/src'),
);

View File

@@ -0,0 +1,52 @@
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitfc14807bbec51b6e553ff476d14d61ad
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitfc14807bbec51b6e553ff476d14d61ad', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitfc14807bbec51b6e553ff476d14d61ad', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitfc14807bbec51b6e553ff476d14d61ad::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->register(true);
return $loader;
}
}

View File

@@ -0,0 +1,44 @@
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInitfc14807bbec51b6e553ff476d14d61ad
{
public static $prefixLengthsPsr4 = array (
'C' =>
array (
'Composer\\Installers\\' => 20,
),
'A' =>
array (
'Automattic\\WooCommerce\\Admin\\' => 29,
'Automattic\\Jetpack\\Autoloader\\' => 30,
),
);
public static $prefixDirsPsr4 = array (
'Composer\\Installers\\' =>
array (
0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
),
'Automattic\\WooCommerce\\Admin\\' =>
array (
0 => __DIR__ . '/../..' . '/src',
),
'Automattic\\Jetpack\\Autoloader\\' =>
array (
0 => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src',
),
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitfc14807bbec51b6e553ff476d14d61ad::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitfc14807bbec51b6e553ff476d14d61ad::$prefixDirsPsr4;
}, null, ClassLoader::class);
}
}

View File

@@ -0,0 +1,164 @@
[
{
"name": "automattic/jetpack-autoloader",
"version": "v1.4.0",
"version_normalized": "1.4.0.0",
"source": {
"type": "git",
"url": "https://github.com/Automattic/jetpack-autoloader.git",
"reference": "3cb0ad8496d04a648435ebee7c2a652c80eaf550"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/3cb0ad8496d04a648435ebee7c2a652c80eaf550",
"reference": "3cb0ad8496d04a648435ebee7c2a652c80eaf550",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5"
},
"time": "2020-01-22T17:49:03+00:00",
"type": "composer-plugin",
"extra": {
"class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin"
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Automattic\\Jetpack\\Autoloader\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0-or-later"
],
"description": "Creates a custom autoloader for a plugin or theme."
},
{
"name": "composer/installers",
"version": "v1.7.0",
"version_normalized": "1.7.0.0",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
"reference": "141b272484481432cda342727a427dc1e206bfa0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/installers/zipball/141b272484481432cda342727a427dc1e206bfa0",
"reference": "141b272484481432cda342727a427dc1e206bfa0",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0"
},
"replace": {
"roundcube/plugin-installer": "*",
"shama/baton": "*"
},
"require-dev": {
"composer/composer": "1.0.*@dev",
"phpunit/phpunit": "^4.8.36"
},
"time": "2019-08-12T15:00:31+00:00",
"type": "composer-plugin",
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Composer\\Installers\\": "src/Composer/Installers"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kyle Robinson Young",
"email": "kyle@dontkry.com",
"homepage": "https://github.com/shama"
}
],
"description": "A multi-framework Composer library installer",
"homepage": "https://composer.github.io/installers/",
"keywords": [
"Craft",
"Dolibarr",
"Eliasis",
"Hurad",
"ImageCMS",
"Kanboard",
"Lan Management System",
"MODX Evo",
"Mautic",
"Maya",
"OXID",
"Plentymarkets",
"Porto",
"RadPHP",
"SMF",
"Thelia",
"Whmcs",
"WolfCMS",
"agl",
"aimeos",
"annotatecms",
"attogram",
"bitrix",
"cakephp",
"chef",
"cockpit",
"codeigniter",
"concrete5",
"croogo",
"dokuwiki",
"drupal",
"eZ Platform",
"elgg",
"expressionengine",
"fuelphp",
"grav",
"installer",
"itop",
"joomla",
"known",
"kohana",
"laravel",
"lavalite",
"lithium",
"magento",
"majima",
"mako",
"mediawiki",
"modulework",
"modx",
"moodle",
"osclass",
"phpbb",
"piwik",
"ppi",
"puppet",
"pxcms",
"reindex",
"roundcube",
"shopware",
"silverstripe",
"sydes",
"symfony",
"typo3",
"wordpress",
"yawik",
"zend",
"zikula"
]
}
]

View File

@@ -0,0 +1,19 @@
Copyright (c) 2012 Kyle Robinson Young
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,107 @@
{
"name": "composer/installers",
"type": "composer-plugin",
"license": "MIT",
"description": "A multi-framework Composer library installer",
"keywords": [
"installer",
"Aimeos",
"AGL",
"AnnotateCms",
"Attogram",
"Bitrix",
"CakePHP",
"Chef",
"Cockpit",
"CodeIgniter",
"concrete5",
"Craft",
"Croogo",
"DokuWiki",
"Dolibarr",
"Drupal",
"Elgg",
"Eliasis",
"ExpressionEngine",
"eZ Platform",
"FuelPHP",
"Grav",
"Hurad",
"ImageCMS",
"iTop",
"Joomla",
"Kanboard",
"Known",
"Kohana",
"Lan Management System",
"Laravel",
"Lavalite",
"Lithium",
"Magento",
"majima",
"Mako",
"Mautic",
"Maya",
"MODX",
"MODX Evo",
"MediaWiki",
"OXID",
"osclass",
"MODULEWork",
"Moodle",
"Piwik",
"pxcms",
"phpBB",
"Plentymarkets",
"PPI",
"Puppet",
"Porto",
"RadPHP",
"ReIndex",
"Roundcube",
"shopware",
"SilverStripe",
"SMF",
"SyDES",
"symfony",
"Thelia",
"TYPO3",
"WHMCS",
"WolfCMS",
"WordPress",
"YAWIK",
"Zend",
"Zikula"
],
"homepage": "https://composer.github.io/installers/",
"authors": [
{
"name": "Kyle Robinson Young",
"email": "kyle@dontkry.com",
"homepage": "https://github.com/shama"
}
],
"autoload": {
"psr-4": { "Composer\\Installers\\": "src/Composer/Installers" }
},
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"replace": {
"shama/baton": "*",
"roundcube/plugin-installer": "*"
},
"require": {
"composer-plugin-api": "^1.0"
},
"require-dev": {
"composer/composer": "1.0.*@dev",
"phpunit/phpunit": "^4.8.36"
},
"scripts": {
"test": "phpunit"
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Composer\Installers;
class AglInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'More/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($vars)
{
$vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) {
return strtoupper($matches[1]);
}, $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class AimeosInstaller extends BaseInstaller
{
protected $locations = array(
'extension' => 'ext/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class AnnotateCmsInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'addons/modules/{$name}/',
'component' => 'addons/components/{$name}/',
'service' => 'addons/services/{$name}/',
);
}

View File

@@ -0,0 +1,49 @@
<?php
namespace Composer\Installers;
class AsgardInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'Modules/{$name}/',
'theme' => 'Themes/{$name}/'
);
/**
* Format package name.
*
* For package type asgard-module, cut off a trailing '-plugin' if present.
*
* For package type asgard-theme, cut off a trailing '-theme' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'asgard-module') {
return $this->inflectPluginVars($vars);
}
if ($vars['type'] === 'asgard-theme') {
return $this->inflectThemeVars($vars);
}
return $vars;
}
protected function inflectPluginVars($vars)
{
$vars['name'] = preg_replace('/-module$/', '', $vars['name']);
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
protected function inflectThemeVars($vars)
{
$vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class AttogramInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
}

View File

@@ -0,0 +1,136 @@
<?php
namespace Composer\Installers;
use Composer\IO\IOInterface;
use Composer\Composer;
use Composer\Package\PackageInterface;
abstract class BaseInstaller
{
protected $locations = array();
protected $composer;
protected $package;
protected $io;
/**
* Initializes base installer.
*
* @param PackageInterface $package
* @param Composer $composer
* @param IOInterface $io
*/
public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
{
$this->composer = $composer;
$this->package = $package;
$this->io = $io;
}
/**
* Return the install path based on package type.
*
* @param PackageInterface $package
* @param string $frameworkType
* @return string
*/
public function getInstallPath(PackageInterface $package, $frameworkType = '')
{
$type = $this->package->getType();
$prettyName = $this->package->getPrettyName();
if (strpos($prettyName, '/') !== false) {
list($vendor, $name) = explode('/', $prettyName);
} else {
$vendor = '';
$name = $prettyName;
}
$availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
$extra = $package->getExtra();
if (!empty($extra['installer-name'])) {
$availableVars['name'] = $extra['installer-name'];
}
if ($this->composer->getPackage()) {
$extra = $this->composer->getPackage()->getExtra();
if (!empty($extra['installer-paths'])) {
$customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
if ($customPath !== false) {
return $this->templatePath($customPath, $availableVars);
}
}
}
$packageType = substr($type, strlen($frameworkType) + 1);
$locations = $this->getLocations();
if (!isset($locations[$packageType])) {
throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
}
return $this->templatePath($locations[$packageType], $availableVars);
}
/**
* For an installer to override to modify the vars per installer.
*
* @param array $vars
* @return array
*/
public function inflectPackageVars($vars)
{
return $vars;
}
/**
* Gets the installer's locations
*
* @return array
*/
public function getLocations()
{
return $this->locations;
}
/**
* Replace vars in a path
*
* @param string $path
* @param array $vars
* @return string
*/
protected function templatePath($path, array $vars = array())
{
if (strpos($path, '{') !== false) {
extract($vars);
preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $var) {
$path = str_replace('{$' . $var . '}', $$var, $path);
}
}
}
return $path;
}
/**
* Search through a passed paths array for a custom install path.
*
* @param array $paths
* @param string $name
* @param string $type
* @param string $vendor = NULL
* @return string
*/
protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
{
foreach ($paths as $path => $names) {
if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
return $path;
}
}
return false;
}
}

View File

@@ -0,0 +1,126 @@
<?php
namespace Composer\Installers;
use Composer\Util\Filesystem;
/**
* Installer for Bitrix Framework. Supported types of extensions:
* - `bitrix-d7-module` — copy the module to directory `bitrix/modules/<vendor>.<name>`.
* - `bitrix-d7-component` — copy the component to directory `bitrix/components/<vendor>/<name>`.
* - `bitrix-d7-template` — copy the template to directory `bitrix/templates/<vendor>_<name>`.
*
* You can set custom path to directory with Bitrix kernel in `composer.json`:
*
* ```json
* {
* "extra": {
* "bitrix-dir": "s1/bitrix"
* }
* }
* ```
*
* @author Nik Samokhvalov <nik@samokhvalov.info>
* @author Denis Kulichkin <onexhovia@gmail.com>
*/
class BitrixInstaller extends BaseInstaller
{
protected $locations = array(
'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/',
'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/',
'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/',
);
/**
* @var array Storage for informations about duplicates at all the time of installation packages.
*/
private static $checkedDuplicates = array();
/**
* {@inheritdoc}
*/
public function inflectPackageVars($vars)
{
if ($this->composer->getPackage()) {
$extra = $this->composer->getPackage()->getExtra();
if (isset($extra['bitrix-dir'])) {
$vars['bitrix_dir'] = $extra['bitrix-dir'];
}
}
if (!isset($vars['bitrix_dir'])) {
$vars['bitrix_dir'] = 'bitrix';
}
return parent::inflectPackageVars($vars);
}
/**
* {@inheritdoc}
*/
protected function templatePath($path, array $vars = array())
{
$templatePath = parent::templatePath($path, $vars);
$this->checkDuplicates($templatePath, $vars);
return $templatePath;
}
/**
* Duplicates search packages.
*
* @param string $path
* @param array $vars
*/
protected function checkDuplicates($path, array $vars = array())
{
$packageType = substr($vars['type'], strlen('bitrix') + 1);
$localDir = explode('/', $vars['bitrix_dir']);
array_pop($localDir);
$localDir[] = 'local';
$localDir = implode('/', $localDir);
$oldPath = str_replace(
array('{$bitrix_dir}', '{$name}'),
array($localDir, $vars['name']),
$this->locations[$packageType]
);
if (in_array($oldPath, static::$checkedDuplicates)) {
return;
}
if ($oldPath !== $path && file_exists($oldPath) && $this->io && $this->io->isInteractive()) {
$this->io->writeError(' <error>Duplication of packages:</error>');
$this->io->writeError(' <info>Package ' . $oldPath . ' will be called instead package ' . $path . '</info>');
while (true) {
switch ($this->io->ask(' <info>Delete ' . $oldPath . ' [y,n,?]?</info> ', '?')) {
case 'y':
$fs = new Filesystem();
$fs->removeDirectory($oldPath);
break 2;
case 'n':
break 2;
case '?':
default:
$this->io->writeError(array(
' y - delete package ' . $oldPath . ' and to continue with the installation',
' n - don\'t delete and to continue with the installation',
));
$this->io->writeError(' ? - print help');
break;
}
}
}
static::$checkedDuplicates[] = $oldPath;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class BonefishInstaller extends BaseInstaller
{
protected $locations = array(
'package' => 'Packages/{$vendor}/{$name}/'
);
}

View File

@@ -0,0 +1,82 @@
<?php
namespace Composer\Installers;
use Composer\DependencyResolver\Pool;
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('Composer\Semver\Constraint\MultiConstraint')) {
$multiClass = 'Composer\Semver\Constraint\MultiConstraint';
$constraintClass = 'Composer\Semver\Constraint\Constraint';
} else {
$multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
$constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
}
$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;
}
}
}
return false;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class ChefInstaller extends BaseInstaller
{
protected $locations = array(
'cookbook' => 'Chef/{$vendor}/{$name}/',
'role' => 'Chef/roles/{$name}/',
);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class CiviCrmInstaller extends BaseInstaller
{
protected $locations = array(
'ext' => 'ext/{$name}/'
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class ClanCatsFrameworkInstaller extends BaseInstaller
{
protected $locations = array(
'ship' => 'CCF/orbit/{$name}/',
'theme' => 'CCF/app/themes/{$name}/',
);
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Composer\Installers;
class CockpitInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'cockpit/modules/addons/{$name}/',
);
/**
* Format module name.
*
* Strip `module-` prefix from package name.
*
* @param array @vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] == 'cockpit-module') {
return $this->inflectModuleVars($vars);
}
return $vars;
}
public function inflectModuleVars($vars)
{
$vars['name'] = ucfirst(preg_replace('/cockpit-/i', '', $vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class CodeIgniterInstaller extends BaseInstaller
{
protected $locations = array(
'library' => 'application/libraries/{$name}/',
'third-party' => 'application/third_party/{$name}/',
'module' => 'application/modules/{$name}/',
);
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Composer\Installers;
class Concrete5Installer extends BaseInstaller
{
protected $locations = array(
'core' => 'concrete/',
'block' => 'application/blocks/{$name}/',
'package' => 'packages/{$name}/',
'theme' => 'application/themes/{$name}/',
'update' => 'updates/{$name}/',
);
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Composer\Installers;
/**
* Installer for Craft Plugins
*/
class CraftInstaller extends BaseInstaller
{
const NAME_PREFIX = 'craft';
const NAME_SUFFIX = 'plugin';
protected $locations = array(
'plugin' => 'craft/plugins/{$name}/',
);
/**
* Strip `craft-` prefix and/or `-plugin` suffix from package names
*
* @param array $vars
*
* @return array
*/
final public function inflectPackageVars($vars)
{
return $this->inflectPluginVars($vars);
}
private function inflectPluginVars($vars)
{
$vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
$vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Composer\Installers;
class CroogoInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'Plugin/{$name}/',
'theme' => 'View/Themed/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name']));
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class DecibelInstaller extends BaseInstaller
{
/** @var array */
protected $locations = array(
'app' => 'app/{$name}/',
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class DframeInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$vendor}/{$name}/',
);
}

View File

@@ -0,0 +1,50 @@
<?php
namespace Composer\Installers;
class DokuWikiInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'lib/plugins/{$name}/',
'template' => 'lib/tpl/{$name}/',
);
/**
* Format package name.
*
* For package type dokuwiki-plugin, cut off a trailing '-plugin',
* or leading dokuwiki_ if present.
*
* For package type dokuwiki-template, cut off a trailing '-template' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'dokuwiki-plugin') {
return $this->inflectPluginVars($vars);
}
if ($vars['type'] === 'dokuwiki-template') {
return $this->inflectTemplateVars($vars);
}
return $vars;
}
protected function inflectPluginVars($vars)
{
$vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
$vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
return $vars;
}
protected function inflectTemplateVars($vars)
{
$vars['name'] = preg_replace('/-template$/', '', $vars['name']);
$vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Composer\Installers;
/**
* Class DolibarrInstaller
*
* @package Composer\Installers
* @author Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
*/
class DolibarrInstaller extends BaseInstaller
{
//TODO: Add support for scripts and themes
protected $locations = array(
'module' => 'htdocs/custom/{$name}/',
);
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Composer\Installers;
class DrupalInstaller extends BaseInstaller
{
protected $locations = array(
'core' => 'core/',
'module' => 'modules/{$name}/',
'theme' => 'themes/{$name}/',
'library' => 'libraries/{$name}/',
'profile' => 'profiles/{$name}/',
'drush' => 'drush/{$name}/',
'custom-theme' => 'themes/custom/{$name}/',
'custom-module' => 'modules/custom/{$name}/',
'custom-profile' => 'profiles/custom/{$name}/',
'drupal-multisite' => 'sites/{$name}/',
'console' => 'console/{$name}/',
'console-language' => 'console/language/{$name}/',
);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class ElggInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'mod/{$name}/',
);
}

View File

@@ -0,0 +1,12 @@
<?php
namespace Composer\Installers;
class EliasisInstaller extends BaseInstaller
{
protected $locations = array(
'component' => 'components/{$name}/',
'module' => 'modules/{$name}/',
'plugin' => 'plugins/{$name}/',
'template' => 'templates/{$name}/',
);
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Composer\Installers;
use Composer\Package\PackageInterface;
class ExpressionEngineInstaller extends BaseInstaller
{
protected $locations = array();
private $ee2Locations = array(
'addon' => 'system/expressionengine/third_party/{$name}/',
'theme' => 'themes/third_party/{$name}/',
);
private $ee3Locations = array(
'addon' => 'system/user/addons/{$name}/',
'theme' => 'themes/user/{$name}/',
);
public function getInstallPath(PackageInterface $package, $frameworkType = '')
{
$version = "{$frameworkType}Locations";
$this->locations = $this->$version;
return parent::getInstallPath($package, $frameworkType);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class EzPlatformInstaller extends BaseInstaller
{
protected $locations = array(
'meta-assets' => 'web/assets/ezplatform/',
'assets' => 'web/assets/ezplatform/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class FuelInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'fuel/app/modules/{$name}/',
'package' => 'fuel/packages/{$name}/',
'theme' => 'fuel/app/themes/{$name}/',
);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class FuelphpInstaller extends BaseInstaller
{
protected $locations = array(
'component' => 'components/{$name}/',
);
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Composer\Installers;
class GravInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'user/plugins/{$name}/',
'theme' => 'user/themes/{$name}/',
);
/**
* Format package name
*
* @param array $vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
$restrictedWords = implode('|', array_keys($this->locations));
$vars['name'] = strtolower($vars['name']);
$vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui',
'$1',
$vars['name']
);
return $vars;
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Composer\Installers;
class HuradInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
'theme' => 'plugins/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($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;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class ImageCMSInstaller extends BaseInstaller
{
protected $locations = array(
'template' => 'templates/{$name}/',
'module' => 'application/modules/{$name}/',
'library' => 'application/libraries/{$name}/',
);
}

View File

@@ -0,0 +1,278 @@
<?php
namespace Composer\Installers;
use Composer\Composer;
use Composer\Installer\BinaryInstaller;
use Composer\Installer\LibraryInstaller;
use Composer\IO\IOInterface;
use Composer\Package\PackageInterface;
use Composer\Repository\InstalledRepositoryInterface;
use Composer\Util\Filesystem;
class Installer extends LibraryInstaller
{
/**
* Package types to installer class map
*
* @var array
*/
private $supportedTypes = array(
'aimeos' => 'AimeosInstaller',
'asgard' => 'AsgardInstaller',
'attogram' => 'AttogramInstaller',
'agl' => 'AglInstaller',
'annotatecms' => 'AnnotateCmsInstaller',
'bitrix' => 'BitrixInstaller',
'bonefish' => 'BonefishInstaller',
'cakephp' => 'CakePHPInstaller',
'chef' => 'ChefInstaller',
'civicrm' => 'CiviCrmInstaller',
'ccframework' => 'ClanCatsFrameworkInstaller',
'cockpit' => 'CockpitInstaller',
'codeigniter' => 'CodeIgniterInstaller',
'concrete5' => 'Concrete5Installer',
'craft' => 'CraftInstaller',
'croogo' => 'CroogoInstaller',
'dframe' => 'DframeInstaller',
'dokuwiki' => 'DokuWikiInstaller',
'dolibarr' => 'DolibarrInstaller',
'decibel' => 'DecibelInstaller',
'drupal' => 'DrupalInstaller',
'elgg' => 'ElggInstaller',
'eliasis' => 'EliasisInstaller',
'ee3' => 'ExpressionEngineInstaller',
'ee2' => 'ExpressionEngineInstaller',
'ezplatform' => 'EzPlatformInstaller',
'fuel' => 'FuelInstaller',
'fuelphp' => 'FuelphpInstaller',
'grav' => 'GravInstaller',
'hurad' => 'HuradInstaller',
'imagecms' => 'ImageCMSInstaller',
'itop' => 'ItopInstaller',
'joomla' => 'JoomlaInstaller',
'kanboard' => 'KanboardInstaller',
'kirby' => 'KirbyInstaller',
'known' => 'KnownInstaller',
'kodicms' => 'KodiCMSInstaller',
'kohana' => 'KohanaInstaller',
'lms' => 'LanManagementSystemInstaller',
'laravel' => 'LaravelInstaller',
'lavalite' => 'LavaLiteInstaller',
'lithium' => 'LithiumInstaller',
'magento' => 'MagentoInstaller',
'majima' => 'MajimaInstaller',
'mako' => 'MakoInstaller',
'maya' => 'MayaInstaller',
'mautic' => 'MauticInstaller',
'mediawiki' => 'MediaWikiInstaller',
'microweber' => 'MicroweberInstaller',
'modulework' => 'MODULEWorkInstaller',
'modx' => 'ModxInstaller',
'modxevo' => 'MODXEvoInstaller',
'moodle' => 'MoodleInstaller',
'october' => 'OctoberInstaller',
'ontowiki' => 'OntoWikiInstaller',
'oxid' => 'OxidInstaller',
'osclass' => 'OsclassInstaller',
'pxcms' => 'PxcmsInstaller',
'phpbb' => 'PhpBBInstaller',
'pimcore' => 'PimcoreInstaller',
'piwik' => 'PiwikInstaller',
'plentymarkets'=> 'PlentymarketsInstaller',
'ppi' => 'PPIInstaller',
'puppet' => 'PuppetInstaller',
'radphp' => 'RadPHPInstaller',
'phifty' => 'PhiftyInstaller',
'porto' => 'PortoInstaller',
'redaxo' => 'RedaxoInstaller',
'redaxo5' => 'Redaxo5Installer',
'reindex' => 'ReIndexInstaller',
'roundcube' => 'RoundcubeInstaller',
'shopware' => 'ShopwareInstaller',
'sitedirect' => 'SiteDirectInstaller',
'silverstripe' => 'SilverStripeInstaller',
'smf' => 'SMFInstaller',
'sydes' => 'SyDESInstaller',
'symfony1' => 'Symfony1Installer',
'tao' => 'TaoInstaller',
'thelia' => 'TheliaInstaller',
'tusk' => 'TuskInstaller',
'typo3-cms' => 'TYPO3CmsInstaller',
'typo3-flow' => 'TYPO3FlowInstaller',
'userfrosting' => 'UserFrostingInstaller',
'vanilla' => 'VanillaInstaller',
'whmcs' => 'WHMCSInstaller',
'wolfcms' => 'WolfCMSInstaller',
'wordpress' => 'WordPressInstaller',
'yawik' => 'YawikInstaller',
'zend' => 'ZendInstaller',
'zikula' => 'ZikulaInstaller',
'prestashop' => 'PrestashopInstaller'
);
/**
* Installer constructor.
*
* Disables installers specified in main composer extra installer-disable
* list
*
* @param IOInterface $io
* @param Composer $composer
* @param string $type
* @param Filesystem|null $filesystem
* @param BinaryInstaller|null $binaryInstaller
*/
public function __construct(
IOInterface $io,
Composer $composer,
$type = 'library',
Filesystem $filesystem = null,
BinaryInstaller $binaryInstaller = null
) {
parent::__construct($io, $composer, $type, $filesystem,
$binaryInstaller);
$this->removeDisabledInstallers();
}
/**
* {@inheritDoc}
*/
public function getInstallPath(PackageInterface $package)
{
$type = $package->getType();
$frameworkType = $this->findFrameworkType($type);
if ($frameworkType === false) {
throw new \InvalidArgumentException(
'Sorry the package type of this package is not yet supported.'
);
}
$class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
$installer = new $class($package, $this->composer, $this->getIO());
return $installer->getInstallPath($package, $frameworkType);
}
public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
{
parent::uninstall($repo, $package);
$installPath = $this->getPackageBasePath($package);
$this->io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
}
/**
* {@inheritDoc}
*/
public function supports($packageType)
{
$frameworkType = $this->findFrameworkType($packageType);
if ($frameworkType === false) {
return false;
}
$locationPattern = $this->getLocationPattern($frameworkType);
return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
}
/**
* Finds a supported framework type if it exists and returns it
*
* @param string $type
* @return string
*/
protected function findFrameworkType($type)
{
$frameworkType = false;
krsort($this->supportedTypes);
foreach ($this->supportedTypes as $key => $val) {
if ($key === substr($type, 0, strlen($key))) {
$frameworkType = substr($type, 0, strlen($key));
break;
}
}
return $frameworkType;
}
/**
* Get the second part of the regular expression to check for support of a
* package type
*
* @param string $frameworkType
* @return string
*/
protected function getLocationPattern($frameworkType)
{
$pattern = false;
if (!empty($this->supportedTypes[$frameworkType])) {
$frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
/** @var BaseInstaller $framework */
$framework = new $frameworkClass(null, $this->composer, $this->getIO());
$locations = array_keys($framework->getLocations());
$pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
}
return $pattern ? : '(\w+)';
}
/**
* Get I/O object
*
* @return IOInterface
*/
private function getIO()
{
return $this->io;
}
/**
* Look for installers set to be disabled in composer's extra config and
* remove them from the list of supported installers.
*
* Globals:
* - true, "all", and "*" - disable all installers.
* - false - enable all installers (useful with
* wikimedia/composer-merge-plugin or similar)
*
* @return void
*/
protected function removeDisabledInstallers()
{
$extra = $this->composer->getPackage()->getExtra();
if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) {
// No installers are disabled
return;
}
// Get installers to disable
$disable = $extra['installer-disable'];
// Ensure $disabled is an array
if (!is_array($disable)) {
$disable = array($disable);
}
// Check which installers should be disabled
$all = array(true, "all", "*");
$intersect = array_intersect($all, $disable);
if (!empty($intersect)) {
// Disable all installers
$this->supportedTypes = array();
} else {
// Disable specified installers
foreach ($disable as $key => $installer) {
if (is_string($installer) && key_exists($installer, $this->supportedTypes)) {
unset($this->supportedTypes[$installer]);
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class ItopInstaller extends BaseInstaller
{
protected $locations = array(
'extension' => 'extensions/{$name}/',
);
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Composer\Installers;
class JoomlaInstaller extends BaseInstaller
{
protected $locations = array(
'component' => 'components/{$name}/',
'module' => 'modules/{$name}/',
'template' => 'templates/{$name}/',
'plugin' => 'plugins/{$name}/',
'library' => 'libraries/{$name}/',
);
// TODO: Add inflector for mod_ and com_ names
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Composer\Installers;
/**
*
* Installer for kanboard plugins
*
* kanboard.net
*
* Class KanboardInstaller
* @package Composer\Installers
*/
class KanboardInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class KirbyInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'site/plugins/{$name}/',
'field' => 'site/fields/{$name}/',
'tag' => 'site/tags/{$name}/'
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class KnownInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'IdnoPlugins/{$name}/',
'theme' => 'Themes/{$name}/',
'console' => 'ConsolePlugins/{$name}/',
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class KodiCMSInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'cms/plugins/{$name}/',
'media' => 'cms/media/vendor/{$name}/'
);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class KohanaInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Composer\Installers;
class LanManagementSystemInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
'template' => 'templates/{$name}/',
'document-template' => 'documents/templates/{$name}/',
'userpanel-module' => 'userpanel/modules/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class LaravelInstaller extends BaseInstaller
{
protected $locations = array(
'library' => 'libraries/{$name}/',
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class LavaLiteInstaller extends BaseInstaller
{
protected $locations = array(
'package' => 'packages/{$vendor}/{$name}/',
'theme' => 'public/themes/{$name}/',
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class LithiumInstaller extends BaseInstaller
{
protected $locations = array(
'library' => 'libraries/{$name}/',
'source' => 'libraries/_source/{$name}/',
);
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class MODULEWorkInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Composer\Installers;
/**
* An installer to handle MODX Evolution specifics when installing packages.
*/
class MODXEvoInstaller extends BaseInstaller
{
protected $locations = array(
'snippet' => 'assets/snippets/{$name}/',
'plugin' => 'assets/plugins/{$name}/',
'module' => 'assets/modules/{$name}/',
'template' => 'assets/templates/{$name}/',
'lib' => 'assets/lib/{$name}/'
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class MagentoInstaller extends BaseInstaller
{
protected $locations = array(
'theme' => 'app/design/frontend/{$name}/',
'skin' => 'skin/frontend/default/{$name}/',
'library' => 'lib/{$name}/',
);
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Composer\Installers;
/**
* Plugin/theme installer for majima
* @author David Neustadt
*/
class MajimaInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
/**
* Transforms the names
* @param array $vars
* @return array
*/
public function inflectPackageVars($vars)
{
return $this->correctPluginName($vars);
}
/**
* Change hyphenated names to camelcase
* @param array $vars
* @return array
*/
private function correctPluginName($vars)
{
$camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
return strtoupper($matches[0][1]);
}, $vars['name']);
$vars['name'] = ucfirst($camelCasedName);
return $vars;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class MakoInstaller extends BaseInstaller
{
protected $locations = array(
'package' => 'app/packages/{$name}/',
);
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Composer\Installers;
class MauticInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
'theme' => 'themes/{$name}/',
);
/**
* Format package name of mautic-plugins to CamelCase
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] == 'mautic-plugin') {
$vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
return strtoupper($matches[0][1]);
}, ucfirst($vars['name']));
}
return $vars;
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Composer\Installers;
class MayaInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
/**
* Format package name.
*
* For package type maya-module, cut off a trailing '-module' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'maya-module') {
return $this->inflectModuleVars($vars);
}
return $vars;
}
protected function inflectModuleVars($vars)
{
$vars['name'] = preg_replace('/-module$/', '', $vars['name']);
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace Composer\Installers;
class MediaWikiInstaller extends BaseInstaller
{
protected $locations = array(
'core' => 'core/',
'extension' => 'extensions/{$name}/',
'skin' => 'skins/{$name}/',
);
/**
* Format package name.
*
* For package type mediawiki-extension, cut off a trailing '-extension' if present and transform
* to CamelCase keeping existing uppercase chars.
*
* For package type mediawiki-skin, cut off a trailing '-skin' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'mediawiki-extension') {
return $this->inflectExtensionVars($vars);
}
if ($vars['type'] === 'mediawiki-skin') {
return $this->inflectSkinVars($vars);
}
return $vars;
}
protected function inflectExtensionVars($vars)
{
$vars['name'] = preg_replace('/-extension$/', '', $vars['name']);
$vars['name'] = str_replace('-', ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
protected function inflectSkinVars($vars)
{
$vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,119 @@
<?php
namespace Composer\Installers;
class MicroweberInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'userfiles/modules/{$install_item_dir}/',
'module-skin' => 'userfiles/modules/{$install_item_dir}/templates/',
'template' => 'userfiles/templates/{$install_item_dir}/',
'element' => 'userfiles/elements/{$install_item_dir}/',
'vendor' => 'vendor/{$install_item_dir}/',
'components' => 'components/{$install_item_dir}/'
);
/**
* Format package name.
*
* For package type microweber-module, cut off a trailing '-module' if present
*
* For package type microweber-template, cut off a trailing '-template' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($this->package->getTargetDir()) {
$vars['install_item_dir'] = $this->package->getTargetDir();
} else {
$vars['install_item_dir'] = $vars['name'];
if ($vars['type'] === 'microweber-template') {
return $this->inflectTemplateVars($vars);
}
if ($vars['type'] === 'microweber-templates') {
return $this->inflectTemplatesVars($vars);
}
if ($vars['type'] === 'microweber-core') {
return $this->inflectCoreVars($vars);
}
if ($vars['type'] === 'microweber-adapter') {
return $this->inflectCoreVars($vars);
}
if ($vars['type'] === 'microweber-module') {
return $this->inflectModuleVars($vars);
}
if ($vars['type'] === 'microweber-modules') {
return $this->inflectModulesVars($vars);
}
if ($vars['type'] === 'microweber-skin') {
return $this->inflectSkinVars($vars);
}
if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') {
return $this->inflectElementVars($vars);
}
}
return $vars;
}
protected function inflectTemplateVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-template$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/template-$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectTemplatesVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-templates$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/templates-$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectCoreVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-providers$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/-provider$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/-adapter$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectModuleVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-module$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/module-$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectModulesVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-modules$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/modules-$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectSkinVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-skin$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/skin-$/', '', $vars['install_item_dir']);
return $vars;
}
protected function inflectElementVars($vars)
{
$vars['install_item_dir'] = preg_replace('/-elements$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/elements-$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/-element$/', '', $vars['install_item_dir']);
$vars['install_item_dir'] = preg_replace('/element-$/', '', $vars['install_item_dir']);
return $vars;
}
}

View File

@@ -0,0 +1,12 @@
<?php
namespace Composer\Installers;
/**
* An installer to handle MODX specifics when installing packages.
*/
class ModxInstaller extends BaseInstaller
{
protected $locations = array(
'extra' => 'core/packages/{$name}/'
);
}

View File

@@ -0,0 +1,58 @@
<?php
namespace Composer\Installers;
class MoodleInstaller extends BaseInstaller
{
protected $locations = array(
'mod' => 'mod/{$name}/',
'admin_report' => 'admin/report/{$name}/',
'atto' => 'lib/editor/atto/plugins/{$name}/',
'tool' => 'admin/tool/{$name}/',
'assignment' => 'mod/assignment/type/{$name}/',
'assignsubmission' => 'mod/assign/submission/{$name}/',
'assignfeedback' => 'mod/assign/feedback/{$name}/',
'auth' => 'auth/{$name}/',
'availability' => 'availability/condition/{$name}/',
'block' => 'blocks/{$name}/',
'booktool' => 'mod/book/tool/{$name}/',
'cachestore' => 'cache/stores/{$name}/',
'cachelock' => 'cache/locks/{$name}/',
'calendartype' => 'calendar/type/{$name}/',
'format' => 'course/format/{$name}/',
'coursereport' => 'course/report/{$name}/',
'customcertelement' => 'mod/customcert/element/{$name}/',
'datafield' => 'mod/data/field/{$name}/',
'datapreset' => 'mod/data/preset/{$name}/',
'editor' => 'lib/editor/{$name}/',
'enrol' => 'enrol/{$name}/',
'filter' => 'filter/{$name}/',
'gradeexport' => 'grade/export/{$name}/',
'gradeimport' => 'grade/import/{$name}/',
'gradereport' => 'grade/report/{$name}/',
'gradingform' => 'grade/grading/form/{$name}/',
'local' => 'local/{$name}/',
'logstore' => 'admin/tool/log/store/{$name}/',
'ltisource' => 'mod/lti/source/{$name}/',
'ltiservice' => 'mod/lti/service/{$name}/',
'message' => 'message/output/{$name}/',
'mnetservice' => 'mnet/service/{$name}/',
'plagiarism' => 'plagiarism/{$name}/',
'portfolio' => 'portfolio/{$name}/',
'qbehaviour' => 'question/behaviour/{$name}/',
'qformat' => 'question/format/{$name}/',
'qtype' => 'question/type/{$name}/',
'quizaccess' => 'mod/quiz/accessrule/{$name}/',
'quiz' => 'mod/quiz/report/{$name}/',
'report' => 'report/{$name}/',
'repository' => 'repository/{$name}/',
'scormreport' => 'mod/scorm/report/{$name}/',
'search' => 'search/engine/{$name}/',
'theme' => 'theme/{$name}/',
'tinymce' => 'lib/editor/tinymce/plugins/{$name}/',
'profilefield' => 'user/profile/field/{$name}/',
'webservice' => 'webservice/{$name}/',
'workshopallocation' => 'mod/workshop/allocation/{$name}/',
'workshopeval' => 'mod/workshop/eval/{$name}/',
'workshopform' => 'mod/workshop/form/{$name}/'
);
}

View File

@@ -0,0 +1,47 @@
<?php
namespace Composer\Installers;
class OctoberInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
'plugin' => 'plugins/{$vendor}/{$name}/',
'theme' => 'themes/{$name}/'
);
/**
* Format package name.
*
* For package type october-plugin, cut off a trailing '-plugin' if present.
*
* For package type october-theme, cut off a trailing '-theme' if present.
*
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'october-plugin') {
return $this->inflectPluginVars($vars);
}
if ($vars['type'] === 'october-theme') {
return $this->inflectThemeVars($vars);
}
return $vars;
}
protected function inflectPluginVars($vars)
{
$vars['name'] = preg_replace('/^oc-|-plugin$/', '', $vars['name']);
$vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']);
return $vars;
}
protected function inflectThemeVars($vars)
{
$vars['name'] = preg_replace('/^oc-|-theme$/', '', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Composer\Installers;
class OntoWikiInstaller extends BaseInstaller
{
protected $locations = array(
'extension' => 'extensions/{$name}/',
'theme' => 'extensions/themes/{$name}/',
'translation' => 'extensions/translations/{$name}/',
);
/**
* Format package name to lower case and remove ".ontowiki" suffix
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower($vars['name']);
$vars['name'] = preg_replace('/.ontowiki$/', '', $vars['name']);
$vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
$vars['name'] = preg_replace('/-translation$/', '', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Composer\Installers;
class OsclassInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'oc-content/plugins/{$name}/',
'theme' => 'oc-content/themes/{$name}/',
'language' => 'oc-content/languages/{$name}/',
);
}

View File

@@ -0,0 +1,59 @@
<?php
namespace Composer\Installers;
use Composer\Package\PackageInterface;
class OxidInstaller extends BaseInstaller
{
const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
protected $locations = array(
'module' => 'modules/{$name}/',
'theme' => 'application/views/{$name}/',
'out' => 'out/{$name}/',
);
/**
* getInstallPath
*
* @param PackageInterface $package
* @param string $frameworkType
* @return void
*/
public function getInstallPath(PackageInterface $package, $frameworkType = '')
{
$installPath = parent::getInstallPath($package, $frameworkType);
$type = $this->package->getType();
if ($type === 'oxid-module') {
$this->prepareVendorDirectory($installPath);
}
return $installPath;
}
/**
* prepareVendorDirectory
*
* Makes sure there is a vendormetadata.php file inside
* the vendor folder if there is a vendor folder.
*
* @param string $installPath
* @return void
*/
protected function prepareVendorDirectory($installPath)
{
$matches = '';
$hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
if (!$hasVendorDirectory) {
return;
}
$vendorDirectory = $matches['vendor'];
$vendorPath = getcwd() . '/modules/' . $vendorDirectory;
if (!file_exists($vendorPath)) {
mkdir($vendorPath, 0755, true);
}
$vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
touch($vendorMetaDataPath);
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class PPIInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class PhiftyInstaller extends BaseInstaller
{
protected $locations = array(
'bundle' => 'bundles/{$name}/',
'library' => 'libraries/{$name}/',
'framework' => 'frameworks/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class PhpBBInstaller extends BaseInstaller
{
protected $locations = array(
'extension' => 'ext/{$vendor}/{$name}/',
'language' => 'language/{$name}/',
'style' => 'styles/{$name}/',
);
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Composer\Installers;
class PimcoreInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Composer\Installers;
/**
* Class PiwikInstaller
*
* @package Composer\Installers
*/
class PiwikInstaller extends BaseInstaller
{
/**
* @var array
*/
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
/**
* Format package name to CamelCase
* @param array $vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Composer\Installers;
class PlentymarketsInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => '{$name}/'
);
/**
* Remove hyphen, "plugin" and format to camelcase
* @param array $vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
$vars['name'] = explode("-", $vars['name']);
foreach ($vars['name'] as $key => $name) {
$vars['name'][$key] = ucfirst($vars['name'][$key]);
if (strcasecmp($name, "Plugin") == 0) {
unset($vars['name'][$key]);
}
}
$vars['name'] = implode("",$vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Composer\Installers;
use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Plugin\PluginInterface;
class Plugin implements PluginInterface
{
public function activate(Composer $composer, IOInterface $io)
{
$installer = new Installer($io, $composer);
$composer->getInstallationManager()->addInstaller($installer);
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Composer\Installers;
class PortoInstaller extends BaseInstaller
{
protected $locations = array(
'container' => 'app/Containers/{$name}/',
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class PrestashopInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
'theme' => 'themes/{$name}/',
);
}

View File

@@ -0,0 +1,11 @@
<?php
namespace Composer\Installers;
class PuppetInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$name}/',
);
}

View File

@@ -0,0 +1,63 @@
<?php
namespace Composer\Installers;
class PxcmsInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'app/Modules/{$name}/',
'theme' => 'themes/{$name}/',
);
/**
* Format package name.
*
* @param array $vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'pxcms-module') {
return $this->inflectModuleVars($vars);
}
if ($vars['type'] === 'pxcms-theme') {
return $this->inflectThemeVars($vars);
}
return $vars;
}
/**
* For package type pxcms-module, cut off a trailing '-plugin' if present.
*
* return string
*/
protected function inflectModuleVars($vars)
{
$vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
$vars['name'] = str_replace('module-', '', $vars['name']); // strip out module-
$vars['name'] = preg_replace('/-module$/', '', $vars['name']); // strip out -module
$vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
$vars['name'] = ucwords($vars['name']); // make module name camelcased
return $vars;
}
/**
* For package type pxcms-module, cut off a trailing '-plugin' if present.
*
* return string
*/
protected function inflectThemeVars($vars)
{
$vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
$vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme-
$vars['name'] = preg_replace('/-theme$/', '', $vars['name']); // strip out -theme
$vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
$vars['name'] = ucwords($vars['name']); // make module name camelcased
return $vars;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Composer\Installers;
class RadPHPInstaller extends BaseInstaller
{
protected $locations = array(
'bundle' => 'src/{$name}/'
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($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;
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class ReIndexInstaller extends BaseInstaller
{
protected $locations = array(
'theme' => 'themes/{$name}/',
'plugin' => 'plugins/{$name}/'
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class Redaxo5Installer extends BaseInstaller
{
protected $locations = array(
'addon' => 'redaxo/src/addons/{$name}/',
'bestyle-plugin' => 'redaxo/src/addons/be_style/plugins/{$name}/'
);
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class RedaxoInstaller extends BaseInstaller
{
protected $locations = array(
'addon' => 'redaxo/include/addons/{$name}/',
'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/'
);
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Composer\Installers;
class RoundcubeInstaller extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
/**
* Lowercase name and changes the name to a underscores
*
* @param array $vars
* @return array
*/
public function inflectPackageVars($vars)
{
$vars['name'] = strtolower(str_replace('-', '_', $vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Composer\Installers;
class SMFInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'Sources/{$name}/',
'theme' => 'Themes/{$name}/',
);
}

View File

@@ -0,0 +1,60 @@
<?php
namespace Composer\Installers;
/**
* Plugin/theme installer for shopware
* @author Benjamin Boit
*/
class ShopwareInstaller extends BaseInstaller
{
protected $locations = array(
'backend-plugin' => 'engine/Shopware/Plugins/Local/Backend/{$name}/',
'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/',
'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/',
'theme' => 'templates/{$name}/',
'plugin' => 'custom/plugins/{$name}/',
'frontend-theme' => 'themes/Frontend/{$name}/',
);
/**
* Transforms the names
* @param array $vars
* @return array
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] === 'shopware-theme') {
return $this->correctThemeName($vars);
}
return $this->correctPluginName($vars);
}
/**
* Changes the name to a camelcased combination of vendor and name
* @param array $vars
* @return array
*/
private function correctPluginName($vars)
{
$camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
return strtoupper($matches[0][1]);
}, $vars['name']);
$vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName);
return $vars;
}
/**
* Changes the name to a underscore separated name
* @param array $vars
* @return array
*/
private function correctThemeName($vars)
{
$vars['name'] = str_replace('-', '_', $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Composer\Installers;
use Composer\Package\PackageInterface;
class SilverStripeInstaller extends BaseInstaller
{
protected $locations = array(
'module' => '{$name}/',
'theme' => 'themes/{$name}/',
);
/**
* Return the install path based on package type.
*
* Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework
* must be installed to 'sapphire' and not 'framework' if the version is <3.0.0
*
* @param PackageInterface $package
* @param string $frameworkType
* @return string
*/
public function getInstallPath(PackageInterface $package, $frameworkType = '')
{
if (
$package->getName() == 'silverstripe/framework'
&& preg_match('/^\d+\.\d+\.\d+/', $package->getVersion())
&& version_compare($package->getVersion(), '2.999.999') < 0
) {
return $this->templatePath($this->locations['module'], array('name' => 'sapphire'));
}
return parent::getInstallPath($package, $frameworkType);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Composer\Installers;
class SiteDirectInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'modules/{$vendor}/{$name}/',
'plugin' => 'plugins/{$vendor}/{$name}/'
);
public function inflectPackageVars($vars)
{
return $this->parseVars($vars);
}
protected function parseVars($vars)
{
$vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor'];
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace Composer\Installers;
class SyDESInstaller extends BaseInstaller
{
protected $locations = array(
'module' => 'app/modules/{$name}/',
'theme' => 'themes/{$name}/',
);
/**
* Format module name.
*
* Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present.
*
* @param array @vars
*
* @return array
*/
public function inflectPackageVars($vars)
{
if ($vars['type'] == 'sydes-module') {
return $this->inflectModuleVars($vars);
}
if ($vars['type'] === 'sydes-theme') {
return $this->inflectThemeVars($vars);
}
return $vars;
}
public function inflectModuleVars($vars)
{
$vars['name'] = preg_replace('/(^sydes-|-module$)/i', '', $vars['name']);
$vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
$vars['name'] = str_replace(' ', '', ucwords($vars['name']));
return $vars;
}
protected function inflectThemeVars($vars)
{
$vars['name'] = preg_replace('/(^sydes-|-theme$)/', '', $vars['name']);
$vars['name'] = strtolower($vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Composer\Installers;
/**
* Plugin installer for symfony 1.x
*
* @author Jérôme Tamarelle <jerome@tamarelle.net>
*/
class Symfony1Installer extends BaseInstaller
{
protected $locations = array(
'plugin' => 'plugins/{$name}/',
);
/**
* Format package name to CamelCase
*/
public function inflectPackageVars($vars)
{
$vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
return strtoupper($matches[0][1]);
}, $vars['name']);
return $vars;
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Composer\Installers;
/**
* Extension installer for TYPO3 CMS
*
* @deprecated since 1.0.25, use https://packagist.org/packages/typo3/cms-composer-installers instead
*
* @author Sascha Egerer <sascha.egerer@dkd.de>
*/
class TYPO3CmsInstaller extends BaseInstaller
{
protected $locations = array(
'extension' => 'typo3conf/ext/{$name}/',
);
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Composer\Installers;
/**
* An installer to handle TYPO3 Flow specifics when installing packages.
*/
class TYPO3FlowInstaller extends BaseInstaller
{
protected $locations = array(
'package' => 'Packages/Application/{$name}/',
'framework' => 'Packages/Framework/{$name}/',
'plugin' => 'Packages/Plugins/{$name}/',
'site' => 'Packages/Sites/{$name}/',
'boilerplate' => 'Packages/Boilerplates/{$name}/',
'build' => 'Build/{$name}/',
);
/**
* Modify the package name to be a TYPO3 Flow style key.
*
* @param array $vars
* @return array
*/
public function inflectPackageVars($vars)
{
$autoload = $this->package->getAutoload();
if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) {
$namespace = key($autoload['psr-0']);
$vars['name'] = str_replace('\\', '.', $namespace);
}
if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) {
$namespace = key($autoload['psr-4']);
$vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.');
}
return $vars;
}
}

Some files were not shown because too many files have changed in this diff Show More