Bootstrap: add composer.lock and src/wp-vendor files. Nothing is using this code yet, just going through the motions. Ignore the files in src/wp-vendor/composer that will explode in PHP 5.2.

See #36335.

Built from https://develop.svn.wordpress.org/trunk@38394


git-svn-id: http://core.svn.wordpress.org/trunk@38335 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2016-08-27 03:49:28 +00:00
parent bb16c53108
commit 599d45019f
15 changed files with 1337 additions and 1 deletions

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.7-alpha-38393';
$wp_version = '4.7-alpha-38394';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.

View File

@ -0,0 +1,7 @@
<?php
// autoload_52.php generated by xrstf/composer-php52
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
return ComposerAutoloaderInit5759bae7e770c5001f6b93d9ea09c420::getLoader();

View File

@ -0,0 +1,271 @@
<?php
/*
* Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
*
* This file is released under the terms of the MIT license. You can find the
* complete text in the attached LICENSE file or online at:
*
* http://www.opensource.org/licenses/mit-license.php
*
* --------------------------------------------------------------------------
*
* 99% of this is copied as-is from the original Composer source code and is
* released under MIT license as well. Copyright goes to:
*
* - Fabien Potencier <fabien@symfony.com>
* - Jordi Boggiano <j.boggiano@seld.be>
*/
class xrstf_Composer52_ClassLoader {
private $prefixes = array();
private $fallbackDirs = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoratative = false;
private $allowUnderscore = false;
/**
* @param boolean $flag true to allow class names with a leading underscore, false to disable
*/
public function setAllowUnderscore($flag) {
$this->allowUnderscore = (boolean) $flag;
}
/**
* @return array
*/
public function getPrefixes() {
return $this->prefixes;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoratative
*/
public function setClassMapAuthoritative($classMapAuthoratative) {
$this->classMapAuthoratative = $classMapAuthoratative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function getClassMapAuthoratative() {
return $this->classMapAuthoratative;
}
/**
* @return array
*/
public function getFallbackDirs() {
return $this->fallbackDirs;
}
/**
* @return array
*/
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 classes, merging with any others previously set.
*
* @param string $prefix the classes prefix
* @param array|string $paths the location(s) of the classes
* @param bool $prepend prepend the location(s)
*/
public function add($prefix, $paths, $prepend = false) {
if (!$prefix) {
if ($prepend) {
$this->fallbackDirs = array_merge(
(array) $paths,
$this->fallbackDirs
);
}
else {
$this->fallbackDirs = array_merge(
$this->fallbackDirs,
(array) $paths
);
}
return;
}
if (!isset($this->prefixes[$prefix])) {
$this->prefixes[$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixes[$prefix] = array_merge(
(array) $paths,
$this->prefixes[$prefix]
);
}
else {
$this->prefixes[$prefix] = array_merge(
$this->prefixes[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of classes, replacing any others previously set.
*
* @param string $prefix the classes prefix
* @param array|string $paths the location(s) of the classes
*/
public function set($prefix, $paths) {
if (!$prefix) {
$this->fallbackDirs = (array) $paths;
return;
}
$this->prefixes[$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;
}
/**
* Registers this instance as an autoloader.
*/
public function register() {
spl_autoload_register(array($this, 'loadClass'), true);
}
/**
* 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
*/
public function loadClass($class) {
if ($file = $this->findFile($class)) {
include $file;
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class the name of the class
* @return string|null the path, if found
*/
public function findFile($class) {
if ('\\' === $class[0]) {
$class = substr($class, 1);
}
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
elseif ($this->classMapAuthoratative) {
return false;
}
$classPath = $this->getClassPath($class);
foreach ($this->prefixes as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
return $dir.DIRECTORY_SEPARATOR.$classPath;
}
}
}
}
foreach ($this->fallbackDirs as $dir) {
if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
return $dir.DIRECTORY_SEPARATOR.$classPath;
}
}
if ($this->useIncludePath && $file = self::resolveIncludePath($classPath)) {
return $file;
}
return $this->classMap[$class] = false;
}
private function getClassPath($class) {
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)).DIRECTORY_SEPARATOR;
$className = substr($class, $pos + 1);
}
else {
// PEAR-like class name
$classPath = null;
$className = $class;
}
$className = str_replace('_', DIRECTORY_SEPARATOR, $className);
// restore the prefix
if ($this->allowUnderscore && DIRECTORY_SEPARATOR === $className[0]) {
$className[0] = '_';
}
$classPath .= $className.'.php';
return $classPath;
}
public static function resolveIncludePath($classPath) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$path = rtrim($path, '/\\');
if ($file = file_exists($path.DIRECTORY_SEPARATOR.$file)) {
return $file;
}
}
return false;
}
}

View File

@ -0,0 +1,21 @@
Copyright (c) 2016 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,201 @@
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
'Automatic_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-automatic-upgrader-skin.php',
'Bulk_Plugin_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-bulk-plugin-upgrader-skin.php',
'Bulk_Theme_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-bulk-theme-upgrader-skin.php',
'Bulk_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-bulk-upgrader-skin.php',
'Core_Upgrader' => $baseDir . '/src/wp-admin/includes/class-core-upgrader.php',
'Custom_Background' => $baseDir . '/src/wp-admin/custom-background.php',
'Custom_Image_Header' => $baseDir . '/src/wp-admin/custom-header.php',
'File_Upload_Upgrader' => $baseDir . '/src/wp-admin/includes/class-file-upload-upgrader.php',
'IXR_Base64' => $baseDir . '/src/wp-includes/IXR/class-IXR-base64.php',
'IXR_Client' => $baseDir . '/src/wp-includes/IXR/class-IXR-client.php',
'IXR_ClientMulticall' => $baseDir . '/src/wp-includes/IXR/class-IXR-clientmulticall.php',
'IXR_Date' => $baseDir . '/src/wp-includes/IXR/class-IXR-date.php',
'IXR_Error' => $baseDir . '/src/wp-includes/IXR/class-IXR-error.php',
'IXR_IntrospectionServer' => $baseDir . '/src/wp-includes/IXR/class-IXR-introspectionserver.php',
'IXR_Message' => $baseDir . '/src/wp-includes/IXR/class-IXR-message.php',
'IXR_Request' => $baseDir . '/src/wp-includes/IXR/class-IXR-request.php',
'IXR_Server' => $baseDir . '/src/wp-includes/IXR/class-IXR-server.php',
'IXR_Value' => $baseDir . '/src/wp-includes/IXR/class-IXR-value.php',
'Language_Pack_Upgrader' => $baseDir . '/src/wp-admin/includes/class-language-pack-upgrader.php',
'Language_Pack_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-language-pack-upgrader-skin.php',
'PHPMailer' => $baseDir . '/src/wp-includes/class-phpmailer.php',
'POP3' => $baseDir . '/src/wp-includes/class-pop3.php',
'PasswordHash' => $baseDir . '/src/wp-includes/class-phpass.php',
'PclZip' => $baseDir . '/src/wp-admin/includes/class-pclzip.php',
'Plugin_Installer_Skin' => $baseDir . '/src/wp-admin/includes/class-plugin-installer-skin.php',
'Plugin_Upgrader' => $baseDir . '/src/wp-admin/includes/class-plugin-upgrader.php',
'Plugin_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-plugin-upgrader-skin.php',
'Requests' => $baseDir . '/src/wp-includes/class-requests.php',
'SMTP' => $baseDir . '/src/wp-includes/class-smtp.php',
'Services_JSON' => $baseDir . '/src/wp-includes/class-json.php',
'Services_JSON_Error' => $baseDir . '/src/wp-includes/class-json.php',
'SimplePie' => $baseDir . '/src/wp-includes/class-simplepie.php',
'Theme_Installer_Skin' => $baseDir . '/src/wp-admin/includes/class-theme-installer-skin.php',
'Theme_Upgrader' => $baseDir . '/src/wp-admin/includes/class-theme-upgrader.php',
'Theme_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-theme-upgrader-skin.php',
'WP' => $baseDir . '/src/wp-includes/class-wp.php',
'WP_Admin_Bar' => $baseDir . '/src/wp-includes/class-wp-admin-bar.php',
'WP_Ajax_Response' => $baseDir . '/src/wp-includes/class-wp-ajax-response.php',
'WP_Ajax_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-wp-ajax-upgrader-skin.php',
'WP_Automatic_Updater' => $baseDir . '/src/wp-admin/includes/class-wp-automatic-updater.php',
'WP_Comment' => $baseDir . '/src/wp-includes/class-wp-comment.php',
'WP_Comment_Query' => $baseDir . '/src/wp-includes/class-wp-comment-query.php',
'WP_Comments_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-comments-list-table.php',
'WP_Customize_Background_Image_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-background-image-control.php',
'WP_Customize_Background_Image_Setting' => $baseDir . '/src/wp-includes/customize/class-wp-customize-background-image-setting.php',
'WP_Customize_Color_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-color-control.php',
'WP_Customize_Control' => $baseDir . '/src/wp-includes/class-wp-customize-control.php',
'WP_Customize_Cropped_Image_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-cropped-image-control.php',
'WP_Customize_Filter_Setting' => $baseDir . '/src/wp-includes/customize/class-wp-customize-filter-setting.php',
'WP_Customize_Header_Image_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-header-image-control.php',
'WP_Customize_Header_Image_Setting' => $baseDir . '/src/wp-includes/customize/class-wp-customize-header-image-setting.php',
'WP_Customize_Image_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-image-control.php',
'WP_Customize_Manager' => $baseDir . '/src/wp-includes/class-wp-customize-manager.php',
'WP_Customize_Media_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-media-control.php',
'WP_Customize_Nav_Menu_Auto_Add_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php',
'WP_Customize_Nav_Menu_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-control.php',
'WP_Customize_Nav_Menu_Item_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-item-control.php',
'WP_Customize_Nav_Menu_Item_Setting' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php',
'WP_Customize_Nav_Menu_Location_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-location-control.php',
'WP_Customize_Nav_Menu_Name_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-name-control.php',
'WP_Customize_Nav_Menu_Section' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-section.php',
'WP_Customize_Nav_Menu_Setting' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menu-setting.php',
'WP_Customize_Nav_Menus' => $baseDir . '/src/wp-includes/class-wp-customize-nav-menus.php',
'WP_Customize_Nav_Menus_Panel' => $baseDir . '/src/wp-includes/customize/class-wp-customize-nav-menus-panel.php',
'WP_Customize_New_Menu_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-new-menu-control.php',
'WP_Customize_New_Menu_Section' => $baseDir . '/src/wp-includes/customize/class-wp-customize-new-menu-section.php',
'WP_Customize_Panel' => $baseDir . '/src/wp-includes/class-wp-customize-panel.php',
'WP_Customize_Partial' => $baseDir . '/src/wp-includes/customize/class-wp-customize-partial.php',
'WP_Customize_Section' => $baseDir . '/src/wp-includes/class-wp-customize-section.php',
'WP_Customize_Selective_Refresh' => $baseDir . '/src/wp-includes/customize/class-wp-customize-selective-refresh.php',
'WP_Customize_Setting' => $baseDir . '/src/wp-includes/class-wp-customize-setting.php',
'WP_Customize_Sidebar_Section' => $baseDir . '/src/wp-includes/customize/class-wp-customize-sidebar-section.php',
'WP_Customize_Site_Icon_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-site-icon-control.php',
'WP_Customize_Theme_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-theme-control.php',
'WP_Customize_Themes_Section' => $baseDir . '/src/wp-includes/customize/class-wp-customize-themes-section.php',
'WP_Customize_Upload_Control' => $baseDir . '/src/wp-includes/customize/class-wp-customize-upload-control.php',
'WP_Customize_Widgets' => $baseDir . '/src/wp-includes/class-wp-customize-widgets.php',
'WP_Date_Query' => $baseDir . '/src/wp-includes/date.php',
'WP_Dependencies' => $baseDir . '/src/wp-includes/class.wp-dependencies.php',
'WP_Embed' => $baseDir . '/src/wp-includes/class-wp-embed.php',
'WP_Error' => $baseDir . '/src/wp-includes/class-wp-error.php',
'WP_Feed_Cache' => $baseDir . '/src/wp-includes/class-wp-feed-cache.php',
'WP_Feed_Cache_Transient' => $baseDir . '/src/wp-includes/class-wp-feed-cache-transient.php',
'WP_Filesystem_Base' => $baseDir . '/src/wp-admin/includes/class-wp-filesystem-base.php',
'WP_Filesystem_Direct' => $baseDir . '/src/wp-admin/includes/class-wp-filesystem-direct.php',
'WP_Filesystem_FTPext' => $baseDir . '/src/wp-admin/includes/class-wp-filesystem-ftpext.php',
'WP_Filesystem_SSH2' => $baseDir . '/src/wp-admin/includes/class-wp-filesystem-ssh2.php',
'WP_Filesystem_ftpsockets' => $baseDir . '/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php',
'WP_HTTP_Fsockopen' => $baseDir . '/src/wp-includes/class-wp-http-streams.php',
'WP_HTTP_IXR_Client' => $baseDir . '/src/wp-includes/class-wp-http-ixr-client.php',
'WP_HTTP_Proxy' => $baseDir . '/src/wp-includes/class-wp-http-proxy.php',
'WP_HTTP_Requests_Response' => $baseDir . '/src/wp-includes/class-wp-http-requests-response.php',
'WP_HTTP_Response' => $baseDir . '/src/wp-includes/class-wp-http-response.php',
'WP_Http' => $baseDir . '/src/wp-includes/class-http.php',
'WP_Http_Cookie' => $baseDir . '/src/wp-includes/class-wp-http-cookie.php',
'WP_Http_Curl' => $baseDir . '/src/wp-includes/class-wp-http-curl.php',
'WP_Http_Encoding' => $baseDir . '/src/wp-includes/class-wp-http-encoding.php',
'WP_Http_Streams' => $baseDir . '/src/wp-includes/class-wp-http-streams.php',
'WP_Image_Editor' => $baseDir . '/src/wp-includes/class-wp-image-editor.php',
'WP_Image_Editor_GD' => $baseDir . '/src/wp-includes/class-wp-image-editor-gd.php',
'WP_Image_Editor_Imagick' => $baseDir . '/src/wp-includes/class-wp-image-editor-imagick.php',
'WP_Importer' => $baseDir . '/src/wp-admin/includes/class-wp-importer.php',
'WP_Internal_Pointers' => $baseDir . '/src/wp-admin/includes/class-wp-internal-pointers.php',
'WP_Links_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-links-list-table.php',
'WP_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-list-table.php',
'WP_Locale' => $baseDir . '/src/wp-includes/class-wp-locale.php',
'WP_MS_Sites_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-ms-sites-list-table.php',
'WP_MS_Themes_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-ms-themes-list-table.php',
'WP_MS_Users_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-ms-users-list-table.php',
'WP_MatchesMapRegex' => $baseDir . '/src/wp-includes/class-wp-matchesmapregex.php',
'WP_Media_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-media-list-table.php',
'WP_Meta_Query' => $baseDir . '/src/wp-includes/class-wp-meta-query.php',
'WP_Metadata_Lazyloader' => $baseDir . '/src/wp-includes/class-wp-metadata-lazyloader.php',
'WP_Nav_Menu_Widget' => $baseDir . '/src/wp-includes/widgets/class-wp-nav-menu-widget.php',
'WP_Network' => $baseDir . '/src/wp-includes/class-wp-network.php',
'WP_Network_Query' => $baseDir . '/src/wp-includes/class-wp-network-query.php',
'WP_Plugin_Install_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-plugin-install-list-table.php',
'WP_Plugins_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-plugins-list-table.php',
'WP_Post' => $baseDir . '/src/wp-includes/class-wp-post.php',
'WP_Post_Comments_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-post-comments-list-table.php',
'WP_Post_Type' => $baseDir . '/src/wp-includes/class-wp-post-type.php',
'WP_Posts_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-posts-list-table.php',
'WP_Press_This' => $baseDir . '/src/wp-admin/includes/class-wp-press-this.php',
'WP_Query' => $baseDir . '/src/wp-includes/class-wp-query.php',
'WP_REST_Request' => $baseDir . '/src/wp-includes/rest-api/class-wp-rest-request.php',
'WP_REST_Response' => $baseDir . '/src/wp-includes/rest-api/class-wp-rest-response.php',
'WP_REST_Server' => $baseDir . '/src/wp-includes/rest-api/class-wp-rest-server.php',
'WP_Rewrite' => $baseDir . '/src/wp-includes/class-wp-rewrite.php',
'WP_Role' => $baseDir . '/src/wp-includes/class-wp-role.php',
'WP_Roles' => $baseDir . '/src/wp-includes/class-wp-roles.php',
'WP_Screen' => $baseDir . '/src/wp-admin/includes/class-wp-screen.php',
'WP_Scripts' => $baseDir . '/src/wp-includes/class.wp-scripts.php',
'WP_Session_Tokens' => $baseDir . '/src/wp-includes/class-wp-session-tokens.php',
'WP_SimplePie_File' => $baseDir . '/src/wp-includes/class-wp-simplepie-file.php',
'WP_SimplePie_Sanitize_KSES' => $baseDir . '/src/wp-includes/class-wp-simplepie-sanitize-kses.php',
'WP_Site' => $baseDir . '/src/wp-includes/class-wp-site.php',
'WP_Site_Icon' => $baseDir . '/src/wp-admin/includes/class-wp-site-icon.php',
'WP_Site_Query' => $baseDir . '/src/wp-includes/class-wp-site-query.php',
'WP_Styles' => $baseDir . '/src/wp-includes/class.wp-styles.php',
'WP_Tax_Query' => $baseDir . '/src/wp-includes/class-wp-tax-query.php',
'WP_Term' => $baseDir . '/src/wp-includes/class-wp-term.php',
'WP_Term_Query' => $baseDir . '/src/wp-includes/class-wp-term-query.php',
'WP_Terms_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-terms-list-table.php',
'WP_Text_Diff_Renderer_Table' => $baseDir . '/src/wp-includes/class-wp-text-diff-renderer-table.php',
'WP_Text_Diff_Renderer_inline' => $baseDir . '/src/wp-includes/class-wp-text-diff-renderer-inline.php',
'WP_Theme' => $baseDir . '/src/wp-includes/class-wp-theme.php',
'WP_Theme_Install_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-theme-install-list-table.php',
'WP_Themes_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-themes-list-table.php',
'WP_Upgrader' => $baseDir . '/src/wp-admin/includes/class-wp-upgrader.php',
'WP_Upgrader_Skin' => $baseDir . '/src/wp-admin/includes/class-wp-upgrader-skin.php',
'WP_User' => $baseDir . '/src/wp-includes/class-wp-user.php',
'WP_User_Meta_Session_Tokens' => $baseDir . '/src/wp-includes/class-wp-user-meta-session-tokens.php',
'WP_User_Query' => $baseDir . '/src/wp-includes/class-wp-user-query.php',
'WP_Users_List_Table' => $baseDir . '/src/wp-admin/includes/class-wp-users-list-table.php',
'WP_Widget' => $baseDir . '/src/wp-includes/class-wp-widget.php',
'WP_Widget_Archives' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-archives.php',
'WP_Widget_Area_Customize_Control' => $baseDir . '/src/wp-includes/customize/class-wp-widget-area-customize-control.php',
'WP_Widget_Calendar' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-calendar.php',
'WP_Widget_Categories' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-categories.php',
'WP_Widget_Factory' => $baseDir . '/src/wp-includes/class-wp-widget-factory.php',
'WP_Widget_Form_Customize_Control' => $baseDir . '/src/wp-includes/customize/class-wp-widget-form-customize-control.php',
'WP_Widget_Links' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-links.php',
'WP_Widget_Meta' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-meta.php',
'WP_Widget_Pages' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-pages.php',
'WP_Widget_RSS' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-rss.php',
'WP_Widget_Recent_Comments' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-recent-comments.php',
'WP_Widget_Recent_Posts' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-recent-posts.php',
'WP_Widget_Search' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-search.php',
'WP_Widget_Tag_Cloud' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-tag-cloud.php',
'WP_Widget_Text' => $baseDir . '/src/wp-includes/widgets/class-wp-widget-text.php',
'WP_oEmbed' => $baseDir . '/src/wp-includes/class-oembed.php',
'WP_oEmbed_Controller' => $baseDir . '/src/wp-includes/class-wp-oembed-controller.php',
'Walker' => $baseDir . '/src/wp-includes/class-wp-walker.php',
'Walker_Category' => $baseDir . '/src/wp-includes/class-walker-category.php',
'Walker_CategoryDropdown' => $baseDir . '/src/wp-includes/class-walker-category-dropdown.php',
'Walker_Category_Checklist' => $baseDir . '/src/wp-admin/includes/class-walker-category-checklist.php',
'Walker_Comment' => $baseDir . '/src/wp-includes/class-walker-comment.php',
'Walker_Nav_Menu' => $baseDir . '/src/wp-includes/class-walker-nav-menu.php',
'Walker_Nav_Menu_Checklist' => $baseDir . '/src/wp-admin/includes/class-walker-nav-menu-checklist.php',
'Walker_Nav_Menu_Edit' => $baseDir . '/src/wp-admin/includes/class-walker-nav-menu-edit.php',
'Walker_Page' => $baseDir . '/src/wp-includes/class-walker-page.php',
'Walker_PageDropdown' => $baseDir . '/src/wp-includes/class-walker-page-dropdown.php',
'_WP_Dependency' => $baseDir . '/src/wp-includes/class-wp-dependency.php',
'_WP_Editors' => $baseDir . '/src/wp-includes/class-wp-editor.php',
'_WP_List_Table_Compat' => $baseDir . '/src/wp-admin/includes/class-wp-list-table-compat.php',
'ftp' => $baseDir . '/src/wp-admin/includes/class-ftp.php',
'ftp_base' => $baseDir . '/src/wp-admin/includes/class-ftp.php',
'ftp_pure' => $baseDir . '/src/wp-admin/includes/class-ftp-pure.php',
'ftp_sockets' => $baseDir . '/src/wp-admin/includes/class-ftp-sockets.php',
'phpmailerException' => $baseDir . '/src/wp-includes/class-phpmailer.php',
'wp_xmlrpc_server' => $baseDir . '/src/wp-includes/class-wp-xmlrpc-server.php',
'wpdb' => $baseDir . '/src/wp-includes/wp-db.php',
);

