mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-19 07:50:39 +08:00
Merge branch 'master' of github.com:yiisoft/yii2
* 'master' of github.com:yiisoft/yii2: (40 commits) Fixes #2624: Html::textArea() should respect "name" option. Removed unused "use" statements Changed "and" to "&&" Used ternary operator instead of "or" for constant definition Removed unused variables Removed executable flag from asset files Changelog for #2607 Added note about overriding asset bundles according to #2556 Added some documentation to new pjax attribute Add unit tests typo fix. Update MessageController.php Update MessageController.php add findAndModify() method to the Collection class Add an option to ignore pjax request on some links. fix code style php5.4 syntax Inline control structures are not allowed fix code style fix code style fix typo double `;`, `Each PHP statement must be on a line by itself` ...
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\base;
|
||||
|
||||
use Yii;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\caching;
|
||||
|
||||
use yii\base\InvalidConfigException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\caching;
|
||||
|
||||
use yii\base\InvalidConfigException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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',
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ class DataColumn extends Column
|
||||
return parent::getDataCellContent($model, $key, $index);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
|
||||
@@ -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));
|
||||
};
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -82,4 +82,3 @@ class Fixture extends Component
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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}}.');
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\validators;
|
||||
|
||||
use yii\web\AssetBundle;
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\validators;
|
||||
|
||||
use yii\web\AssetBundle;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
namespace yii\widgets;
|
||||
|
||||
use yii\web\AssetBundle;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
*
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user