diff --git a/build/build b/build/build index 45f15bd..a6c7cc8 100755 --- a/build/build +++ b/build/build @@ -13,8 +13,9 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/../framework/yii/Yii.php'); -$id = 'yii-build'; -$basePath = __DIR__; - -$application = new yii\console\Application(array('id' => $id, 'basePath' => $basePath)); +$application = new yii\console\Application(array( + 'id' => 'yii-build', + 'basePath' => __DIR__, + 'controllerNamespace' => 'yii\build\controllers', +)); $application->run(); diff --git a/build/controllers/ClassmapController.php b/build/controllers/ClassmapController.php new file mode 100644 index 0000000..f9b9a85 --- /dev/null +++ b/build/controllers/ClassmapController.php @@ -0,0 +1,89 @@ + + * @since 2.0 + */ +class ClassmapController extends Controller +{ + public $defaultAction = 'create'; + + /** + * Creates a class map for the core Yii classes. + * @param string $root the root path of Yii framework. Defaults to YII_PATH. + * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. + */ + public function actionCreate($root = null, $mapFile = null) + { + if ($root === null) { + $root = YII_PATH; + } + $root = FileHelper::normalizePath($root); + if ($mapFile === null) { + $mapFile = YII_PATH . '/classes.php'; + } + $options = array( + 'filter' => function($path) { + if (is_file($path)) { + $file = basename($path); + if ($file[0] < 'A' || $file[0] > 'Z') { + return false; + } + } + return null; + }, + 'only' => array('.php'), + 'except' => array( + 'Yii.php', + 'YiiBase.php', + '/debug/', + '/console/', + '/test/', + ), + ); + $files = FileHelper::findFiles($root, $options); + $map = array(); + foreach ($files as $file) { + if (($pos = strpos($file, $root)) !== 0) { + die("Something wrong: $file"); + } + $path = str_replace('\\', '/', substr($file, strlen($root))); + $map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; + } + $map = implode("\n", $map); + $output = << array( + 'value' => 75, + ), +)); + +For further instructions refer to the guide (once it is finished) + + + + diff --git a/extensions/mutex/LICENSE.md b/extensions/mutex/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/mutex/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Yii Software LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/extensions/mutex/README.md b/extensions/mutex/README.md new file mode 100644 index 0000000..e3a697d --- /dev/null +++ b/extensions/mutex/README.md @@ -0,0 +1,44 @@ +Yii 2.0 Public Preview - Mutex Extension +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-mutex extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-mutex * +``` + +or add +``` +"yiisoft/yii2-mutex": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This component can be used to perform actions similar to the concept of [mutual exclusion](http://en.wikipedia.org/wiki/Mutual_exclusion). + +For concrete examples and advanced usage refer to the guide. + + + + diff --git a/extensions/smarty/LICENSE.md b/extensions/smarty/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/smarty/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Yii Software LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/extensions/smarty/README.md b/extensions/smarty/README.md new file mode 100644 index 0000000..45115ef --- /dev/null +++ b/extensions/smarty/README.md @@ -0,0 +1,65 @@ +Yii 2.0 Public Preview - Smarty View Renderer +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-smarty extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-smarty * +``` + +or add +```json +"yiisoft/yii2-smarty": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This extension has to be registered prior to usage. +To enable this view renderer add it to the $rendereres property of your view object. + +Example: +```php + array( + 'view' => array( + 'class' => 'yii\base\View', + 'viewRenderers' => array( + 'tpl' => array( + 'class' => 'yii\smarty\ViewRenderer', + //'cachePath' => '@runtime/Smarty/cache', + ), + ), + ), + ), +); +``` + +For further instructions refer to the related section in the guide. + + + + diff --git a/extensions/twig/LICENSE.md b/extensions/twig/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/twig/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Yii Software LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/extensions/twig/README.md b/extensions/twig/README.md new file mode 100644 index 0000000..037f0e9 --- /dev/null +++ b/extensions/twig/README.md @@ -0,0 +1,64 @@ +Yii 2.0 Public Preview - Twig View Renderer +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-twig extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-twig * +``` + +or add +``` +"yiisoft/yii2-twig": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This extension has to be registered prior to usage. +To enable this view renderer add it to the $rendereres property of your view object. + +Example: +```php + array( + 'view' => array( + 'class' => 'yii\base\View', + 'viewRenderers' => array( + 'twig' => array( + 'class' => 'yii\twig\ViewRenderer', + //'cachePath' => '@runtime/Twig/cache', + //'options' => array(), /* Array of twig options */ + ), + ), + ), + ), +); +``` + +For further instructions refer to the related section in the guide. + + diff --git a/framework/yii/classes.php b/framework/yii/classes.php index 9165ddd..5cd6e3b 100644 --- a/framework/yii/classes.php +++ b/framework/yii/classes.php @@ -1,237 +1,220 @@ YII_PATH . '/YiiBase.php', -'yii\debug\Module' => YII_PATH . '/debug/Module.php', -'yii\debug\controllers\DefaultController' => YII_PATH . '/debug/controllers/DefaultController.php', -'yii\debug\Toolbar' => YII_PATH . '/debug/Toolbar.php', -'yii\web\PageCache' => YII_PATH . '/web/PageCache.php', -'yii\web\CaptchaAction' => YII_PATH . '/web/CaptchaAction.php', -'yii\web\HttpException' => YII_PATH . '/web/HttpException.php', -'yii\web\Application' => YII_PATH . '/web/Application.php', -'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php', -'yii\web\UserEvent' => YII_PATH . '/web/UserEvent.php', -'yii\web\VerbFilter' => YII_PATH . '/web/VerbFilter.php', -'yii\web\JsExpression' => YII_PATH . '/web/JsExpression.php', -'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php', -'yii\web\ResponseFormatter' => YII_PATH . '/web/ResponseFormatter.php', -'yii\web\AccessRule' => YII_PATH . '/web/AccessRule.php', -'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php', -'yii\web\Session' => YII_PATH . '/web/Session.php', -'yii\web\AccessControl' => YII_PATH . '/web/AccessControl.php', -'yii\web\DbSession' => YII_PATH . '/web/DbSession.php', -'yii\web\IAssetConverter' => YII_PATH . '/web/IAssetConverter.php', -'yii\web\Identity' => YII_PATH . '/web/Identity.php', -'yii\web\Controller' => YII_PATH . '/web/Controller.php', -'yii\web\User' => YII_PATH . '/web/User.php', -'yii\web\HttpCache' => YII_PATH . '/web/HttpCache.php', -'yii\web\UrlManager' => YII_PATH . '/web/UrlManager.php', -'yii\web\Request' => YII_PATH . '/web/Request.php', -'yii\web\Cookie' => YII_PATH . '/web/Cookie.php', -'yii\web\UploadedFile' => YII_PATH . '/web/UploadedFile.php', -'yii\web\ResponseEvent' => YII_PATH . '/web/ResponseEvent.php', -'yii\web\UrlRule' => YII_PATH . '/web/UrlRule.php', -'yii\web\XmlResponseFormatter' => YII_PATH . '/web/XmlResponseFormatter.php', -'yii\web\Response' => YII_PATH . '/web/Response.php', -'yii\web\SessionIterator' => YII_PATH . '/web/SessionIterator.php', -'yii\web\AssetBundle' => YII_PATH . '/web/AssetBundle.php', -'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php', -'yii\web\HeaderCollection' => YII_PATH . '/web/HeaderCollection.php', -'yii\log\Target' => YII_PATH . '/log/Target.php', -'yii\log\DebugTarget' => YII_PATH . '/log/DebugTarget.php', -'yii\log\Logger' => YII_PATH . '/log/Logger.php', -'yii\log\EmailTarget' => YII_PATH . '/log/EmailTarget.php', -'yii\log\DbTarget' => YII_PATH . '/log/DbTarget.php', -'yii\log\FileTarget' => YII_PATH . '/log/FileTarget.php', -'yii\widgets\ActiveField' => YII_PATH . '/widgets/ActiveField.php', -'yii\widgets\Captcha' => YII_PATH . '/widgets/Captcha.php', -'yii\widgets\ListPager' => YII_PATH . '/widgets/ListPager.php', -'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php', -'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php', -'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php', -'yii\widgets\ActiveForm' => YII_PATH . '/widgets/ActiveForm.php', -'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php', -'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php', -'yii\widgets\Block' => YII_PATH . '/widgets/Block.php', -'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php', -'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php', -'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php', -'yii\rbac\Item' => YII_PATH . '/rbac/Item.php', -'yii\rbac\Manager' => YII_PATH . '/rbac/Manager.php', -'yii\rbac\Assignment' => YII_PATH . '/rbac/Assignment.php', -'yii\rbac\DbManager' => YII_PATH . '/rbac/DbManager.php', -'yii\behaviors\AutoTimestamp' => YII_PATH . '/behaviors/AutoTimestamp.php', -'yii\caching\Cache' => YII_PATH . '/caching/Cache.php', -'yii\caching\XCache' => YII_PATH . '/caching/XCache.php', -'yii\caching\DbDependency' => YII_PATH . '/caching/DbDependency.php', -'yii\caching\DbCache' => YII_PATH . '/caching/DbCache.php', -'yii\caching\Dependency' => YII_PATH . '/caching/Dependency.php', -'yii\caching\ApcCache' => YII_PATH . '/caching/ApcCache.php', -'yii\caching\MemCacheServer' => YII_PATH . '/caching/MemCacheServer.php', -'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php', -'yii\caching\MemCache' => YII_PATH . '/caching/MemCache.php', -'yii\caching\GroupDependency' => YII_PATH . '/caching/GroupDependency.php', -'yii\caching\ChainedDependency' => YII_PATH . '/caching/ChainedDependency.php', -'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php', -'yii\caching\FileCache' => YII_PATH . '/caching/FileCache.php', -'yii\caching\FileDependency' => YII_PATH . '/caching/FileDependency.php', -'yii\caching\ExpressionDependency' => YII_PATH . '/caching/ExpressionDependency.php', -'yii\caching\DummyCache' => YII_PATH . '/caching/DummyCache.php', -'yii\i18n\Formatter' => YII_PATH . '/i18n/Formatter.php', -'yii\i18n\GettextFile' => YII_PATH . '/i18n/GettextFile.php', -'yii\i18n\I18N' => YII_PATH . '/i18n/I18N.php', -'yii\i18n\PhpMessageSource' => YII_PATH . '/i18n/PhpMessageSource.php', -'yii\i18n\GettextPoFile' => YII_PATH . '/i18n/GettextPoFile.php', -'yii\i18n\data\plurals' => YII_PATH . '/i18n/data/plurals.php', -'yii\i18n\DbMessageSource' => YII_PATH . '/i18n/DbMessageSource.php', -'yii\i18n\GettextMessageSource' => YII_PATH . '/i18n/GettextMessageSource.php', -'yii\i18n\MessageSource' => YII_PATH . '/i18n/MessageSource.php', -'yii\i18n\MissingTranslationEvent' => YII_PATH . '/i18n/MissingTranslationEvent.php', -'yii\i18n\GettextMoFile' => YII_PATH . '/i18n/GettextMoFile.php', -'yii\data\Pagination' => YII_PATH . '/data/Pagination.php', -'yii\data\Sort' => YII_PATH . '/data/Sort.php', -'yii\validators\RequiredValidator' => YII_PATH . '/validators/RequiredValidator.php', -'yii\validators\NumberValidator' => YII_PATH . '/validators/NumberValidator.php', -'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php', -'yii\validators\UniqueValidator' => YII_PATH . '/validators/UniqueValidator.php', -'yii\validators\StringValidator' => YII_PATH . '/validators/StringValidator.php', -'yii\validators\UrlValidator' => YII_PATH . '/validators/UrlValidator.php', -'yii\validators\EmailValidator' => YII_PATH . '/validators/EmailValidator.php', -'yii\validators\CaptchaValidator' => YII_PATH . '/validators/CaptchaValidator.php', -'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php', -'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php', -'yii\validators\RangeValidator' => YII_PATH . '/validators/RangeValidator.php', -'yii\validators\Validator' => YII_PATH . '/validators/Validator.php', -'yii\validators\FilterValidator' => YII_PATH . '/validators/FilterValidator.php', -'yii\validators\FileValidator' => YII_PATH . '/validators/FileValidator.php', -'yii\validators\RegularExpressionValidator' => YII_PATH . '/validators/RegularExpressionValidator.php', -'yii\validators\InlineValidator' => YII_PATH . '/validators/InlineValidator.php', -'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php', -'yii\validators\ExistValidator' => YII_PATH . '/validators/ExistValidator.php', -'yii\base\Formatter' => YII_PATH . '/base/Formatter.php', -'yii\base\UnknownMethodException' => YII_PATH . '/base/UnknownMethodException.php', -'yii\base\Application' => YII_PATH . '/base/Application.php', -'yii\base\ErrorException' => YII_PATH . '/base/ErrorException.php', -'yii\base\ActionEvent' => YII_PATH . '/base/ActionEvent.php', -'yii\base\UserException' => YII_PATH . '/base/UserException.php', -'yii\base\Module' => YII_PATH . '/base/Module.php', -'yii\base\ViewEvent' => YII_PATH . '/base/ViewEvent.php', -'yii\base\Action' => YII_PATH . '/base/Action.php', -'yii\base\ViewRenderer' => YII_PATH . '/base/ViewRenderer.php', -'yii\base\ActionFilter' => YII_PATH . '/base/ActionFilter.php', -'yii\base\Theme' => YII_PATH . '/base/Theme.php', -'yii\base\Controller' => YII_PATH . '/base/Controller.php', -'yii\base\View' => YII_PATH . '/base/View.php', -'yii\base\UnknownClassException' => YII_PATH . '/base/UnknownClassException.php', -'yii\base\ErrorHandler' => YII_PATH . '/base/ErrorHandler.php', -'yii\base\Request' => YII_PATH . '/base/Request.php', -'yii\base\Object' => YII_PATH . '/base/Object.php', -'yii\base\Behavior' => YII_PATH . '/base/Behavior.php', -'yii\base\Exception' => YII_PATH . '/base/Exception.php', -'yii\base\Event' => YII_PATH . '/base/Event.php', -'yii\base\ModelEvent' => YII_PATH . '/base/ModelEvent.php', -'yii\base\InvalidConfigException' => YII_PATH . '/base/InvalidConfigException.php', -'yii\base\Component' => YII_PATH . '/base/Component.php', -'yii\base\Response' => YII_PATH . '/base/Response.php', -'yii\base\InvalidParamException' => YII_PATH . '/base/InvalidParamException.php', -'yii\base\Model' => YII_PATH . '/base/Model.php', -'yii\base\UnknownPropertyException' => YII_PATH . '/base/UnknownPropertyException.php', -'yii\base\Arrayable' => YII_PATH . '/base/Arrayable.php', -'yii\base\InvalidRouteException' => YII_PATH . '/base/InvalidRouteException.php', -'yii\base\InlineAction' => YII_PATH . '/base/InlineAction.php', -'yii\base\NotSupportedException' => YII_PATH . '/base/NotSupportedException.php', -'yii\base\Widget' => YII_PATH . '/base/Widget.php', -'yii\base\InvalidCallException' => YII_PATH . '/base/InvalidCallException.php', -'yii\helpers\VarDumper' => YII_PATH . '/helpers/VarDumper.php', -'yii\helpers\FileHelper' => YII_PATH . '/helpers/FileHelper.php', -'yii\helpers\Console' => YII_PATH . '/helpers/Console.php', -'yii\helpers\HtmlPurifier' => YII_PATH . '/helpers/HtmlPurifier.php', -'yii\helpers\SecurityHelper' => YII_PATH . '/helpers/SecurityHelper.php', -'yii\helpers\Inflector' => YII_PATH . '/helpers/Inflector.php', -'yii\helpers\Markdown' => YII_PATH . '/helpers/Markdown.php', -'yii\helpers\Html' => YII_PATH . '/helpers/Html.php', -'yii\helpers\base\VarDumper' => YII_PATH . '/helpers/base/VarDumper.php', -'yii\helpers\base\FileHelper' => YII_PATH . '/helpers/base/FileHelper.php', -'yii\helpers\base\Console' => YII_PATH . '/helpers/base/Console.php', -'yii\helpers\base\HtmlPurifier' => YII_PATH . '/helpers/base/HtmlPurifier.php', -'yii\helpers\base\SecurityHelper' => YII_PATH . '/helpers/base/SecurityHelper.php', -'yii\helpers\base\Inflector' => YII_PATH . '/helpers/base/Inflector.php', -'yii\helpers\base\Markdown' => YII_PATH . '/helpers/base/Markdown.php', -'yii\helpers\base\Html' => YII_PATH . '/helpers/base/Html.php', -'yii\helpers\base\StringHelper' => YII_PATH . '/helpers/base/StringHelper.php', -'yii\helpers\base\Json' => YII_PATH . '/helpers/base/Json.php', -'yii\helpers\base\ArrayHelper' => YII_PATH . '/helpers/base/ArrayHelper.php', -'yii\helpers\StringHelper' => YII_PATH . '/helpers/StringHelper.php', -'yii\helpers\Json' => YII_PATH . '/helpers/Json.php', -'yii\helpers\ArrayHelper' => YII_PATH . '/helpers/ArrayHelper.php', -'yii\bootstrap\Collapse' => YII_PATH . '/bootstrap/Collapse.php', -'yii\bootstrap\Progress' => YII_PATH . '/bootstrap/Progress.php', -'yii\bootstrap\Dropdown' => YII_PATH . '/bootstrap/Dropdown.php', -'yii\bootstrap\Alert' => YII_PATH . '/bootstrap/Alert.php', -'yii\bootstrap\Carousel' => YII_PATH . '/bootstrap/Carousel.php', -'yii\bootstrap\NavBar' => YII_PATH . '/bootstrap/NavBar.php', -'yii\bootstrap\Button' => YII_PATH . '/bootstrap/Button.php', -'yii\bootstrap\Modal' => YII_PATH . '/bootstrap/Modal.php', -'yii\bootstrap\TypeAhead' => YII_PATH . '/bootstrap/TypeAhead.php', -'yii\bootstrap\ButtonDropdown' => YII_PATH . '/bootstrap/ButtonDropdown.php', -'yii\bootstrap\ButtonGroup' => YII_PATH . '/bootstrap/ButtonGroup.php', -'yii\bootstrap\Nav' => YII_PATH . '/bootstrap/Nav.php', -'yii\bootstrap\Widget' => YII_PATH . '/bootstrap/Widget.php', -'yii\bootstrap\Tabs' => YII_PATH . '/bootstrap/Tabs.php', -'yii\jui\DatePicker' => YII_PATH . '/jui/DatePicker.php', -'yii\jui\Accordion' => YII_PATH . '/jui/Accordion.php', -'yii\jui\Spinner' => YII_PATH . '/jui/Spinner.php', -'yii\jui\InputWidget' => YII_PATH . '/jui/InputWidget.php', -'yii\jui\Droppable' => YII_PATH . '/jui/Droppable.php', -'yii\jui\ProgressBar' => YII_PATH . '/jui/ProgressBar.php', -'yii\jui\Draggable' => YII_PATH . '/jui/Draggable.php', -'yii\jui\AutoComplete' => YII_PATH . '/jui/AutoComplete.php', -'yii\jui\Dialog' => YII_PATH . '/jui/Dialog.php', -'yii\jui\Selectable' => YII_PATH . '/jui/Selectable.php', -'yii\jui\assets' => YII_PATH . '/jui/assets.php', -'yii\jui\Widget' => YII_PATH . '/jui/Widget.php', -'yii\jui\Sortable' => YII_PATH . '/jui/Sortable.php', -'yii\jui\Menu' => YII_PATH . '/jui/Menu.php', -'yii\jui\Resizable' => YII_PATH . '/jui/Resizable.php', -'yii\jui\Tabs' => YII_PATH . '/jui/Tabs.php', -'yii\console\Application' => YII_PATH . '/console/Application.php', -'yii\console\Controller' => YII_PATH . '/console/Controller.php', -'yii\console\Request' => YII_PATH . '/console/Request.php', -'yii\console\Exception' => YII_PATH . '/console/Exception.php', -'yii\console\controllers\AssetController' => YII_PATH . '/console/controllers/AssetController.php', -'yii\console\controllers\MessageController' => YII_PATH . '/console/controllers/MessageController.php', -'yii\console\controllers\MigrateController' => YII_PATH . '/console/controllers/MigrateController.php', -'yii\console\controllers\HelpController' => YII_PATH . '/console/controllers/HelpController.php', -'yii\console\controllers\CacheController' => YII_PATH . '/console/controllers/CacheController.php', -'yii\console\Response' => YII_PATH . '/console/Response.php', -'yii\db\StaleObjectException' => YII_PATH . '/db/StaleObjectException.php', -'yii\db\Connection' => YII_PATH . '/db/Connection.php', -'yii\db\Expression' => YII_PATH . '/db/Expression.php', -'yii\db\TableSchema' => YII_PATH . '/db/TableSchema.php', -'yii\db\Transaction' => YII_PATH . '/db/Transaction.php', -'yii\db\QueryBuilder' => YII_PATH . '/db/QueryBuilder.php', -'yii\db\Command' => YII_PATH . '/db/Command.php', -'yii\db\Schema' => YII_PATH . '/db/Schema.php', -'yii\db\ActiveRelation' => YII_PATH . '/db/ActiveRelation.php', -'yii\db\pgsql\QueryBuilder' => YII_PATH . '/db/pgsql/QueryBuilder.php', -'yii\db\pgsql\Schema' => YII_PATH . '/db/pgsql/Schema.php', -'yii\db\Exception' => YII_PATH . '/db/Exception.php', -'yii\db\sqlite\QueryBuilder' => YII_PATH . '/db/sqlite/QueryBuilder.php', -'yii\db\sqlite\Schema' => YII_PATH . '/db/sqlite/Schema.php', -'yii\db\ColumnSchema' => YII_PATH . '/db/ColumnSchema.php', -'yii\db\mysql\QueryBuilder' => YII_PATH . '/db/mysql/QueryBuilder.php', -'yii\db\mysql\Schema' => YII_PATH . '/db/mysql/Schema.php', -'yii\db\DataReader' => YII_PATH . '/db/DataReader.php', -'yii\db\ActiveQuery' => YII_PATH . '/db/ActiveQuery.php', -'yii\db\mssql\PDO' => YII_PATH . '/db/mssql/PDO.php', -'yii\db\mssql\QueryBuilder' => YII_PATH . '/db/mssql/QueryBuilder.php', -'yii\db\mssql\Schema' => YII_PATH . '/db/mssql/Schema.php', -'yii\db\mssql\SqlsrvPDO' => YII_PATH . '/db/mssql/SqlsrvPDO.php', -'yii\db\Migration' => YII_PATH . '/db/Migration.php', -'yii\db\Query' => YII_PATH . '/db/Query.php', -'yii\db\ActiveRecord' => YII_PATH . '/db/ActiveRecord.php', + 'yii\base\Action' => YII_PATH . '/base/Action.php', + 'yii\base\ActionEvent' => YII_PATH . '/base/ActionEvent.php', + 'yii\base\ActionFilter' => YII_PATH . '/base/ActionFilter.php', + 'yii\base\Application' => YII_PATH . '/base/Application.php', + 'yii\base\Arrayable' => YII_PATH . '/base/Arrayable.php', + 'yii\base\Behavior' => YII_PATH . '/base/Behavior.php', + 'yii\base\Component' => YII_PATH . '/base/Component.php', + 'yii\base\Controller' => YII_PATH . '/base/Controller.php', + 'yii\base\ErrorException' => YII_PATH . '/base/ErrorException.php', + 'yii\base\ErrorHandler' => YII_PATH . '/base/ErrorHandler.php', + 'yii\base\Event' => YII_PATH . '/base/Event.php', + 'yii\base\Exception' => YII_PATH . '/base/Exception.php', + 'yii\base\Formatter' => YII_PATH . '/base/Formatter.php', + 'yii\base\InlineAction' => YII_PATH . '/base/InlineAction.php', + 'yii\base\InvalidCallException' => YII_PATH . '/base/InvalidCallException.php', + 'yii\base\InvalidConfigException' => YII_PATH . '/base/InvalidConfigException.php', + 'yii\base\InvalidParamException' => YII_PATH . '/base/InvalidParamException.php', + 'yii\base\InvalidRouteException' => YII_PATH . '/base/InvalidRouteException.php', + 'yii\base\Model' => YII_PATH . '/base/Model.php', + 'yii\base\ModelEvent' => YII_PATH . '/base/ModelEvent.php', + 'yii\base\Module' => YII_PATH . '/base/Module.php', + 'yii\base\NotSupportedException' => YII_PATH . '/base/NotSupportedException.php', + 'yii\base\Object' => YII_PATH . '/base/Object.php', + 'yii\base\Request' => YII_PATH . '/base/Request.php', + 'yii\base\Response' => YII_PATH . '/base/Response.php', + 'yii\base\Theme' => YII_PATH . '/base/Theme.php', + 'yii\base\UnknownClassException' => YII_PATH . '/base/UnknownClassException.php', + 'yii\base\UnknownMethodException' => YII_PATH . '/base/UnknownMethodException.php', + 'yii\base\UnknownPropertyException' => YII_PATH . '/base/UnknownPropertyException.php', + 'yii\base\UserException' => YII_PATH . '/base/UserException.php', + 'yii\base\View' => YII_PATH . '/base/View.php', + 'yii\base\ViewEvent' => YII_PATH . '/base/ViewEvent.php', + 'yii\base\ViewRenderer' => YII_PATH . '/base/ViewRenderer.php', + 'yii\base\Widget' => YII_PATH . '/base/Widget.php', + 'yii\behaviors\AutoTimestamp' => YII_PATH . '/behaviors/AutoTimestamp.php', + 'yii\bootstrap\Alert' => YII_PATH . '/bootstrap/Alert.php', + 'yii\bootstrap\Button' => YII_PATH . '/bootstrap/Button.php', + 'yii\bootstrap\ButtonDropdown' => YII_PATH . '/bootstrap/ButtonDropdown.php', + 'yii\bootstrap\ButtonGroup' => YII_PATH . '/bootstrap/ButtonGroup.php', + 'yii\bootstrap\Carousel' => YII_PATH . '/bootstrap/Carousel.php', + 'yii\bootstrap\Collapse' => YII_PATH . '/bootstrap/Collapse.php', + 'yii\bootstrap\Dropdown' => YII_PATH . '/bootstrap/Dropdown.php', + 'yii\bootstrap\Modal' => YII_PATH . '/bootstrap/Modal.php', + 'yii\bootstrap\Nav' => YII_PATH . '/bootstrap/Nav.php', + 'yii\bootstrap\NavBar' => YII_PATH . '/bootstrap/NavBar.php', + 'yii\bootstrap\Progress' => YII_PATH . '/bootstrap/Progress.php', + 'yii\bootstrap\Tabs' => YII_PATH . '/bootstrap/Tabs.php', + 'yii\bootstrap\TypeAhead' => YII_PATH . '/bootstrap/TypeAhead.php', + 'yii\bootstrap\Widget' => YII_PATH . '/bootstrap/Widget.php', + 'yii\caching\ApcCache' => YII_PATH . '/caching/ApcCache.php', + 'yii\caching\Cache' => YII_PATH . '/caching/Cache.php', + 'yii\caching\ChainedDependency' => YII_PATH . '/caching/ChainedDependency.php', + 'yii\caching\DbCache' => YII_PATH . '/caching/DbCache.php', + 'yii\caching\DbDependency' => YII_PATH . '/caching/DbDependency.php', + 'yii\caching\Dependency' => YII_PATH . '/caching/Dependency.php', + 'yii\caching\DummyCache' => YII_PATH . '/caching/DummyCache.php', + 'yii\caching\ExpressionDependency' => YII_PATH . '/caching/ExpressionDependency.php', + 'yii\caching\FileCache' => YII_PATH . '/caching/FileCache.php', + 'yii\caching\FileDependency' => YII_PATH . '/caching/FileDependency.php', + 'yii\caching\GroupDependency' => YII_PATH . '/caching/GroupDependency.php', + 'yii\caching\MemCache' => YII_PATH . '/caching/MemCache.php', + 'yii\caching\MemCacheServer' => YII_PATH . '/caching/MemCacheServer.php', + 'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php', + 'yii\caching\XCache' => YII_PATH . '/caching/XCache.php', + 'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php', + 'yii\data\ActiveDataProvider' => YII_PATH . '/data/ActiveDataProvider.php', + 'yii\data\ArrayDataProvider' => YII_PATH . '/data/ArrayDataProvider.php', + 'yii\data\DataProvider' => YII_PATH . '/data/DataProvider.php', + 'yii\data\IDataProvider' => YII_PATH . '/data/IDataProvider.php', + 'yii\data\Pagination' => YII_PATH . '/data/Pagination.php', + 'yii\data\Sort' => YII_PATH . '/data/Sort.php', + 'yii\db\ActiveQuery' => YII_PATH . '/db/ActiveQuery.php', + 'yii\db\ActiveRecord' => YII_PATH . '/db/ActiveRecord.php', + 'yii\db\ActiveRelation' => YII_PATH . '/db/ActiveRelation.php', + 'yii\db\ColumnSchema' => YII_PATH . '/db/ColumnSchema.php', + 'yii\db\Command' => YII_PATH . '/db/Command.php', + 'yii\db\Connection' => YII_PATH . '/db/Connection.php', + 'yii\db\DataReader' => YII_PATH . '/db/DataReader.php', + 'yii\db\Exception' => YII_PATH . '/db/Exception.php', + 'yii\db\Expression' => YII_PATH . '/db/Expression.php', + 'yii\db\Migration' => YII_PATH . '/db/Migration.php', + 'yii\db\mssql\PDO' => YII_PATH . '/db/mssql/PDO.php', + 'yii\db\mssql\QueryBuilder' => YII_PATH . '/db/mssql/QueryBuilder.php', + 'yii\db\mssql\Schema' => YII_PATH . '/db/mssql/Schema.php', + 'yii\db\mssql\SqlsrvPDO' => YII_PATH . '/db/mssql/SqlsrvPDO.php', + 'yii\db\mysql\QueryBuilder' => YII_PATH . '/db/mysql/QueryBuilder.php', + 'yii\db\mysql\Schema' => YII_PATH . '/db/mysql/Schema.php', + 'yii\db\pgsql\QueryBuilder' => YII_PATH . '/db/pgsql/QueryBuilder.php', + 'yii\db\pgsql\Schema' => YII_PATH . '/db/pgsql/Schema.php', + 'yii\db\Query' => YII_PATH . '/db/Query.php', + 'yii\db\QueryBuilder' => YII_PATH . '/db/QueryBuilder.php', + 'yii\db\Schema' => YII_PATH . '/db/Schema.php', + 'yii\db\sqlite\QueryBuilder' => YII_PATH . '/db/sqlite/QueryBuilder.php', + 'yii\db\sqlite\Schema' => YII_PATH . '/db/sqlite/Schema.php', + 'yii\db\StaleObjectException' => YII_PATH . '/db/StaleObjectException.php', + 'yii\db\TableSchema' => YII_PATH . '/db/TableSchema.php', + 'yii\db\Transaction' => YII_PATH . '/db/Transaction.php', + 'yii\helpers\ArrayHelper' => YII_PATH . '/helpers/ArrayHelper.php', + 'yii\helpers\base\ArrayHelper' => YII_PATH . '/helpers/base/ArrayHelper.php', + 'yii\helpers\base\Console' => YII_PATH . '/helpers/base/Console.php', + 'yii\helpers\base\FileHelper' => YII_PATH . '/helpers/base/FileHelper.php', + 'yii\helpers\base\Html' => YII_PATH . '/helpers/base/Html.php', + 'yii\helpers\base\HtmlPurifier' => YII_PATH . '/helpers/base/HtmlPurifier.php', + 'yii\helpers\base\Inflector' => YII_PATH . '/helpers/base/Inflector.php', + 'yii\helpers\base\Json' => YII_PATH . '/helpers/base/Json.php', + 'yii\helpers\base\Markdown' => YII_PATH . '/helpers/base/Markdown.php', + 'yii\helpers\base\SecurityHelper' => YII_PATH . '/helpers/base/SecurityHelper.php', + 'yii\helpers\base\StringHelper' => YII_PATH . '/helpers/base/StringHelper.php', + 'yii\helpers\base\VarDumper' => YII_PATH . '/helpers/base/VarDumper.php', + 'yii\helpers\Console' => YII_PATH . '/helpers/Console.php', + 'yii\helpers\FileHelper' => YII_PATH . '/helpers/FileHelper.php', + 'yii\helpers\Html' => YII_PATH . '/helpers/Html.php', + 'yii\helpers\HtmlPurifier' => YII_PATH . '/helpers/HtmlPurifier.php', + 'yii\helpers\Inflector' => YII_PATH . '/helpers/Inflector.php', + 'yii\helpers\Json' => YII_PATH . '/helpers/Json.php', + 'yii\helpers\Markdown' => YII_PATH . '/helpers/Markdown.php', + 'yii\helpers\SecurityHelper' => YII_PATH . '/helpers/SecurityHelper.php', + 'yii\helpers\StringHelper' => YII_PATH . '/helpers/StringHelper.php', + 'yii\helpers\VarDumper' => YII_PATH . '/helpers/VarDumper.php', + 'yii\i18n\DbMessageSource' => YII_PATH . '/i18n/DbMessageSource.php', + 'yii\i18n\Formatter' => YII_PATH . '/i18n/Formatter.php', + 'yii\i18n\GettextFile' => YII_PATH . '/i18n/GettextFile.php', + 'yii\i18n\GettextMessageSource' => YII_PATH . '/i18n/GettextMessageSource.php', + 'yii\i18n\GettextMoFile' => YII_PATH . '/i18n/GettextMoFile.php', + 'yii\i18n\GettextPoFile' => YII_PATH . '/i18n/GettextPoFile.php', + 'yii\i18n\I18N' => YII_PATH . '/i18n/I18N.php', + 'yii\i18n\MessageSource' => YII_PATH . '/i18n/MessageSource.php', + 'yii\i18n\MissingTranslationEvent' => YII_PATH . '/i18n/MissingTranslationEvent.php', + 'yii\i18n\PhpMessageSource' => YII_PATH . '/i18n/PhpMessageSource.php', + 'yii\log\DbTarget' => YII_PATH . '/log/DbTarget.php', + 'yii\log\EmailTarget' => YII_PATH . '/log/EmailTarget.php', + 'yii\log\FileTarget' => YII_PATH . '/log/FileTarget.php', + 'yii\log\Logger' => YII_PATH . '/log/Logger.php', + 'yii\log\Target' => YII_PATH . '/log/Target.php', + 'yii\rbac\Assignment' => YII_PATH . '/rbac/Assignment.php', + 'yii\rbac\DbManager' => YII_PATH . '/rbac/DbManager.php', + 'yii\rbac\Item' => YII_PATH . '/rbac/Item.php', + 'yii\rbac\Manager' => YII_PATH . '/rbac/Manager.php', + 'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php', + 'yii\requirements\YiiRequirementChecker' => YII_PATH . '/requirements/YiiRequirementChecker.php', + 'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php', + 'yii\validators\CaptchaValidator' => YII_PATH . '/validators/CaptchaValidator.php', + 'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php', + 'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php', + 'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php', + 'yii\validators\EmailValidator' => YII_PATH . '/validators/EmailValidator.php', + 'yii\validators\ExistValidator' => YII_PATH . '/validators/ExistValidator.php', + 'yii\validators\FileValidator' => YII_PATH . '/validators/FileValidator.php', + 'yii\validators\FilterValidator' => YII_PATH . '/validators/FilterValidator.php', + 'yii\validators\InlineValidator' => YII_PATH . '/validators/InlineValidator.php', + 'yii\validators\NumberValidator' => YII_PATH . '/validators/NumberValidator.php', + 'yii\validators\RangeValidator' => YII_PATH . '/validators/RangeValidator.php', + 'yii\validators\RegularExpressionValidator' => YII_PATH . '/validators/RegularExpressionValidator.php', + 'yii\validators\RequiredValidator' => YII_PATH . '/validators/RequiredValidator.php', + 'yii\validators\StringValidator' => YII_PATH . '/validators/StringValidator.php', + 'yii\validators\UniqueValidator' => YII_PATH . '/validators/UniqueValidator.php', + 'yii\validators\UrlValidator' => YII_PATH . '/validators/UrlValidator.php', + 'yii\validators\Validator' => YII_PATH . '/validators/Validator.php', + 'yii\web\AccessControl' => YII_PATH . '/web/AccessControl.php', + 'yii\web\AccessRule' => YII_PATH . '/web/AccessRule.php', + 'yii\web\Application' => YII_PATH . '/web/Application.php', + 'yii\web\AssetBundle' => YII_PATH . '/web/AssetBundle.php', + 'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php', + 'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php', + 'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php', + 'yii\web\CaptchaAction' => YII_PATH . '/web/CaptchaAction.php', + 'yii\web\Controller' => YII_PATH . '/web/Controller.php', + 'yii\web\Cookie' => YII_PATH . '/web/Cookie.php', + 'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php', + 'yii\web\DbSession' => YII_PATH . '/web/DbSession.php', + 'yii\web\HeaderCollection' => YII_PATH . '/web/HeaderCollection.php', + 'yii\web\HttpCache' => YII_PATH . '/web/HttpCache.php', + 'yii\web\HttpException' => YII_PATH . '/web/HttpException.php', + 'yii\web\IAssetConverter' => YII_PATH . '/web/IAssetConverter.php', + 'yii\web\Identity' => YII_PATH . '/web/Identity.php', + 'yii\web\JsExpression' => YII_PATH . '/web/JsExpression.php', + 'yii\web\PageCache' => YII_PATH . '/web/PageCache.php', + 'yii\web\Request' => YII_PATH . '/web/Request.php', + 'yii\web\Response' => YII_PATH . '/web/Response.php', + 'yii\web\ResponseEvent' => YII_PATH . '/web/ResponseEvent.php', + 'yii\web\ResponseFormatter' => YII_PATH . '/web/ResponseFormatter.php', + 'yii\web\Session' => YII_PATH . '/web/Session.php', + 'yii\web\SessionIterator' => YII_PATH . '/web/SessionIterator.php', + 'yii\web\UploadedFile' => YII_PATH . '/web/UploadedFile.php', + 'yii\web\UrlManager' => YII_PATH . '/web/UrlManager.php', + 'yii\web\UrlRule' => YII_PATH . '/web/UrlRule.php', + 'yii\web\User' => YII_PATH . '/web/User.php', + 'yii\web\UserEvent' => YII_PATH . '/web/UserEvent.php', + 'yii\web\VerbFilter' => YII_PATH . '/web/VerbFilter.php', + 'yii\web\XmlResponseFormatter' => YII_PATH . '/web/XmlResponseFormatter.php', + 'yii\widgets\ActiveField' => YII_PATH . '/widgets/ActiveField.php', + 'yii\widgets\ActiveForm' => YII_PATH . '/widgets/ActiveForm.php', + 'yii\widgets\BaseListView' => YII_PATH . '/widgets/BaseListView.php', + 'yii\widgets\Block' => YII_PATH . '/widgets/Block.php', + 'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php', + 'yii\widgets\Captcha' => YII_PATH . '/widgets/Captcha.php', + 'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php', + 'yii\widgets\DetailView' => YII_PATH . '/widgets/DetailView.php', + 'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php', + 'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php', + 'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php', + 'yii\widgets\ListPager' => YII_PATH . '/widgets/ListPager.php', + 'yii\widgets\ListView' => YII_PATH . '/widgets/ListView.php', + 'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php', + 'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php', + 'yii\widgets\Spaceless' => YII_PATH . '/widgets/Spaceless.php', ); diff --git a/framework/yii/db/Query.php b/framework/yii/db/Query.php index 74633f7..f1eb7a3 100644 --- a/framework/yii/db/Query.php +++ b/framework/yii/db/Query.php @@ -130,6 +130,13 @@ class Query extends Component * For example, `array(':name' => 'Dan', ':age' => 31)`. */ public $params; + /** + * @var string|callable $column the name of the column by which the query results should be indexed by. + * This can also be a callable (e.g. anonymous function) that returns the index value based on the given + * row data. For more details, see [[indexBy()]]. This property is only used by [[all()]]. + */ + public $indexBy; + /** * Creates a DB command that can be used to execute this query. @@ -147,6 +154,27 @@ class Query extends Component } /** + * Sets the [[indexBy]] property. + * @param string|callable $column the name of the column by which the query results should be indexed by. + * This can also be a callable (e.g. anonymous function) that returns the index value based on the given + * row data. The signature of the callable should be: + * + * ~~~ + * function ($row) + * { + * // return the index value corresponding to $row + * } + * ~~~ + * + * @return Query the query object itself + */ + public function indexBy($column) + { + $this->indexBy = $column; + return $this; + } + + /** * Executes the query and returns all results as an array. * @param Connection $db the database connection used to generate the SQL statement. * If this parameter is not given, the `db` application component will be used. @@ -154,7 +182,20 @@ class Query extends Component */ public function all($db = null) { - return $this->createCommand($db)->queryAll(); + $rows = $this->createCommand($db)->queryAll(); + if ($this->indexBy === null) { + return $rows; + } + $result = array(); + foreach ($rows as $row) { + if (is_string($this->indexBy)) { + $key = $row[$this->indexBy]; + } else { + $key = call_user_func($this->indexBy, $row); + } + $result[$key] = $row; + } + return $result; } /** diff --git a/framework/yii/helpers/base/FileHelper.php b/framework/yii/helpers/base/FileHelper.php index 499d3ce..72aa8bf 100644 --- a/framework/yii/helpers/base/FileHelper.php +++ b/framework/yii/helpers/base/FileHelper.php @@ -10,6 +10,7 @@ namespace yii\helpers\base; use Yii; +use yii\helpers\StringHelper as StringHelper2; /** * Filesystem helper @@ -133,16 +134,25 @@ class FileHelper * * - dirMode: integer, the permission to be set for newly copied directories. Defaults to 0777. * - fileMode: integer, the permission to be set for newly copied files. Defaults to the current environment setting. - * - filter: callback, a PHP callback that is called for each sub-directory or file. - * If the callback returns false, then the sub-directory or file will not be copied. - * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be copied. - * - only: array, list of patterns that the files or directories should match if they want to be copied. - * A path matches a pattern if it contains the pattern string at its end. For example, - * '/a/b' will match all files and directories ending with '/a/b'; and the '.svn' will match all files and - * directories whose name ends with '.svn'. Note, the '/' characters in a pattern matches both '/' and '\'. - * If a file/directory matches a pattern in both "only" and "except", it will NOT be copied. - * - except: array, list of patterns that the files or directories should NOT match if they want to be copied. - * For more details on how to specify the patterns, please refer to the "only" option. + * - filter: callback, a PHP callback that is called for each directory or file. + * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be filtered. + * The callback can return one of the following values: + * + * * true: the directory or file will be copied (the "only" and "except" options will be ignored) + * * false: the directory or file will NOT be copied (the "only" and "except" options will be ignored) + * * null: the "only" and "except" options will determine whether the directory or file should be copied + * + * - only: array, list of patterns that the file paths should match if they want to be copied. + * A path matches a pattern if it contains the pattern string at its end. + * For example, '.php' matches all file paths ending with '.php'. + * Note, the '/' characters in a pattern matches both '/' and '\' in the paths. + * If a file path matches a pattern in both "only" and "except", it will NOT be copied. + * - except: array, list of patterns that the files or directories should match if they want to be excluded from being copied. + * A path matches a pattern if it contains the pattern string at its end. + * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' + * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; + * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches + * both '/' and '\' in the paths. * - recursive: boolean, whether the files under the subdirectories should also be copied. Defaults to true. * - afterCopy: callback, a PHP callback that is called after each sub-directory or file is successfully copied. * The signature of the callback should be: `function ($from, $to)`, where `$from` is the sub-directory or @@ -207,16 +217,25 @@ class FileHelper * @param string $dir the directory under which the files will be looked for. * @param array $options options for file searching. Valid options are: * - * - filter: callback, a PHP callback that is called for each sub-directory or file. - * If the callback returns false, then the sub-directory or file will be excluded from the returning result. + * - filter: callback, a PHP callback that is called for each directory or file. * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be filtered. - * - only: array, list of patterns that the files or directories should match if they want to be returned. - * A path matches a pattern if it contains the pattern string at its end. For example, - * '/a/b' will match all files and directories ending with '/a/b'; and the '.svn' will match all files and - * directories whose name ends with '.svn'. Note, the '/' characters in a pattern matches both '/' and '\'. - * If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. - * - except: array, list of patterns that the files or directories should NOT match if they want to be returned. - * For more details on how to specify the patterns, please refer to the "only" option. + * The callback can return one of the following values: + * + * * true: the directory or file will be returned (the "only" and "except" options will be ignored) + * * false: the directory or file will NOT be returned (the "only" and "except" options will be ignored) + * * null: the "only" and "except" options will determine whether the directory or file should be returned + * + * - only: array, list of patterns that the file paths should match if they want to be returned. + * A path matches a pattern if it contains the pattern string at its end. + * For example, '.php' matches all file paths ending with '.php'. + * Note, the '/' characters in a pattern matches both '/' and '\' in the paths. + * If a file path matches a pattern in both "only" and "except", it will NOT be returned. + * - except: array, list of patterns that the file paths or directory paths should match if they want to be excluded from the result. + * A path matches a pattern if it contains the pattern string at its end. + * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' + * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; + * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches + * both '/' and '\' in the paths. * - recursive: boolean, whether the files under the subdirectories should also be looked for. Defaults to true. * @return array files found under the directory. The file list is sorted. */ @@ -250,24 +269,33 @@ class FileHelper */ public static function filterPath($path, $options) { - if (isset($options['filter']) && !call_user_func($options['filter'], $path)) { - return false; + if (isset($options['filter'])) { + $result = call_user_func($options['filter'], $path); + if (is_bool($result)) { + return $result; + } } $path = str_replace('\\', '/', $path); - $n = \yii\helpers\StringHelper::strlen($path); + if ($isDir = is_dir($path)) { + $path .= '/'; + } + $n = StringHelper2::strlen($path); + if (!empty($options['except'])) { foreach ($options['except'] as $name) { - if (\yii\helpers\StringHelper::substr($path, -\yii\helpers\StringHelper::strlen($name), $n) === $name) { + if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { return false; } } } - if (!empty($options['only'])) { + + if (!$isDir && !empty($options['only'])) { foreach ($options['only'] as $name) { - if (\yii\helpers\StringHelper::substr($path, -\yii\helpers\StringHelper::strlen($name), $n) !== $name) { - return false; + if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { + return true; } } + return false; } return true; }