diff --git a/apps/advanced/backend/tests/_bootstrap.php b/apps/advanced/backend/tests/_bootstrap.php index ee6d24a..da7a35d 100644 --- a/apps/advanced/backend/tests/_bootstrap.php +++ b/apps/advanced/backend/tests/_bootstrap.php @@ -2,14 +2,14 @@ // the entry script URL (without host info) for functional and acceptance tests // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL -defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/backend/web/index-test.php'); +defined('TEST_ENTRY_URL') ?: define('TEST_ENTRY_URL', '/backend/web/index-test.php'); // the entry script file path for functional and acceptance tests -defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); +defined('TEST_ENTRY_FILE') ?: define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require_once(__DIR__ . '/../../vendor/autoload.php'); diff --git a/apps/advanced/backend/tests/_console.php b/apps/advanced/backend/tests/_console.php index b38c84e..2486123 100644 --- a/apps/advanced/backend/tests/_console.php +++ b/apps/advanced/backend/tests/_console.php @@ -8,12 +8,12 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../../vendor/autoload.php'); require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); require_once(__DIR__ . '/../../common/config/aliases.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); diff --git a/apps/advanced/backend/tests/acceptance/yii b/apps/advanced/backend/tests/acceptance/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/backend/tests/acceptance/yii +++ b/apps/advanced/backend/tests/acceptance/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/backend/tests/functional/yii b/apps/advanced/backend/tests/functional/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/backend/tests/functional/yii +++ b/apps/advanced/backend/tests/functional/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/backend/tests/unit/yii b/apps/advanced/backend/tests/unit/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/backend/tests/unit/yii +++ b/apps/advanced/backend/tests/unit/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/common/mail/layouts/html.php b/apps/advanced/common/mail/layouts/html.php index 2e6b615..8e2707d 100644 --- a/apps/advanced/common/mail/layouts/html.php +++ b/apps/advanced/common/mail/layouts/html.php @@ -1,10 +1,9 @@ <?php use yii\helpers\Html; -use yii\mail\BaseMessage; /** * @var \yii\web\View $this - * @var BaseMessage $content + * @var \yii\mail\BaseMessage $content */ ?> <?php $this->beginPage() ?> diff --git a/apps/advanced/common/tests/_bootstrap.php b/apps/advanced/common/tests/_bootstrap.php index c64ad3b..9ffbe8f 100644 --- a/apps/advanced/common/tests/_bootstrap.php +++ b/apps/advanced/common/tests/_bootstrap.php @@ -2,14 +2,14 @@ // the entry script URL (without host info) for functional and acceptance tests // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL -defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/index-test.php'); +defined('TEST_ENTRY_URL') ?: define('TEST_ENTRY_URL', '/index-test.php'); // the entry script file path for functional and acceptance tests -defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/index-test.php'); +defined('TEST_ENTRY_FILE') ?: define('TEST_ENTRY_FILE', dirname(__DIR__) . '/index-test.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require_once(__DIR__ . '/../../vendor/autoload.php'); diff --git a/apps/advanced/common/tests/_console.php b/apps/advanced/common/tests/_console.php index b38c84e..2486123 100644 --- a/apps/advanced/common/tests/_console.php +++ b/apps/advanced/common/tests/_console.php @@ -8,12 +8,12 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../../vendor/autoload.php'); require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); require_once(__DIR__ . '/../../common/config/aliases.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); diff --git a/apps/advanced/common/tests/unit/yii b/apps/advanced/common/tests/unit/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/common/tests/unit/yii +++ b/apps/advanced/common/tests/unit/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/console/tests/_bootstrap.php b/apps/advanced/console/tests/_bootstrap.php index c64ad3b..9ffbe8f 100644 --- a/apps/advanced/console/tests/_bootstrap.php +++ b/apps/advanced/console/tests/_bootstrap.php @@ -2,14 +2,14 @@ // the entry script URL (without host info) for functional and acceptance tests // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL -defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/index-test.php'); +defined('TEST_ENTRY_URL') ?: define('TEST_ENTRY_URL', '/index-test.php'); // the entry script file path for functional and acceptance tests -defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/index-test.php'); +defined('TEST_ENTRY_FILE') ?: define('TEST_ENTRY_FILE', dirname(__DIR__) . '/index-test.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require_once(__DIR__ . '/../../vendor/autoload.php'); diff --git a/apps/advanced/console/tests/_console.php b/apps/advanced/console/tests/_console.php index b38c84e..2486123 100644 --- a/apps/advanced/console/tests/_console.php +++ b/apps/advanced/console/tests/_console.php @@ -8,12 +8,12 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../../vendor/autoload.php'); require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); require_once(__DIR__ . '/../../common/config/aliases.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); diff --git a/apps/advanced/console/tests/unit/yii b/apps/advanced/console/tests/unit/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/console/tests/unit/yii +++ b/apps/advanced/console/tests/unit/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/environments/dev/backend/web/index-test.php b/apps/advanced/environments/dev/backend/web/index-test.php index 1cd0794..81009d2 100644 --- a/apps/advanced/environments/dev/backend/web/index-test.php +++ b/apps/advanced/environments/dev/backend/web/index-test.php @@ -5,8 +5,8 @@ if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) { die('You are not allowed to access this file.'); } -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/dev/backend/web/index.php b/apps/advanced/environments/dev/backend/web/index.php index ed8e69f..4248787 100644 --- a/apps/advanced/environments/dev/backend/web/index.php +++ b/apps/advanced/environments/dev/backend/web/index.php @@ -1,6 +1,6 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'dev'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'dev'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/dev/frontend/web/index-test.php b/apps/advanced/environments/dev/frontend/web/index-test.php index 1cd0794..81009d2 100644 --- a/apps/advanced/environments/dev/frontend/web/index-test.php +++ b/apps/advanced/environments/dev/frontend/web/index-test.php @@ -5,8 +5,8 @@ if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) { die('You are not allowed to access this file.'); } -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/dev/frontend/web/index.php b/apps/advanced/environments/dev/frontend/web/index.php index ed8e69f..4248787 100644 --- a/apps/advanced/environments/dev/frontend/web/index.php +++ b/apps/advanced/environments/dev/frontend/web/index.php @@ -1,6 +1,6 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'dev'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'dev'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/dev/yii b/apps/advanced/environments/dev/yii index a282824..3d552af 100644 --- a/apps/advanced/environments/dev/yii +++ b/apps/advanced/environments/dev/yii @@ -8,12 +8,12 @@ * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'dev'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'dev'); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/prod/backend/web/index.php b/apps/advanced/environments/prod/backend/web/index.php index 8a215ce..7cab3d3 100644 --- a/apps/advanced/environments/prod/backend/web/index.php +++ b/apps/advanced/environments/prod/backend/web/index.php @@ -1,6 +1,6 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', false); -defined('YII_ENV') or define('YII_ENV', 'prod'); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); +defined('YII_ENV') ?: define('YII_ENV', 'prod'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/prod/frontend/web/index.php b/apps/advanced/environments/prod/frontend/web/index.php index 8a215ce..7cab3d3 100644 --- a/apps/advanced/environments/prod/frontend/web/index.php +++ b/apps/advanced/environments/prod/frontend/web/index.php @@ -1,6 +1,6 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', false); -defined('YII_ENV') or define('YII_ENV', 'prod'); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); +defined('YII_ENV') ?: define('YII_ENV', 'prod'); require(__DIR__ . '/../../vendor/autoload.php'); require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/environments/prod/yii b/apps/advanced/environments/prod/yii index 7f738bd..c1e3f01 100644 --- a/apps/advanced/environments/prod/yii +++ b/apps/advanced/environments/prod/yii @@ -8,12 +8,12 @@ * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', false); -defined('YII_ENV') or define('YII_ENV', 'prod'); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); +defined('YII_ENV') ?: define('YII_ENV', 'prod'); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/advanced/frontend/tests/_bootstrap.php b/apps/advanced/frontend/tests/_bootstrap.php index 09f11dd..edee52b 100644 --- a/apps/advanced/frontend/tests/_bootstrap.php +++ b/apps/advanced/frontend/tests/_bootstrap.php @@ -2,14 +2,14 @@ // the entry script URL (without host info) for functional and acceptance tests // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL -defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/frontend/web/index-test.php'); +defined('TEST_ENTRY_URL') ?: define('TEST_ENTRY_URL', '/frontend/web/index-test.php'); // the entry script file path for functional and acceptance tests -defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); +defined('TEST_ENTRY_FILE') ?: define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require_once(__DIR__ . '/../../vendor/autoload.php'); diff --git a/apps/advanced/frontend/tests/_console.php b/apps/advanced/frontend/tests/_console.php index b38c84e..2486123 100644 --- a/apps/advanced/frontend/tests/_console.php +++ b/apps/advanced/frontend/tests/_console.php @@ -8,12 +8,12 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../../vendor/autoload.php'); require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); require_once(__DIR__ . '/../../common/config/aliases.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); diff --git a/apps/advanced/frontend/tests/acceptance/yii b/apps/advanced/frontend/tests/acceptance/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/frontend/tests/acceptance/yii +++ b/apps/advanced/frontend/tests/acceptance/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/frontend/tests/functional/yii b/apps/advanced/frontend/tests/functional/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/frontend/tests/functional/yii +++ b/apps/advanced/frontend/tests/functional/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/advanced/frontend/tests/unit/yii b/apps/advanced/frontend/tests/unit/yii index a348a9a..2c5d280 100644 --- a/apps/advanced/frontend/tests/unit/yii +++ b/apps/advanced/frontend/tests/unit/yii @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require_once(__DIR__ . '/../_console.php'); diff --git a/apps/basic/mail/layouts/html.php b/apps/basic/mail/layouts/html.php index 2e6b615..8e2707d 100644 --- a/apps/basic/mail/layouts/html.php +++ b/apps/basic/mail/layouts/html.php @@ -1,10 +1,9 @@ <?php use yii\helpers\Html; -use yii\mail\BaseMessage; /** * @var \yii\web\View $this - * @var BaseMessage $content + * @var \yii\mail\BaseMessage $content */ ?> <?php $this->beginPage() ?> diff --git a/apps/basic/tests/_bootstrap.php b/apps/basic/tests/_bootstrap.php index 4890b3e..7db3cfd 100644 --- a/apps/basic/tests/_bootstrap.php +++ b/apps/basic/tests/_bootstrap.php @@ -2,14 +2,14 @@ // the entry script URL (without host info) for functional and acceptance tests // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL -defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/basic/web/index-test.php'); +defined('TEST_ENTRY_URL') ?: define('TEST_ENTRY_URL', '/basic/web/index-test.php'); // the entry script file path for functional and acceptance tests -defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); +defined('TEST_ENTRY_FILE') ?: define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require_once(__DIR__ . '/../vendor/autoload.php'); diff --git a/apps/basic/tests/_console_bootstrap.php b/apps/basic/tests/_console_bootstrap.php index 81287f3..1eb0644 100644 --- a/apps/basic/tests/_console_bootstrap.php +++ b/apps/basic/tests/_console_bootstrap.php @@ -1,12 +1,12 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_ENV') ?: define('YII_ENV', 'test'); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/basic/web/index-test.php b/apps/basic/web/index-test.php index b5ed695..5709d21 100644 --- a/apps/basic/web/index-test.php +++ b/apps/basic/web/index-test.php @@ -5,8 +5,8 @@ if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) { die('You are not allowed to access this file.'); } -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'test'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'test'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/basic/web/index.php b/apps/basic/web/index.php index d1e070a..6e4b4d8 100644 --- a/apps/basic/web/index.php +++ b/apps/basic/web/index.php @@ -1,8 +1,8 @@ <?php // comment out the following two lines when deployed to production -defined('YII_DEBUG') or define('YII_DEBUG', true); -defined('YII_ENV') or define('YII_ENV', 'dev'); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); +defined('YII_ENV') ?: define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/basic/yii b/apps/basic/yii index b032ebd..ad914bd 100755 --- a/apps/basic/yii +++ b/apps/basic/yii @@ -8,11 +8,11 @@ * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); diff --git a/apps/benchmark/index.php b/apps/benchmark/index.php index 2bcb252..c0c00b8 100644 --- a/apps/benchmark/index.php +++ b/apps/benchmark/index.php @@ -1,6 +1,6 @@ <?php -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); require(__DIR__ . '/protected/vendor/yiisoft/yii2/Yii.php'); diff --git a/build/build b/build/build index 51949a9..36d13d2 100755 --- a/build/build +++ b/build/build @@ -9,8 +9,8 @@ */ // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); define('YII_DEBUG', true); diff --git a/build/controllers/ClassmapController.php b/build/controllers/ClassmapController.php index 706435a..5fd4e5f 100644 --- a/build/controllers/ClassmapController.php +++ b/build/controllers/ClassmapController.php @@ -52,7 +52,7 @@ class ClassmapController extends Controller $files = FileHelper::findFiles($root, $options); $map = []; foreach ($files as $file) { - if (($pos = strpos($file, $root)) !== 0) { + if (strpos($file, $root) !== 0) { die("Something wrong: $file\n"); } $path = str_replace('\\', '/', substr($file, strlen($root))); diff --git a/docs/guide/assets.md b/docs/guide/assets.md index 17c6797..ca3b07c 100644 --- a/docs/guide/assets.md +++ b/docs/guide/assets.md @@ -81,18 +81,26 @@ following way: ```php class LanguageAsset extends AssetBundle { - public $sourcePath = '@app/assets/language'; - public $js = [ - ]; - - public function init() - { - $this->js[] = 'language-' . Yii::$app->language . '.js'; - parent::init(); - } + public $language; + public $sourcePath = '@app/assets/language'; + public $js = [ + ]; + + public function registerAssetFiles($view) + { + $language = $this->language ? $this->language : Yii::$app->language; + $this->js[] = 'language-' . $language . '.js'; + parent::registerAssetFiles($view); + } } ``` +In order to set language use the following code when registering an asset bundle in a view: + +```php +LanguageAsset::register($this)->language = $language; +``` + Registering asset bundle ------------------------ @@ -114,6 +122,10 @@ To register an asset inside of a widget, the view instance is available as `$thi AppAsset::register($this->view); ``` +> Note: If there is a need to modify third party asset bundles it is recommended to create your own bundles depending + on third party ones and use CSS and JavaScript features to modify behavior instead of editing files directly or + copying them over. + Overriding asset bundles ------------------------ diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index 4c82ecd..eca50a1 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -24,14 +24,14 @@ Like any resource in your Yii application, the bootstrap file can be edited to f The default bootstrap structure sets `YII_DEBUG` to `false` if not defined: ```php -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); ``` During development, you can change this to `true`: ```php define('YII_DEBUG', true); // Development only -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); ``` Configuring the application instance diff --git a/docs/guide/console.md b/docs/guide/console.md index 91f2616..8b36eda 100644 --- a/docs/guide/console.md +++ b/docs/guide/console.md @@ -40,11 +40,11 @@ code like the following: * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); diff --git a/docs/guide/module-debug.md b/docs/guide/module-debug.md index 916101c..0ecf347 100644 --- a/docs/guide/module-debug.md +++ b/docs/guide/module-debug.md @@ -76,7 +76,7 @@ return [ By default it's automatically set to `3` if Yii is run in debug mode i.e. your `index.php` file contains the following: ```php -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); ``` > Note: Make sure to disable debug mode on production since it may have significan performance effect and expose sensible diff --git a/docs/guide/performance.md b/docs/guide/performance.md index 9eb8ccf..40eb380 100644 --- a/docs/guide/performance.md +++ b/docs/guide/performance.md @@ -28,7 +28,7 @@ is to disable debug mode. A Yii application runs in debug mode if the constant should be in your `index.php`: ```php -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); ``` Debug mode is very useful during development stage, but it would impact performance diff --git a/docs/guide/theming.md b/docs/guide/theming.md index e627f7c..037e70c 100644 --- a/docs/guide/theming.md +++ b/docs/guide/theming.md @@ -1,7 +1,12 @@ Theming ======= -TBD +A theme is a directory of view and layout files. Each file of the theme overrides corresponding file of an application +when rendered. A single application may use multiple themes and each may provide totally different experience. At any +time only one theme can be active. + +> Note: Themes usually do not meant to be redistributed since views are too application specific. If you want to + redistribute customized look and feel consider CSS and JavaScript files in form of [asset bundles](assets.md) instead. Configuring current theme ------------------------- @@ -18,4 +23,27 @@ be in your application config file: ], ], ], -``` \ No newline at end of file +``` + +In the above `pathMap` defines where to look for view files while `baseUrl` defines base URL for resources referenced +from these files. For example, if `pathMap` is `['/web/views' => '/web/themes/basic']`, then the themed version +for a view file `/web/views/site/index.php` will be `/web/themes/basic/site/index.php`. + +Using multiple paths +-------------------- + +It is possible to map a single path to multiple paths. For example, + +```php +'pathMap' => [ + '/web/views' => [ + '/web/themes/christmas', + '/web/themes/basic', + ], +] +``` + +In this case, the view will be searched in `/web/themes/christmas/site/index.php` then if it's not found it will check +`/web/themes/basic/site/index.php`. If there's no view there as well application view will be used. + +This ability is especially useful if you want to temporary or conditionally override some views. diff --git a/extensions/apidoc/apidoc b/extensions/apidoc/apidoc index 27a10af..40da46b 100755 --- a/extensions/apidoc/apidoc +++ b/extensions/apidoc/apidoc @@ -8,7 +8,7 @@ * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); $composerAutoload = [ __DIR__ . '/vendor/autoload.php', // standalone with "composer install" run diff --git a/extensions/debug/views/default/panels/config/detail.php b/extensions/debug/views/default/panels/config/detail.php index 88e96a1..b2cfde1 100644 --- a/extensions/debug/views/default/panels/config/detail.php +++ b/extensions/debug/views/default/panels/config/detail.php @@ -1,6 +1,4 @@ <?php -use yii\helpers\Html; - /** * @var yii\debug\panels\ConfigPanel $panel */ diff --git a/extensions/debug/views/default/panels/config/summary.php b/extensions/debug/views/default/panels/config/summary.php index af72260..bb3a6dd 100644 --- a/extensions/debug/views/default/panels/config/summary.php +++ b/extensions/debug/views/default/panels/config/summary.php @@ -1,7 +1,4 @@ <?php - -use yii\helpers\Html; - /** * @var yii\debug\panels\ConfigPanel $panel */ diff --git a/extensions/gii/CHANGELOG.md b/extensions/gii/CHANGELOG.md index 8a7632d..f0afd7d 100644 --- a/extensions/gii/CHANGELOG.md +++ b/extensions/gii/CHANGELOG.md @@ -13,6 +13,7 @@ Yii Framework 2 gii extension Change Log - Enh #1897: diff markup is now copy paste friendly (samdark) - Enh #2327: better visual representation of changed files, added header and refresh button to diff modal (thiagotalma) - Enh #2491: Added support for using the same base class name of search model and data model in Gii (qiangxue) +- Enh #2595: Browse through all generated files using right and left arrows (thiagotalma) 2.0.0 alpha, December 1, 2013 ----------------------------- diff --git a/extensions/gii/assets/gii.js b/extensions/gii/assets/gii.js index c5a70ab..981327b 100644 --- a/extensions/gii/assets/gii.js +++ b/extensions/gii/assets/gii.js @@ -35,10 +35,13 @@ yii.gii = (function ($) { }; var initPreviewDiffLinks = function () { - $('.preview-code, .diff-code, .modal-refresh').on('click', function () { + $('.preview-code, .diff-code, .modal-refresh, .modal-previous, .modal-next').on('click', function () { var $modal = $('#preview-modal'); var $link = $(this); - $modal.find('.modal-refresh').attr('href', $link.prop('href')); + $modal.find('.modal-refresh').attr('href', $link.attr('href')); + if ($link.hasClass('preview-code') || $link.hasClass('diff-code')) { + $modal.data('action', ($link.hasClass('preview-code') ? 'preview-code' : 'diff-code')) + } $modal.find('.modal-title').text($link.data('title')); $modal.find('.modal-body').html('Loading ...'); $modal.modal('show'); @@ -48,6 +51,15 @@ yii.gii = (function ($) { url: $link.prop('href'), data: $('.default-view form').serializeArray(), success: function (data) { + if (!$link.hasClass('modal-refresh')) { + var filesSelector = 'a.' + $modal.data('action'); + var $files = $(filesSelector); + var index = $files.filter('[href="' + $link.attr('href') + '"]').index(filesSelector); + var $prev = $files.eq(index-1); + var $next = $files.eq((index+1 == $files.length ? 0 : index+1)); + $modal.find('.modal-previous').attr('href', $prev.attr('href')).data('title', $prev.data('title')); + $modal.find('.modal-next').attr('href', $next.attr('href')).data('title', $next.data('title')); + } $modal.find('.modal-body').html(data); $modal.find('.content').css('max-height', ($(window).height() - 200) + 'px'); }, diff --git a/extensions/gii/generators/model/Generator.php b/extensions/gii/generators/model/Generator.php index 538637c..893cd7f 100644 --- a/extensions/gii/generators/model/Generator.php +++ b/extensions/gii/generators/model/Generator.php @@ -471,7 +471,7 @@ class Generator extends \yii\gii\Generator */ public function validateTableName() { - if (($pos = strpos($this->tableName, '*')) !== false && substr($this->tableName, -1) !== '*') { + if (strpos($this->tableName, '*') !== false && substr($this->tableName, -1) !== '*') { $this->addError('tableName', 'Asterisk is only allowed as the last character.'); return; } diff --git a/extensions/gii/views/default/view/files.php b/extensions/gii/views/default/view/files.php index 947c8f8..04075e4 100644 --- a/extensions/gii/views/default/view/files.php +++ b/extensions/gii/views/default/view/files.php @@ -81,7 +81,14 @@ use yii\gii\CodeFile; <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4><a class="modal-refresh glyphicon glyphicon-refresh" href="#"></a> <span class="modal-title">Modal title</span></h4> + <div class="btn-group pull-left"> + <a class="modal-previous btn btn-xs btn-default" href="#"><span class="glyphicon glyphicon-arrow-left"></span></a> + <a class="modal-next btn btn-xs btn-default" href="#"><span class="glyphicon glyphicon-arrow-right"></span></a> + <a class="modal-refresh btn btn-xs btn-default" href="#"><span class="glyphicon glyphicon-refresh"></span></a> + + </div> + <strong class="modal-title pull-left">Modal title</strong> + <div class="clearfix"></div> </div> <div class="modal-body"> <p>Please wait ...</p> diff --git a/extensions/jui/assets/jquery.ui.datepicker-i18n.js b/extensions/jui/assets/jquery.ui.datepicker-i18n.js old mode 100755 new mode 100644 diff --git a/extensions/jui/assets/jquery.ui.effect-all.js b/extensions/jui/assets/jquery.ui.effect-all.js old mode 100755 new mode 100644 diff --git a/extensions/jui/assets/theme/images/animated-overlay.gif b/extensions/jui/assets/theme/images/animated-overlay.gif old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/animated-overlay.gif and b/extensions/jui/assets/theme/images/animated-overlay.gif differ diff --git a/extensions/jui/assets/theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/extensions/jui/assets/theme/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_flat_0_aaaaaa_40x100.png and b/extensions/jui/assets/theme/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_flat_75_ffffff_40x100.png b/extensions/jui/assets/theme/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_flat_75_ffffff_40x100.png and b/extensions/jui/assets/theme/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/extensions/jui/assets/theme/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_glass_55_fbf9ee_1x400.png and b/extensions/jui/assets/theme/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_glass_65_ffffff_1x400.png b/extensions/jui/assets/theme/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_glass_65_ffffff_1x400.png and b/extensions/jui/assets/theme/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_glass_75_dadada_1x400.png b/extensions/jui/assets/theme/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_glass_75_dadada_1x400.png and b/extensions/jui/assets/theme/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/extensions/jui/assets/theme/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_glass_75_e6e6e6_1x400.png and b/extensions/jui/assets/theme/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_glass_95_fef1ec_1x400.png b/extensions/jui/assets/theme/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_glass_95_fef1ec_1x400.png and b/extensions/jui/assets/theme/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/extensions/jui/assets/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/extensions/jui/assets/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png and b/extensions/jui/assets/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/extensions/jui/assets/theme/images/ui-icons_222222_256x240.png b/extensions/jui/assets/theme/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-icons_222222_256x240.png and b/extensions/jui/assets/theme/images/ui-icons_222222_256x240.png differ diff --git a/extensions/jui/assets/theme/images/ui-icons_2e83ff_256x240.png b/extensions/jui/assets/theme/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-icons_2e83ff_256x240.png and b/extensions/jui/assets/theme/images/ui-icons_2e83ff_256x240.png differ diff --git a/extensions/jui/assets/theme/images/ui-icons_454545_256x240.png b/extensions/jui/assets/theme/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-icons_454545_256x240.png and b/extensions/jui/assets/theme/images/ui-icons_454545_256x240.png differ diff --git a/extensions/jui/assets/theme/images/ui-icons_888888_256x240.png b/extensions/jui/assets/theme/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-icons_888888_256x240.png and b/extensions/jui/assets/theme/images/ui-icons_888888_256x240.png differ diff --git a/extensions/jui/assets/theme/images/ui-icons_cd0a0a_256x240.png b/extensions/jui/assets/theme/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 Binary files a/extensions/jui/assets/theme/images/ui-icons_cd0a0a_256x240.png and b/extensions/jui/assets/theme/images/ui-icons_cd0a0a_256x240.png differ diff --git a/extensions/jui/assets/theme/jquery.ui.css b/extensions/jui/assets/theme/jquery.ui.css old mode 100755 new mode 100644 diff --git a/extensions/mongodb/Collection.php b/extensions/mongodb/Collection.php index 38144bc..6f595f8 100644 --- a/extensions/mongodb/Collection.php +++ b/extensions/mongodb/Collection.php @@ -260,7 +260,7 @@ class Collection extends Object } /** - * Returns a a single document. + * Returns a single document. * @param array $condition query condition * @param array $fields fields to be selected * @return array|null the single document. Null is returned if the query results in nothing. @@ -272,6 +272,32 @@ class Collection extends Object } /** + * Updates a document and returns it. + * @param array $condition query condition + * @param array $update update criteria + * @param array $fields fields to be returned + * @param array $options list of options in format: optionName => optionValue. + * @return array|null the original document, or the modified document when $options['new'] is set. + * @throws Exception on failure. + * @see http://www.php.net/manual/en/mongocollection.findandmodify.php + */ + public function findAndModify($condition, $update, $fields = [], $options = []) + { + $condition = $this->buildCondition($condition); + $token = $this->composeLogToken('findAndModify', [$condition, $update, $fields, $options]); + Yii::info($token, __METHOD__); + try { + Yii::beginProfile($token, __METHOD__); + $result = $this->mongoCollection->findAndModify($condition, $update, $fields, $options); + Yii::endProfile($token, __METHOD__); + return $result; + } catch (\Exception $e) { + Yii::endProfile($token, __METHOD__); + throw new Exception($e->getMessage(), (int)$e->getCode(), $e); + } + } + + /** * Inserts new data into collection. * @param array|object $data data to be inserted. * @param array $options list of options in format: optionName => optionValue. diff --git a/extensions/swiftmailer/Mailer.php b/extensions/swiftmailer/Mailer.php index 891f2b5..8a87ba2 100644 --- a/extensions/swiftmailer/Mailer.php +++ b/extensions/swiftmailer/Mailer.php @@ -19,7 +19,7 @@ use yii\mail\BaseMailer; * ~~~ * 'components' => [ * ... - * 'email' => [ + * 'mail' => [ * 'class' => 'yii\swiftmailer\Mailer', * 'transport' => [ * 'class' => 'Swift_SmtpTransport', diff --git a/framework/BaseYii.php b/framework/BaseYii.php index 9152afc..139aca2 100644 --- a/framework/BaseYii.php +++ b/framework/BaseYii.php @@ -14,37 +14,37 @@ use yii\log\Logger; /** * Gets the application start timestamp. */ -defined('YII_BEGIN_TIME') or define('YII_BEGIN_TIME', microtime(true)); +defined('YII_BEGIN_TIME') ?: define('YII_BEGIN_TIME', microtime(true)); /** * This constant defines the framework installation directory. */ -defined('YII_PATH') or define('YII_PATH', __DIR__); +defined('YII_PATH') ?: define('YII_PATH', __DIR__); /** * This constant defines whether the application should be in debug mode or not. Defaults to false. */ -defined('YII_DEBUG') or define('YII_DEBUG', false); +defined('YII_DEBUG') ?: define('YII_DEBUG', false); /** * This constant defines in which environment the application is running. Defaults to 'prod', meaning production environment. * You may define this constant in the bootstrap script. The value could be 'prod' (production), 'dev' (development), 'test', 'staging', etc. */ -defined('YII_ENV') or define('YII_ENV', 'prod'); +defined('YII_ENV') ?: define('YII_ENV', 'prod'); /** * Whether the the application is running in production environment */ -defined('YII_ENV_PROD') or define('YII_ENV_PROD', YII_ENV === 'prod'); +defined('YII_ENV_PROD') ?: define('YII_ENV_PROD', YII_ENV === 'prod'); /** * Whether the the application is running in development environment */ -defined('YII_ENV_DEV') or define('YII_ENV_DEV', YII_ENV === 'dev'); +defined('YII_ENV_DEV') ?: define('YII_ENV_DEV', YII_ENV === 'dev'); /** * Whether the the application is running in testing environment */ -defined('YII_ENV_TEST') or define('YII_ENV_TEST', YII_ENV === 'test'); +defined('YII_ENV_TEST') ?: define('YII_ENV_TEST', YII_ENV === 'test'); /** * This constant defines whether error handling should be enabled. Defaults to true. */ -defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER', true); +defined('YII_ENABLE_ERROR_HANDLER') ?: define('YII_ENABLE_ERROR_HANDLER', true); /** @@ -356,7 +356,7 @@ class BaseYii $config = array_merge(static::$objectConfig[$class], $config); } - if (($n = func_num_args()) > 1) { + if (func_num_args() > 1) { /** @var \ReflectionClass $reflection */ if (isset($reflections[$class])) { $reflection = $reflections[$class]; diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index e705811..776e6ef 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -49,6 +49,9 @@ Yii Framework 2 Change Log - Bug #2502: Unclear error message when `$_SERVER['DOCUMENT_ROOT']` is empty (samdark) - Bug #2519: MessageSource removed translation messages when event handler was bound to `missingTranslation`-event (cebe) - Bug #2527: Source language for `app` message category was always `en` no matter which application `sourceLanguage` was used (samdark) +- Bug #2559: Going back on browser history breaks GridView filtering with `Pjax` (tonydspaniard) +- Bug #2607: `yii message` tool wasn't updating `message` table (mitalcoi) +- Bug #2624: Html::textArea() should respect "name" option. (qiangxue) - Bug: Fixed `Call to a member function registerAssetFiles() on a non-object` in case of wrong `sourcePath` for an asset bundle (samdark) - Bug: Fixed incorrect event name for `yii\jui\Spinner` (samdark) - Bug: Json::encode() did not handle objects that implement JsonSerializable interface correctly (cebe) diff --git a/framework/assets/pjax/jquery.pjax.js b/framework/assets/pjax/jquery.pjax.js index 1934d80..7e6e642 100644 --- a/framework/assets/pjax/jquery.pjax.js +++ b/framework/assets/pjax/jquery.pjax.js @@ -44,6 +44,8 @@ // event - "click" jQuery.Event // options - pjax options // +// If the click event target has 'data-pjax="0"' attribute, the event is ignored, and no pjax call is made. +// // Examples // // $(document).on('click', 'a', $.pjax.click) @@ -61,6 +63,10 @@ var link = event.currentTarget + // Ignore links with data-pjax="0" + if ($(link).data('pjax')==0) + return + if (link.tagName.toUpperCase() !== 'A') throw "$.fn.pjax or $.pjax.click requires an anchor element" diff --git a/framework/assets/yii.gridView.js b/framework/assets/yii.gridView.js index 496e3cd..ca2b99a 100644 --- a/framework/assets/yii.gridView.js +++ b/framework/assets/yii.gridView.js @@ -26,17 +26,18 @@ filterSelector: undefined }; + var gridData = {}; + var methods = { init: function (options) { return this.each(function () { var $e = $(this); var settings = $.extend({}, defaults, options || {}); - $e.data('yiiGridView', { - settings: settings - }); + gridData[$e.prop('id')] = {settings: settings}; var enterPressed = false; - $(settings.filterSelector).on('change.yiiGridView keydown.yiiGridView', function (event) { + $(document).off('change.yiiGridView keydown.yiiGridView', settings.filterSelector) + .on('change.yiiGridView keydown.yiiGridView', settings.filterSelector, function (event) { if (event.type === 'keydown') { if (event.keyCode !== 13) { return; // only react to enter key @@ -60,7 +61,7 @@ applyFilter: function () { var $grid = $(this); - var settings = $grid.data('yiiGridView').settings; + var settings = gridData[$grid.prop('id')].settings; var data = {}; $.each($(settings.filterSelector).serializeArray(), function () { data[this.name] = this.value; @@ -85,15 +86,16 @@ setSelectionColumn: function (options) { var $grid = $(this); - var data = $grid.data('yiiGridView'); - data.selectionColumn = options.name; + var id = $(this).prop('id'); + gridData[id].selectionColumn = options.name; if (!options.multiple) { return; } - $grid.on('click.yiiGridView', "input[name='" + options.checkAll + "']", function () { + var inputs = "#" + id + " input[name='" + options.checkAll + "']"; + $(document).off('click.yiiGridView', inputs).on('click.yiiGridView', inputs, function () { $grid.find("input[name='" + options.name + "']:enabled").prop('checked', this.checked); }); - $grid.on('click.yiiGridView', "input[name='" + options.name + "']:enabled", function () { + $(document).off('click.yiiGridView', inputs + ":enabled").on('click.yiiGridView', inputs + ":enabled", function () { var all = $grid.find("input[name='" + options.name + "']").length == $grid.find("input[name='" + options.name + "']:checked").length; $grid.find("input[name='" + options.checkAll + "']").prop('checked', all); }); @@ -101,7 +103,7 @@ getSelectedRows: function () { var $grid = $(this); - var data = $grid.data('yiiGridView'); + var data = gridData[$grid.prop('id')]; var keys = []; if (data.selectionColumn) { $grid.find("input[name='" + data.selectionColumn + "']:checked").each(function () { @@ -118,8 +120,9 @@ }); }, - data: function() { - return this.data('yiiGridView'); + data: function () { + var id = $(this).prop('id'); + return gridData[id]; } }; })(window.jQuery); diff --git a/framework/base/Formatter.php b/framework/base/Formatter.php index 78fdac8..80c08e1 100644 --- a/framework/base/Formatter.php +++ b/framework/base/Formatter.php @@ -442,17 +442,17 @@ class Formatter extends Component switch($position) { case 0: - return $verbose ? Yii::t('yii','{n, plural, =1{# byte} other{# bytes}}', $params) : Yii::t('yii', '{n} B', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# byte} other{# bytes}}', $params) : Yii::t('yii', '{n} B', $params); case 1: - return $verbose ? Yii::t('yii','{n, plural, =1{# kilobyte} other{# kilobytes}}', $params) : Yii::t('yii','{n} KB', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# kilobyte} other{# kilobytes}}', $params) : Yii::t('yii', '{n} KB', $params); case 2: - return $verbose ? Yii::t('yii','{n, plural, =1{# megabyte} other{# megabytes}}', $params) : Yii::t('yii','{n} MB', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# megabyte} other{# megabytes}}', $params) : Yii::t('yii', '{n} MB', $params); case 3: - return $verbose ? Yii::t('yii','{n, plural, =1{# gigabyte} other{# gigabytes}}', $params) : Yii::t('yii','{n} GB', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# gigabyte} other{# gigabytes}}', $params) : Yii::t('yii', '{n} GB', $params); case 4: - return $verbose ? Yii::t('yii','{n, plural, =1{# terabyte} other{# terabytes}}', $params) : Yii::t('yii','{n} TB', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# terabyte} other{# terabytes}}', $params) : Yii::t('yii', '{n} TB', $params); default: - return $verbose ? Yii::t('yii','{n, plural, =1{# petabyte} other{# petabytes}}', $params) : Yii::t('yii','{n} PB', $params); + return $verbose ? Yii::t('yii', '{n, plural, =1{# petabyte} other{# petabytes}}', $params) : Yii::t('yii', '{n} PB', $params); } } } diff --git a/framework/base/Request.php b/framework/base/Request.php index b76886e..eb9f805 100644 --- a/framework/base/Request.php +++ b/framework/base/Request.php @@ -6,6 +6,7 @@ */ namespace yii\base; + use Yii; /** diff --git a/framework/base/Theme.php b/framework/base/Theme.php index 01a6964..63382ad 100644 --- a/framework/base/Theme.php +++ b/framework/base/Theme.php @@ -13,7 +13,7 @@ use yii\helpers\FileHelper; /** * Theme represents an application theme. * - * When [[View]] renders a view file, it will check the [[Application::theme|active theme]] + * When [[View]] renders a view file, it will check the [[View::theme|active theme]] * to see if there is a themed version of the view file exists. If so, the themed version will be rendered instead. * * A theme is a directory consisting of view files which are meant to replace their non-themed counterparts. diff --git a/framework/caching/FileDependency.php b/framework/caching/FileDependency.php index 11afde3..200cdde 100644 --- a/framework/caching/FileDependency.php +++ b/framework/caching/FileDependency.php @@ -6,6 +6,7 @@ */ namespace yii\caching; + use yii\base\InvalidConfigException; /** diff --git a/framework/caching/GroupDependency.php b/framework/caching/GroupDependency.php index 1cf7869..bcac858 100644 --- a/framework/caching/GroupDependency.php +++ b/framework/caching/GroupDependency.php @@ -6,6 +6,7 @@ */ namespace yii\caching; + use yii\base\InvalidConfigException; /** diff --git a/framework/console/controllers/FixtureController.php b/framework/console/controllers/FixtureController.php index 858f08f..c72efd2 100644 --- a/framework/console/controllers/FixtureController.php +++ b/framework/console/controllers/FixtureController.php @@ -64,7 +64,7 @@ class FixtureController extends Controller public function globalOptions() { return array_merge(parent::globalOptions(), [ - 'namespace','globalFixtures' + 'namespace', 'globalFixtures' ]); } @@ -74,6 +74,7 @@ class FixtureController extends Controller * whitespace between names. Note that if you are loading fixtures to storage, for example: database or nosql, * storage will not be cleared, data will be appended to already existed. * @param array $fixtures + * @param array $except * @throws \yii\console\Exception */ public function actionLoad(array $fixtures, array $except = []) @@ -99,7 +100,7 @@ class FixtureController extends Controller } $filtered = array_diff($foundFixtures, $except); - $fixtures = $this->getFixturesConfig(array_merge($this->globalFixtures ,$filtered)); + $fixtures = $this->getFixturesConfig(array_merge($this->globalFixtures, $filtered)); if (!$fixtures) { throw new Exception('No fixtures were found in namespace: "' . $this->namespace . '"' . ''); @@ -317,5 +318,4 @@ class FixtureController extends Controller { return Yii::getAlias('@' . str_replace('\\', '/', $this->namespace)); } - } diff --git a/framework/console/controllers/MessageController.php b/framework/console/controllers/MessageController.php index 0345b69..cb34a38 100644 --- a/framework/console/controllers/MessageController.php +++ b/framework/console/controllers/MessageController.php @@ -134,11 +134,14 @@ class MessageController extends Controller throw new Exception('The "db" option must refer to a valid database application component.'); } $sourceMessageTable = isset($config['sourceMessageTable']) ? $config['sourceMessageTable'] : '{{%source_message}}'; + $messageTable = isset($config['messageTable']) ? $config['messageTable'] : '{{%message}}'; $this->saveMessagesToDb( $messages, $db, $sourceMessageTable, - $config['removeUnused'] + $messageTable, + $config['removeUnused'], + $config['languages'] ); } } @@ -149,9 +152,11 @@ class MessageController extends Controller * @param array $messages * @param \yii\db\Connection $db * @param string $sourceMessageTable + * @param string $messageTable * @param boolean $removeUnused + * @param array $languages */ - protected function saveMessagesToDb($messages, $db, $sourceMessageTable, $removeUnused) + protected function saveMessagesToDb($messages, $db, $sourceMessageTable, $messageTable, $removeUnused, $languages) { $q = new \yii\db\Query; $current = []; @@ -190,12 +195,17 @@ class MessageController extends Controller echo "Inserting new messages..."; $savedFlag = false; - foreach ($new as $category => $msgs) { + foreach ($new as $category => $msgs) { foreach ($msgs as $m) { $savedFlag = true; $db->createCommand() - ->insert($sourceMessageTable, ['category' => $category, 'message' => $m])->execute(); + ->insert($sourceMessageTable, ['category' => $category, 'message' => $m])->execute(); + $lastId = $db->getLastInsertID(); + foreach ($languages as $language) { + $db->createCommand() + ->insert($messageTable, ['id' => $lastId, 'language' => $language])->execute(); + } } } @@ -207,15 +217,20 @@ class MessageController extends Controller } else { if ($removeUnused) { $db->createCommand() - ->delete($sourceMessageTable, ['in', 'id', $obsolete])->execute(); - echo "deleted.\n"; + ->delete($sourceMessageTable, ['in', 'id', $obsolete])->execute(); + echo "deleted.\n"; } else { + $last_id = $db->getLastInsertID(); $db->createCommand() - ->update( + ->update( $sourceMessageTable, ['message' => new \yii\db\Expression("CONCAT('@@',message,'@@')")], ['in', 'id', $obsolete] )->execute(); + foreach ($languages as $language) { + $db->createCommand() + ->insert($messageTable, ['id' => $last_id, 'language' => $language])->execute(); + } echo "updated.\n"; } } @@ -268,7 +283,7 @@ class MessageController extends Controller { echo "Saving messages to $fileName..."; if (is_file($fileName)) { - if($format === 'po'){ + if ($format === 'po') { $translated = file_get_contents($fileName); preg_match_all('/(?<=msgid ").*(?="\n(#*)msgstr)/', $translated, $keys); preg_match_all('/(?<=msgstr ").*(?="\n\n)/', $translated, $values); @@ -285,7 +300,7 @@ class MessageController extends Controller $merged = []; $untranslated = []; foreach ($messages as $message) { - if($format === 'po'){ + if ($format === 'po') { $message = preg_replace('/\"/', '\"', $message); } if (array_key_exists($message, $translated) && strlen($translated[$message]) > 0) { @@ -317,9 +332,9 @@ class MessageController extends Controller if (false === $overwrite) { $fileName .= '.merged'; } - if ($format === 'po'){ + if ($format === 'po') { $output = ''; - foreach ($merged as $k => $v){ + foreach ($merged as $k => $v) { $k = preg_replace('/(\")|(\\\")/', "\\\"", $k); $v = preg_replace('/(\")|(\\\")/', "\\\"", $v); if (substr($v, 0, 2) === '@@' && substr($v, -2) === '@@') { @@ -338,7 +353,7 @@ class MessageController extends Controller if ($format === 'po') { $merged = ''; sort($messages); - foreach($messages as $message) { + foreach ($messages as $message) { $message = preg_replace('/(\")|(\\\")/', '\\\"', $message); $merged .= "msgid \"$message\"\n"; $merged .= "msgstr \"\"\n"; diff --git a/framework/db/ActiveQuery.php b/framework/db/ActiveQuery.php index ee92f22..23e7f1f 100644 --- a/framework/db/ActiveQuery.php +++ b/framework/db/ActiveQuery.php @@ -120,7 +120,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface $this->findWith($this->with, $models); } if (!$this->asArray) { - foreach($models as $model) { + foreach ($models as $model) { $model->afterFind(); } } diff --git a/framework/db/ActiveRelationTrait.php b/framework/db/ActiveRelationTrait.php index ab06c16..32f6953 100644 --- a/framework/db/ActiveRelationTrait.php +++ b/framework/db/ActiveRelationTrait.php @@ -288,7 +288,7 @@ trait ActiveRelationTrait foreach ($primaryModels as $i => $primaryModel) { if ($primaryModels[$i][$primaryName] instanceof ActiveRecordInterface) { $primaryModels[$i][$primaryName]->populateRelation($name, $primaryModel); - } elseif (!empty($primaryModels[$i][$primaryName])) { + } elseif (!empty($primaryModels[$i][$primaryName])) { $primaryModels[$i][$primaryName][$name] = $primaryModel; } } diff --git a/framework/db/QueryBuilder.php b/framework/db/QueryBuilder.php index e6b6e01..124848b 100644 --- a/framework/db/QueryBuilder.php +++ b/framework/db/QueryBuilder.php @@ -599,7 +599,7 @@ class QueryBuilder extends \yii\base\Object if (strpos($column, '(') === false) { $column = $this->db->quoteColumnName($column); } - $columns[$i] = "$column AS " . $this->db->quoteColumnName($i);; + $columns[$i] = "$column AS " . $this->db->quoteColumnName($i); } elseif (strpos($column, '(') === false) { if (preg_match('/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/', $column, $matches)) { $columns[$i] = $this->db->quoteColumnName($matches[1]) . ' AS ' . $this->db->quoteColumnName($matches[2]); diff --git a/framework/db/oci/Schema.php b/framework/db/oci/Schema.php index e29a77b..1edbf6b 100644 --- a/framework/db/oci/Schema.php +++ b/framework/db/oci/Schema.php @@ -242,7 +242,7 @@ EOD; } elseif (strpos($dbType, 'NUMBER') !== false || strpos($dbType, 'INTEGER') !== false) { if (strpos($dbType, '(') && preg_match('/\((.*)\)/', $dbType, $matches)) { $values = explode(',', $matches[1]); - if (isset($values[1]) and (((int)$values[1]) > 0)) { + if (isset($values[1]) && (((int)$values[1]) > 0)) { $column->type = 'double'; } else { $column->type = 'integer'; diff --git a/framework/grid/ActionColumn.php b/framework/grid/ActionColumn.php index ffcfe0a..7d42bec 100644 --- a/framework/grid/ActionColumn.php +++ b/framework/grid/ActionColumn.php @@ -88,6 +88,7 @@ class ActionColumn extends Column $this->buttons['view'] = function ($url, $model) { return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [ 'title' => Yii::t('yii', 'View'), + 'data-pjax' => '0', ]); }; } @@ -95,6 +96,7 @@ class ActionColumn extends Column $this->buttons['update'] = function ($url, $model) { return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ 'title' => Yii::t('yii', 'Update'), + 'data-pjax' => '0', ]); }; } @@ -104,6 +106,7 @@ class ActionColumn extends Column 'title' => Yii::t('yii', 'Delete'), 'data-confirm' => Yii::t('yii', 'Are you sure to delete this item?'), 'data-method' => 'post', + 'data-pjax' => '0', ]); }; } diff --git a/framework/grid/DataColumn.php b/framework/grid/DataColumn.php index a8ef9ad..7b0f493 100644 --- a/framework/grid/DataColumn.php +++ b/framework/grid/DataColumn.php @@ -152,7 +152,7 @@ class DataColumn extends Column return parent::getDataCellContent($model, $key, $index); } return $value; - } + } /** * @inheritdoc diff --git a/framework/helpers/BaseFileHelper.php b/framework/helpers/BaseFileHelper.php index c544a91..6da4712 100644 --- a/framework/helpers/BaseFileHelper.php +++ b/framework/helpers/BaseFileHelper.php @@ -147,6 +147,7 @@ class BaseFileHelper * @param string $src the source directory * @param string $dst the destination directory * @param array $options options for directory copy. Valid options are: + * @throws \yii\base\InvalidParamException if unable to open directory * * - dirMode: integer, the permission to be set for newly copied directories. Defaults to 0775. * - fileMode: integer, the permission to be set for newly copied files. Defaults to the current environment setting. @@ -280,14 +281,14 @@ class BaseFileHelper $options['basePath'] = realpath($dir); // this should also be done only once if (isset($options['except'])) { - foreach($options['except'] as $key=>$value) { + foreach ($options['except'] as $key => $value) { if (is_string($value)) { $options['except'][$key] = static::parseExcludePattern($value); } } } if (isset($options['only'])) { - foreach($options['only'] as $key=>$value) { + foreach ($options['only'] as $key => $value) { if (is_string($value)) { $options['only'][$key] = static::parseExcludePattern($value); } @@ -397,7 +398,7 @@ class BaseFileHelper if ($pattern === $baseName) { return true; } - } else if ($flags & self::PATTERN_ENDSWITH) { + } elseif ($flags & self::PATTERN_ENDSWITH) { /* "*literal" matching against "fooliteral" */ $n = StringHelper::byteLength($pattern); if (StringHelper::byteSubstr($pattern, 1, $n) === StringHelper::byteSubstr($baseName, -$n, $n)) { @@ -472,7 +473,7 @@ class BaseFileHelper */ private static function lastExcludeMatchingFromList($basePath, $path, $excludes) { - foreach(array_reverse($excludes) as $exclude) { + foreach (array_reverse($excludes) as $exclude) { if (is_string($exclude)) { $exclude = self::parseExcludePattern($exclude); } @@ -508,13 +509,14 @@ class BaseFileHelper if (!is_string($pattern)) { throw new InvalidParamException('Exclude/include pattern must be a string.'); } - $result = array( + $result = [ 'pattern' => $pattern, 'flags' => 0, 'firstWildcard' => false, - ); - if (!isset($pattern[0])) + ]; + if (!isset($pattern[0])) { return $result; + } if ($pattern[0] == '!') { $result['flags'] |= self::PATTERN_NEGATIVE; @@ -526,11 +528,13 @@ class BaseFileHelper $len--; $result['flags'] |= self::PATTERN_MUSTBEDIR; } - if (strpos($pattern, '/') === false) + if (strpos($pattern, '/') === false) { $result['flags'] |= self::PATTERN_NODIR; + } $result['firstWildcard'] = self::firstWildcardInPattern($pattern); - if ($pattern[0] == '*' && self::firstWildcardInPattern(StringHelper::byteSubstr($pattern, 1, StringHelper::byteLength($pattern))) === false) + if ($pattern[0] == '*' && self::firstWildcardInPattern(StringHelper::byteSubstr($pattern, 1, StringHelper::byteLength($pattern))) === false) { $result['flags'] |= self::PATTERN_ENDSWITH; + } $result['pattern'] = $pattern; return $result; } @@ -542,8 +546,8 @@ class BaseFileHelper */ private static function firstWildcardInPattern($pattern) { - $wildcards = array('*','?','[','\\'); - $wildcardSearch = function($r, $c) use ($pattern) { + $wildcards = ['*', '?', '[', '\\']; + $wildcardSearch = function ($r, $c) use ($pattern) { $p = strpos($pattern, $c); return $r===false ? $p : ($p===false ? $r : min($r, $p)); }; diff --git a/framework/helpers/BaseHtml.php b/framework/helpers/BaseHtml.php index 01151ec..8585c97 100644 --- a/framework/helpers/BaseHtml.php +++ b/framework/helpers/BaseHtml.php @@ -1140,12 +1140,12 @@ class BaseHtml * about attribute expression. * @param array $options the tag options in terms of name-value pairs. These will be rendered as * the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]]. - * See [[renderTagAttributes()]] for details on how these are beeing rendered. + * See [[renderTagAttributes()]] for details on how these are being rendered. * @return string the generated textarea tag */ public static function activeTextarea($model, $attribute, $options = []) { - $name = static::getInputName($model, $attribute); + $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute); $value = static::getAttributeValue($model, $attribute); if (!array_key_exists('id', $options)) { $options['id'] = static::getInputId($model, $attribute); @@ -1579,7 +1579,7 @@ class BaseHtml { if (isset($options['class'])) { $classes = ' ' . $options['class'] . ' '; - if (($pos = strpos($classes, ' ' . $class . ' ')) === false) { + if (strpos($classes, ' ' . $class . ' ') === false) { $options['class'] .= ' ' . $class; } } else { diff --git a/framework/helpers/BaseMarkdown.php b/framework/helpers/BaseMarkdown.php index a22e45e..c72e079 100644 --- a/framework/helpers/BaseMarkdown.php +++ b/framework/helpers/BaseMarkdown.php @@ -86,7 +86,7 @@ class BaseMarkdown /** @var \cebe\markdown\Markdown $parser */ if (!isset(static::$flavors[$flavor])) { throw new InvalidParamException("Markdown flavor '$flavor' is not defined.'"); - } elseif(!is_object($config = static::$flavors[$flavor])) { + } elseif (!is_object($config = static::$flavors[$flavor])) { $parser = Yii::createObject($config); if (is_array($config)) { foreach ($config as $name => $value) { diff --git a/framework/helpers/BaseSecurity.php b/framework/helpers/BaseSecurity.php index d9459d9..8750a54 100644 --- a/framework/helpers/BaseSecurity.php +++ b/framework/helpers/BaseSecurity.php @@ -107,10 +107,10 @@ class BaseSecurity */ protected static function stripPadding($data) { - $end = StringHelper::byteSubstr($data, -1, NULL); + $end = StringHelper::byteSubstr($data, -1, null); $last = ord($end); $n = StringHelper::byteLength($data) - $last; - if (StringHelper::byteSubstr($data, $n, NULL) == str_repeat($end, $last)) { + if (StringHelper::byteSubstr($data, $n, null) == str_repeat($end, $last)) { return StringHelper::byteSubstr($data, 0, $n); } return false; diff --git a/framework/i18n/GettextMessageSource.php b/framework/i18n/GettextMessageSource.php index 8da8edc..fc6d87f 100644 --- a/framework/i18n/GettextMessageSource.php +++ b/framework/i18n/GettextMessageSource.php @@ -70,9 +70,9 @@ class GettextMessageSource extends MessageSource if ($messages === null && $fallbackMessages === null && $fallbackLanguage != $this->sourceLanguage) { Yii::error("The message file for category '$category' does not exist: $messageFile Fallback file does not exist as well: $fallbackMessageFile", __METHOD__); - } else if (empty($messages)) { + } elseif (empty($messages)) { return $fallbackMessages; - } else if (!empty($fallbackMessages)) { + } elseif (!empty($fallbackMessages)) { foreach ($fallbackMessages as $key => $value) { if (!empty($value) && empty($messages[$key])) { $messages[$key] = $fallbackMessages[$key]; diff --git a/framework/i18n/I18N.php b/framework/i18n/I18N.php index d0bbfcc..6be3899 100644 --- a/framework/i18n/I18N.php +++ b/framework/i18n/I18N.php @@ -126,7 +126,7 @@ class I18N extends Component } $p = []; - foreach($params as $name => $value) { + foreach ($params as $name => $value) { $p['{' . $name . '}'] = $value; } return strtr($message, $p); diff --git a/framework/i18n/MessageFormatter.php b/framework/i18n/MessageFormatter.php index 4ea7083..c3d8c56 100644 --- a/framework/i18n/MessageFormatter.php +++ b/framework/i18n/MessageFormatter.php @@ -143,7 +143,7 @@ class MessageFormatter extends Component return false; } $map = []; - foreach($tokens as $i => $token) { + foreach ($tokens as $i => $token) { if (is_array($token)) { $param = trim($token[0]); if (!isset($map[$param])) { @@ -169,7 +169,7 @@ class MessageFormatter extends Component return false; } else { $values = []; - foreach($result as $key => $value) { + foreach ($result as $key => $value) { $values[$map[$key]] = $value; } return $values; @@ -190,7 +190,7 @@ class MessageFormatter extends Component if (($tokens = self::tokenizePattern($pattern)) === false) { return false; } - foreach($tokens as $i => $token) { + foreach ($tokens as $i => $token) { if (!is_array($token)) { continue; } @@ -210,7 +210,7 @@ class MessageFormatter extends Component } $type = isset($token[1]) ? trim($token[1]) : 'none'; // replace plural and select format recursively - if ($type == 'plural' || $type == 'select') { + if ($type == 'plural' || $type == 'select') { if (!isset($token[2])) { return false; } @@ -244,7 +244,7 @@ class MessageFormatter extends Component $this->_errorMessage = "Message pattern is invalid."; return false; } - foreach($tokens as $i => $token) { + foreach ($tokens as $i => $token) { if (is_array($token)) { if (($tokens[$i] = $this->parseToken($token, $args, $locale)) === false) { $this->_errorCode = -1; diff --git a/framework/i18n/PhpMessageSource.php b/framework/i18n/PhpMessageSource.php index 2e611f5..7866511 100644 --- a/framework/i18n/PhpMessageSource.php +++ b/framework/i18n/PhpMessageSource.php @@ -73,9 +73,9 @@ class PhpMessageSource extends MessageSource if ($messages === null && $fallbackMessages === null && $fallbackLanguage != $this->sourceLanguage) { Yii::error("The message file for category '$category' does not exist: $messageFile Fallback file does not exist as well: $fallbackMessageFile", __METHOD__); - } else if (empty($messages)) { + } elseif (empty($messages)) { return $fallbackMessages; - } else if (!empty($fallbackMessages)) { + } elseif (!empty($fallbackMessages)) { foreach ($fallbackMessages as $key => $value) { if (!empty($value) && empty($messages[$key])) { $messages[$key] = $fallbackMessages[$key]; diff --git a/framework/mail/BaseMailer.php b/framework/mail/BaseMailer.php index 139b4af..01f6635 100644 --- a/framework/mail/BaseMailer.php +++ b/framework/mail/BaseMailer.php @@ -348,5 +348,4 @@ abstract class BaseMailer extends Component implements MailerInterface, ViewCont $event = new MailEvent(['message' => $message, 'isSuccessful' => $isSuccessful]); $this->trigger(self::EVENT_AFTER_SEND, $event); } - } diff --git a/framework/test/Fixture.php b/framework/test/Fixture.php index 5a38ae5..e22a139 100644 --- a/framework/test/Fixture.php +++ b/framework/test/Fixture.php @@ -82,4 +82,3 @@ class Fixture extends Component { } } - diff --git a/framework/validators/ImageValidator.php b/framework/validators/ImageValidator.php index 52fb235..fa9587d 100644 --- a/framework/validators/ImageValidator.php +++ b/framework/validators/ImageValidator.php @@ -124,7 +124,7 @@ class ImageValidator extends FileValidator } if ($this->underHeight === null) { $this->underHeight = Yii::t('yii', 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.'); - } + } if ($this->overWidth === null) { $this->overWidth = Yii::t('yii', 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.'); } diff --git a/framework/validators/PunycodeAsset.php b/framework/validators/PunycodeAsset.php index c0c1e2b..5f6a411 100644 --- a/framework/validators/PunycodeAsset.php +++ b/framework/validators/PunycodeAsset.php @@ -6,6 +6,7 @@ */ namespace yii\validators; + use yii\web\AssetBundle; /** diff --git a/framework/validators/ValidationAsset.php b/framework/validators/ValidationAsset.php index 14d7ad0..e9bb79d 100644 --- a/framework/validators/ValidationAsset.php +++ b/framework/validators/ValidationAsset.php @@ -6,6 +6,7 @@ */ namespace yii\validators; + use yii\web\AssetBundle; /** diff --git a/framework/web/AssetConverter.php b/framework/web/AssetConverter.php index 1b7d1c8..23062d9 100644 --- a/framework/web/AssetConverter.php +++ b/framework/web/AssetConverter.php @@ -82,7 +82,7 @@ class AssetConverter extends Component implements AssetConverterInterface $proc = proc_open($command, $descriptor, $pipes, $basePath); $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); - foreach($pipes as $pipe) { + foreach ($pipes as $pipe) { fclose($pipe); } $status = proc_close($proc); diff --git a/framework/widgets/ActiveFormAsset.php b/framework/widgets/ActiveFormAsset.php index 5acb5e1..94b00e5 100644 --- a/framework/widgets/ActiveFormAsset.php +++ b/framework/widgets/ActiveFormAsset.php @@ -6,6 +6,7 @@ */ namespace yii\widgets; + use yii\web\AssetBundle; /** diff --git a/framework/widgets/LinkPager.php b/framework/widgets/LinkPager.php index a2c905c..22cfdf0 100644 --- a/framework/widgets/LinkPager.php +++ b/framework/widgets/LinkPager.php @@ -128,7 +128,7 @@ class LinkPager extends Widget protected function registerLinkTags() { $view = $this->getView(); - foreach($this->pagination->getLinks() as $rel => $href) { + foreach ($this->pagination->getLinks() as $rel => $href) { $view->registerLinkTag(['rel' => $rel, 'href' => $href], $rel); } } diff --git a/framework/widgets/Pjax.php b/framework/widgets/Pjax.php index 1d7046c..825a4ac 100644 --- a/framework/widgets/Pjax.php +++ b/framework/widgets/Pjax.php @@ -25,6 +25,8 @@ use yii\web\Response; * You may configure [[linkSelector]] to specify which links should trigger pjax, and configure [[formSelector]] * to specify which form submission may trigger pjax. * + * You may disable pjax for a specific link inside the container by adding `data-pjax="0"` attribute to this link. + * * The following example shows how to use Pjax with the [[\yii\gridview\GridView]] widget so that the grid pagination, * sorting and filtering can be done via pjax: * diff --git a/framework/yii b/framework/yii index 6964ce5..036962a 100755 --- a/framework/yii +++ b/framework/yii @@ -8,11 +8,11 @@ * @license http://www.yiiframework.com/license/ */ -defined('YII_DEBUG') or define('YII_DEBUG', true); +defined('YII_DEBUG') ?: define('YII_DEBUG', true); // fcgi doesn't have STDIN and STDOUT defined by default -defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); -defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w')); +defined('STDIN') ?: define('STDIN', fopen('php://stdin', 'r')); +defined('STDOUT') ?: define('STDOUT', fopen('php://stdout', 'w')); require(__DIR__ . '/Yii.php'); diff --git a/tests/unit/extensions/mongodb/CollectionTest.php b/tests/unit/extensions/mongodb/CollectionTest.php index 3eb97b6..9a0c0b4 100644 --- a/tests/unit/extensions/mongodb/CollectionTest.php +++ b/tests/unit/extensions/mongodb/CollectionTest.php @@ -187,6 +187,60 @@ class CollectionTest extends MongoDbTestCase $this->assertNotEmpty($result[0]['items']); } + public function testFindAndModify() + { + $collection = $this->getConnection()->getCollection('customer'); + $rows = [ + [ + 'name' => 'customer 1', + 'status' => 1, + 'amount' => 100, + ], + [ + 'name' => 'customer 2', + 'status' => 1, + 'amount' => 200, + ], + ]; + $collection->batchInsert($rows); + + // increment field + $result = $collection->findAndModify(['name' => 'customer 1'], ['$inc' => ['status' => 1]]); + $this->assertEquals('customer 1', $result['name']); + $this->assertEquals(1, $result['status']); + $newResult = $collection->findOne(['name' => 'customer 1']); + $this->assertEquals(2, $newResult['status']); + + // $set and return modified document + $result = $collection->findAndModify( + ['name' => 'customer 2'], + ['$set' => ['status' => 2]], + [], + ['new' => true] + ); + $this->assertEquals('customer 2', $result['name']); + $this->assertEquals(2, $result['status']); + + // Full update document + $data = [ + 'name' => 'customer 3', + 'city' => 'Minsk' + ]; + $result = $collection->findAndModify( + ['name' => 'customer 2'], + $data, + [], + ['new' => true] + ); + $this->assertEquals('customer 3', $result['name']); + $this->assertEquals('Minsk', $result['city']); + $this->assertTrue(!isset($result['status'])); + + // Test exceptions + $this->setExpectedException('\yii\mongodb\Exception'); + $collection->findAndModify(['name' => 'customer 1'], ['$wrongOperator' => ['status' => 1]]); + } + /** * @depends testBatchInsert */ @@ -240,54 +294,54 @@ class CollectionTest extends MongoDbTestCase $this->assertEquals($expectedRows, $rows); } - /** - * @depends testMapReduce - */ - public function testMapReduceInline() - { - $collection = $this->getConnection()->getCollection('customer'); - $rows = [ - [ - 'name' => 'customer 1', - 'status' => 1, - 'amount' => 100, - ], - [ - 'name' => 'customer 2', - 'status' => 1, - 'amount' => 200, - ], - [ - 'name' => 'customer 2', - 'status' => 2, - 'amount' => 400, - ], - [ - 'name' => 'customer 2', - 'status' => 3, - 'amount' => 500, - ], - ]; - $collection->batchInsert($rows); - - $result = $collection->mapReduce( - 'function () {emit(this.status, this.amount)}', - 'function (key, values) {return Array.sum(values)}', - ['inline' => true], - ['status' => ['$lt' => 3]] - ); - $expectedRows = [ - [ - '_id' => 1, - 'value' => 300, - ], - [ - '_id' => 2, - 'value' => 400, - ], - ]; - $this->assertEquals($expectedRows, $result); - } + /** + * @depends testMapReduce + */ + public function testMapReduceInline() + { + $collection = $this->getConnection()->getCollection('customer'); + $rows = [ + [ + 'name' => 'customer 1', + 'status' => 1, + 'amount' => 100, + ], + [ + 'name' => 'customer 2', + 'status' => 1, + 'amount' => 200, + ], + [ + 'name' => 'customer 2', + 'status' => 2, + 'amount' => 400, + ], + [ + 'name' => 'customer 2', + 'status' => 3, + 'amount' => 500, + ], + ]; + $collection->batchInsert($rows); + + $result = $collection->mapReduce( + 'function () {emit(this.status, this.amount)}', + 'function (key, values) {return Array.sum(values)}', + ['inline' => true], + ['status' => ['$lt' => 3]] + ); + $expectedRows = [ + [ + '_id' => 1, + 'value' => 300, + ], + [ + '_id' => 2, + 'value' => 400, + ], + ]; + $this->assertEquals($expectedRows, $result); + } public function testCreateIndex() { diff --git a/tests/unit/framework/base/ExceptionTest.php b/tests/unit/framework/base/ExceptionTest.php index 635b55c..136fc28 100644 --- a/tests/unit/framework/base/ExceptionTest.php +++ b/tests/unit/framework/base/ExceptionTest.php @@ -15,7 +15,7 @@ class ExceptionTest extends TestCase $this->assertEquals('bar', $array['message']); $this->assertEquals('foo', $array['previous']['message']); - $e = new InvalidCallException('bar', 0 ,new UserException('foo')); + $e = new InvalidCallException('bar', 0, new UserException('foo')); $array = $e->toArray(); $this->assertEquals('bar', $array['message']); $this->assertEquals('foo', $array['previous']['message']);