{{result}}
4 |├── console ├── controllers │ └── .gitkeep ├── models │ └── .gitkeep ├── config │ ├── bootstrap.php │ ├── .gitignore │ ├── params.php │ └── main.php ├── runtime │ └── .gitignore └── migrations │ └── m130524_201442_init.php ├── frontend ├── config │ ├── bootstrap.php │ ├── .gitignore │ ├── params.php │ └── main.php ├── runtime │ └── .gitignore ├── web │ ├── assets │ │ └── .gitignore │ ├── robots.txt │ ├── .bowerrc │ ├── .gitignore │ ├── favicon.ico │ ├── index.template.php │ ├── app.vue │ ├── webpack.dev.config.js │ ├── src │ │ ├── views │ │ │ └── home.vue │ │ └── components │ │ │ ├── bar.vue │ │ │ └── card.vue │ ├── bower.json │ ├── app.js │ ├── package.json │ └── webpack.config.js ├── views │ └── site │ │ └── index.php ├── v1 │ ├── V1.php │ ├── views │ │ └── default │ │ │ └── index.php │ ├── logics │ │ └── Response.php │ └── controllers │ │ └── TestController.php ├── assets │ └── AppAsset.php └── controllers │ └── SiteController.php ├── tests ├── codeception │ ├── backend │ │ ├── unit │ │ │ ├── fixtures │ │ │ │ └── data │ │ │ │ │ └── .gitkeep │ │ │ ├── _bootstrap.php │ │ │ ├── TestCase.php │ │ │ └── DbTestCase.php │ │ ├── _output │ │ │ └── .gitignore │ │ ├── acceptance │ │ │ ├── _bootstrap.php │ │ │ └── LoginCept.php │ │ ├── functional │ │ │ ├── _bootstrap.php │ │ │ └── LoginCept.php │ │ ├── .gitignore │ │ ├── unit.suite.yml │ │ ├── codeception.yml │ │ ├── functional.suite.yml │ │ ├── acceptance.suite.yml │ │ └── _bootstrap.php │ ├── console │ │ ├── unit │ │ │ ├── fixtures │ │ │ │ └── data │ │ │ │ │ └── .gitkeep │ │ │ ├── _bootstrap.php │ │ │ ├── TestCase.php │ │ │ └── DbTestCase.php │ │ ├── _output │ │ │ └── .gitignore │ │ ├── .gitignore │ │ ├── unit.suite.yml │ │ ├── codeception.yml │ │ └── _bootstrap.php │ ├── _output │ │ └── .gitignore │ ├── config │ │ ├── .gitignore │ │ ├── backend │ │ │ ├── config.php │ │ │ ├── unit.php │ │ │ ├── acceptance.php │ │ │ └── functional.php │ │ ├── frontend │ │ │ ├── config.php │ │ │ ├── unit.php │ │ │ ├── acceptance.php │ │ │ └── functional.php │ │ ├── unit.php │ │ ├── acceptance.php │ │ ├── common │ │ │ └── unit.php │ │ ├── functional.php │ │ ├── console │ │ │ └── unit.php │ │ └── config.php │ ├── common │ │ ├── _output │ │ │ └── .gitignore │ │ ├── unit │ │ │ ├── _bootstrap.php │ │ │ ├── TestCase.php │ │ │ ├── DbTestCase.php │ │ │ ├── fixtures │ │ │ │ └── data │ │ │ │ │ └── models │ │ │ │ │ └── user.php │ │ │ └── models │ │ │ │ └── LoginFormTest.php │ │ ├── .gitignore │ │ ├── unit.suite.yml │ │ ├── fixtures │ │ │ ├── UserFixture.php │ │ │ └── data │ │ │ │ └── init_login.php │ │ ├── codeception.yml │ │ ├── templates │ │ │ └── fixtures │ │ │ │ └── user.php │ │ ├── _bootstrap.php │ │ ├── _pages │ │ │ └── LoginPage.php │ │ └── _support │ │ │ └── FixtureHelper.php │ ├── frontend │ │ ├── _output │ │ │ └── .gitignore │ │ ├── unit │ │ │ ├── _bootstrap.php │ │ │ ├── TestCase.php │ │ │ ├── DbTestCase.php │ │ │ ├── fixtures │ │ │ │ └── data │ │ │ │ │ └── models │ │ │ │ │ └── user.php │ │ │ └── models │ │ │ │ ├── ResetPasswordFormTest.php │ │ │ │ ├── SignupFormTest.php │ │ │ │ ├── ContactFormTest.php │ │ │ │ └── PasswordResetRequestFormTest.php │ │ ├── acceptance │ │ │ ├── _bootstrap.php │ │ │ ├── AboutCept.php │ │ │ ├── HomeCept.php │ │ │ ├── LoginCept.php │ │ │ ├── ContactCept.php │ │ │ └── SignupCest.php │ │ ├── functional │ │ │ ├── _bootstrap.php │ │ │ ├── AboutCept.php │ │ │ ├── HomeCept.php │ │ │ ├── LoginCept.php │ │ │ ├── ContactCept.php │ │ │ └── SignupCest.php │ │ ├── .gitignore │ │ ├── unit.suite.yml │ │ ├── _pages │ │ │ ├── AboutPage.php │ │ │ ├── ContactPage.php │ │ │ └── SignupPage.php │ │ ├── codeception.yml │ │ ├── functional.suite.yml │ │ ├── acceptance.suite.yml │ │ └── _bootstrap.php │ └── bin │ │ ├── yii.bat │ │ ├── _bootstrap.php │ │ └── yii ├── codeception.yml └── README.md ├── .bowerrc ├── common ├── config │ ├── .gitignore │ ├── params.php │ ├── main.php │ └── bootstrap.php └── mail │ ├── passwordResetToken-text.php │ ├── layouts │ ├── text.php │ └── html.php │ └── passwordResetToken-html.php ├── environments ├── dev │ ├── backend │ │ ├── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ │ └── web │ │ │ ├── index.php │ │ │ └── index-test.php │ ├── common │ │ └── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ ├── console │ │ └── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ ├── frontend │ │ ├── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ │ └── web │ │ │ ├── index.php │ │ │ └── index-test.php │ ├── tests │ │ └── codeception │ │ │ └── config │ │ │ └── config-local.php │ └── yii ├── prod │ ├── common │ │ └── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ ├── console │ │ └── config │ │ │ ├── main-local.php │ │ │ └── params-local.php │ ├── backend │ │ ├── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ │ └── web │ │ │ └── index.php │ ├── frontend │ │ ├── config │ │ │ ├── params-local.php │ │ │ └── main-local.php │ │ └── web │ │ │ └── index.php │ ├── tests │ │ └── codeception │ │ │ └── config │ │ │ └── config-local.php │ └── yii └── index.php ├── .gitignore ├── init.bat ├── yii.bat ├── composer.json ├── README.md ├── requirements.php ├── init └── composer.lock /console/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /console/models/.gitkeep: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /console/config/bootstrap.php: -------------------------------------------------------------------------------- 1 | 'admin@example.com', 4 | ]; 5 | -------------------------------------------------------------------------------- /frontend/config/params.php: -------------------------------------------------------------------------------- 1 | 'admin@example.com', 4 | ]; 5 | -------------------------------------------------------------------------------- /frontend/web/.gitignore: -------------------------------------------------------------------------------- 1 | /index.php 2 | /index-test.php 3 | /dist 4 | /node_modules 5 | /bower_components -------------------------------------------------------------------------------- /frontend/web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TIGERB/vue-in-yii2/HEAD/frontend/web/favicon.ico -------------------------------------------------------------------------------- /tests/codeception/backend/unit/_bootstrap.php: -------------------------------------------------------------------------------- 1 | ['gii'], 4 | 'modules' => [ 5 | 'gii' => 'yii\gii\Module', 6 | ], 7 | ]; 8 | -------------------------------------------------------------------------------- /tests/codeception/backend/.gitignore: -------------------------------------------------------------------------------- 1 | # these files are auto generated by codeception build 2 | /unit/UnitTester.php 3 | /functional/FunctionalTester.php 4 | /acceptance/AcceptanceTester.php 5 | -------------------------------------------------------------------------------- /tests/codeception/common/.gitignore: -------------------------------------------------------------------------------- 1 | # these files are auto generated by codeception build 2 | /unit/UnitTester.php 3 | /functional/FunctionalTester.php 4 | /acceptance/AcceptanceTester.php 5 | -------------------------------------------------------------------------------- /common/config/params.php: -------------------------------------------------------------------------------- 1 | 'admin@example.com', 4 | 'supportEmail' => 'support@example.com', 5 | 'user.passwordResetTokenExpire' => 3600, 6 | ]; 7 | -------------------------------------------------------------------------------- /tests/codeception/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # these files are auto generated by codeception build 2 | /unit/UnitTester.php 3 | /functional/FunctionalTester.php 4 | /acceptance/AcceptanceTester.php 5 | -------------------------------------------------------------------------------- /tests/codeception/backend/unit.suite.yml: -------------------------------------------------------------------------------- 1 | # Codeception Test Suite Configuration 2 | 3 | # suite for unit (internal) tests. 4 | # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. 5 | 6 | class_name: UnitTester 7 | -------------------------------------------------------------------------------- /tests/codeception/common/unit.suite.yml: -------------------------------------------------------------------------------- 1 | # Codeception Test Suite Configuration 2 | 3 | # suite for unit (internal) tests. 4 | # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. 5 | 6 | class_name: UnitTester 7 | -------------------------------------------------------------------------------- /tests/codeception/console/unit.suite.yml: -------------------------------------------------------------------------------- 1 | # Codeception Test Suite Configuration 2 | 3 | # suite for unit (internal) tests. 4 | # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. 5 | 6 | class_name: UnitTester 7 | -------------------------------------------------------------------------------- /tests/codeception/frontend/unit.suite.yml: -------------------------------------------------------------------------------- 1 | # Codeception Test Suite Configuration 2 | 3 | # suite for unit (internal) tests. 4 | # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. 5 | 6 | class_name: UnitTester 7 | -------------------------------------------------------------------------------- /tests/codeception.yml: -------------------------------------------------------------------------------- 1 | include: 2 | - codeception/common 3 | - codeception/console 4 | - codeception/backend 5 | - codeception/frontend 6 | 7 | paths: 8 | log: codeception/_output 9 | 10 | settings: 11 | colors: true 12 | -------------------------------------------------------------------------------- /tests/codeception/backend/unit/TestCase.php: -------------------------------------------------------------------------------- 1 | dirname(dirname(__DIR__)) . '/vendor', 4 | 'components' => [ 5 | 'cache' => [ 6 | 'class' => 'yii\caching\FileCache', 7 | ], 8 | ], 9 | ]; 10 | -------------------------------------------------------------------------------- /tests/codeception/backend/unit/DbTestCase.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/codeception/frontend/unit/DbTestCase.php: -------------------------------------------------------------------------------- 1 | [ 4 | 'request' => [ 5 | // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 6 | 'cookieValidationKey' => '', 7 | ], 8 | ], 9 | ]; 10 | -------------------------------------------------------------------------------- /environments/prod/frontend/config/main-local.php: -------------------------------------------------------------------------------- 1 | [ 4 | 'request' => [ 5 | // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 6 | 'cookieValidationKey' => '', 7 | ], 8 | ], 9 | ]; 10 | -------------------------------------------------------------------------------- /environments/dev/tests/codeception/config/config-local.php: -------------------------------------------------------------------------------- 1 | [ 4 | 'db' => [ 5 | 'dsn' => 'mysql:host=localhost;dbname=yii2_advanced_tests', 6 | 'username' => 'root', 7 | 'password' => '', 8 | 'charset' => 'utf8', 9 | ], 10 | ], 11 | ]; 12 | -------------------------------------------------------------------------------- /environments/prod/tests/codeception/config/config-local.php: -------------------------------------------------------------------------------- 1 | [ 4 | 'db' => [ 5 | 'dsn' => 'mysql:host=localhost;dbname=yii2_advanced_tests', 6 | 'username' => 'root', 7 | 'password' => '', 8 | 'charset' => 'utf8', 9 | ], 10 | ], 11 | ]; 12 | -------------------------------------------------------------------------------- /tests/codeception/common/codeception.yml: -------------------------------------------------------------------------------- 1 | namespace: tests\codeception\common 2 | actor: Tester 3 | paths: 4 | tests: . 5 | log: _output 6 | data: _data 7 | helpers: _support 8 | settings: 9 | bootstrap: _bootstrap.php 10 | suite_class: \PHPUnit_Framework_TestSuite 11 | colors: true 12 | memory_limit: 1024M 13 | log: true 14 | -------------------------------------------------------------------------------- /tests/codeception/console/codeception.yml: -------------------------------------------------------------------------------- 1 | namespace: tests\codeception\console 2 | actor: Tester 3 | paths: 4 | tests: . 5 | log: _output 6 | data: _data 7 | helpers: _support 8 | settings: 9 | bootstrap: _bootstrap.php 10 | suite_class: \PHPUnit_Framework_TestSuite 11 | colors: true 12 | memory_limit: 1024M 13 | log: true 14 | -------------------------------------------------------------------------------- /tests/codeception/frontend/acceptance/AboutCept.php: -------------------------------------------------------------------------------- 1 | wantTo('ensure that about works'); 9 | AboutPage::openBy($I); 10 | $I->see('About', 'h1'); 11 | -------------------------------------------------------------------------------- /tests/codeception/frontend/functional/AboutCept.php: -------------------------------------------------------------------------------- 1 | wantTo('ensure that about works'); 9 | AboutPage::openBy($I); 10 | $I->see('About', 'h1'); 11 | -------------------------------------------------------------------------------- /frontend/web/app.vue: -------------------------------------------------------------------------------- 1 | 2 |Hello = Html::encode($user->username) ?>,
11 | 12 |Follow the link below to reset your password:
13 | 14 |= Html::a(Html::encode($resetLink), $resetLink) ?>
15 |4 | This is the view content for action "= $this->context->action->id ?>". 5 | The action belongs to the controller "= get_class($this->context) ?>" 6 | in the "= $this->context->module->id ?>" module. 7 |
8 |
9 | You may customize this page by editing the following file:
10 | = __FILE__ ?>
11 |
{{result}}
4 |The path to yii framework seems to be incorrect.
'; 19 | echo 'You need to install Yii framework via composer or adjust the framework path in file ' . basename(__FILE__) . '.
'; 20 | echo 'Please refer to the README on how to install Yii.
'; 21 | } 22 | 23 | require_once($frameworkPath . '/requirements/YiiRequirementChecker.php'); 24 | $requirementsChecker = new YiiRequirementChecker(); 25 | 26 | $gdMemo = $imagickMemo = 'Either GD PHP extension with FreeType support or ImageMagick PHP extension with PNG support is required for image CAPTCHA.'; 27 | $gdOK = $imagickOK = false; 28 | 29 | if (extension_loaded('imagick')) { 30 | $imagick = new Imagick(); 31 | $imagickFormats = $imagick->queryFormats('PNG'); 32 | if (in_array('PNG', $imagickFormats)) { 33 | $imagickOK = true; 34 | } else { 35 | $imagickMemo = 'Imagick extension should be installed with PNG support in order to be used for image CAPTCHA.'; 36 | } 37 | } 38 | 39 | if (extension_loaded('gd')) { 40 | $gdInfo = gd_info(); 41 | if (!empty($gdInfo['FreeType Support'])) { 42 | $gdOK = true; 43 | } else { 44 | $gdMemo = 'GD extension should be installed with FreeType support in order to be used for image CAPTCHA.'; 45 | } 46 | } 47 | 48 | /** 49 | * Adjust requirements according to your application specifics. 50 | */ 51 | $requirements = array( 52 | // Database : 53 | array( 54 | 'name' => 'PDO extension', 55 | 'mandatory' => true, 56 | 'condition' => extension_loaded('pdo'), 57 | 'by' => 'All DB-related classes', 58 | ), 59 | array( 60 | 'name' => 'PDO SQLite extension', 61 | 'mandatory' => false, 62 | 'condition' => extension_loaded('pdo_sqlite'), 63 | 'by' => 'All DB-related classes', 64 | 'memo' => 'Required for SQLite database.', 65 | ), 66 | array( 67 | 'name' => 'PDO MySQL extension', 68 | 'mandatory' => false, 69 | 'condition' => extension_loaded('pdo_mysql'), 70 | 'by' => 'All DB-related classes', 71 | 'memo' => 'Required for MySQL database.', 72 | ), 73 | array( 74 | 'name' => 'PDO PostgreSQL extension', 75 | 'mandatory' => false, 76 | 'condition' => extension_loaded('pdo_pgsql'), 77 | 'by' => 'All DB-related classes', 78 | 'memo' => 'Required for PostgreSQL database.', 79 | ), 80 | // Cache : 81 | array( 82 | 'name' => 'Memcache extension', 83 | 'mandatory' => false, 84 | 'condition' => extension_loaded('memcache') || extension_loaded('memcached'), 85 | 'by' => 'MemCache', 86 | 'memo' => extension_loaded('memcached') ? 'To use memcached set MemCache::useMemcached totrue.' : ''
87 | ),
88 | array(
89 | 'name' => 'APC extension',
90 | 'mandatory' => false,
91 | 'condition' => extension_loaded('apc'),
92 | 'by' => 'ApcCache',
93 | ),
94 | // CAPTCHA:
95 | array(
96 | 'name' => 'GD PHP extension with FreeType support',
97 | 'mandatory' => false,
98 | 'condition' => $gdOK,
99 | 'by' => 'Captcha',
100 | 'memo' => $gdMemo,
101 | ),
102 | array(
103 | 'name' => 'ImageMagick PHP extension with PNG support',
104 | 'mandatory' => false,
105 | 'condition' => $imagickOK,
106 | 'by' => 'Captcha',
107 | 'memo' => $imagickMemo,
108 | ),
109 | // PHP ini :
110 | 'phpExposePhp' => array(
111 | 'name' => 'Expose PHP',
112 | 'mandatory' => false,
113 | 'condition' => $requirementsChecker->checkPhpIniOff("expose_php"),
114 | 'by' => 'Security reasons',
115 | 'memo' => '"expose_php" should be disabled at php.ini',
116 | ),
117 | 'phpAllowUrlInclude' => array(
118 | 'name' => 'PHP allow url include',
119 | 'mandatory' => false,
120 | 'condition' => $requirementsChecker->checkPhpIniOff("allow_url_include"),
121 | 'by' => 'Security reasons',
122 | 'memo' => '"allow_url_include" should be disabled at php.ini',
123 | ),
124 | 'phpSmtp' => array(
125 | 'name' => 'PHP mail SMTP',
126 | 'mandatory' => false,
127 | 'condition' => strlen(ini_get('SMTP')) > 0,
128 | 'by' => 'Email sending',
129 | 'memo' => 'PHP mail SMTP server required',
130 | ),
131 | );
132 | $requirementsChecker->checkYii()->check($requirements)->render();
133 |
--------------------------------------------------------------------------------
/init:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 |
11 | *
12 | * @link http://www.yiiframework.com/
13 | * @copyright Copyright (c) 2008 Yii Software LLC
14 | * @license http://www.yiiframework.com/license/
15 | */
16 |
17 | if (!extension_loaded('openssl')) {
18 | die('The OpenSSL PHP extension is required by Yii2.');
19 | }
20 |
21 | $params = getParams();
22 | $root = str_replace('\\', '/', __DIR__);
23 | $envs = require("$root/environments/index.php");
24 | $envNames = array_keys($envs);
25 |
26 | echo "Yii Application Initialization Tool v1.0\n\n";
27 |
28 | $envName = null;
29 | if (empty($params['env']) || $params['env'] === '1') {
30 | echo "Which environment do you want the application to be initialized in?\n\n";
31 | foreach ($envNames as $i => $name) {
32 | echo " [$i] $name\n";
33 | }
34 | echo "\n Your choice [0-" . (count($envs) - 1) . ', or "q" to quit] ';
35 | $answer = trim(fgets(STDIN));
36 |
37 | if (!ctype_digit($answer) || !in_array($answer, range(0, count($envs) - 1))) {
38 | echo "\n Quit initialization.\n";
39 | exit(0);
40 | }
41 |
42 | if (isset($envNames[$answer])) {
43 | $envName = $envNames[$answer];
44 | }
45 | } else {
46 | $envName = $params['env'];
47 | }
48 |
49 | if (!in_array($envName, $envNames)) {
50 | $envsList = implode(', ', $envNames);
51 | echo "\n $envName is not a valid environment. Try one of the following: $envsList. \n";
52 | exit(2);
53 | }
54 |
55 | $env = $envs[$envName];
56 |
57 | if (empty($params['env'])) {
58 | echo "\n Initialize the application under '{$envNames[$answer]}' environment? [yes|no] ";
59 | $answer = trim(fgets(STDIN));
60 | if (strncasecmp($answer, 'y', 1)) {
61 | echo "\n Quit initialization.\n";
62 | exit(0);
63 | }
64 | }
65 |
66 | echo "\n Start initialization ...\n\n";
67 | $files = getFileList("$root/environments/{$env['path']}");
68 | if (isset($env['skipFiles'])) {
69 | $skipFiles = $env['skipFiles'];
70 | array_walk($skipFiles, function(&$value) use($env, $root) { $value = "$root/$value"; });
71 | $files = array_diff($files, array_intersect_key($env['skipFiles'], array_filter($skipFiles, 'file_exists')));
72 | }
73 | $all = false;
74 | foreach ($files as $file) {
75 | if (!copyFile($root, "environments/{$env['path']}/$file", $file, $all, $params)) {
76 | break;
77 | }
78 | }
79 |
80 | $callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink'];
81 | foreach ($callbacks as $callback) {
82 | if (!empty($env[$callback])) {
83 | $callback($root, $env[$callback]);
84 | }
85 | }
86 |
87 | echo "\n ... initialization completed.\n\n";
88 |
89 | function getFileList($root, $basePath = '')
90 | {
91 | $files = [];
92 | $handle = opendir($root);
93 | while (($path = readdir($handle)) !== false) {
94 | if ($path === '.git' || $path === '.svn' || $path === '.' || $path === '..') {
95 | continue;
96 | }
97 | $fullPath = "$root/$path";
98 | $relativePath = $basePath === '' ? $path : "$basePath/$path";
99 | if (is_dir($fullPath)) {
100 | $files = array_merge($files, getFileList($fullPath, $relativePath));
101 | } else {
102 | $files[] = $relativePath;
103 | }
104 | }
105 | closedir($handle);
106 | return $files;
107 | }
108 |
109 | function copyFile($root, $source, $target, &$all, $params)
110 | {
111 | if (!is_file($root . '/' . $source)) {
112 | echo " skip $target ($source not exist)\n";
113 | return true;
114 | }
115 | if (is_file($root . '/' . $target)) {
116 | if (file_get_contents($root . '/' . $source) === file_get_contents($root . '/' . $target)) {
117 | echo " unchanged $target\n";
118 | return true;
119 | }
120 | if ($all) {
121 | echo " overwrite $target\n";
122 | } else {
123 | echo " exist $target\n";
124 | echo " ...overwrite? [Yes|No|All|Quit] ";
125 |
126 |
127 | $answer = !empty($params['overwrite']) ? $params['overwrite'] : trim(fgets(STDIN));
128 | if (!strncasecmp($answer, 'q', 1)) {
129 | return false;
130 | } else {
131 | if (!strncasecmp($answer, 'y', 1)) {
132 | echo " overwrite $target\n";
133 | } else {
134 | if (!strncasecmp($answer, 'a', 1)) {
135 | echo " overwrite $target\n";
136 | $all = true;
137 | } else {
138 | echo " skip $target\n";
139 | return true;
140 | }
141 | }
142 | }
143 | }
144 | file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source));
145 | return true;
146 | }
147 | echo " generate $target\n";
148 | @mkdir(dirname($root . '/' . $target), 0777, true);
149 | file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source));
150 | return true;
151 | }
152 |
153 | function getParams()
154 | {
155 | $rawParams = [];
156 | if (isset($_SERVER['argv'])) {
157 | $rawParams = $_SERVER['argv'];
158 | array_shift($rawParams);
159 | }
160 |
161 | $params = [];
162 | foreach ($rawParams as $param) {
163 | if (preg_match('/^--(\w+)(=(.*))?$/', $param, $matches)) {
164 | $name = $matches[1];
165 | $params[$name] = isset($matches[3]) ? $matches[3] : true;
166 | } else {
167 | $params[] = $param;
168 | }
169 | }
170 | return $params;
171 | }
172 |
173 | function setWritable($root, $paths)
174 | {
175 | foreach ($paths as $writable) {
176 | if (is_dir("$root/$writable")) {
177 | echo " chmod 0777 $writable\n";
178 | @chmod("$root/$writable", 0777);
179 | } else {
180 | echo "\n Error. Directory $writable does not exist. \n";
181 | }
182 | }
183 | }
184 |
185 | function setExecutable($root, $paths)
186 | {
187 | foreach ($paths as $executable) {
188 | echo " chmod 0755 $executable\n";
189 | @chmod("$root/$executable", 0755);
190 | }
191 | }
192 |
193 | function setCookieValidationKey($root, $paths)
194 | {
195 | foreach ($paths as $file) {
196 | echo " generate cookie validation key in $file\n";
197 | $file = $root . '/' . $file;
198 | $length = 32;
199 | $bytes = openssl_random_pseudo_bytes($length);
200 | $key = strtr(substr(base64_encode($bytes), 0, $length), '+/=', '_-.');
201 | $content = preg_replace('/(("|\')cookieValidationKey("|\')\s*=>\s*)(""|\'\')/', "\\1'$key'", file_get_contents($file));
202 | file_put_contents($file, $content);
203 | }
204 | }
205 |
206 | function createSymlink($root, $links) {
207 | foreach ($links as $link => $target) {
208 | echo " symlink " . $root . "/" . $target . " " . $root . "/" . $link . "\n";
209 | //first removing folders to avoid errors if the folder already exists
210 | @rmdir($root . "/" . $link);
211 | //next removing existing symlink in order to update the target
212 | if (is_link($root . "/" . $link)) {
213 | @unlink($root . "/" . $link);
214 | }
215 | @symlink($root . "/" . $target, $root . "/" . $link);
216 | }
217 | }
218 |
--------------------------------------------------------------------------------
/frontend/v1/controllers/TestController.php:
--------------------------------------------------------------------------------
1 | =1.9.1"
26 | },
27 | "type": "bower-asset-library",
28 | "extra": {
29 | "bower-asset-main": [
30 | "less/bootstrap.less",
31 | "dist/js/bootstrap.js"
32 | ],
33 | "bower-asset-ignore": [
34 | "/.*",
35 | "_config.yml",
36 | "CNAME",
37 | "composer.json",
38 | "CONTRIBUTING.md",
39 | "docs",
40 | "js/tests",
41 | "test-infra"
42 | ]
43 | },
44 | "license": [
45 | "MIT"
46 | ],
47 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
48 | "keywords": [
49 | "css",
50 | "framework",
51 | "front-end",
52 | "js",
53 | "less",
54 | "mobile-first",
55 | "responsive",
56 | "web"
57 | ]
58 | },
59 | {
60 | "name": "bower-asset/jquery",
61 | "version": "2.2.4",
62 | "source": {
63 | "type": "git",
64 | "url": "https://github.com/jquery/jquery-dist.git",
65 | "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72"
66 | },
67 | "dist": {
68 | "type": "zip",
69 | "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/c0185ab7c75aab88762c5aae780b9d83b80eda72",
70 | "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72",
71 | "shasum": ""
72 | },
73 | "type": "bower-asset-library",
74 | "extra": {
75 | "bower-asset-main": "dist/jquery.js",
76 | "bower-asset-ignore": [
77 | "package.json"
78 | ]
79 | },
80 | "license": [
81 | "MIT"
82 | ],
83 | "keywords": [
84 | "browser",
85 | "javascript",
86 | "jquery",
87 | "library"
88 | ]
89 | },
90 | {
91 | "name": "bower-asset/jquery.inputmask",
92 | "version": "3.2.7",
93 | "source": {
94 | "type": "git",
95 | "url": "https://github.com/RobinHerbots/jquery.inputmask.git",
96 | "reference": "5a72c563b502b8e05958a524cdfffafe9987be38"
97 | },
98 | "dist": {
99 | "type": "zip",
100 | "url": "https://api.github.com/repos/RobinHerbots/jquery.inputmask/zipball/5a72c563b502b8e05958a524cdfffafe9987be38",
101 | "reference": "5a72c563b502b8e05958a524cdfffafe9987be38",
102 | "shasum": ""
103 | },
104 | "require": {
105 | "bower-asset/jquery": ">=1.7"
106 | },
107 | "type": "bower-asset-library",
108 | "extra": {
109 | "bower-asset-main": [
110 | "./dist/inputmask/inputmask.js"
111 | ],
112 | "bower-asset-ignore": [
113 | "**/*",
114 | "!dist/*",
115 | "!dist/inputmask/*",
116 | "!dist/min/*",
117 | "!dist/min/inputmask/*",
118 | "!extra/bindings/*",
119 | "!extra/dependencyLibs/*",
120 | "!extra/phone-codes/*"
121 | ]
122 | },
123 | "license": [
124 | "http://opensource.org/licenses/mit-license.php"
125 | ],
126 | "description": "jquery.inputmask is a jquery plugin which create an input mask.",
127 | "keywords": [
128 | "form",
129 | "input",
130 | "inputmask",
131 | "jquery",
132 | "mask",
133 | "plugins"
134 | ]
135 | },
136 | {
137 | "name": "bower-asset/punycode",
138 | "version": "v1.3.2",
139 | "source": {
140 | "type": "git",
141 | "url": "https://github.com/bestiejs/punycode.js.git",
142 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
143 | },
144 | "dist": {
145 | "type": "zip",
146 | "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3",
147 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3",
148 | "shasum": ""
149 | },
150 | "type": "bower-asset-library",
151 | "extra": {
152 | "bower-asset-main": "punycode.js",
153 | "bower-asset-ignore": [
154 | "coverage",
155 | "tests",
156 | ".*",
157 | "component.json",
158 | "Gruntfile.js",
159 | "node_modules",
160 | "package.json"
161 | ]
162 | }
163 | },
164 | {
165 | "name": "bower-asset/yii2-pjax",
166 | "version": "v2.0.6",
167 | "source": {
168 | "type": "git",
169 | "url": "https://github.com/yiisoft/jquery-pjax.git",
170 | "reference": "60728da6ade5879e807a49ce59ef9a72039b8978"
171 | },
172 | "dist": {
173 | "type": "zip",
174 | "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/60728da6ade5879e807a49ce59ef9a72039b8978",
175 | "reference": "60728da6ade5879e807a49ce59ef9a72039b8978",
176 | "shasum": ""
177 | },
178 | "require": {
179 | "bower-asset/jquery": ">=1.8"
180 | },
181 | "type": "bower-asset-library",
182 | "extra": {
183 | "bower-asset-main": "./jquery.pjax.js",
184 | "bower-asset-ignore": [
185 | ".travis.yml",
186 | "Gemfile",
187 | "Gemfile.lock",
188 | "CONTRIBUTING.md",
189 | "vendor/",
190 | "script/",
191 | "test/"
192 | ]
193 | },
194 | "license": [
195 | "MIT"
196 | ]
197 | },
198 | {
199 | "name": "cebe/markdown",
200 | "version": "1.1.0",
201 | "source": {
202 | "type": "git",
203 | "url": "https://github.com/cebe/markdown.git",
204 | "reference": "54a2c49de31cc44e864ebf0500a35ef21d0010b2"
205 | },
206 | "dist": {
207 | "type": "zip",
208 | "url": "https://packagist.phpcomposer.com/files/cebe/markdown/54a2c49de31cc44e864ebf0500a35ef21d0010b2.zip",
209 | "reference": "54a2c49de31cc44e864ebf0500a35ef21d0010b2",
210 | "shasum": ""
211 | },
212 | "require": {
213 | "lib-pcre": "*",
214 | "php": ">=5.4.0"
215 | },
216 | "require-dev": {
217 | "cebe/indent": "*",
218 | "facebook/xhprof": "*@dev",
219 | "phpunit/phpunit": "4.1.*"
220 | },
221 | "bin": [
222 | "bin/markdown"
223 | ],
224 | "type": "library",
225 | "extra": {
226 | "branch-alias": {
227 | "dev-master": "1.1.x-dev"
228 | }
229 | },
230 | "autoload": {
231 | "psr-4": {
232 | "cebe\\markdown\\": ""
233 | }
234 | },
235 | "notification-url": "https://packagist.org/downloads/",
236 | "license": [
237 | "MIT"
238 | ],
239 | "authors": [
240 | {
241 | "name": "Carsten Brandt",
242 | "email": "mail@cebe.cc",
243 | "homepage": "http://cebe.cc/",
244 | "role": "Creator"
245 | }
246 | ],
247 | "description": "A super fast, highly extensible markdown parser for PHP",
248 | "homepage": "https://github.com/cebe/markdown#readme",
249 | "keywords": [
250 | "extensible",
251 | "fast",
252 | "gfm",
253 | "markdown",
254 | "markdown-extra"
255 | ],
256 | "time": "2015-03-06 05:28:07"
257 | },
258 | {
259 | "name": "ezyang/htmlpurifier",
260 | "version": "v4.7.0",
261 | "source": {
262 | "type": "git",
263 | "url": "https://github.com/ezyang/htmlpurifier.git",
264 | "reference": "ae1828d955112356f7677c465f94f7deb7d27a40"
265 | },
266 | "dist": {
267 | "type": "zip",
268 | "url": "https://packagist.phpcomposer.com/files/ezyang/htmlpurifier/ae1828d955112356f7677c465f94f7deb7d27a40.zip",
269 | "reference": "ae1828d955112356f7677c465f94f7deb7d27a40",
270 | "shasum": ""
271 | },
272 | "require": {
273 | "php": ">=5.2"
274 | },
275 | "type": "library",
276 | "autoload": {
277 | "psr-0": {
278 | "HTMLPurifier": "library/"
279 | },
280 | "files": [
281 | "library/HTMLPurifier.composer.php"
282 | ]
283 | },
284 | "notification-url": "https://packagist.org/downloads/",
285 | "license": [
286 | "LGPL"
287 | ],
288 | "authors": [
289 | {
290 | "name": "Edward Z. Yang",
291 | "email": "admin@htmlpurifier.org",
292 | "homepage": "http://ezyang.com"
293 | }
294 | ],
295 | "description": "Standards compliant HTML filter written in PHP",
296 | "homepage": "http://htmlpurifier.org/",
297 | "keywords": [
298 | "html"
299 | ],
300 | "time": "2015-08-05 01:03:42"
301 | },
302 | {
303 | "name": "swiftmailer/swiftmailer",
304 | "version": "v5.4.2",
305 | "source": {
306 | "type": "git",
307 | "url": "https://github.com/swiftmailer/swiftmailer.git",
308 | "reference": "d8db871a54619458a805229a057ea2af33c753e8"
309 | },
310 | "dist": {
311 | "type": "zip",
312 | "url": "https://packagist.phpcomposer.com/files/swiftmailer/swiftmailer/d8db871a54619458a805229a057ea2af33c753e8.zip",
313 | "reference": "d8db871a54619458a805229a057ea2af33c753e8",
314 | "shasum": ""
315 | },
316 | "require": {
317 | "php": ">=5.3.3"
318 | },
319 | "require-dev": {
320 | "mockery/mockery": "~0.9.1,<0.9.4"
321 | },
322 | "type": "library",
323 | "extra": {
324 | "branch-alias": {
325 | "dev-master": "5.4-dev"
326 | }
327 | },
328 | "autoload": {
329 | "files": [
330 | "lib/swift_required.php"
331 | ]
332 | },
333 | "notification-url": "https://packagist.org/downloads/",
334 | "license": [
335 | "MIT"
336 | ],
337 | "authors": [
338 | {
339 | "name": "Chris Corbyn"
340 | },
341 | {
342 | "name": "Fabien Potencier",
343 | "email": "fabien@symfony.com"
344 | }
345 | ],
346 | "description": "Swiftmailer, free feature-rich PHP mailer",
347 | "homepage": "http://swiftmailer.org",
348 | "keywords": [
349 | "email",
350 | "mail",
351 | "mailer"
352 | ],
353 | "time": "2016-05-01 08:45:47"
354 | },
355 | {
356 | "name": "yiisoft/yii2",
357 | "version": "2.0.8",
358 | "source": {
359 | "type": "git",
360 | "url": "https://github.com/yiisoft/yii2-framework.git",
361 | "reference": "53992b136b993e32ca7b6f399cf42b143f8685a6"
362 | },
363 | "dist": {
364 | "type": "zip",
365 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-framework/53992b136b993e32ca7b6f399cf42b143f8685a6.zip",
366 | "reference": "53992b136b993e32ca7b6f399cf42b143f8685a6",
367 | "shasum": ""
368 | },
369 | "require": {
370 | "bower-asset/jquery": "2.2.*@stable | 2.1.*@stable | 1.11.*@stable",
371 | "bower-asset/jquery.inputmask": "~3.2.2",
372 | "bower-asset/punycode": "1.3.*",
373 | "bower-asset/yii2-pjax": "~2.0.1",
374 | "cebe/markdown": "~1.0.0 | ~1.1.0",
375 | "ext-ctype": "*",
376 | "ext-mbstring": "*",
377 | "ezyang/htmlpurifier": "~4.6",
378 | "lib-pcre": "*",
379 | "php": ">=5.4.0",
380 | "yiisoft/yii2-composer": "~2.0.4"
381 | },
382 | "bin": [
383 | "yii"
384 | ],
385 | "type": "library",
386 | "extra": {
387 | "branch-alias": {
388 | "dev-master": "2.0.x-dev"
389 | }
390 | },
391 | "autoload": {
392 | "psr-4": {
393 | "yii\\": ""
394 | }
395 | },
396 | "notification-url": "https://packagist.org/downloads/",
397 | "license": [
398 | "BSD-3-Clause"
399 | ],
400 | "authors": [
401 | {
402 | "name": "Qiang Xue",
403 | "email": "qiang.xue@gmail.com",
404 | "homepage": "http://www.yiiframework.com/",
405 | "role": "Founder and project lead"
406 | },
407 | {
408 | "name": "Alexander Makarov",
409 | "email": "sam@rmcreative.ru",
410 | "homepage": "http://rmcreative.ru/",
411 | "role": "Core framework development"
412 | },
413 | {
414 | "name": "Maurizio Domba",
415 | "homepage": "http://mdomba.info/",
416 | "role": "Core framework development"
417 | },
418 | {
419 | "name": "Carsten Brandt",
420 | "email": "mail@cebe.cc",
421 | "homepage": "http://cebe.cc/",
422 | "role": "Core framework development"
423 | },
424 | {
425 | "name": "Timur Ruziev",
426 | "email": "resurtm@gmail.com",
427 | "homepage": "http://resurtm.com/",
428 | "role": "Core framework development"
429 | },
430 | {
431 | "name": "Paul Klimov",
432 | "email": "klimov.paul@gmail.com",
433 | "role": "Core framework development"
434 | },
435 | {
436 | "name": "Dmitry Naumenko",
437 | "email": "d.naumenko.a@gmail.com",
438 | "role": "Core framework development"
439 | }
440 | ],
441 | "description": "Yii PHP Framework Version 2",
442 | "homepage": "http://www.yiiframework.com/",
443 | "keywords": [
444 | "framework",
445 | "yii2"
446 | ],
447 | "time": "2016-04-28 14:50:20"
448 | },
449 | {
450 | "name": "yiisoft/yii2-bootstrap",
451 | "version": "2.0.6",
452 | "source": {
453 | "type": "git",
454 | "url": "https://github.com/yiisoft/yii2-bootstrap.git",
455 | "reference": "3fd2b8c950cce79d60e9702d6bcb24eb3c80f6c5"
456 | },
457 | "dist": {
458 | "type": "zip",
459 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-bootstrap/3fd2b8c950cce79d60e9702d6bcb24eb3c80f6c5.zip",
460 | "reference": "3fd2b8c950cce79d60e9702d6bcb24eb3c80f6c5",
461 | "shasum": ""
462 | },
463 | "require": {
464 | "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*",
465 | "yiisoft/yii2": ">=2.0.6"
466 | },
467 | "type": "yii2-extension",
468 | "extra": {
469 | "branch-alias": {
470 | "dev-master": "2.0.x-dev"
471 | },
472 | "asset-installer-paths": {
473 | "npm-asset-library": "vendor/npm",
474 | "bower-asset-library": "vendor/bower"
475 | }
476 | },
477 | "autoload": {
478 | "psr-4": {
479 | "yii\\bootstrap\\": ""
480 | }
481 | },
482 | "notification-url": "https://packagist.org/downloads/",
483 | "license": [
484 | "BSD-3-Clause"
485 | ],
486 | "authors": [
487 | {
488 | "name": "Qiang Xue",
489 | "email": "qiang.xue@gmail.com"
490 | }
491 | ],
492 | "description": "The Twitter Bootstrap extension for the Yii framework",
493 | "keywords": [
494 | "bootstrap",
495 | "yii2"
496 | ],
497 | "time": "2016-03-17 03:29:28"
498 | },
499 | {
500 | "name": "yiisoft/yii2-composer",
501 | "version": "2.0.4",
502 | "source": {
503 | "type": "git",
504 | "url": "https://github.com/yiisoft/yii2-composer.git",
505 | "reference": "7452fd908a5023b8bb5ea1b123a174ca080de464"
506 | },
507 | "dist": {
508 | "type": "zip",
509 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-composer/7452fd908a5023b8bb5ea1b123a174ca080de464.zip",
510 | "reference": "7452fd908a5023b8bb5ea1b123a174ca080de464",
511 | "shasum": ""
512 | },
513 | "require": {
514 | "composer-plugin-api": "^1.0"
515 | },
516 | "type": "composer-plugin",
517 | "extra": {
518 | "class": "yii\\composer\\Plugin",
519 | "branch-alias": {
520 | "dev-master": "2.0.x-dev"
521 | }
522 | },
523 | "autoload": {
524 | "psr-4": {
525 | "yii\\composer\\": ""
526 | }
527 | },
528 | "notification-url": "https://packagist.org/downloads/",
529 | "license": [
530 | "BSD-3-Clause"
531 | ],
532 | "authors": [
533 | {
534 | "name": "Qiang Xue",
535 | "email": "qiang.xue@gmail.com"
536 | }
537 | ],
538 | "description": "The composer plugin for Yii extension installer",
539 | "keywords": [
540 | "composer",
541 | "extension installer",
542 | "yii2"
543 | ],
544 | "time": "2016-02-06 00:49:24"
545 | },
546 | {
547 | "name": "yiisoft/yii2-swiftmailer",
548 | "version": "2.0.5",
549 | "source": {
550 | "type": "git",
551 | "url": "https://github.com/yiisoft/yii2-swiftmailer.git",
552 | "reference": "e2c6315caff30a9271a7afad4d684627721dc69a"
553 | },
554 | "dist": {
555 | "type": "zip",
556 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-swiftmailer/e2c6315caff30a9271a7afad4d684627721dc69a.zip",
557 | "reference": "e2c6315caff30a9271a7afad4d684627721dc69a",
558 | "shasum": ""
559 | },
560 | "require": {
561 | "swiftmailer/swiftmailer": "~5.0",
562 | "yiisoft/yii2": ">=2.0.4"
563 | },
564 | "type": "yii2-extension",
565 | "extra": {
566 | "branch-alias": {
567 | "dev-master": "2.0.x-dev"
568 | }
569 | },
570 | "autoload": {
571 | "psr-4": {
572 | "yii\\swiftmailer\\": ""
573 | }
574 | },
575 | "notification-url": "https://packagist.org/downloads/",
576 | "license": [
577 | "BSD-3-Clause"
578 | ],
579 | "authors": [
580 | {
581 | "name": "Paul Klimov",
582 | "email": "klimov.paul@gmail.com"
583 | }
584 | ],
585 | "description": "The SwiftMailer integration for the Yii framework",
586 | "keywords": [
587 | "email",
588 | "mail",
589 | "mailer",
590 | "swift",
591 | "swiftmailer",
592 | "yii2"
593 | ],
594 | "time": "2016-03-17 03:58:49"
595 | }
596 | ],
597 | "packages-dev": [
598 | {
599 | "name": "bower-asset/typeahead.js",
600 | "version": "v0.11.1",
601 | "source": {
602 | "type": "git",
603 | "url": "https://github.com/twitter/typeahead.js.git",
604 | "reference": "588440f66559714280628a4f9799f0c4eb880a4a"
605 | },
606 | "dist": {
607 | "type": "zip",
608 | "url": "https://api.github.com/repos/twitter/typeahead.js/zipball/588440f66559714280628a4f9799f0c4eb880a4a",
609 | "reference": "588440f66559714280628a4f9799f0c4eb880a4a",
610 | "shasum": ""
611 | },
612 | "require": {
613 | "bower-asset/jquery": ">=1.7"
614 | },
615 | "require-dev": {
616 | "bower-asset/jasmine-ajax": "~1.3.1",
617 | "bower-asset/jasmine-jquery": "~1.5.2",
618 | "bower-asset/jquery": "~1.7"
619 | },
620 | "type": "bower-asset-library",
621 | "extra": {
622 | "bower-asset-main": "dist/typeahead.bundle.js"
623 | }
624 | },
625 | {
626 | "name": "fzaninotto/faker",
627 | "version": "v1.6.0",
628 | "source": {
629 | "type": "git",
630 | "url": "https://github.com/fzaninotto/Faker.git",
631 | "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123"
632 | },
633 | "dist": {
634 | "type": "zip",
635 | "url": "https://packagist.phpcomposer.com/files/fzaninotto/Faker/44f9a286a04b80c76a4e5fb7aad8bb539b920123.zip",
636 | "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123",
637 | "shasum": ""
638 | },
639 | "require": {
640 | "php": "^5.3.3|^7.0"
641 | },
642 | "require-dev": {
643 | "ext-intl": "*",
644 | "phpunit/phpunit": "~4.0",
645 | "squizlabs/php_codesniffer": "~1.5"
646 | },
647 | "type": "library",
648 | "extra": {
649 | "branch-alias": []
650 | },
651 | "autoload": {
652 | "psr-4": {
653 | "Faker\\": "src/Faker/"
654 | }
655 | },
656 | "notification-url": "https://packagist.org/downloads/",
657 | "license": [
658 | "MIT"
659 | ],
660 | "authors": [
661 | {
662 | "name": "François Zaninotto"
663 | }
664 | ],
665 | "description": "Faker is a PHP library that generates fake data for you.",
666 | "keywords": [
667 | "data",
668 | "faker",
669 | "fixtures"
670 | ],
671 | "time": "2016-04-29 12:21:54"
672 | },
673 | {
674 | "name": "phpspec/php-diff",
675 | "version": "v1.1.0",
676 | "source": {
677 | "type": "git",
678 | "url": "https://github.com/phpspec/php-diff.git",
679 | "reference": "0464787bfa7cd13576c5a1e318709768798bec6a"
680 | },
681 | "dist": {
682 | "type": "zip",
683 | "url": "https://packagist.phpcomposer.com/files/phpspec/php-diff/0464787bfa7cd13576c5a1e318709768798bec6a.zip",
684 | "reference": "0464787bfa7cd13576c5a1e318709768798bec6a",
685 | "shasum": ""
686 | },
687 | "type": "library",
688 | "extra": {
689 | "branch-alias": {
690 | "dev-master": "1.0.x-dev"
691 | }
692 | },
693 | "autoload": {
694 | "psr-0": {
695 | "Diff": "lib/"
696 | }
697 | },
698 | "notification-url": "https://packagist.org/downloads/",
699 | "license": [
700 | "BSD-3-Clause"
701 | ],
702 | "authors": [
703 | {
704 | "name": "Chris Boulton",
705 | "homepage": "http://github.com/chrisboulton"
706 | }
707 | ],
708 | "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).",
709 | "time": "2016-04-07 12:29:16"
710 | },
711 | {
712 | "name": "yiisoft/yii2-codeception",
713 | "version": "2.0.5",
714 | "source": {
715 | "type": "git",
716 | "url": "https://github.com/yiisoft/yii2-codeception.git",
717 | "reference": "c916a36d09fc128b05a374e7922bc56854334d56"
718 | },
719 | "dist": {
720 | "type": "zip",
721 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-codeception/c916a36d09fc128b05a374e7922bc56854334d56.zip",
722 | "reference": "c916a36d09fc128b05a374e7922bc56854334d56",
723 | "shasum": ""
724 | },
725 | "require": {
726 | "yiisoft/yii2": ">=2.0.4"
727 | },
728 | "type": "yii2-extension",
729 | "extra": {
730 | "branch-alias": {
731 | "dev-master": "2.0.x-dev"
732 | }
733 | },
734 | "autoload": {
735 | "psr-4": {
736 | "yii\\codeception\\": ""
737 | }
738 | },
739 | "notification-url": "https://packagist.org/downloads/",
740 | "license": [
741 | "BSD-3-Clause"
742 | ],
743 | "authors": [
744 | {
745 | "name": "Mark Jebri",
746 | "email": "mark.github@yandex.ru"
747 | }
748 | ],
749 | "description": "The Codeception integration for the Yii framework",
750 | "keywords": [
751 | "codeception",
752 | "yii2"
753 | ],
754 | "time": "2016-03-17 03:41:26"
755 | },
756 | {
757 | "name": "yiisoft/yii2-debug",
758 | "version": "2.0.6",
759 | "source": {
760 | "type": "git",
761 | "url": "https://github.com/yiisoft/yii2-debug.git",
762 | "reference": "55ed2e853ed8050a34415f63a4da84f88a56f895"
763 | },
764 | "dist": {
765 | "type": "zip",
766 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-debug/55ed2e853ed8050a34415f63a4da84f88a56f895.zip",
767 | "reference": "55ed2e853ed8050a34415f63a4da84f88a56f895",
768 | "shasum": ""
769 | },
770 | "require": {
771 | "yiisoft/yii2": ">=2.0.4",
772 | "yiisoft/yii2-bootstrap": "*"
773 | },
774 | "type": "yii2-extension",
775 | "extra": {
776 | "branch-alias": {
777 | "dev-master": "2.0.x-dev"
778 | }
779 | },
780 | "autoload": {
781 | "psr-4": {
782 | "yii\\debug\\": ""
783 | }
784 | },
785 | "notification-url": "https://packagist.org/downloads/",
786 | "license": [
787 | "BSD-3-Clause"
788 | ],
789 | "authors": [
790 | {
791 | "name": "Qiang Xue",
792 | "email": "qiang.xue@gmail.com"
793 | }
794 | ],
795 | "description": "The debugger extension for the Yii framework",
796 | "keywords": [
797 | "debug",
798 | "debugger",
799 | "yii2"
800 | ],
801 | "time": "2016-03-17 03:50:19"
802 | },
803 | {
804 | "name": "yiisoft/yii2-faker",
805 | "version": "2.0.3",
806 | "source": {
807 | "type": "git",
808 | "url": "https://github.com/yiisoft/yii2-faker.git",
809 | "reference": "b88ca69ee226a3610b2c26c026c3203d7ac50f6c"
810 | },
811 | "dist": {
812 | "type": "zip",
813 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-faker/b88ca69ee226a3610b2c26c026c3203d7ac50f6c.zip",
814 | "reference": "b88ca69ee226a3610b2c26c026c3203d7ac50f6c",
815 | "shasum": ""
816 | },
817 | "require": {
818 | "fzaninotto/faker": "*",
819 | "yiisoft/yii2": "*"
820 | },
821 | "type": "yii2-extension",
822 | "extra": {
823 | "branch-alias": {
824 | "dev-master": "2.0.x-dev"
825 | }
826 | },
827 | "autoload": {
828 | "psr-4": {
829 | "yii\\faker\\": ""
830 | }
831 | },
832 | "notification-url": "https://packagist.org/downloads/",
833 | "license": [
834 | "BSD-3-Clause"
835 | ],
836 | "authors": [
837 | {
838 | "name": "Mark Jebri",
839 | "email": "mark.github@yandex.ru"
840 | }
841 | ],
842 | "description": "Fixture generator. The Faker integration for the Yii framework.",
843 | "keywords": [
844 | "Fixture",
845 | "faker",
846 | "yii2"
847 | ],
848 | "time": "2015-03-01 06:22:44"
849 | },
850 | {
851 | "name": "yiisoft/yii2-gii",
852 | "version": "2.0.5",
853 | "source": {
854 | "type": "git",
855 | "url": "https://github.com/yiisoft/yii2-gii.git",
856 | "reference": "1bd6df6804ca077ec022587905a0d43eb286f507"
857 | },
858 | "dist": {
859 | "type": "zip",
860 | "url": "https://packagist.phpcomposer.com/files/yiisoft/yii2-gii/1bd6df6804ca077ec022587905a0d43eb286f507.zip",
861 | "reference": "1bd6df6804ca077ec022587905a0d43eb286f507",
862 | "shasum": ""
863 | },
864 | "require": {
865 | "bower-asset/typeahead.js": "0.10.* | ~0.11.0",
866 | "phpspec/php-diff": ">=1.0.2",
867 | "yiisoft/yii2": ">=2.0.4",
868 | "yiisoft/yii2-bootstrap": "~2.0"
869 | },
870 | "type": "yii2-extension",
871 | "extra": {
872 | "branch-alias": {
873 | "dev-master": "2.0.x-dev"
874 | },
875 | "asset-installer-paths": {
876 | "npm-asset-library": "vendor/npm",
877 | "bower-asset-library": "vendor/bower"
878 | }
879 | },
880 | "autoload": {
881 | "psr-4": {
882 | "yii\\gii\\": ""
883 | }
884 | },
885 | "notification-url": "https://packagist.org/downloads/",
886 | "license": [
887 | "BSD-3-Clause"
888 | ],
889 | "authors": [
890 | {
891 | "name": "Qiang Xue",
892 | "email": "qiang.xue@gmail.com"
893 | }
894 | ],
895 | "description": "The Gii extension for the Yii framework",
896 | "keywords": [
897 | "code generator",
898 | "gii",
899 | "yii2"
900 | ],
901 | "time": "2016-03-18 14:09:46"
902 | }
903 | ],
904 | "aliases": [],
905 | "minimum-stability": "stable",
906 | "stability-flags": [],
907 | "prefer-stable": false,
908 | "prefer-lowest": false,
909 | "platform": {
910 | "php": ">=5.4.0"
911 | },
912 | "platform-dev": []
913 | }
914 |
--------------------------------------------------------------------------------