* Setup: allow to use Composer (https://getcomposer.org/) to manager requirements (instead of PEAR)

This commit is contained in:
Ralf Becker 2015-01-18 12:05:09 +00:00
parent 0c4b46ba04
commit 3c4cb54f34
6 changed files with 1058 additions and 42 deletions

27
composer.json Normal file
View File

@ -0,0 +1,27 @@
{
"repositories": [
{
"type": "pear",
"url": "http://pear.php.net"
},
{
"type": "pear",
"url": "http://pear.horde.org"
}
],
"require": {
"php": ">=5.3.2,<=6.0.0alpha1",
"pear-pear.php.net/Net_Sieve": "*",
"pear-pear.horde.org/Horde_Imap_Client": ">=2.24.2",
"pear-pear.horde.org/Horde_Nls": ">=2.0.3",
"pear-pear.horde.org/Horde_Mail": ">=2.1.2",
"pear-pear.horde.org/Horde_Imap_Client": ">=2.24.2",
"pear-pear.horde.org/Horde_Smtp": ">=1.3.0",
"pear-pear.horde.org/Horde_Compress": ">=2.0.8",
"pear-pear.horde.org/Horde_Icalendar": ">=2.0.0",
"pear-pear.horde.org/Horde_Mapi": ">=1.0.0",
"pear-pear.php.net/XML_Feed_Parser": "*",
"pear-pear.php.net/Log": "*",
"pear-pear.php.net/Text_Diff": "*"
}
}

938
composer.lock generated Normal file
View File

@ -0,0 +1,938 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "21eef0e85f0c15237feb09a236c221f8",
"packages": [
{
"name": "pear-pear.horde.org/Horde_Compress",
"version": "2.0.8",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Compress-2.0.8.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_compress": "== 2.0.8.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "An API for various compression techniques."
},
{
"name": "pear-pear.horde.org/Horde_Crypt_Blowfish",
"version": "1.0.3",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Crypt_Blowfish-1.0.3.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_support": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_crypt_blowfish": "== 1.0.3.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides blowfish encryption/decryption for PHP string data."
},
{
"name": "pear-pear.horde.org/Horde_Date",
"version": "2.0.13",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Date-2.0.13.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_nls": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_date": "== 2.0.13.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Package for creating and manipulating dates."
},
{
"name": "pear-pear.horde.org/Horde_Exception",
"version": "2.0.5",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Exception-2.0.5.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_exception": "== 2.0.5.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "This class provides the default exception handlers for the Horde Application Framework."
},
{
"name": "pear-pear.horde.org/Horde_Icalendar",
"version": "2.0.10",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Icalendar-2.0.10.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_date": "<3.0.0.0",
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_mail": "<3.0.0.0",
"pear-pear.horde.org/horde_support": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_icalendar": "== 2.0.10.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "An API for dealing with iCalendar data."
},
{
"name": "pear-pear.horde.org/Horde_Idna",
"version": "1.0.1",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Idna-1.0.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_idna": "== 1.0.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Normalized access to various backends providing IDNA (Internationalized Domain Names in Applications) support."
},
{
"name": "pear-pear.horde.org/Horde_Imap_Client",
"version": "2.26.0",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Imap_Client-2.26.0.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-hash": "*",
"ext-json": "*",
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_mail": "<3.0.0.0",
"pear-pear.horde.org/horde_mime": "<3.0.0.0",
"pear-pear.horde.org/horde_secret": "<3.0.0.0",
"pear-pear.horde.org/horde_socket_client": "<2.0.0.0",
"pear-pear.horde.org/horde_stream": "<2.0.0.0",
"pear-pear.horde.org/horde_stream_filter": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_imap_client": "== 2.26.0.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Interface to access IMAP4rev1 (RFC 3501) mail servers. Also supports connections to POP3 (STD 53/RFC 1939)."
},
{
"name": "pear-pear.horde.org/Horde_ListHeaders",
"version": "1.2.1",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_ListHeaders-1.2.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_mail": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_listheaders": "== 1.2.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "The Horde_ListHeaders library parses Mailing List Headers as defined in RFC 2369 & RFC 2919."
},
{
"name": "pear-pear.horde.org/Horde_Mail",
"version": "2.5.1",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Mail-2.5.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_idna": "<2.0.0.0",
"pear-pear.horde.org/horde_mime": "<3.0.0.0",
"pear-pear.horde.org/horde_stream_filter": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_mail": "== 2.5.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides interfaces for sending e-mail messages and parsing e-mail addresses."
},
{
"name": "pear-pear.horde.org/Horde_Mapi",
"version": "1.0.4",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Mapi-1.0.4.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_date": "<3.0.0.0",
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_mapi": "== 1.0.4.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides various utility classes for dealing with Microsoft MAPI structured data."
},
{
"name": "pear-pear.horde.org/Horde_Mime",
"version": "2.6.1",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Mime-2.6.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_listheaders": ">=1.2.0.0,<=2.0.0.0,!=3.0.0.0",
"pear-pear.horde.org/horde_mail": "<3.0.0.0",
"pear-pear.horde.org/horde_stream": "<2.0.0.0",
"pear-pear.horde.org/horde_stream_filter": "<3.0.0.0",
"pear-pear.horde.org/horde_support": "<3.0.0.0",
"pear-pear.horde.org/horde_text_flowed": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_mime": "== 2.6.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides methods for dealing with Multipurpose Internet Mail Extensions (MIME) features (RFC 2045/2046/2047)."
},
{
"name": "pear-pear.horde.org/Horde_Nls",
"version": "2.0.5",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Nls-2.0.5.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_nls": "== 2.0.5.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Common methods for handling language data, timezones, and hostname->country lookups."
},
{
"name": "pear-pear.horde.org/Horde_Secret",
"version": "2.0.4",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Secret-2.0.4.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-hash": "*",
"pear-pear.horde.org/horde_crypt_blowfish": "<2.0.0.0",
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_support": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_secret": "== 2.0.4.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "An API for encrypting and decrypting small pieces of data with the use of a shared key."
},
{
"name": "pear-pear.horde.org/Horde_Smtp",
"version": "1.8.0",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Smtp-1.8.0.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_mail": "<3.0.0.0",
"pear-pear.horde.org/horde_socket_client": "<2.0.0.0",
"pear-pear.horde.org/horde_support": "<3.0.0.0",
"pear-pear.horde.org/horde_translation": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_smtp": "== 1.8.0.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides interfaces for connecting to a SMTP (RFC 5321) server to send e-mail messages."
},
{
"name": "pear-pear.horde.org/Horde_Socket_Client",
"version": "1.1.2",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Socket_Client-1.1.2.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_socket_client": "== 1.1.2.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Provides abstract class for use in creating PHP network socket clients."
},
{
"name": "pear-pear.horde.org/Horde_Stream",
"version": "1.6.2",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Stream-1.6.2.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_stream": "== 1.6.2.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "An object-oriented interface to assist in creating and storing PHP stream resources, and to provide utility methods to access and manipulate the stream contents."
},
{
"name": "pear-pear.horde.org/Horde_Stream_Filter",
"version": "2.0.3",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Stream_Filter-2.0.3.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_stream_filter": "== 2.0.3.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "A collection of various stream filters."
},
{
"name": "pear-pear.horde.org/Horde_Stream_Wrapper",
"version": "2.1.1",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Stream_Wrapper-2.1.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_stream_wrapper": "== 2.1.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "A collection of stream wrappers."
},
{
"name": "pear-pear.horde.org/Horde_Support",
"version": "2.1.2",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Support-2.1.2.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_exception": "<3.0.0.0",
"pear-pear.horde.org/horde_stream_wrapper": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_support": "== 2.1.2.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Support classes not tied to Horde but is used by it. These classes can be used outside of Horde as well."
},
{
"name": "pear-pear.horde.org/Horde_Text_Flowed",
"version": "2.0.2",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Text_Flowed-2.0.2.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.horde.org/horde_util": "<3.0.0.0",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_text_flowed": "== 2.0.2.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "The Horde_Text_Flowed:: class provides common methods for manipulating text using the encoding described in RFC 3676 ('flowed' text)."
},
{
"name": "pear-pear.horde.org/Horde_Translation",
"version": "2.2.0",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Translation-2.2.0.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_translation": "== 2.2.0.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Translation wrappers."
},
{
"name": "pear-pear.horde.org/Horde_Util",
"version": "2.5.2",
"dist": {
"type": "file",
"url": "http://pear.horde.org/get/Horde_Util-2.5.2.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-dom": "*",
"php": "<6.0.0.0"
},
"replace": {
"pear-horde/horde_util": "== 2.5.2.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "These classes provide functionality useful for all kind of applications."
},
{
"name": "pear-pear.php.net/Archive_Tar",
"version": "1.3.13",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Archive_Tar-1.3.13.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=4.3.0.0"
},
"replace": {
"pear-pear/archive_tar": "== 1.3.13.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "This class provides handling of tar files in PHP.\nIt supports creating, listing, extracting and adding to tar files.\nGzip support is available if PHP has the zlib extension built-in or\nloaded. Bz2 compression is also supported with the bz2 extension loaded."
},
{
"name": "pear-pear.php.net/Console_Getopt",
"version": "1.3.1",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Console_Getopt-1.3.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=4.3.0.0"
},
"replace": {
"pear-pear/console_getopt": "== 1.3.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "This is a PHP implementation of &quot;getopt&quot; supporting both\nshort and long options."
},
{
"name": "pear-pear.php.net/Log",
"version": "1.12.8",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Log-1.12.8.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=5.0.0.0"
},
"replace": {
"pear-pear/log": "== 1.12.8.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"license": [
"MIT License"
],
"description": "The Log package provides an abstracted logging framework. It includes output handlers for log files, databases, syslog, email, Firebug, and the console. It also provides composite and subject-observer logging mechanisms."
},
{
"name": "pear-pear.php.net/Net_Sieve",
"version": "1.3.3",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Net_Sieve-1.3.3.tgz",
"reference": null,
"shasum": null
},
"require": {
"pear-pear.php.net/net_socket": ">=1.0.0.0",
"pear-pear.php.net/pear": ">=1.0.0.0",
"php": ">=4.0.0.0"
},
"replace": {
"pear-pear/net_sieve": "== 1.3.3.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "This package provides an API to talk to servers implementing the managesieve protocol. It can be used to install and remove sieve scripts, mark them active etc."
},
{
"name": "pear-pear.php.net/Net_Socket",
"version": "1.0.14",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Net_Socket-1.0.14.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=4.3.0.0"
},
"replace": {
"pear-pear/net_socket": "== 1.0.14.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Net_Socket is a class interface to TCP sockets. It provides blocking\n and non-blocking operation, with different reading and writing modes\n (byte-wise, block-wise, line-wise and special formats like network\n byte-order ip addresses)."
},
{
"name": "pear-pear.php.net/PEAR",
"version": "1.9.5",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/PEAR-1.9.5.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-pcre": "*",
"ext-xml": "*",
"pear-pear.php.net/archive_tar": ">=1.3.11.0",
"pear-pear.php.net/console_getopt": ">=1.2.0.0",
"pear-pear.php.net/structures_graph": ">=1.0.2.0",
"pear-pear.php.net/xml_util": ">=1.2.0.0",
"php": ">=4.4.0.0,!=5.0.0.0,!=5.1.0.0,!=5.1.1.0,!=5.1.2.0,!=5.1.3.0,!=5.1.4.0,!=5.1.5.0"
},
"conflict": {
"pear-pear.php.net/pear_frontend_gtk": "<0.4.0.0",
"pear-pear.php.net/pear_frontend_web": "<=0.4.0.0"
},
"replace": {
"pear-pear/pear": "== 1.9.5.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "The PEAR package contains:\n * the PEAR installer, for creating, distributing\n and installing packages\n * the PEAR_Exception PHP5 error handling mechanism\n * the PEAR_ErrorStack advanced error handling mechanism\n * the PEAR_Error error handling mechanism\n * the OS_Guess class for retrieving info about the OS\n where PHP is running on\n * the System class for quick handling of common operations\n with files and directories\n * the PEAR base class\n Features in a nutshell:\n * full support for channels\n * pre-download dependency validation\n * new package.xml 2.0 format allows tremendous flexibility while maintaining BC\n * support for optional dependency groups and limited support for sub-packaging\n * robust dependency support\n * full dependency validation on uninstall\n * remote install for hosts with only ftp access - no more problems with\n restricted host installation\n * full support for mirroring\n * support for bundling several packages into a single tarball\n * support for static dependencies on a url-based package\n * support for custom file roles and installation tasks"
},
{
"name": "pear-pear.php.net/Structures_Graph",
"version": "1.0.4",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Structures_Graph-1.0.4.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=4.2.0.0"
},
"replace": {
"pear-pear/structures_graph": "== 1.0.4.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Structures_Graph is a package for creating and manipulating graph datastructures. It allows building of directed\nand undirected graphs, with data and metadata stored in nodes. The library provides functions for graph traversing\nas well as for characteristic extraction from the graph topology."
},
{
"name": "pear-pear.php.net/Text_Diff",
"version": "1.1.1",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/Text_Diff-1.1.1.tgz",
"reference": null,
"shasum": null
},
"require": {
"php": ">=4.2.0.0"
},
"replace": {
"pear-pear/text_diff": "== 1.1.1.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"license": [
"LGPL"
],
"description": "This package provides a text-based diff engine and renderers for multiple diff output formats."
},
{
"name": "pear-pear.php.net/XML_Feed_Parser",
"version": "1.0.5",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/XML_Feed_Parser-1.0.5.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-xml": "*",
"pear-pear.php.net/log": "*",
"php": ">=5.0.0.0"
},
"replace": {
"pear-pear/xml_feed_parser": "== 1.0.5.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"license": [
"LGPL"
],
"description": "XML_Feed_Parser is a parser for (the various) RSS and Atom format XML feeds. It attempts to provide a somewhat unified API while still allowing access to the full details of each feed type."
},
{
"name": "pear-pear.php.net/XML_Util",
"version": "1.2.3",
"dist": {
"type": "file",
"url": "http://pear.php.net/get/XML_Util-1.2.3.tgz",
"reference": null,
"shasum": null
},
"require": {
"ext-pcre": "*",
"php": ">=4.3.0.0"
},
"replace": {
"pear-pear/xml_util": "== 1.2.3.0"
},
"type": "pear-library",
"autoload": {
"classmap": [
""
]
},
"include-path": [
"/"
],
"description": "Selection of methods that are often needed when working with XML documents. Functionality includes creating of attribute lists from arrays, creation of tags, validation of XML names and more."
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.3.2,<=6.0.0alpha1"
},
"platform-dev": []
}