View File

@ -0,0 +1,10 @@
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
);

View File

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

View File

@ -0,0 +1,44 @@
<?php
// autoload_real_52.php generated by xrstf/composer-php52
class ComposerAutoloaderInit5759bae7e770c5001f6b93d9ea09c420 {
private static $loader;
public static function loadClassLoader($class) {
if ('xrstf_Composer52_ClassLoader' === $class) {
require dirname(__FILE__).'/ClassLoader52.php';
}
}
/**
* @return xrstf_Composer52_ClassLoader
*/
public static function getLoader() {
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit5759bae7e770c5001f6b93d9ea09c420', 'loadClassLoader'), true /*, true */);
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit5759bae7e770c5001f6b93d9ea09c420', 'loadClassLoader'));
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
$dir = dirname(__FILE__);
$map = require $dir.'/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->add($namespace, $path);
}
$classMap = require $dir.'/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
$loader->register(true);
return $loader;
}
}

View File

@ -0,0 +1,35 @@
[
{
"name": "xrstf/composer-php52",
"version": "v1.0.20",
"version_normalized": "1.0.20.0",
"source": {
"type": "git",
"url": "https://github.com/composer-php52/composer-php52.git",
"reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
"reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
"shasum": ""
},
"time": "2016-04-16 21:52:24",
"type": "library",
"extra": {
"branch-alias": {
"dev-default": "1.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"xrstf\\Composer52": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
]
}
]

View File

@ -0,0 +1,19 @@
Copyright (c) 2013 Christoph Mewes
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,37 @@
PHP 5.2 Autoloading for Composer
================================
This package provides an easy way to get a PHP 5.2 compatible autoloader out of Composer. The generated autoloader is fully compatible to the original and is written into separate files, each ending with `_52.php`.
Legacy
------
Please do not use this, if you can avoid it. It's a horrible hack, often breaks and is extremely tied to Composer's interna. This package was originally developed in 2012, when PHP 5.2 was much more common on cheap webhosts.
In 2016, this package has been moved from Bitbucket to a Github organization, because the original developer could no longer reliably maintain it. This is the reason for this legacy package name ``xrstf/...``.
Usage
-----
In your project's `composer.json`, add the following lines:
```json
{
"require": {
"xrstf/composer-php52": "1.*"
},
"scripts": {
"post-install-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
],
"post-update-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
],
"post-autoload-dump": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
]
}
}
```
After the next update/install, you will have a `vendor/autoload_52.php` file, that you can simply include and use in PHP 5.2 projects.

View File

@ -0,0 +1,26 @@
{
"name": "xrstf/composer-php52",
"license": "MIT",
"support": {
"source": "https://github.com/composer-php52/composer-php52",
"issues": "https://github.com/composer-php52/composer-php52/issues"
},
"autoload": {
"psr-0": {
"xrstf\\Composer52": "lib/"
}
},
"scripts": {
"post-install-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
],
"post-update-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
]
},
"extra": {
"branch-alias": {
"dev-default": "1.x-dev"
}
}
}

