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
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
878 additions
and
625 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 @@
...
@@ -17,7 +17,9 @@
"illuminate/support"
:
"^5.3"
,
"illuminate/support"
:
"^5.3"
,
"nesbot/carbon"
:
"^1.21"
,
"nesbot/carbon"
:
"^1.21"
,
"php"
:
">=7.0.0"
,
"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"
,
"minimum-stability"
:
"dev"
,
"autoload"
:
{
"autoload"
:
{
...
...
composer.lock
View file @
cb5f6d4
...
@@ -4,10 +4,54 @@
...
@@ -4,10 +4,54 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
"This file is @generated automatically"
],
],
"hash": "b8
d45b4e0794f3855f36113b444420a7
",
"hash": "b8
4e2aeb3bf07508860d7856ff874d18
",
"content-hash": "
4208bf2e5381a25360c7b542e17fd4a0
",
"content-hash": "
1d8a1895a8ce4f7fd0473faaad10cb75
",
"packages": [
"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",
"name": "doctrine/inflector",
"version": "v1.1.0",
"version": "v1.1.0",
"source": {
"source": {
...
@@ -517,1091 +561,1188 @@
...
@@ -517,1091 +561,1188 @@
"time": "2015-11-04 20:07:17"
"time": "2015-11-04 20:07:17"
},
},
{
{
"name": "
paragonie/random_compat
",
"name": "
nette/bootstrap
",
"version": "v2.
0.4
",
"version": "v2.
4.2
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
paragonie/random_compat
.git",
"url": "https://github.com/
nette/bootstrap
.git",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
"
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
paragonie/random_compat/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/bootstrap/4db37e6d42ddf41b50417950741113b5dfc86e27
.zip",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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": {
"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": {
"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",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"autoload": {
"
files
": [
"
classmap
": [
"
lib/random.php
"
"
src/
"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "Paragon Initiative Enterprises",
"name": "David Grudl",
"email": "security@paragonie.com",
"homepage": "https://davidgrudl.com"
"homepage": "https://paragonie.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
}
],
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"description": "Nette Bootstrap",
"keywords": [
"homepage": "https://nette.org",
"csprng",
"time": "2016-12-19 12:12:10"
"pseudorandom",
"random"
],
"time": "2016-11-07 23:38:38"
},
},
{
{
"name": "
pimple/pimple
",
"name": "
nette/caching
",
"version": "v
3.0
.2",
"version": "v
2.5
.2",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
silexphp/Pimple
.git",
"url": "https://github.com/
nette/caching
.git",
"reference": "
a30f7d6e57565a2e1a316e1baf2a483f788b258a
"
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
silexphp/Pimple/a30f7d6e57565a2e1a316e1baf2a483f788b258a
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/caching/7da6cc65f301e220acba4fd8a11d3afdc642be9e
.zip",
"reference": "
a30f7d6e57565a2e1a316e1baf2a483f788b258a
",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
3.0.x
-dev"
"dev-master": "
2.5
-dev"
}
}
},
},
"autoload": {
"autoload": {
"
psr-0": {
"
classmap": [
"
Pimple": "
src/"
"src/"
}
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "Fabien Potencier",
"name": "David Grudl",
"email": "fabien@symfony.com"
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
}
],
],
"description": "Pimple, a simple Dependency Injection Container",
"description": "Nette Caching Component",
"homepage": "http://pimple.sensiolabs.org",
"homepage": "https://nette.org",
"keywords": [
"time": "2016-10-06 00:08:42"
"container",
"dependency injection"
],
"time": "2015-09-11 15:10:35"
},
},
{
{
"name": "
psr/http-message
",
"name": "
nette/di
",
"version": "
1.0.1
",
"version": "
v2.4.5
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
php-fig/http-message
.git",
"url": "https://github.com/
nette/di
.git",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
"
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
php-fig/http-message/f6561bf28d520154e4b0ec72be95418abe6d9363
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/di/b265f305e1fef2dad1cb2e7340b49d274d3dd14c
.zip",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
1.0.x
-dev"
"dev-master": "
2.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"
psr-4": {
"
classmap": [
"
Psr\\Http\\Message\\": "
src/"
"src/"
}
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "PHP-FIG",
"name": "David Grudl",
"homepage": "http://www.php-fig.org/"
"homepage": "https://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
}
],
],
"description": "Common interface for HTTP messages",
"description": "Nette Dependency Injection Component",
"homepage": "https://github.com/php-fig/http-message",
"homepage": "https://nette.org",
"keywords": [
"time": "2016-12-23 10:26:44"
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06 14:39:51"
},
},
{
{
"name": "
querypath/querypath
",
"name": "
nette/finder
",
"version": "
3.0.5
",
"version": "
v2.4.0
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
technosophos/querypath
.git",
"url": "https://github.com/
nette/finder
.git",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
"
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
technosophos/querypath/6b8e2395fac61fac25bbe962f94def556cb85f7d
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/finder/5cabd5fe89f9903715359a403b820c7f94f9bb5e
.zip",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"masterminds/html5": "2.*",
"nette/utils": "~2.4",
"php": ">=5.3.0"
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
},
"type": "library",
"type": "library",
"autoload": {
"extra": {
"psr-0": {
"branch-alias": {
"QueryPath": "src/"
"dev-master": "2.4-dev"
}
},
},
"files": [
"autoload": {
"src/qp_functions.php"
"classmap": [
"src/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"description": "HTML/XML querying (CSS 4 or XPath) and processing (like jQuery)",
"authors": [
"homepage": "https://github.com/technosophos/querypath",
{
"keywords": [
"name": "David Grudl",
"css",
"homepage": "https://davidgrudl.com"
"html",
},
"jquery",
{
"xml",
"name": "Nette Community",
"xslt"
"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
",
"name": "
nette/neon
",
"version": "v
3.2.1
",
"version": "v
2.4.0
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
symfony/css-selector
.git",
"url": "https://github.com/
nette/neon
.git",
"reference": "
e1241f275814827c411d922ba8e64cf2a00b2994
"
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/css-selector/e1241f275814827c411d922ba8e64cf2a00b2994
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/neon/c40c63f2afa4196844ac40d9d2a2cfb313f76906
.zip",
"reference": "
e1241f275814827c411d922ba8e64cf2a00b2994
",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.5.9"
"ext-iconv": "*",
"php": ">=5.6.0"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"classmap": [
"Symfony\\Component\\CssSelector\\": ""
"src/"
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "Jean-François Simon",
"name": "David Grudl",
"email": "jeanfrancois.simon@sensiolabs.com"
"homepage": "https://davidgrudl.com"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
},
{
{
"name": "
Symfony
Community",
"name": "
Nette
Community",
"homepage": "https://
symfony.com
/contributors"
"homepage": "https://
nette.org
/contributors"
}
}
],
],
"description": "
Symfony CssSelector Component
",
"description": "
Nette NEON: parser & generator for Nette Object Notation
",
"homepage": "http
s://symfony.com
",
"homepage": "http
://ne-on.org
",
"time": "2016-
11-03 08:11:03
"
"time": "2016-
06-25 13:59:48
"
},
},
{
{
"name": "
symfony/dom-crawle
r",
"name": "
nette/php-generato
r",
"version": "v
3.2
.1",
"version": "v
2.4
.1",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
symfony/dom-crawle
r.git",
"url": "https://github.com/
nette/php-generato
r.git",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
"
"reference": "
e9f4429f5ac526661634242198a1ff394fa5440a
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/dom-crawler/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/php-generator/e9f4429f5ac526661634242198a1ff394fa5440a
.zip",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
",
"reference": "
e9f4429f5ac526661634242198a1ff394fa5440a
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"
php": ">=5.5.9
",
"
nette/utils": "~2.4
",
"
symfony/polyfill-mbstring": "~1
.0"
"
php": ">=5.6
.0"
},
},
"
require-dev
": {
"
conflict
": {
"
symfony/css-selector": "~2.8|~3.0
"
"
nette/nette": "<2.2
"
},
},
"suggest": {
"require-dev": {
"symfony/css-selector": ""
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"classmap": [
"Symfony\\Component\\DomCrawler\\": ""
"src/"
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
Fabien Potencier
",
"name": "
David Grudl
",
"
email": "fabien@symfony
.com"
"
homepage": "https://davidgrudl
.com"
},
},
{
{
"name": "
Symfony
Community",
"name": "
Nette
Community",
"homepage": "https://
symfony.com
/contributors"
"homepage": "https://
nette.org
/contributors"
}
}
],
],
"description": "
Symfony DomCrawler Component
",
"description": "
Nette PHP Generator
",
"homepage": "https://
symfony.com
",
"homepage": "https://
nette.org
",
"time": "2016-
12-10 14:24:53
"
"time": "2016-
07-31 13:50:37
"
},
},
{
{
"name": "
symfony/options-resolv
er",
"name": "
nette/robot-load
er",
"version": "v
3.2.1
",
"version": "v
2.4.2
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
symfony/options-resolv
er.git",
"url": "https://github.com/
nette/robot-load
er.git",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
"
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/options-resolver/45940bcad6388b3b6058107eca67ced738d205bb
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/robot-loader/f23f8885624b249d5ec7bb525b9d6b007ab00293
.zip",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
3.2
-dev"
"dev-master": "
2.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"classmap": [
"Symfony\\Component\\OptionsResolver\\": ""
"src/"
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
Fabien Potencier
",
"name": "
David Grudl
",
"
email": "fabien@symfony
.com"
"
homepage": "https://davidgrudl
.com"
},
},
{
{
"name": "
Symfony
Community",
"name": "
Nette
Community",
"homepage": "https://
symfony.com
/contributors"
"homepage": "https://
nette.org
/contributors"
}
}
],
],
"description": "Symfony OptionsResolver Component",
"description": "Nette RobotLoader: comfortable autoloading",
"homepage": "https://symfony.com",
"homepage": "https://nette.org",
"keywords": [
"time": "2017-01-02 17:15:22"
"config",
"configuration",
"options"
],
"time": "2016-05-13 18:13:23"
},
},
{
{
"name": "
symfony/polyfill-mbstring
",
"name": "
nette/utils
",
"version": "v
1.3.0
",
"version": "v
2.4.2
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
symfony/polyfill-mbstring
.git",
"url": "https://github.com/
nette/utils
.git",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
"
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/polyfill-mbstring/e79d363049d1c2128f133a2667e4f4190904f7f4
.zip",
"url": "https://packagist.phpcomposer.com/files/
nette/utils/fd2e67c2ce28da409864507d8d124621780d036d
.zip",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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": {
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
1.3
-dev"
"dev-master": "
2.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"classmap": [
"Symfony\\Polyfill\\Mbstring\\": ""
"src/"
},
"files": [
"bootstrap.php"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"BSD-3-Clause",
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
Nicolas Grekas
",
"name": "
David Grudl
",
"
email": "p@tchwork
.com"
"
homepage": "https://davidgrudl
.com"
},
},
{
{
"name": "
Symfony
Community",
"name": "
Nette
Community",
"homepage": "https://
symfony.com
/contributors"
"homepage": "https://
nette.org
/contributors"
}
}
],
],
"description": "Symfony polyfill for the Mbstring extension",
"description": "Nette Utility Classes",
"homepage": "https://symfony.com",
"homepage": "https://nette.org",
"keywords": [
"time": "2016-12-19 22:01:55"
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2016-11-14 01:06:16"
},
},
{
{
"name": "
symfony/translation
",
"name": "
nikic/php-parser
",
"version": "v3.
2.1
",
"version": "v3.
0.2
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
symfony/translation
.git",
"url": "https://github.com/
nikic/PHP-Parser
.git",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
"
"reference": "
adf44419c0fc014a0f191db6f89d3e55d4211744
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/translation/5fd18eca88f4d187807a1eba083bc99feaa8635b
.zip",
"url": "https://packagist.phpcomposer.com/files/
nikic/PHP-Parser/adf44419c0fc014a0f191db6f89d3e55d4211744
.zip",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
",
"reference": "
adf44419c0fc014a0f191db6f89d3e55d4211744
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.5.9",
"ext-tokenizer": "*",
"symfony/polyfill-mbstring": "~1.0"
"php": ">=5.5"
},
"conflict": {
"symfony/config": "<2.8"
},
},
"require-dev": {
"require-dev": {
"psr/log": "~1.0",
"phpunit/phpunit": "~4.0|~5.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": ""
},
},
"bin": [
"bin/php-parse"
],
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
0
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
"PhpParser\\": "lib/PhpParser"
},
}
"exclude-from-classmap": [
"/Tests/"
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"
MIT
"
"
BSD-3-Clause
"
],
],
"authors": [
"authors": [
{
{
"name": "Fabien Potencier",
"name": "Nikita Popov"
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "
Symfony Translation Component
",
"description": "
A PHP parser written in PHP
",
"
homepage": "https://symfony.com",
"
keywords": [
"time": "2016-11-30 14:40:17"
"parser",
}
"php"
],
],
"packages-dev": [
"time": "2016-12-06 11:30:35"
},
{
{
"name": "
nette/bootstrap
",
"name": "
paragonie/random_compat
",
"version": "v2.
4.2
",
"version": "v2.
0.4
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/bootstrap
.git",
"url": "https://github.com/
paragonie/random_compat
.git",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
"
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/bootstrap/4db37e6d42ddf41b50417950741113b5dfc86e27
.zip",
"url": "https://packagist.phpcomposer.com/files/
paragonie/random_compat/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
.zip",
"reference": "
4db37e6d42ddf41b50417950741113b5dfc86e27
",
"reference": "
a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"nette/di": "~2.4.0",
"php": ">=5.2.0"
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
},
"require-dev": {
"require-dev": {
"latte/latte": "~2.2",
"phpunit/phpunit": "4.*|5.*"
"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": {
"suggest": {
"nette/robot-loader": "to use Configurator::createRobotLoader()",
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
"tracy/tracy": "to use Configurator::enableTracy()"
},
},
"type": "library",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"autoload": {
"
classmap
": [
"
files
": [
"
src/
"
"
lib/random.php
"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "David Grudl",
"name": "Paragon Initiative Enterprises",
"homepage": "https://davidgrudl.com"
"email": "security@paragonie.com",
},
"homepage": "https://paragonie.com"
{
"name": "Nette Community",
"homepage": "https://nette.org/contributors"
}
}
],
],
"description": "Nette Bootstrap",
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"homepage": "https://nette.org",
"keywords": [
"time": "2016-12-19 12:12:10"
"csprng",
"pseudorandom",
"random"
],
"time": "2016-11-07 23:38:38"
},
},
{
{
"name": "
nette/caching
",
"name": "
phpstan/phpstan
",
"version": "
v2.5
.2",
"version": "
0.4
.2",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/caching
.git",
"url": "https://github.com/
phpstan/phpstan
.git",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
"
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/caching/7da6cc65f301e220acba4fd8a11d3afdc642be9e
.zip",
"url": "https://packagist.phpcomposer.com/files/
phpstan/phpstan/075b4924eefbf84cd857d1e09842036d06b05c08
.zip",
"reference": "
7da6cc65f301e220acba4fd8a11d3afdc642be9e
",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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",
"nette/utils": "~2.4",
"php": ">=5.6.0"
"nikic/php-parser": "~3.0.2",
},
"php": "~7.0",
"conflict": {
"symfony/console": "~2.8 || ~3.0",
"nette/nette": "<2.2"
"symfony/finder": "~2.8 || ~3.0",
"tracy/tracy": "~2.4"
},
},
"require-dev": {
"require-dev": {
"latte/latte": "~2.4",
"consistence/coding-standard": "~0.12.0",
"nette/di": "~2.4",
"phing/phing": "^2.13.0",
"nette/tester": "~2.0",
"phpunit/phpunit": "^5.6",
"tracy/tracy": "^2.4"
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.5
-dev"
"dev-master": "
0.4
-dev"
}
}
},
},
"autoload": {
"autoload": {
"
classmap": [
"
psr-4": {
"src/"
"
PHPStan\\": "
src/"
]
}
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"description": "PHPStan - PHP Static Analysis Tool",
"time": "2016-12-12 20:31:52"
},
{
{
"name": "David Grudl",
"name": "pimple/pimple",
"homepage": "https://davidgrudl.com"
"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": "3.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Pimple": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
{
"name": "
Nette Community
",
"name": "
Fabien Potencier
",
"
homepage": "https://nette.org/contributors
"
"
email": "fabien@symfony.com
"
}
}
],
],
"description": "Nette Caching Component",
"description": "Pimple, a simple Dependency Injection Container",
"homepage": "https://nette.org",
"homepage": "http://pimple.sensiolabs.org",
"time": "2016-10-06 00:08:42"
"keywords": [
"container",
"dependency injection"
],
"time": "2015-09-11 15:10:35"
},
},
{
{
"name": "
nette/di
",
"name": "
psr/http-message
",
"version": "
v2.4.5
",
"version": "
1.0.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/di
.git",
"url": "https://github.com/
php-fig/http-message
.git",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
"
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/di/b265f305e1fef2dad1cb2e7340b49d274d3dd14c
.zip",
"url": "https://packagist.phpcomposer.com/files/
php-fig/http-message/f6561bf28d520154e4b0ec72be95418abe6d9363
.zip",
"reference": "
b265f305e1fef2dad1cb2e7340b49d274d3dd14c
",
"reference": "
f6561bf28d520154e4b0ec72be95418abe6d9363
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"ext-tokenizer": "*",
"php": ">=5.3.0"
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
1.0.x
-dev"
}
}
},
},
"autoload": {
"autoload": {
"
classmap": [
"
psr-4": {
"src/"
"
Psr\\Http\\Message\\": "
src/"
]
}
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "David Grudl",
"name": "PHP-FIG",
"homepage": "https://davidgrudl.com"
"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": "Nette Community",
"name": "psr/log",
"homepage": "https://nette.org/contributors"
"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": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
],
"description": "Nette Dependency Injection Component",
"authors": [
"homepage": "https://nette.org",
{
"time": "2016-12-23 10:26:44"
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"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
",
"name": "
querypath/querypath
",
"version": "
v2.4.0
",
"version": "
3.0.5
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/finder
.git",
"url": "https://github.com/
technosophos/querypath
.git",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
"
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/finder/5cabd5fe89f9903715359a403b820c7f94f9bb5e
.zip",
"url": "https://packagist.phpcomposer.com/files/
technosophos/querypath/6b8e2395fac61fac25bbe962f94def556cb85f7d
.zip",
"reference": "
5cabd5fe89f9903715359a403b820c7f94f9bb5e
",
"reference": "
6b8e2395fac61fac25bbe962f94def556cb85f7d
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"nette/utils": "~2.4",
"masterminds/html5": "2.*",
"php": ">=5.6.0"
"php": ">=5.3.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
},
"type": "library",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
},
"autoload": {
"autoload": {
"classmap": [
"psr-0": {
"src/"
"QueryPath": "src/"
},
"files": [
"src/qp_functions.php"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"description": "HTML/XML querying (CSS 4 or XPath) and processing (like jQuery)",
{
"homepage": "https://github.com/technosophos/querypath",
"name": "David Grudl",
"keywords": [
"homepage": "https://davidgrudl.com"
"css",
},
"html",
{
"jquery",
"name": "Nette Community",
"xml",
"homepage": "https://nette.org/contributors"
"xslt"
}
],
],
"description": "Nette Finder: Files Searching",
"time": "2016-08-01 22:40:30"
"homepage": "https://nette.org",
"time": "2016-05-17 15:49:06"
},
},
{
{
"name": "
nette/neon
",
"name": "
symfony/console
",
"version": "v
2.4.0
",
"version": "v
3.2.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/neon
.git",
"url": "https://github.com/
symfony/console
.git",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
"
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/neon/c40c63f2afa4196844ac40d9d2a2cfb313f76906
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/console/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
.zip",
"reference": "
c40c63f2afa4196844ac40d9d2a2cfb313f76906
",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"ext-iconv": "*",
"php": ">=5.5.9",
"php": ">=5.6.0"
"symfony/debug": "~2.8|~3.0",
"symfony/polyfill-mbstring": "~1.0"
},
},
"require-dev": {
"require-dev": {
"nette/tester": "~2.0",
"psr/log": "~1.0",
"tracy/tracy": "^2.3"
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"classmap": [
"psr-4": {
"src/"
"Symfony\\Component\\Console\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
David Grudl
",
"name": "
Fabien Potencier
",
"
homepage": "https://davidgrudl
.com"
"
email": "fabien@symfony
.com"
},
},
{
{
"name": "
Nette
Community",
"name": "
Symfony
Community",
"homepage": "https://
nette.org
/contributors"
"homepage": "https://
symfony.com
/contributors"
}
}
],
],
"description": "
Nette NEON: parser & generator for Nette Object Notation
",
"description": "
Symfony Console Component
",
"homepage": "http
://ne-on.org
",
"homepage": "http
s://symfony.com
",
"time": "2016-
06-25 13:59:48
"
"time": "2016-
12-11 14:34:22
"
},
},
{
{
"name": "
nette/php-genera
tor",
"name": "
symfony/css-selec
tor",
"version": "v
2.4
.1",
"version": "v
3.2
.1",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/php-genera
tor.git",
"url": "https://github.com/
symfony/css-selec
tor.git",
"reference": "e
9f4429f5ac526661634242198a1ff394fa5440a
"
"reference": "e
1241f275814827c411d922ba8e64cf2a00b2994
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/php-generator/e9f4429f5ac526661634242198a1ff394fa5440a
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/css-selector/e1241f275814827c411d922ba8e64cf2a00b2994
.zip",
"reference": "e
9f4429f5ac526661634242198a1ff394fa5440a
",
"reference": "e
1241f275814827c411d922ba8e64cf2a00b2994
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"nette/utils": "~2.4",
"php": ">=5.5.9"
"php": ">=5.6.0"
},
"conflict": {
"nette/nette": "<2.2"
},
"require-dev": {
"nette/tester": "~2.0",
"tracy/tracy": "^2.3"
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"classmap": [
"psr-4": {
"src/"
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
David Grudl
",
"name": "
Jean-François Simon
",
"
homepage": "https://davidgrudl
.com"
"
email": "jeanfrancois.simon@sensiolabs
.com"
},
},
{
{
"name": "Nette Community",
"name": "Fabien Potencier",
"homepage": "https://nette.org/contributors"
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "
Nette PHP Generator
",
"description": "
Symfony CssSelector Component
",
"homepage": "https://
nette.org
",
"homepage": "https://
symfony.com
",
"time": "2016-
07-31 13:50:37
"
"time": "2016-
11-03 08:11:03
"
},
},
{
{
"name": "
nette/robot-loader
",
"name": "
symfony/debug
",
"version": "v
2.4.2
",
"version": "v
3.2.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/robot-loader
.git",
"url": "https://github.com/
symfony/debug
.git",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
"
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/robot-loader/f23f8885624b249d5ec7bb525b9d6b007ab00293
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/debug/9f923e68d524a3095c5a2ae5fc7220c7cbc12231
.zip",
"reference": "
f23f8885624b249d5ec7bb525b9d6b007ab00293
",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"ext-tokenizer": "*",
"php": ">=5.5.9",
"nette/caching": "~2.2",
"psr/log": "~1.0"
"nette/finder": "~2.3",
"nette/utils": "~2.4",
"php": ">=5.6.0"
},
},
"conflict": {
"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": {
"require-dev": {
"
nette/tester": "~2
.0",
"
symfony/class-loader": "~2.8|~3
.0",
"
tracy/tracy": "^2.3
"
"
symfony/http-kernel": "~2.8|~3.0
"
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"classmap": [
"psr-4": {
"src/"
"Symfony\\Component\\Debug\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
David Grudl
",
"name": "
Fabien Potencier
",
"
homepage": "https://davidgrudl
.com"
"
email": "fabien@symfony
.com"
},
},
{
{
"name": "
Nette
Community",
"name": "
Symfony
Community",
"homepage": "https://
nette.org
/contributors"
"homepage": "https://
symfony.com
/contributors"
}
}
],
],
"description": "
Nette RobotLoader: comfortable autoloading
",
"description": "
Symfony Debug Component
",
"homepage": "https://
nette.org
",
"homepage": "https://
symfony.com
",
"time": "201
7-01-02 17:15:22
"
"time": "201
6-11-16 22:18:16
"
},
},
{
{
"name": "
nette/utils
",
"name": "
symfony/dom-crawler
",
"version": "v
2.4.2
",
"version": "v
3.2.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nette/utils
.git",
"url": "https://github.com/
symfony/dom-crawler
.git",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
"
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nette/utils/fd2e67c2ce28da409864507d8d124621780d036d
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/dom-crawler/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
.zip",
"reference": "
fd2e67c2ce28da409864507d8d124621780d036d
",
"reference": "
1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.6.0"
"php": ">=5.5.9",
},
"symfony/polyfill-mbstring": "~1.0"
"conflict": {
"nette/nette": "<2.2"
},
},
"require-dev": {
"require-dev": {
"nette/tester": "~2.0",
"symfony/css-selector": "~2.8|~3.0"
"tracy/tracy": "^2.3"
},
},
"suggest": {
"suggest": {
"ext-gd": "to use Image",
"symfony/css-selector": ""
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
2.4
-dev"
"dev-master": "
3.2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"classmap": [
"psr-4": {
"src/"
"Symfony\\Component\\DomCrawler\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"BSD-3-Clause",
"MIT"
"GPL-2.0",
"GPL-3.0"
],
],
"authors": [
"authors": [
{
{
"name": "
David Grudl
",
"name": "
Fabien Potencier
",
"
homepage": "https://davidgrudl
.com"
"
email": "fabien@symfony
.com"
},
},
{
{
"name": "
Nette
Community",
"name": "
Symfony
Community",
"homepage": "https://
nette.org
/contributors"
"homepage": "https://
symfony.com
/contributors"
}
}
],
],
"description": "
Nette Utility Classes
",
"description": "
Symfony DomCrawler Component
",
"homepage": "https://
nette.org
",
"homepage": "https://
symfony.com
",
"time": "2016-12-1
9 22:01:55
"
"time": "2016-12-1
0 14:24:53
"
},
},
{
{
"name": "
nikic/php-pars
er",
"name": "
symfony/find
er",
"version": "v3.
0.2
",
"version": "v3.
2.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
nikic/PHP-Pars
er.git",
"url": "https://github.com/
symfony/find
er.git",
"reference": "a
df44419c0fc014a0f191db6f89d3e55d4211744
"
"reference": "a
69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
nikic/PHP-Parser/adf44419c0fc014a0f191db6f89d3e55d4211744
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/finder/a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
.zip",
"reference": "a
df44419c0fc014a0f191db6f89d3e55d4211744
",
"reference": "a
69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"ext-tokenizer": "*",
"php": ">=5.5.9"
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "~4.0|~5.0"
},
},
"bin": [
"bin/php-parse"
],
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "3.
0
-dev"
"dev-master": "3.
2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
"Symfony\\Component\\Finder\\": ""
}
},
"exclude-from-classmap": [
"/Tests/"
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"
BSD-3-Clause
"
"
MIT
"
],
],
"authors": [
"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",
"description": "Symfony Finder Component",
"keywords": [
"homepage": "https://symfony.com",
"parser",
"time": "2016-12-13 09:39:43"
"php"
],
"time": "2016-12-06 11:30:35"
},
},
{
{
"name": "
phpstan/phpstan
",
"name": "
symfony/options-resolver
",
"version": "
0.4.2
",
"version": "
v3.2.1
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
phpstan/phpstan
.git",
"url": "https://github.com/
symfony/options-resolver
.git",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
"
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
phpstan/phpstan/075b4924eefbf84cd857d1e09842036d06b05c08
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/options-resolver/45940bcad6388b3b6058107eca67ced738d205bb
.zip",
"reference": "
075b4924eefbf84cd857d1e09842036d06b05c08
",
"reference": "
45940bcad6388b3b6058107eca67ced738d205bb
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"nette/bootstrap": "~2.4",
"php": ">=5.5.9"
"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"
},
},
"bin": [
"bin/phpstan"
],
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "
0.4
-dev"
"dev-master": "
3.2
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"PHPStan\\": "src/"
"Symfony\\Component\\OptionsResolver\\": ""
}
},
"exclude-from-classmap": [
"/Tests/"
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
"MIT"
"MIT"
],
],
"description": "PHPStan - PHP Static Analysis Tool",
"authors": [
"time": "2016-12-12 20:31:52"
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
},
{
{
"name": "psr/log",
"name": "Symfony Community",
"version": "1.0.2",
"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": "symfony/polyfill-mbstring",
"version": "v1.3.0",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/
php-fig/lo
g.git",
"url": "https://github.com/
symfony/polyfill-mbstrin
g.git",
"reference": "
4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
"
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/
php-fig/log/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
.zip",
"url": "https://packagist.phpcomposer.com/files/
symfony/polyfill-mbstring/e79d363049d1c2128f133a2667e4f4190904f7f4
.zip",
"reference": "
4ebe3a8bf773a19edfe0a84b6585ba3d401b724d
",
"reference": "
e79d363049d1c2128f133a2667e4f4190904f7f4
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.3.0"
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "1.
0.x
-dev"
"dev-master": "1.
3
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"files": [
"bootstrap.php"
]
},
},
"notification-url": "https://packagist.org/downloads/",
"notification-url": "https://packagist.org/downloads/",
"license": [
"license": [
...
@@ -1609,59 +1750,51 @@
...
@@ -1609,59 +1750,51 @@
],
],
"authors": [
"authors": [
{
{
"name": "PHP-FIG",
"name": "Nicolas Grekas",
"homepage": "http://www.php-fig.org/"
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "
Common interface for logging libraries
",
"description": "
Symfony polyfill for the Mbstring extension
",
"homepage": "https://
github.com/php-fig/log
",
"homepage": "https://
symfony.com
",
"keywords": [
"keywords": [
"log",
"compatibility",
"psr",
"mbstring",
"psr-3"
"polyfill",
"portable",
"shim"
],
],
"time": "2016-1
0-10 12:19:37
"
"time": "2016-1
1-14 01:06:16
"
},
},
{
{
"name": "symfony/
console
",
"name": "symfony/
process
",
"version": "
v3.2.1
",
"version": "
dev-master
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/symfony/
console
.git",
"url": "https://github.com/symfony/
process
.git",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
"
"reference": "
6c687d5ae36a8677a6e3ce020d12b18feac79d5b
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
console/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
.zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
process/6c687d5ae36a8677a6e3ce020d12b18feac79d5b
.zip",
"reference": "
d12aa9ca20f4db83ec58410978dab6afcb9d6aaa
",
"reference": "
6c687d5ae36a8677a6e3ce020d12b18feac79d5b
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.5.9",
"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": ""
},
},
"type": "library",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
3
-dev"
}
}
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"Symfony\\Component\\
Console
\\": ""
"Symfony\\Component\\
Process
\\": ""
},
},
"exclude-from-classmap": [
"exclude-from-classmap": [
"/Tests/"
"/Tests/"
...
@@ -1681,34 +1814,41 @@
...
@@ -1681,34 +1814,41 @@
"homepage": "https://symfony.com/contributors"
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "Symfony
Console
Component",
"description": "Symfony
Process
Component",
"homepage": "https://symfony.com",
"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",
"version": "v3.2.1",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/symfony/
debug
.git",
"url": "https://github.com/symfony/
translation
.git",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
"
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
debug/9f923e68d524a3095c5a2ae5fc7220c7cbc12231
.zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
translation/5fd18eca88f4d187807a1eba083bc99feaa8635b
.zip",
"reference": "
9f923e68d524a3095c5a2ae5fc7220c7cbc12231
",
"reference": "
5fd18eca88f4d187807a1eba083bc99feaa8635b
",
"shasum": ""
"shasum": ""
},
},
"require": {
"require": {
"php": ">=5.5.9",
"php": ">=5.5.9",
"
psr/lo
g": "~1.0"
"
symfony/polyfill-mbstrin
g": "~1.0"
},
},
"conflict": {
"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": {
"require-dev": {
"symfony/class-loader": "~2.8|~3.0",
"psr/log": "~1.0",
"symfony/http-kernel": "~2.8|~3.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",
"type": "library",
"extra": {
"extra": {
...
@@ -1718,7 +1858,7 @@
...
@@ -1718,7 +1858,7 @@
},
},
"autoload": {
"autoload": {
"psr-4": {
"psr-4": {
"Symfony\\Component\\
Debug
\\": ""
"Symfony\\Component\\
Translation
\\": ""
},
},
"exclude-from-classmap": [
"exclude-from-classmap": [
"/Tests/"
"/Tests/"
...
@@ -1738,36 +1878,46 @@
...
@@ -1738,36 +1878,46 @@
"homepage": "https://symfony.com/contributors"
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "Symfony
Debug
Component",
"description": "Symfony
Translation
Component",
"homepage": "https://symfony.com",
"homepage": "https://symfony.com",
"time": "2016-11-
16 22:18:16
"
"time": "2016-11-
30 14:40:17
"
},
},
{
{
"name": "symfony/
find
er",
"name": "symfony/
var-dump
er",
"version": "
v3.2.1
",
"version": "
dev-master
",
"source": {
"source": {
"type": "git",
"type": "git",
"url": "https://github.com/symfony/
find
er.git",
"url": "https://github.com/symfony/
var-dump
er.git",
"reference": "
a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
"
"reference": "
45917d2b18425e5fac2a980f1f1bcc7023a16323
"
},
},
"dist": {
"dist": {
"type": "zip",
"type": "zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
finder/a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
.zip",
"url": "https://packagist.phpcomposer.com/files/symfony/
var-dumper/45917d2b18425e5fac2a980f1f1bcc7023a16323
.zip",
"reference": "
a69cb5d455b4885ca376dc5bb3e1155cc8c08c4b
",
"reference": "
45917d2b18425e5fac2a980f1f1bcc7023a16323
",
"shasum": ""
"shasum": ""
},
},
"require": {
"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",
"type": "library",
"extra": {
"extra": {
"branch-alias": {
"branch-alias": {
"dev-master": "3.
2
-dev"
"dev-master": "3.
3
-dev"
}
}
},
},
"autoload": {
"autoload": {
"files": [
"Resources/functions/dump.php"
],
"psr-4": {
"psr-4": {
"Symfony\\Component\\
Find
er\\": ""
"Symfony\\Component\\
VarDump
er\\": ""
},
},
"exclude-from-classmap": [
"exclude-from-classmap": [
"/Tests/"
"/Tests/"
...
@@ -1779,17 +1929,21 @@
...
@@ -1779,17 +1929,21 @@
],
],
"authors": [
"authors": [
{
{
"name": "
Fabien Potencier
",
"name": "
Nicolas Grekas
",
"email": "
fabien@symfony
.com"
"email": "
p@tchwork
.com"
},
},
{
{
"name": "Symfony Community",
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
"homepage": "https://symfony.com/contributors"
}
}
],
],
"description": "Symfony
Finder Component
",
"description": "Symfony
mechanism for exploring and dumping PHP variables
",
"homepage": "https://symfony.com",
"homepage": "https://symfony.com",
"time": "2016-12-13 09:39:43"
"keywords": [
"debug",
"dump"
],
"time": "2017-01-15 16:39:59"
},
},
{
{
"name": "tracy/tracy",
"name": "tracy/tracy",
...
@@ -1854,11 +2008,14 @@
...
@@ -1854,11 +2008,14 @@
"time": "2016-12-10 15:04:11"
"time": "2016-12-10 15:04:11"
}
}
],
],
"packages-dev": [],
"aliases": [],
"aliases": [],
"minimum-stability": "
stable
",
"minimum-stability": "
dev
",
"stability-flags": [],
"stability-flags": [],
"prefer-stable": false,
"prefer-stable": false,
"prefer-lowest": false,
"prefer-lowest": false,
"platform": [],
"platform": {
"php": ">=7.0.0"
},
"platform-dev": []
"platform-dev": []
}
}
example/custom.php
View file @
cb5f6d4
...
@@ -18,9 +18,11 @@ $robot = new Vbot([
...
@@ -18,9 +18,11 @@ $robot = new Vbot([
$flag
=
false
;
$flag
=
false
;
$robot
->
server
->
setCustomerHandler
(
function
()
use
(
&
$flag
){
$robot
->
server
->
setCustomerHandler
(
function
()
use
(
&
$flag
){
// RemarkName,代表的改用户在你通讯录的名字
$contact
=
contact
()
->
getUsernameById
(
'matts8023'
);
$contact
=
contact
()
->
getUsernameByNickRemarkName
(
'hanson'
);
if
(
$contact
===
false
){
dd
(
"找不到你要的联系人,请确认联系人姓名"
);
}
if
(
!
$flag
){
if
(
!
$flag
){
Text
::
send
(
$contact
,
'来轰炸吧'
);
Text
::
send
(
$contact
,
'来轰炸吧'
);
$flag
=
true
;
$flag
=
true
;
...
...
src/Collections/Contact.php
View file @
cb5f6d4
...
@@ -62,5 +62,20 @@ class Contact extends Collection
...
@@ -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
\ No newline at end of file
src/Core/Server.php
View file @
cb5f6d4
...
@@ -15,7 +15,14 @@ use Hanson\Vbot\Collections\Account;
...
@@ -15,7 +15,14 @@ use Hanson\Vbot\Collections\Account;
use
Hanson\Vbot\Collections\ContactFactory
;
use
Hanson\Vbot\Collections\ContactFactory
;
use
Hanson\Vbot\Collections\Group
;
use
Hanson\Vbot\Collections\Group
;
use
Hanson\Vbot\Support\Console
;
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
Symfony\Component\DomCrawler\Crawler
;
use
PHPQRCode\QRcode
as
CQRcode
;
use
Symfony\Component\Process\Exception\ProcessFailedException
;
use
Symfony\Component\Process\ProcessBuilder
;
class
Server
class
Server
{
{
...
@@ -96,7 +103,8 @@ class Server
...
@@ -96,7 +103,8 @@ class Server
public
function
prepare
()
public
function
prepare
()
{
{
$this
->
getUuid
();
$this
->
getUuid
();
$this
->
generateQrCode
();
// $this->generateQrCode();
$this
->
generateConsoleQrCode
();
Console
::
log
(
'[INFO] 请扫描二维码登录'
);
Console
::
log
(
'[INFO] 请扫描二维码登录'
);
$this
->
waitForLogin
();
$this
->
waitForLogin
();
...
@@ -150,6 +158,75 @@ class Server
...
@@ -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
* waiting user to login
*
*
...
...
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