View File

@ -1648,7 +1648,9 @@ function __autoload($class)
// include PEAR and PSR0 classes from include_path
// need to use include (not include_once) as eg. a previous included EGW_API_INC/horde/Horde/String.php causes
// include_once('Horde/String.php') to return true, even if the former was included with an absolute path
!isset($GLOBALS['egw_info']['apps'][$app]) && @include($file = strtr($class, array('_'=>'/','\\'=>'/')).'.php'))
// only use include_path, if no Composer vendor directory exists
!isset($GLOBALS['egw_info']['apps'][$app]) && !file_exists(EGW_SERVER_ROOT.'/vendor') &&
@include($file = strtr($class, array('_'=>'/','\\'=>'/')).'.php'))
{
include_once($file);
//if (!class_exists($class, false) && !interface_exists($class, false)) error_log("autoloading class $class by include_once($file) failed!");
@ -1662,6 +1664,12 @@ function __autoload($class)
// register our autoloader with sql, so other PHP code can use spl_autoload_register, without stalling our autoloader
spl_autoload_register('__autoload');
// if we have a Composer vendor directory, also load it's autoloader, to allow manage our requirements with Composer
if (file_exists(EGW_SERVER_ROOT.'/vendor'))
{
require_once EGW_SERVER_ROOT.'/vendor/autoload.php';
}
/**
* Clasify exception for a headline and log it to error_log, if not running as cli
*

View File

@ -309,6 +309,29 @@ function php_version($name,$args)
phpversion().' ==> '.($version_ok ? lang('True') : lang('False'))."</span></div>\n";
}
/**
* Check if given package is installed via composer in EGroupware's vendor directory
*
* @param string $package package-name in composer notation eg. "pear-pear.horde.org/Horde_Imap_Client" or "pear-pear.php.net/Net_Sieve"
*/
function composer_check($package)
{
static $installed=null;
if (!isset($installed))
{
$installed = array();
if (file_exists(EGW_SERVER_ROOT.'/vendor') && file_exists($json=EGW_SERVER_ROOT.'/vendor/composer/installed.json'))
{
foreach(json_decode(file_get_contents($json), true) as $package_data)
{
$installed[strtolower($package_data['name'])] = $package_data['version'];
}
}
}
//error_log(__METHOD__."('$package') returning ".array2string($installed[strtolower($package)]));
return $installed[strtolower($package)];
}
/**
* quering the pear registry to find out which pear packages and versions are installed
*
@ -372,38 +395,44 @@ function pear_check($package,$args)
}
$min_version = isset($args['version']) ? $args['version'] : null;
if (!isset($channel_packages[(string)$channel]))
// first check if package is available via composer installed vendor directory
$composer_name = 'pear-'.($channel ? $channel : 'pear.php.net').'/'.($package ? $package : 'pear');
$version_available = composer_check($composer_name);
if ((!($found = !empty($version_available))))
{
$channel_packages[(string)$channel] = get_installed_pear_packages($channel);
}
$pear_packages = $channel_packages[(string)$channel];
$version_available = false;
// packages found in the pear registry --> use that info
if ($pear_packages)
{
$pear_available = $found = true;
// check if package is installed
if ($package && isset($pear_packages[$package])) $available = true;
// check if it's the right version
$version_available = $pear_packages[$package ? $package : 'PEAR'];
}
else // use the old checks as fallback
{
if (is_null($pear_available))
if (!isset($channel_packages[(string)$channel]))
{
$pear_available = @include_once('PEAR.php');
if (!class_exists('PEAR')) $pear_available = false;
$channel_packages[(string)$channel] = get_installed_pear_packages($channel);
}
$found = $pear_available;
if ($pear_available && $package)
$pear_packages = $channel_packages[(string)$channel];
$version_available = false;
// packages found in the pear registry --> use that info
if ($pear_packages)
{
$file = str_replace('_','/',$package == 'Mail_Mime' ? 'Mail_mime' : $package).'.php';
$pear_available = $found = true;
// check if package is installed
if ($package && isset($pear_packages[$package])) $available = true;
// check if it's the right version
$version_available = $pear_packages[$package ? $package : 'PEAR'];
}
else // use the old checks as fallback
{
if (is_null($pear_available))
{
$pear_available = @include_once('PEAR.php');
$found = @include_once($file);
if (!class_exists('PEAR')) $pear_available = false;
}
$found = $pear_available;
if ($pear_available && $package)
{
$file = str_replace('_','/',$package == 'Mail_Mime' ? 'Mail_mime' : $package).'.php';
if (!class_exists($package)) $found = false;
$found = @include_once($file);
if (!class_exists($package)) $found = false;
}
}
}
// is the right version availible
@ -418,25 +447,37 @@ function pear_check($package,$args)
echo '<div class="setup_info">' . lang('PEAR%1 is needed by: %2.',$package ? '::'.$package : '',
is_array($args['from']) ? implode(', ',$args['from']) : $args['from']);
if (!$pear_available)
{
echo '<br/>'.lang('PEAR (%1) is a PHP repository and is usually in a package called %2.',
'<a href="http://pear.php.net" target="_blank">pear.php.net</a>','php-pear');
}
elseif ($package && !$found)
// if using Composer, dont confuse user with PEAR ;-)
if (file_exists(EGW_SERVER_ROOT.'/vendor'))
{
echo '<br/>'.lang('You can install it by running:').
($channel ? ' pear channel-discover '.$channel.' ;' : '').
' pear install '.($channel ? $channel.'/' : '').$package;
' cd '.realpath(EGW_SERVER_ROOT).'; php composer.phar install';
}
elseif ($min_version && !$version_available)
else
{
echo '<br/>'.lang('We could not determine the version of %1, please make sure it is at least %2',$package,$min_version);
}
elseif ($min_version && version_compare($min_version,$version_available) > 0)
{
echo '<br/>'.lang('Your installed version of %1 is %2, required is at least %3, please run: ',
$package,$version_available,$min_version).' pear upgrade '.$package;
if (!$pear_available)
{
echo '<br/>'.lang('PEAR (%1) is a PHP repository and is usually in a package called %2.',
'<a href="http://pear.php.net" target="_blank">pear.php.net</a>','php-pear');
}
elseif ($package && !$found)
{
echo '<br/>'.lang('You can install it by running:').
($channel ? ' pear channel-discover '.$channel.' ;' : '').
' pear install '.($channel ? $channel.'/' : '').$package;
}
elseif ($min_version && !$version_available)
{
echo '<br/>'.lang('We could not determine the version of %1, please make sure it is at least %2',$package,$min_version);
}
elseif ($min_version && version_compare($min_version,$version_available) > 0)
{
echo '<br/>'.lang('Your installed version of %1 is %2, required is at least %3, please run: ',
$package,$version_available,$min_version).' pear upgrade '.$package;
}
echo '<br/>'.lang('Alternatively you can use %1Composer%2 to install all requirements at once. Downloading it and run:',
'<a href="https://getcomposer.org/" target="_blank">', '</a>').
' cd '.realpath(EGW_SERVER_ROOT).'; php composer.phar install';
}
echo "</div>";
}

View File

@ -58,6 +58,7 @@ allow password migration setup de Erlaube Password Migration
allow usernames identical to system users? setup de Erlaube Benutzernamen identisch zu denen von Systembenutzern?
allowed migration types (comma-separated) setup de Erlaubte Migrationstypen (Komma separiert)
alternatively domains can be accessed by logging in with <i>username@domain</i>. setup de Auf Domains kann alternative auch durch Anmelden als <i>benutzer@domain</i> zugegriffen werden.
alternatively you can use %1composer%2 to install all requirements at once. downloading it and run: setup de Alternativ können Sie auch %1Composer%2 verwenden um alle Abhängigkeiten auf einmal zu installieren. Laden Sie es herunter und starten:
and is up to date setup de und ist aktuell
and reload your webserver, so the above changes take effect !!! setup de UND reloaden Sie ihren Webserver, damit die obigen Änderungen in Kraft treten!!!
app details setup de Details der Anwendung

View File

@ -58,6 +58,7 @@ allow password migration setup en Allow password migration
allow usernames identical to system users? setup en Allow usernames identical to system users?
allowed migration types (comma-separated) setup en Allowed migration types (comma-separated)
alternatively domains can be accessed by logging in with <i>username@domain</i>. setup en Alternatively domains can be accessed by logging in with <i>username@domain</i>.
alternatively you can use %1composer%2 to install all requirements at once. downloading it and run: setup en Alternatively you can use %1Composer%2 to install all requirements at once. Downloading it and run:
and is up to date setup en and is up to date
and reload your webserver, so the above changes take effect !!! setup en AND reload your web server, so the above changes take effect !!!
app details setup en App details