View File

@ -0,0 +1,346 @@
<?php
/*
* Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
*
* This file is released under the terms of the MIT license. You can find the
* complete text in the attached LICENSE file or online at:
*
* http://www.opensource.org/licenses/mit-license.php
*
* --------------------------------------------------------------------------
*
* 99% of this is copied as-is from the original Composer source code and is
* released under MIT license as well. Copyright goes to:
*
* - Igor Wiedler <igor@wiedler.ch>
* - Jordi Boggiano <j.boggiano@seld.be>
*/
namespace xrstf\Composer52;
use Composer\Autoload\AutoloadGenerator as BaseGenerator;
use Composer\Autoload\ClassMapGenerator;
use Composer\Config;
use Composer\Installer\InstallationManager;
use Composer\Package\AliasPackage;
use Composer\Package\PackageInterface;
use Composer\Repository\InstalledRepositoryInterface;
use Composer\Util\Filesystem;
class AutoloadGenerator extends BaseGenerator {
/**
* @var bool
*/
private $classMapAuthoritative = false;
public function __construct() {
// do nothing (but keep this constructor so we can build an instance without the need for an event dispatcher)
}
/**
* Whether or not generated autoloader considers the class map
* authoritative.
*
* @param bool $classMapAuthoritative
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = (boolean) $classMapAuthoritative;
}
public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsr0Packages = false, $suffix = '') {
if ($this->classMapAuthoritative) {
// Force scanPsr0Packages when classmap is authoritative
$scanPsr0Packages = true;
}
$filesystem = new Filesystem();
$filesystem->ensureDirectoryExists($config->get('vendor-dir'));
$cwd = getcwd();
$basePath = $filesystem->normalizePath($cwd);
$vendorPath = $filesystem->normalizePath(realpath($config->get('vendor-dir')));
$targetDir = $vendorPath.'/'.$targetDir;
$filesystem->ensureDirectoryExists($targetDir);
$useGlobalIncludePath = (bool) $config->get('use-include-path');
$prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true';
$classMapAuthoritative = $config->get('classmap-authoritative');
$vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true);
$vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true);
$appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true);
$appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode);
// add 5.2 compat
$vendorPathCode = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode);
$vendorPathToTargetDirCode = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathToTargetDirCode);
$packageMap = $this->buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages());
$autoloads = $this->parseAutoloads($packageMap, $mainPackage);
// add custom psr-0 autoloading if the root package has a target dir
$targetDirLoader = null;
$mainAutoload = $mainPackage->getAutoload();
if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
$levels = count(explode('/', $filesystem->normalizePath($mainPackage->getTargetDir())));
$prefixes = implode(', ', array_map(function ($prefix) {
return var_export($prefix, true);
}, array_keys($mainAutoload['psr-0'])));
$baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true);
$targetDirLoader = <<<EOF
public static function autoload(\$class) {
\$dir = $baseDirFromTargetDirCode.'/';
\$prefixes = array($prefixes);
foreach (\$prefixes as \$prefix) {
if (0 !== strpos(\$class, \$prefix)) {
continue;
}
\$path = explode(DIRECTORY_SEPARATOR, self::getClassPath(\$class));
\$path = \$dir.implode('/', array_slice(\$path, $levels));
if (!\$path = self::resolveIncludePath(\$path)) {
return false;
}
require \$path;
return true;
}
}
EOF;
}
$filesCode = "";
$autoloads['files'] = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($autoloads['files']));
foreach ($autoloads['files'] as $functionFile) {
// don't include file if it is using PHP 5.3+ syntax
// https://bitbucket.org/xrstf/composer-php52/issue/4
if ($this->isPHP53($functionFile)) {
$filesCode .= '// require '.$this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile)."; // disabled because of PHP 5.3 syntax\n";
}
else {
$filesCode .= ' require '.$this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile).";\n";
}
}
if (!$suffix) {
$suffix = md5(uniqid('', true));
}
$includePathFile = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode);
file_put_contents($vendorPath.'/autoload_52.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix));
file_put_contents($targetDir.'/autoload_real_52.php', $this->getAutoloadRealFile(true, (bool) $includePathFile, $targetDirLoader, $filesCode, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader));
// use stream_copy_to_stream instead of copy
// to work around https://bugs.php.net/bug.php?id=64634
$sourceLoader = fopen(__DIR__.'/ClassLoader.php', 'r');
$targetLoader = fopen($targetDir.'/ClassLoader52.php', 'w+');
stream_copy_to_stream($sourceLoader, $targetLoader);
fclose($sourceLoader);
fclose($targetLoader);
unset($sourceLoader, $targetLoader);
}
protected function isPHP53($file) {
$tokens = token_get_all(file_get_contents($file));
$php53 = array(T_DIR, T_GOTO, T_NAMESPACE, T_NS_C, T_NS_SEPARATOR, T_USE);
// PHP 5.4+
if (defined('T_TRAIT')) {
$php53[] = T_TRAIT;
$php53[] = T_TRAIT_C;
$php53[] = T_TRAIT_C;
}
// PHP 5.5+
if (defined('T_FINALLY')) {
$php53[] = T_FINALLY;
$php53[] = T_YIELD;
}
foreach ($tokens as $token) {
if (is_array($token) && in_array($token[0], $php53)) {
return true;
}
}
return false;
}
protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode) {
$includePaths = array();
foreach ($packageMap as $item) {
list($package, $installPath) = $item;
if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) {
$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));
}
foreach ($package->getIncludePaths() as $includePath) {
$includePath = trim($includePath, '/');
$includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath;
}
}
if (!$includePaths) {
return;
}
$includePathsFile = <<<EOF
<?php
// include_paths_52.php generated by xrstf/composer-php52
\$vendorDir = $vendorPathCode;
\$baseDir = $appBaseDirCode;
return array(
EOF;
foreach ($includePaths as $path) {
$includePathsFile .= "\t" . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n";
}
return $includePathsFile . ");\n";
}
protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix) {
return <<<AUTOLOAD
<?php
// autoload_52.php generated by xrstf/composer-php52
require_once $vendorPathToTargetDirCode.'/autoload_real_52.php';
return ComposerAutoloaderInit$suffix::getLoader();
AUTOLOAD;
}
protected function getAutoloadRealFile($useClassMap, $useIncludePath, $targetDirLoader, $filesCode, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion = 70000) {
// TODO the class ComposerAutoloaderInit should be revert to a closure
// when APC has been fixed:
// - https://github.com/composer/composer/issues/959
// - https://bugs.php.net/bug.php?id=52144
// - https://bugs.php.net/bug.php?id=61576
// - https://bugs.php.net/bug.php?id=59298
if ($filesCode) {
$filesCode = "\n\n".rtrim($filesCode);
}
$file = <<<HEADER
<?php
// autoload_real_52.php generated by xrstf/composer-php52
class ComposerAutoloaderInit$suffix {
private static \$loader;
public static function loadClassLoader(\$class) {
if ('xrstf_Composer52_ClassLoader' === \$class) {
require dirname(__FILE__).'/ClassLoader52.php';
}
}
/**
* @return xrstf_Composer52_ClassLoader
*/
public static function getLoader() {
if (null !== self::\$loader) {
return self::\$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true /*, true */);
self::\$loader = \$loader = new xrstf_Composer52_ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'));
\$vendorDir = $vendorPathCode;
\$baseDir = $appBaseDirCode;
\$dir = dirname(__FILE__);
HEADER;
if ($useIncludePath) {
$file .= <<<'INCLUDE_PATH'
$includePaths = require $dir.'/include_paths.php';
array_push($includePaths, get_include_path());
set_include_path(implode(PATH_SEPARATOR, $includePaths));
INCLUDE_PATH;
}
$file .= <<<'PSR0'
$map = require $dir.'/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->add($namespace, $path);
}
PSR0;
if ($useClassMap) {
$file .= <<<'CLASSMAP'
$classMap = require $dir.'/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
CLASSMAP;
}
if ($this->classMapAuthoritative) {
$file .= <<<'CLASSMAPAUTHORITATIVE'
$loader->setClassMapAuthoritative(true);
CLASSMAPAUTHORITATIVE;
}
if ($useGlobalIncludePath) {
$file .= <<<'INCLUDEPATH'
$loader->setUseIncludePath(true);
INCLUDEPATH;
}
if ($targetDirLoader) {
$file .= <<<REGISTER_AUTOLOAD
spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'autoload'), true);
REGISTER_AUTOLOAD;
}
$file .= <<<METHOD_FOOTER
\$loader->register($prependAutoloader);{$filesCode}
return \$loader;
}
METHOD_FOOTER;
$file .= $targetDirLoader;
return $file . <<<FOOTER
}
FOOTER;
}
}

View File

@ -0,0 +1,271 @@
<?php
/*
* Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
*
* This file is released under the terms of the MIT license. You can find the
* complete text in the attached LICENSE file or online at:
*
* http://www.opensource.org/licenses/mit-license.php
*
* --------------------------------------------------------------------------
*
* 99% of this is copied as-is from the original Composer source code and is
* released under MIT license as well. Copyright goes to:
*
* - Fabien Potencier <fabien@symfony.com>
* - Jordi Boggiano <j.boggiano@seld.be>
*/
class xrstf_Composer52_ClassLoader {
private $prefixes = array();
private $fallbackDirs = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoratative = false;
private $allowUnderscore = false;
/**
* @param boolean $flag true to allow class names with a leading underscore, false to disable
*/
public function setAllowUnderscore($flag) {
$this->allowUnderscore = (boolean) $flag;
}
/**
* @return array
*/
public function getPrefixes() {
return $this->prefixes;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoratative
*/
public function setClassMapAuthoritative($classMapAuthoratative) {
$this->classMapAuthoratative = $classMapAuthoratative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function getClassMapAuthoratative() {
return $this->classMapAuthoratative;
}
/**
* @return array
*/
public function getFallbackDirs() {
return $this->fallbackDirs;
}
/**
* @return array
*/
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 classes, merging with any others previously set.
*
* @param string $prefix the classes prefix
* @param array|string $paths the location(s) of the classes
* @param bool $prepend prepend the location(s)
*/
public function add($prefix, $paths, $prepend = false) {
if (!$prefix) {
if ($prepend) {
$this->fallbackDirs = array_merge(
(array) $paths,
$this->fallbackDirs
);
}
else {
$this->fallbackDirs = array_merge(
$this->fallbackDirs,
(array) $paths
);
}
return;
}
if (!isset($this->prefixes[$prefix])) {
$this->prefixes[$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixes[$prefix] = array_merge(
(array) $paths,
$this->prefixes[$prefix]
);
}
else {
$this->prefixes[$prefix] = array_merge(
$this->prefixes[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of classes, replacing any others previously set.
*
* @param string $prefix the classes prefix
* @param array|string $paths the location(s) of the classes
*/
public function set($prefix, $paths) {
if (!$prefix) {
$this->fallbackDirs = (array) $paths;
return;
}
$this->prefixes[$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;
}
/**
* Registers this instance as an autoloader.
*/
public function register() {
spl_autoload_register(array($this, 'loadClass'), true);
}
/**
* 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
*/
public function loadClass($class) {
if ($file = $this->findFile($class)) {
include $file;
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class the name of the class
* @return string|null the path, if found
*/
public function findFile($class) {
if ('\\' === $class[0]) {
$class = substr($class, 1);
}
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
elseif ($this->classMapAuthoratative) {
return false;
}
$classPath = $this->getClassPath($class);
foreach ($this->prefixes as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
return $dir.DIRECTORY_SEPARATOR.$classPath;
}
}
}
}
foreach ($this->fallbackDirs as $dir) {
if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
return $dir.DIRECTORY_SEPARATOR.$classPath;
}
}
if ($this->useIncludePath && $file = self::resolveIncludePath($classPath)) {
return $file;
}
return $this->classMap[$class] = false;
}
private function getClassPath($class) {
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)).DIRECTORY_SEPARATOR;
$className = substr($class, $pos + 1);
}
else {
// PEAR-like class name
$classPath = null;
$className = $class;
}
$className = str_replace('_', DIRECTORY_SEPARATOR, $className);
// restore the prefix
if ($this->allowUnderscore && DIRECTORY_SEPARATOR === $className[0]) {
$className[0] = '_';
}
$classPath .= $className.'.php';
return $classPath;
}
public static function resolveIncludePath($classPath) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$path = rtrim($path, '/\\');
if ($file = file_exists($path.DIRECTORY_SEPARATOR.$file)) {
return $file;
}
}
return false;
}
}

View File

@ -0,0 +1,39 @@
<?php
/*
* Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
*
* This file is released under the terms of the MIT license. You can find the
* complete text in the attached LICENSE file or online at:
*
* http://www.opensource.org/licenses/mit-license.php
*/
namespace xrstf\Composer52;
use Composer\Repository\CompositeRepository;
use Composer\Script\Event;
class Generator {
public static function onPostInstallCmd(Event $event) {
$composer = $event->getComposer();
$installationManager = $composer->getInstallationManager();
$repoManager = $composer->getRepositoryManager();
$localRepo = $repoManager->getLocalRepository();
$package = $composer->getPackage();
$config = $composer->getConfig();
// We can't gain access to the Command's input object, so we have to look
// for -o / --optimize-autoloader ourselves. Sadly, neither getopt() works
// (always returns an empty array), nor does Symfony's Console Input, as
// it expects a full definition of the current command line and we can't
// provide that.
$args = $_SERVER['argv'];
$optimize = in_array('-o', $args) || in_array('--optimize-autoloader', $args) || in_array('--optimize', $args);
$suffix = $config->get('autoloader-suffix');
$generator = new AutoloadGenerator();
$generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize, $suffix);
}
}