Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
hfpp2012
/
vbot
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 08f33261
authored
Jan 20, 2017
by
HanSon
Committed by
GitHub
Jan 20, 2017
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge pull request #15 from HanSon/qrcode
增加二维码显示
2 parents
a7baacb4
11a8e84c
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
886 additions
and
642 deletions
.gitignore
composer.json
composer.lock
example/custom.php
src/Collections/Contact.php
src/Core/Server.php
src/Support/Console.php
src/Support/System.php
.gitignore
View file @
08f3326
/vendor/
.idea
/tmp/
composer.json
View file @
08f3326
...
...
@@ -16,7 +16,11 @@
"pimple/pimple"
:
"^3.0"
,
"illuminate/support"
:
"^5.3"
,
"nesbot/carbon"
:
"^1.21"
,
"php"
:
">=7.0.0"
"php"
:
">=7.0.0"
,
"symfony/var-dumper"
:
"^3.2"
,
"aferrandini/phpqrcode"
:
"^1.0"
,
"symfony/process"
:
"^3.2"
,
"symfony/console"
:
"^3.2"
},
"minimum-stability"
:
"dev"
,
"autoload"
:
{
...
...
composer.lock
View file @
08f3326
...
...
@@ -4,10 +4,54 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "b8
d45b4e0794f3855f36113b444420a7
",
"content-hash": "
4208bf2e5381a25360c7b542e17fd4a0
",
"hash": "b8
4e2aeb3bf07508860d7856ff874d18
",
"content-hash": "
1d8a1895a8ce4f7fd0473faaad10cb75
",
"packages": [
{
"name": "aferrandini/phpqrcode",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/aferrandini/PHPQRCode.git",
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/aferrandini/PHPQRCode/3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46.zip",
"reference": "3c1c0454d43710ab5bbe19a51ad4cb41c22e3d46",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-0": {
"PHPQRCode": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ariel Ferrandini",
"email": "arielferrandini@gmail.com",
"homepage": "http://www.ferrandini.com/",
"role": "Developer"
}
],
"description": "PHPQRCode porting and changed for PHP 5.3 compatibility",
"homepage": "https://github.com/aferrandini/PHPQRCode",
"keywords": [
"barcode",
"php",
"qrcode"
],
"time": "2013-07-08 09:39:08"
},
{
"name": "doctrine/inflector",
"version": "v1.1.0",
"source": {
...
...
@@ -517,1091 +561,1188 @@
"time": "2015-11-04 20:07:17"
},
{
"name": "
paragonie/random_compat
",
"version": "v2.
0.4
",
"name": "
nette/bootstrap
",
"version": "v2.
4.2
",
"source": {
"type": "git",
"url": "https://github.com/
paragonie/random_compat
.git",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
"
"url": "https://github.com/
nette/bootstrap
.git",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
paragonie/random_compat/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
.zip",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
",
"url": "https://packagist.phpcomposer.com/files/
nette/bootstrap/4db37e6d42ddf41b50417950741113b5dfc86e27
.zip",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
"nette/di": "~2.4.0",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
"latte/latte": "~2.2",
"nette/application": "~2.3",
"nette/caching": "~2.3",
"nette/database": "~2.3",
"nette/forms": "~2.3",
"nette/http": "~2.4.0",
"nette/mail": "~2.3",
"nette/robot-loader": "~2.2",
"nette/safe-stream": "~2.2",
"nette/security": "~2.3",
"nette/tester": "~2.0",
"tracy/tracy": "^2.4.1"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
"nette/robot-loader": "to use Configurator::createRobotLoader()",
"tracy/tracy": "to use Configurator::enableTracy()"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"
files
": [
"
lib/random.php
"
"
classmap
": [
"
src/
"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"pseudorandom",
"random"
],
"time": "2016-11-07 23:38:38"
"description": "Nette Bootstrap",
"homepage": "https://nette.org",
"time": "2016-12-19 12:12:10"
},
{
"name": "
pimple/pimple
",
"version": "v
3.0
.2",
"name": "
nette/caching
",
"version": "v
2.5
.2",
"source": {
"type": "git",
"url": "https://github.com/
silexphp/Pimple
.git",
"reference": "
a30f7d6e57565a2e1a316e1baf2a483f788b258a
"
"url": "https://github.com/
nette/caching
.git",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
silexphp/Pimple/a30f7d6e57565a2e1a316e1baf2a483f788b258a
.zip",
"reference": "
a30f7d6e57565a2e1a316e1baf2a483f788b258a
",
"url": "https://packagist.phpcomposer.com/files/
nette/caching/7da6cc65f301e220acba4fd8a11d3afdc642be9e
.zip",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
"nette/finder": "~2.2",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"latte/latte": "~2.4",
"nette/di": "~2.4",
"nette/tester": "~2.0",
"tracy/tracy": "^2.4"
},
"suggest": {
"ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
3.0.x
-dev"
"dev-master": "
2.5
-dev"
}
},
"autoload": {
"
psr-0": {
"
Pimple": "
src/"
}
"
classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"description": "Pimple, a simple Dependency Injection Container",
"homepage": "http://pimple.sensiolabs.org",
"keywords": [
"container",
"dependency injection"
],
"time": "2015-09-11 15:10:35"
"description": "Nette Caching Component",
"homepage": "https://nette.org",
"time": "2016-10-06 00:08:42"
},
{
"name": "
psr/http-message
",
"version": "
1.0.1
",
"name": "
nette/di
",
"version": "
v2.4.5
",
"source": {
"type": "git",
"url": "https://github.com/
php-fig/http-message
.git",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
"
"url": "https://github.com/
nette/di
.git",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
php-fig/http-message/f6561bf28d520154e4b0ec72be95418abe6d9363
.zip",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
",
"url": "https://packagist.phpcomposer.com/files/
nette/di/b265f305e1fef2dad1cb2e7340b49d274d3dd14c
.zip",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
"ext-tokenizer": "*",
"nette/neon": "^2.3.3",
"nette/php-generator": "^2.4",
"nette/utils": "^2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/bootstrap": "<2.4",
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
1.0.x
-dev"
"dev-master": "
2.4
-dev"
}
},
"autoload": {
"
psr-4": {
"
Psr\\Http\\Message\\": "
src/"
}
"
classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06 14:39:51"
"description": "Nette Dependency Injection Component",
"homepage": "https://nette.org",
"time": "2016-12-23 10:26:44"
},
{
"name": "
querypath/querypath
",
"version": "
3.0.5
",
"name": "
nette/finder
",
"version": "
v2.4.0
",
"source": {
"type": "git",
"url": "https://github.com/
technosophos/querypath
.git",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
"
"url": "https://github.com/
nette/finder
.git",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
technosophos/querypath/6b8e2395fac61fac25bbe962f94def556cb85f7d
.zip",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
",
"url": "https://packagist.phpcomposer.com/files/
nette/finder/5cabd5fe89f9903715359a403b820c7f94f9bb5e
.zip",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
",
"shasum": ""
},
"require": {
"masterminds/html5": "2.*",
"php": ">=5.3.0"
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"psr-0": {
"QueryPath": "src/"
},
"files": [
"src/qp_functions.php"
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"description": "HTML/XML querying (CSS 4 or XPath) and processing (like jQuery)",
"homepage": "https://github.com/technosophos/querypath",
"keywords": [
"css",
"html",
"jquery",
"xml",
"xslt"
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
],
"time": "2016-08-01 22:40:30"
"description": "Nette Finder: Files Searching",
"homepage": "https://nette.org",
"time": "2016-05-17 15:49:06"
},
{
"name": "
symfony/css-selector
",
"version": "v
3.2.1
",
"name": "
nette/neon
",
"version": "v
2.4.0
",
"source": {
"type": "git",
"url": "https://github.com/
symfony/css-selector
.git",
"reference": "
e1241f275814827c411d922ba8e64cf2a00b2994
"
"url": "https://github.com/
nette/neon
.git",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/css-selector/e1241f275814827c411d922ba8e64cf2a00b2994
.zip",
"reference": "
e1241f275814827c411d922ba8e64cf2a00b2994
",
"url": "https://packagist.phpcomposer.com/files/
nette/neon/c40c63f2afa4196844ac40d9d2a2cfb313f76906
.zip",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
",
"shasum": ""
},
"require": {
"php": ">=5.5.9"
"ext-iconv": "*",
"php": ">=5.6.0"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "Jean-François Simon",
"email": "jeanfrancois.simon@sensiolabs.com"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
}
],
"description": "
Symfony CssSelector Component
",
"homepage": "http
s://symfony.com
",
"time": "2016-
11-03 08:11:03
"
"description": "
Nette NEON: parser & generator for Nette Object Notation
",
"homepage": "http
://ne-on.org
",
"time": "2016-
06-25 13:59:48
"
},
{
"name": "
symfony/dom-crawle
r",
"version": "v
3.2
.1",
"name": "
nette/php-generato
r",
"version": "v
2.4
.1",
"source": {
"type": "git",
"url": "https://github.com/
symfony/dom-crawle
r.git",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
"
"url": "https://github.com/
nette/php-generato
r.git",
"reference": "
e9f4429f5ac526661634242198a1ff394fa5440a
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/dom-crawler/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
.zip",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
",
"url": "https://packagist.phpcomposer.com/files/
nette/php-generator/e9f4429f5ac526661634242198a1ff394fa5440a
.zip",
"reference": "
e9f4429f5ac526661634242198a1ff394fa5440a
",
"shasum": ""
},
"require": {
"
php": ">=5.5.9
",
"
symfony/polyfill-mbstring": "~1
.0"
"
nette/utils": "~2.4
",
"
php": ">=5.6
.0"
},
"
require-dev
": {
"
symfony/css-selector": "~2.8|~3.0
"
"
conflict
": {
"
nette/nette": "<2.2
"
},
"suggest": {
"symfony/css-selector": ""
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\DomCrawler\\": ""
},
"exclude-from-classmap": [
"/Tests/"
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "
Fabien Potencier
",
"
email": "fabien@symfony
.com"
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
},
{
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
}
],
"description": "
Symfony DomCrawler Component
",
"homepage": "https://
symfony.com
",
"time": "2016-
12-10 14:24:53
"
"description": "
Nette PHP Generator
",
"homepage": "https://
nette.org
",
"time": "2016-
07-31 13:50:37
"
},
{
"name": "
symfony/options-resolv
er",
"version": "v
3.2.1
",
"name": "
nette/robot-load
er",
"version": "v
2.4.2
",
"source": {
"type": "git",
"url": "https://github.com/
symfony/options-resolv
er.git",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
"
"url": "https://github.com/
nette/robot-load
er.git",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/options-resolver/45940bcad6388b3b6058107eca67ced738d205bb
.zip",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
",
"url": "https://packagist.phpcomposer.com/files/
nette/robot-loader/f23f8885624b249d5ec7bb525b9d6b007ab00293
.zip",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
",
"shasum": ""
},
"require": {
"php": ">=5.5.9"
"ext-tokenizer": "*",
"nette/caching": "~2.2",
"nette/finder": "~2.3",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "
Fabien Potencier
",
"
email": "fabien@symfony
.com"
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
},
{
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
}
],
"description": "Symfony OptionsResolver Component",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
"time": "2016-05-13 18:13:23"
"description": "Nette RobotLoader: comfortable autoloading",
"homepage": "https://nette.org",
"time": "2017-01-02 17:15:22"
},
{
"name": "
symfony/polyfill-mbstring
",
"version": "v
1.3.0
",
"name": "
nette/utils
",
"version": "v
2.4.2
",
"source": {
"type": "git",
"url": "https://github.com/
symfony/polyfill-mbstring
.git",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
"
"url": "https://github.com/
nette/utils
.git",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/polyfill-mbstring/e79d363049d1c2128f133a2667e4f4190904f7f4
.zip",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
",
"url": "https://packagist.phpcomposer.com/files/
nette/utils/fd2e67c2ce28da409864507d8d124621780d036d
.zip",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
"suggest": {
"ext-mbstring": "For best performance"
"ext-gd": "to use Image",
"ext-iconv": "to use Strings::webalize() and toAscii()",
"ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
"ext-json": "to use Nette\\Utils\\Json",
"ext-mbstring": "to use Strings::lower() etc...",
"ext-xml": "to use Strings::length() etc. when mbstring is not available"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
1.3
-dev"
"dev-master": "
2.4
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
"authors": [
{
"name": "
Nicolas Grekas
",
"
email": "p@tchwork
.com"
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
},
{
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2016-11-14 01:06:16"
"description": "Nette Utility Classes",
"homepage": "https://nette.org",
"time": "2016-12-19 22:01:55"
},
{
"name": "
symfony/translation
",
"version": "v3.
2.1
",
"name": "
nikic/php-parser
",
"version": "v3.
0.2
",
"source": {
"type": "git",
"url": "https://github.com/
symfony/translation
.git",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
"
"url": "https://github.com/
nikic/PHP-Parser
.git",
"reference": "
adf44419c0fc014a0f191db6f89d3e55d4211744
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/translation/5fd18eca88f4d187807a1eba083bc99feaa8635b
.zip",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
",
"url": "https://packagist.phpcomposer.com/files/
nikic/PHP-Parser/adf44419c0fc014a0f191db6f89d3e55d4211744
.zip",
"reference": "
adf44419c0fc014a0f191db6f89d3e55d4211744
",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/config": "<2.8"
"ext-tokenizer": "*",
"php": ">=5.5"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~2.8|~3.0",
"symfony/intl": "~2.8|~3.0",
"symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
"phpunit/phpunit": "~4.0|~5.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
0
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"
MIT
"
"
BSD-3-Clause
"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
"name": "Nikita Popov"
}
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2016-11-30 14:40:17"
}
],
"packages-dev": [
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2016-12-06 11:30:35"
},
{
"name": "
nette/bootstrap
",
"version": "v2.
4.2
",
"name": "
paragonie/random_compat
",
"version": "v2.
0.4
",
"source": {
"type": "git",
"url": "https://github.com/
nette/bootstrap
.git",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
"
"url": "https://github.com/
paragonie/random_compat
.git",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/bootstrap/4db37e6d42ddf41b50417950741113b5dfc86e27
.zip",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
",
"url": "https://packagist.phpcomposer.com/files/
paragonie/random_compat/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
.zip",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
",
"shasum": ""
},
"require": {
"nette/di": "~2.4.0",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
"php": ">=5.2.0"
},
"require-dev": {
"latte/latte": "~2.2",
"nette/application": "~2.3",
"nette/caching": "~2.3",
"nette/database": "~2.3",
"nette/forms": "~2.3",
"nette/http": "~2.4.0",
"nette/mail": "~2.3",
"nette/robot-loader": "~2.2",
"nette/safe-stream": "~2.2",
"nette/security": "~2.3",
"nette/tester": "~2.0",
"tracy/tracy": "^2.4.1"
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"nette/robot-loader": "to use Configurator::createRobotLoader()",
"tracy/tracy": "to use Configurator::enableTracy()"
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"
classmap
": [
"
src/
"
"
files
": [
"
lib/random.php
"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "Nette Bootstrap",
"homepage": "https://nette.org",
"time": "2016-12-19 12:12:10"
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"pseudorandom",
"random"
],
"time": "2016-11-07 23:38:38"
},
{
"name": "
nette/caching
",
"version": "
v2.5
.2",
"name": "
phpstan/phpstan
",
"version": "
0.4
.2",
"source": {
"type": "git",
"url": "https://github.com/
nette/caching
.git",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
"
"url": "https://github.com/
phpstan/phpstan
.git",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/caching/7da6cc65f301e220acba4fd8a11d3afdc642be9e
.zip",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
",
"url": "https://packagist.phpcomposer.com/files/
phpstan/phpstan/075b4924eefbf84cd857d1e09842036d06b05c08
.zip",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
",
"shasum": ""
},
"require": {
"nette/finder": "~2.2",
"nette/bootstrap": "~2.4",
"nette/caching": "~2.4",
"nette/di": "~2.4",
"nette/robot-loader": "~2.4",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
"nikic/php-parser": "~3.0.2",
"php": "~7.0",
"symfony/console": "~2.8 || ~3.0",
"symfony/finder": "~2.8 || ~3.0",
"tracy/tracy": "~2.4"
},
"require-dev": {
"latte/latte": "~2.4",
"nette/di": "~2.4",
"nette/tester": "~2.0",
"tracy/tracy": "^2.4"
"consistence/coding-standard": "~0.12.0",
"phing/phing": "^2.13.0",
"phpunit/phpunit": "^5.6",
"satooshi/php-coveralls": "^1.0",
"slevomat/coding-standard": "dev-php7#d4a1a9cd4e"
},
"suggest": {
"ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
"bin": [
"bin/phpstan"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.4-dev"
}
},
"autoload": {
"psr-4": {
"PHPStan\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
"time": "2016-12-12 20:31:52"
},
{
"name": "pimple/pimple",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/silexphp/Pimple.git",
"reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/silexphp/Pimple/a30f7d6e57565a2e1a316e1baf2a483f788b258a.zip",
"reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.5
-dev"
"dev-master": "
3.0.x
-dev"
}
},
"autoload": {
"
classmap": [
"src/"
]
"
psr-0": {
"
Pimple": "
src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Nette Caching Component",
"homepage": "https://nette.org",
"time": "2016-10-06 00:08:42"
"description": "Pimple, a simple Dependency Injection Container",
"homepage": "http://pimple.sensiolabs.org",
"keywords": [
"container",
"dependency injection"
],
"time": "2015-09-11 15:10:35"
},
{
"name": "
nette/di
",
"version": "
v2.4.5
",
"name": "
psr/http-message
",
"version": "
1.0.1
",
"source": {
"type": "git",
"url": "https://github.com/
nette/di
.git",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
"
"url": "https://github.com/
php-fig/http-message
.git",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/di/b265f305e1fef2dad1cb2e7340b49d274d3dd14c
.zip",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
",
"url": "https://packagist.phpcomposer.com/files/
php-fig/http-message/f6561bf28d520154e4b0ec72be95418abe6d9363
.zip",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"nette/neon": "^2.3.3",
"nette/php-generator": "^2.4",
"nette/utils": "^2.4",
"php": ">=5.6.0"
"php": ">=5.3.0"
},
"conflict": {
"nette/bootstrap": "<2.4",
"nette/nette": "<2.2"
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06 14:39:51"
},
{
"name": "psr/log",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/php-fig/log/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d.zip",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
1.0.x
-dev"
}
},
"autoload": {
"
classmap": [
"
src
/"
]
"
psr-4": {
"
Psr\\Log\\": "Psr/Log
/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Nette Dependency Injection Component",
"homepage": "https://nette.org",
"time": "2016-12-23 10:26:44"
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2016-10-10 12:19:37"
},
{
"name": "
nette/finder
",
"version": "
v2.4.0
",
"name": "
querypath/querypath
",
"version": "
3.0.5
",
"source": {
"type": "git",
"url": "https://github.com/
nette/finder
.git",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
"
"type": "git",
"url": "https://github.com/
technosophos/querypath
.git",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/finder/5cabd5fe89f9903715359a403b820c7f94f9bb5e
.zip",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
",
"url": "https://packagist.phpcomposer.com/files/
technosophos/querypath/6b8e2395fac61fac25bbe962f94def556cb85f7d
.zip",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
",
"shasum": ""
},
"require": {
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
"masterminds/html5": "2.*",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"classmap": [
"src/"
"psr-0": {
"QueryPath": "src/"
},
"files": [
"src/qp_functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "David Grudl",
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
"description": "HTML/XML querying (CSS 4 or XPath) and processing (like jQuery)",
"homepage": "https://github.com/technosophos/querypath",
"keywords": [
"css",
"html",
"jquery",
"xml",
"xslt"
],
"description": "Nette Finder: Files Searching",
"homepage": "https://nette.org",
"time": "2016-05-17 15:49:06"
"time": "2016-08-01 22:40:30"
},
{
"name": "
nette/neon
",
"version": "v
2.4.0
",
"name": "
symfony/console
",
"version": "v
3.2.1
",
"source": {
"type": "git",
"url": "https://github.com/
nette/neon
.git",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
"
"url": "https://github.com/
symfony/console
.git",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/neon/c40c63f2afa4196844ac40d9d2a2cfb313f76906
.zip",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
",
"url": "https://packagist.phpcomposer.com/files/
symfony/console/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
.zip",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=5.6.0"
"php": ">=5.5.9",
"symfony/debug": "~2.8|~3.0",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
"psr/log": "~1.0",
"symfony/event-dispatcher": "~2.8|~3.0",
"symfony/filesystem": "~2.8|~3.0",
"symfony/process": "~2.8|~3.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/filesystem": "",
"symfony/process": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
},
"autoload": {
"classmap": [
"src/"
"psr-4": {
"Symfony\\Component\\Console\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
"name": "
Fabien Potencier
",
"
email": "fabien@symfony
.com"
},
{
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
}
],
"description": "
Nette NEON: parser & generator for Nette Object Notation
",
"homepage": "http
://ne-on.org
",
"time": "2016-
06-25 13:59:48
"
"description": "
Symfony Console Component
",
"homepage": "http
s://symfony.com
",
"time": "2016-
12-11 14:34:22
"
},
{
"name": "
nette/php-genera
tor",
"version": "v
2.4
.1",
"name": "
symfony/css-selec
tor",
"version": "v
3.2
.1",
"source": {
"type": "git",
"url": "https://github.com/
nette/php-genera
tor.git",
"reference": "e
9f4429f5ac526661634242198a1ff394fa5440a
"
"url": "https://github.com/
symfony/css-selec
tor.git",
"reference": "e
1241f275814827c411d922ba8e64cf2a00b2994
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/php-generator/e9f4429f5ac526661634242198a1ff394fa5440a
.zip",
"reference": "e
9f4429f5ac526661634242198a1ff394fa5440a
",
"url": "https://packagist.phpcomposer.com/files/
symfony/css-selector/e1241f275814827c411d922ba8e64cf2a00b2994
.zip",
"reference": "e
1241f275814827c411d922ba8e64cf2a00b2994
",
"shasum": ""
},
"require": {
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
"php": ">=5.5.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
},
"autoload": {
"classmap": [
"src/"
"psr-4": {
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
"name": "
Jean-François Simon
",
"
email": "jeanfrancois.simon@sensiolabs
.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "
Nette PHP Generator
",
"homepage": "https://
nette.org
",
"time": "2016-
07-31 13:50:37
"
"description": "
Symfony CssSelector Component
",
"homepage": "https://
symfony.com
",
"time": "2016-
11-03 08:11:03
"
},
{
"name": "
nette/robot-loader
",
"version": "v
2.4.2
",
"name": "
symfony/debug
",
"version": "v
3.2.1
",
"source": {
"type": "git",
"url": "https://github.com/
nette/robot-loader
.git",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
"
"url": "https://github.com/
symfony/debug
.git",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/robot-loader/f23f8885624b249d5ec7bb525b9d6b007ab00293
.zip",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
",
"url": "https://packagist.phpcomposer.com/files/
symfony/debug/9f923e68d524a3095c5a2ae5fc7220c7cbc12231
.zip",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"nette/caching": "~2.2",
"nette/finder": "~2.3",
"nette/utils": "~2.4",
"php": ">=5.6.0"
"php": ">=5.5.9",
"psr/log": "~1.0"
},
"conflict": {
"
nette/nette": "<2
.2"
"
symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6
.2"
},
"require-dev": {
"
nette/tester": "~2
.0",
"
tracy/tracy": "^2.3
"
"
symfony/class-loader": "~2.8|~3
.0",
"
symfony/http-kernel": "~2.8|~3.0
"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
},
"autoload": {
"classmap": [
"src/"
"psr-4": {
"Symfony\\Component\\Debug\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
"name": "
Fabien Potencier
",
"
email": "fabien@symfony
.com"
},
{
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
}
],
"description": "
Nette RobotLoader: comfortable autoloading
",
"homepage": "https://
nette.org
",
"time": "201
7-01-02 17:15:22
"
"description": "
Symfony Debug Component
",
"homepage": "https://
symfony.com
",
"time": "201
6-11-16 22:18:16
"
},
{
"name": "
nette/utils
",
"version": "v
2.4.2
",
"name": "
symfony/dom-crawler
",
"version": "v
3.2.1
",
"source": {
"type": "git",
"url": "https://github.com/
nette/utils
.git",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
"
"url": "https://github.com/
symfony/dom-crawler
.git",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/utils/fd2e67c2ce28da409864507d8d124621780d036d
.zip",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
",
"url": "https://packagist.phpcomposer.com/files/
symfony/dom-crawler/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
.zip",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
",
"shasum": ""
},
"require": {
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
"php": ">=5.5.9",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
"symfony/css-selector": "~2.8|~3.0"
},
"suggest": {
"ext-gd": "to use Image",
"ext-iconv": "to use Strings::webalize() and toAscii()",
"ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
"ext-json": "to use Nette\\Utils\\Json",
"ext-mbstring": "to use Strings::lower() etc...",
"ext-xml": "to use Strings::length() etc. when mbstring is not available"
"symfony/css-selector": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
},
"autoload": {
"classmap": [
"src/"
"psr-4": {
"Symfony\\Component\\DomCrawler\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
"MIT"
],
"authors": [
{
"name": "
David Grudl
",
"
homepage": "https://davidgrudl
.com"
"name": "
Fabien Potencier
",
"
email": "fabien@symfony
.com"
},
{
"name": "
Nette
Community",
"homepage": "https://
nette.org
/contributors"
"name": "
Symfony
Community",
"homepage": "https://
symfony.com
/contributors"
}
],
"description": "
Nette Utility Classes
",
"homepage": "https://
nette.org
",
"time": "2016-12-1
9 22:01:55
"
"description": "
Symfony DomCrawler Component
",
"homepage": "https://
symfony.com
",
"time": "2016-12-1
0 14:24:53
"
},
{
"name": "
nikic/php-pars
er",
"version": "v3.
0.2
",
"name": "
symfony/find
er",
"version": "v3.
2.1
",
"source": {
"type": "git",
"url": "https://github.com/
nikic/PHP-Pars
er.git",
"reference": "a
df44419c0fc014a0f191db6f89d3e55d4211744
"
"url": "https://github.com/
symfony/find
er.git",
"reference": "a
69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nikic/PHP-Parser/adf44419c0fc014a0f191db6f89d3e55d4211744
.zip",
"reference": "a
df44419c0fc014a0f191db6f89d3e55d4211744
",
"url": "https://packagist.phpcomposer.com/files/
symfony/finder/a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
.zip",
"reference": "a
69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "~4.0|~5.0"
"php": ">=5.5.9"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.
0
-dev"
"dev-master": "3.
2
-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
"Symfony\\Component\\Finder\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"
BSD-3-Clause
"
"
MIT
"
],
"authors": [
{
"name": "Nikita Popov"
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2016-12-06 11:30:35"
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2016-12-13 09:39:43"
},
{
"name": "
phpstan/phpstan
",
"version": "
0.4.2
",
"name": "
symfony/options-resolver
",
"version": "
v3.2.1
",
"source": {
"type": "git",
"url": "https://github.com/
phpstan/phpstan
.git",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
"
"url": "https://github.com/
symfony/options-resolver
.git",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
phpstan/phpstan/075b4924eefbf84cd857d1e09842036d06b05c08
.zip",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
",
"url": "https://packagist.phpcomposer.com/files/
symfony/options-resolver/45940bcad6388b3b6058107eca67ced738d205bb
.zip",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
",
"shasum": ""
},
"require": {
"nette/bootstrap": "~2.4",
"nette/caching": "~2.4",
"nette/di": "~2.4",
"nette/robot-loader": "~2.4",
"nette/utils": "~2.4",
"nikic/php-parser": "~3.0.2",
"php": "~7.0",
"symfony/console": "~2.8 || ~3.0",
"symfony/finder": "~2.8 || ~3.0",
"tracy/tracy": "~2.4"
},
"require-dev": {
"consistence/coding-standard": "~0.12.0",
"phing/phing": "^2.13.0",
"phpunit/phpunit": "^5.6",
"satooshi/php-coveralls": "^1.0",
"slevomat/coding-standard": "dev-php7#d4a1a9cd4e"
"php": ">=5.5.9"
},
"bin": [
"bin/phpstan"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "
0.4
-dev"
"dev-master": "
3.2
-dev"
}
},
"autoload": {
"psr-4": {
"PHPStan\\": "src/"
}
"Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
"time": "2016-12-12 20:31:52"
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony OptionsResolver Component",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
"time": "2016-05-13 18:13:23"
},
{
"name": "
psr/lo
g",
"version": "
1.0.2
",
"name": "
symfony/polyfill-mbstrin
g",
"version": "
v1.3.0
",
"source": {
"type": "git",
"url": "https://github.com/
php-fig/lo
g.git",
"reference": "
4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
"
"url": "https://github.com/
symfony/polyfill-mbstrin
g.git",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
php-fig/log/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
.zip",
"reference": "
4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
",
"url": "https://packagist.phpcomposer.com/files/
symfony/polyfill-mbstring/e79d363049d1c2128f133a2667e4f4190904f7f4
.zip",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.
0.x
-dev"
"dev-master": "1.
3
-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
...
...
@@ -1609,59 +1750,51 @@
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "
Common interface for logging libraries
",
"homepage": "https://
github.com/php-fig/log
",
"description": "
Symfony polyfill for the Mbstring extension
",
"homepage": "https://
symfony.com
",
"keywords": [
"log",
"psr",
"psr-3"
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2016-1
0-10 12:19:37
"
"time": "2016-1
1-14 01:06:16
"
},
{
"name": "symfony/
console
",
"version": "
v3.2.1
",
"name": "symfony/
process
",
"version": "
dev-master
",
"source": {
"type": "git",
"url": "https://github.com/symfony/
console
.git",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
"
"url": "https://github.com/symfony/
process
.git",
"reference": "
6c687d5ae36a8677a6e3ce020d12b18feac79d5b
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
console/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
.zip",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
",
"url": "https://packagist.phpcomposer.com/files/symfony/
process/6c687d5ae36a8677a6e3ce020d12b18feac79d5b
.zip",
"reference": "
6c687d5ae36a8677a6e3ce020d12b18feac79d5b
",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/debug": "~2.8|~3.0",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/event-dispatcher": "~2.8|~3.0",
"symfony/filesystem": "~2.8|~3.0",
"symfony/process": "~2.8|~3.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/filesystem": "",
"symfony/process": ""
"php": ">=5.5.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
3
-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\
Console
\\": ""
"Symfony\\Component\\
Process
\\": ""
},
"exclude-from-classmap": [
"/Tests/"
...
...
@@ -1681,34 +1814,41 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony
Console
Component",
"description": "Symfony
Process
Component",
"homepage": "https://symfony.com",
"time": "201
6-12-11 14:34:22
"
"time": "201
7-01-02 20:33:09
"
},
{
"name": "symfony/
debug
",
"name": "symfony/
translation
",
"version": "v3.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/
debug
.git",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
"
"url": "https://github.com/symfony/
translation
.git",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
debug/9f923e68d524a3095c5a2ae5fc7220c7cbc12231
.zip",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
",
"url": "https://packagist.phpcomposer.com/files/symfony/
translation/5fd18eca88f4d187807a1eba083bc99feaa8635b
.zip",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"
psr/lo
g": "~1.0"
"
symfony/polyfill-mbstrin
g": "~1.0"
},
"conflict": {
"symfony/
http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2
"
"symfony/
config": "<2.8
"
},
"require-dev": {
"symfony/class-loader": "~2.8|~3.0",
"symfony/http-kernel": "~2.8|~3.0"
"psr/log": "~1.0",
"symfony/config": "~2.8|~3.0",
"symfony/intl": "~2.8|~3.0",
"symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
},
"type": "library",
"extra": {
...
...
@@ -1718,7 +1858,7 @@
},
"autoload": {
"psr-4": {
"Symfony\\Component\\
Debug
\\": ""
"Symfony\\Component\\
Translation
\\": ""
},
"exclude-from-classmap": [
"/Tests/"
...
...
@@ -1738,36 +1878,46 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony
Debug
Component",
"description": "Symfony
Translation
Component",
"homepage": "https://symfony.com",
"time": "2016-11-
16 22:18:16
"
"time": "2016-11-
30 14:40:17
"
},
{
"name": "symfony/
find
er",
"version": "
v3.2.1
",
"name": "symfony/
var-dump
er",
"version": "
dev-master
",
"source": {
"type": "git",
"url": "https://github.com/symfony/
find
er.git",
"reference": "
a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
"
"url": "https://github.com/symfony/
var-dump
er.git",
"reference": "
45917d2b18425e5fac2a980f1f1bcc7023a16323
"
},
"dist": {
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
finder/a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
.zip",
"reference": "
a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
",
"url": "https://packagist.phpcomposer.com/files/symfony/
var-dumper/45917d2b18425e5fac2a980f1f1bcc7023a16323
.zip",
"reference": "
45917d2b18425e5fac2a980f1f1bcc7023a16323
",
"shasum": ""
},
"require": {
"php": ">=5.5.9"
"php": ">=5.5.9",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"twig/twig": "~1.20|~2.0"
},
"suggest": {
"ext-symfony_debug": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
3
-dev"
}
},
"autoload": {
"files": [
"Resources/functions/dump.php"
],
"psr-4": {
"Symfony\\Component\\
Find
er\\": ""
"Symfony\\Component\\
VarDump
er\\": ""
},
"exclude-from-classmap": [
"/Tests/"
...
...
@@ -1779,17 +1929,21 @@
],
"authors": [
{
"name": "
Fabien Potencier
",
"email": "
fabien@symfony
.com"
"name": "
Nicolas Grekas
",
"email": "
p@tchwork
.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony
Finder Component
",
"description": "Symfony
mechanism for exploring and dumping PHP variables
",
"homepage": "https://symfony.com",
"time": "2016-12-13 09:39:43"
"keywords": [
"debug",
"dump"
],
"time": "2017-01-15 16:39:59"
},
{
"name": "tracy/tracy",
...
...
@@ -1854,11 +2008,14 @@
"time": "2016-12-10 15:04:11"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "
stable
",
"minimum-stability": "
dev
",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform": {
"php": ">=7.0.0"
},
"platform-dev": []
}
example/custom.php
View file @
08f3326
...
...
@@ -18,9 +18,11 @@ $robot = new Vbot([
$flag
=
false
;
$robot
->
server
->
setCustomerHandler
(
function
()
use
(
&
$flag
){
$contact
=
contact
()
->
getUsernameById
(
'matts8023'
);
// RemarkName,代表的改用户在你通讯录的名字
$contact
=
contact
()
->
getUsernameByRemarkName
(
'hanson'
);
if
(
$contact
===
false
){
dd
(
"找不到你要的联系人,请确认联系人姓名"
);
}
if
(
!
$flag
){
Text
::
send
(
$contact
,
'来轰炸吧'
);
$flag
=
true
;
...
...
src/Collections/Contact.php
View file @
08f3326
...
...
@@ -62,5 +62,20 @@ class Contact extends Collection
}
});
}
/**
* 根据通讯录中的名字获取通讯对象
*
* @param $id
* @return mixed
*/
public
function
getUsernameByRemarkName
(
$id
)
{
return
$this
->
search
(
function
(
$item
,
$key
)
use
(
$id
){
if
(
$item
[
'RemarkName'
]
===
$id
){
return
true
;
}
});
}
}
\ No newline at end of file
src/Core/Server.php
View file @
08f3326
...
...
@@ -10,12 +10,9 @@ namespace Hanson\Vbot\Core;
use
Endroid\QrCode\QrCode
;
use
GuzzleHttp\Client
;
use
Hanson\Vbot\Collections\Account
;
use
Hanson\Vbot\Collections\ContactFactory
;
use
Hanson\Vbot\Collections\Group
;
use
Hanson\Vbot\Support\Console
;
use
Symfony\Component\DomCrawler\Crawler
;
class
Server
{
...
...
@@ -60,7 +57,7 @@ class Server
{
$this
->
config
=
$config
;
$this
->
config
[
'debug'
]
=
$this
->
config
[
'debug'
]
??
false
;
$this
->
config
[
'debug'
]
=
isset
(
$this
->
config
[
'debug'
])
?
$this
->
config
[
'debug'
]
:
false
;
}
/**
...
...
@@ -97,6 +94,7 @@ class Server
{
$this
->
getUuid
();
$this
->
generateQrCode
();
Console
::
showQrCode
(
'https://login.weixin.qq.com/l/'
.
$this
->
uuid
);
Console
::
log
(
'[INFO] 请扫描二维码登录'
);
$this
->
waitForLogin
();
...
...
@@ -144,10 +142,6 @@ class Server
$file
=
$this
->
config
[
'tmp'
]
.
'qr.png'
;
$qrCode
->
save
(
$file
);
if
(
strtoupper
(
substr
(
PHP_OS
,
0
,
3
))
===
'WIN'
)
{
system
(
$file
);
}
}
/**
...
...
@@ -253,7 +247,7 @@ class Server
$content
=
http
()
->
json
(
$url
,
[
'BaseRequest'
=>
$this
->
baseRequest
]);
$result
=
json_decode
(
$content
,
true
);
$this
->
generateSyncKey
(
$result
,
$first
);
...
...
@@ -334,11 +328,4 @@ class Server
{
MessageHandler
::
getInstance
()
->
setExceptionHandler
(
$closure
);
}
public
function
debug
(
$debug
=
true
)
{
$this
->
debug
=
$debug
;
return
$this
;
}
}
\ No newline at end of file
src/Support/Console.php
View file @
08f3326
...
...
@@ -9,12 +9,66 @@
namespace
Hanson\Vbot\Support
;
use
PHPQRCode\QRcode
;
use
Symfony\Component\Console\Formatter\OutputFormatterStyle
;
use
Symfony\Component\Console\Output\ConsoleOutput
;
use
Symfony\Component\Console\Output\OutputInterface
;
class
Console
{
/**
* 输出字符串
*
* @param $str
*/
public
static
function
log
(
$str
)
{
echo
$str
.
PHP_EOL
;
}
/**
* 初始化二维码style
*
* @param OutputInterface $output
*/
private
static
function
initQrcodeStyle
(
OutputInterface
$output
)
{
$style
=
new
OutputFormatterStyle
(
'black'
,
'black'
,
array
(
'bold'
));
$output
->
getFormatter
()
->
setStyle
(
'blackc'
,
$style
);
$style
=
new
OutputFormatterStyle
(
'white'
,
'white'
,
array
(
'bold'
));
$output
->
getFormatter
()
->
setStyle
(
'whitec'
,
$style
);
}
/**
* 控制台显示二维码
*
* @param $text
*/
public
static
function
showQrCode
(
$text
)
{
$output
=
new
ConsoleOutput
();
static
::
initQrcodeStyle
(
$output
);
if
(
System
::
isWin
()){
$pxMap
=
[
'<whitec>mm</whitec>'
,
'<blackc> </blackc>'
];
system
(
'cls'
);
}
else
{
$pxMap
=
[
'<whitec> </whitec>'
,
'<blackc> </blackc>'
];
system
(
'clear'
);
}
$text
=
QRcode
::
text
(
$text
);
$length
=
strlen
(
$text
[
0
]);
foreach
(
$text
as
$line
)
{
$output
->
write
(
$pxMap
[
0
]);
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$type
=
substr
(
$line
,
$i
,
1
);
$output
->
write
(
$pxMap
[
$type
]);
}
$output
->
writeln
(
$pxMap
[
0
]);
}
}
}
\ No newline at end of file
src/Support/System.php
0 → 100644
View file @
08f3326
<?php
/**
* Created by PhpStorm.
* User: Hanson
* Date: 2017/1/20
* Time: 18:37
*/
namespace
Hanson\Vbot\Support
;
class
System
{
/**
* 判断运行服务器是否windows
*
* @return bool
*/
public
static
function
isWin
()
{
return
strtoupper
(
substr
(
PHP_OS
,
0
,
3
))
===
'WIN'
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment