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 cb5f6d4d
authored
Jan 20, 2017
by
zhuanxuhit
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
修复了无法找到联系人姓名的bug同时直接在控制台输出二维码方便登陆
1 parent
5d6fbba5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
881 additions
and
628 deletions
composer.json
composer.lock
example/custom.php
src/Collections/Contact.php
src/Core/Server.php
composer.json
View file @
cb5f6d4
...
...
@@ -17,7 +17,9 @@
"illuminate/support"
:
"^5.3"
,
"nesbot/carbon"
:
"^1.21"
,
"php"
:
">=7.0.0"
,
"symfony/var-dumper"
:
"^3.2"
"symfony/var-dumper"
:
"^3.2"
,
"aferrandini/phpqrcode"
:
"^1.0"
,
"symfony/process"
:
"^3.2"
},
"minimum-stability"
:
"dev"
,
"autoload"
:
{
...
...
composer.lock
View file @
cb5f6d4
...
...
@@ -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 @
cb5f6d4
...
...
@@ -18,9 +18,11 @@ $robot = new Vbot([
$flag
=
false
;
$robot
->
server
->
setCustomerHandler
(
function
()
use
(
&
$flag
){
$contact
=
contact
()
->
getUsernameById
(
'matts8023'
);
// RemarkName,代表的改用户在你通讯录的名字
$contact
=
contact
()
->
getUsernameByNickRemarkName
(
'hanson'
);
if
(
$contact
===
false
){
dd
(
"找不到你要的联系人,请确认联系人姓名"
);
}
if
(
!
$flag
){
Text
::
send
(
$contact
,
'来轰炸吧'
);
$flag
=
true
;
...
...
src/Collections/Contact.php
View file @
cb5f6d4
...
...
@@ -62,5 +62,20 @@ class Contact extends Collection
}
});
}
/**
* 根据通讯录中的名字获取通讯对象
*
* @param $id
* @return mixed
*/
public
function
getUsernameByNickRemarkName
(
$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 @
cb5f6d4
...
...
@@ -15,7 +15,14 @@ use Hanson\Vbot\Collections\Account;
use
Hanson\Vbot\Collections\ContactFactory
;
use
Hanson\Vbot\Collections\Group
;
use
Hanson\Vbot\Support\Console
;
use
PHPQRCode\QRencode
;
use
Symfony\Component\Console\Formatter\OutputFormatterStyle
;
use
Symfony\Component\Console\Output\ConsoleOutput
;
use
Symfony\Component\Console\Output\OutputInterface
;
use
Symfony\Component\DomCrawler\Crawler
;
use
PHPQRCode\QRcode
as
CQRcode
;
use
Symfony\Component\Process\Exception\ProcessFailedException
;
use
Symfony\Component\Process\ProcessBuilder
;
class
Server
{
...
...
@@ -96,7 +103,8 @@ class Server
public
function
prepare
()
{
$this
->
getUuid
();
$this
->
generateQrCode
();
// $this->generateQrCode();
$this
->
generateConsoleQrCode
();
Console
::
log
(
'[INFO] 请扫描二维码登录'
);
$this
->
waitForLogin
();
...
...
@@ -150,6 +158,75 @@ class Server
}
}
private
function
initStyle
(
OutputInterface
$output
)
{
$style
=
new
OutputFormatterStyle
(
'black'
,
'black'
);
$output
->
getFormatter
()
->
setStyle
(
'blackc'
,
$style
);
$style
=
new
OutputFormatterStyle
(
'white'
,
'white'
);
$output
->
getFormatter
()
->
setStyle
(
'whitec'
,
$style
);
}
/**
*
*/
public
function
generateConsoleQrCode
()
{
$text
=
'https://login.weixin.qq.com/l/'
.
$this
->
uuid
;
$output
=
new
ConsoleOutput
();
$this
->
initStyle
(
$output
);
$map
=
array
(
0
=>
'<whitec> </whitec>'
,
1
=>
'<blackc> </blackc>'
,
);
$lrPadding
=
1
;
$tbPadding
=
0
;
$text
=
CQRcode
::
text
(
$text
);
$length
=
strlen
(
$text
[
0
]);
$screenSize
=
$this
->
getTTYSize
();
if
(
!
$screenSize
)
{
$output
->
getErrorOutput
()
->
writeln
(
'<comment>Get Screen Size Failed</comment>'
);
}
else
{
list
(
$maxLines
,
$maxCols
)
=
$screenSize
;
$qrCols
=
2
*
(
$length
+
$lrPadding
*
2
);
$qrLines
=
count
(
$text
)
+
$tbPadding
*
2
;
if
(
$qrCols
>
$maxCols
||
$qrLines
>
$maxLines
){
$output
->
getErrorOutput
()
->
writeln
(
'<error>Max Lines/Columns Reached:请缩小控制台字体大小</error>'
);
return
;
}
}
$paddingLine
=
str_repeat
(
$map
[
0
],
$length
+
$lrPadding
*
2
)
.
"
\n
"
;
$after
=
$before
=
str_repeat
(
$paddingLine
,
$tbPadding
);
$output
->
write
(
$before
);
foreach
(
$text
as
$line
)
{
$output
->
write
(
str_repeat
(
$map
[
0
],
$lrPadding
));
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$type
=
substr
(
$line
,
$i
,
1
);
$output
->
write
(
$map
[
$type
]);
}
$output
->
writeln
(
str_repeat
(
$map
[
0
],
$lrPadding
));
}
$output
->
write
(
$after
);
}
private
function
getTTYSize
()
{
if
(
!
posix_isatty
(
STDOUT
)){
return
false
;
}
$ttyName
=
posix_ttyname
(
STDOUT
);
$builder
=
new
ProcessBuilder
();
$process
=
$builder
->
setPrefix
(
'stty'
)
->
setArguments
(
array
(
'-f'
,
$ttyName
,
'size'
))
->
getProcess
();
try
{
$process
->
mustRun
();
}
catch
(
ProcessFailedException
$e
)
{
return
false
;
}
$output
=
$process
->
getOutput
();
if
(
!
preg_match
(
'~^(\d+)\s+(\d+)$~'
,
$output
,
$match
))
{
return
false
;
}
return
array
(
$match
[
1
],
$match
[
2
]);
}
/**
* waiting user to login
*
...
...
@@ -253,7 +330,7 @@ class Server
$content
=
http
()
->
json
(
$url
,
[
'BaseRequest'
=>
$this
->
baseRequest
]);
$result
=
json_decode
(
$content
,
true
);
$this
->
generateSyncKey
(
$result
,
$first
);
...
...
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