Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActiveForm dropDownList does not set the selected option properly if the underlying model's attribute is of boolean type #19324

Closed
adnandautovic opened this issue Mar 25, 2022 · 22 comments

Comments

@adnandautovic
Copy link
Contributor

What steps will reproduce the problem?

We have a model

class MyModel extends Model
{
    public ?bool $value = false;
}

and in some view, we render an an ActiveForm

<div>
    <?php $form = ActiveForm::begin([
        'action' => '/some/path',
        'method' => 'GET'
     ]) ?>

    <?php $form->field($model, 'value')->textInput()->label(
        'text')->dropDownList([true => 'Yes', false => 'No'], ['prompt' => 'Please select']) ?>
</div>

What is the expected result?

I expect the rendered dropDownList to have a selection of 'Yes' when $value is true and 'No' when $value is false.

What do you get instead?

The dropDownList always shows the prompt instead.

Additional info

Q A
Yii version 2.0.45
PHP version 8.1.2
Operating system Debian

The problem is to be found in

$attrs['selected'] = $selection !== null &&
(!ArrayHelper::isTraversable($selection) && !strcmp($key, $selection)
|| ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$key, $selection, $strict));

and the fact that arrays with boolean keys are indexed with 0 and 1 in php.
When getting to this point

gettype($key) // integer
$key // 0
gettype($selection) // boolean
$selection // false

and

!strcmp($key, $selection)

does not give back that they are equal.

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 25, 2022

An array keys can be int or string. Your boolean keys converted to strings.

@adnandautovic
Copy link
Contributor Author

An array keys can be int or string. Your boolean keys converted to strings.

Sorry, I'm not sure that I understand your comment.
In the code snippet I quoted, $key is read from the first argument of dropDownList, while $selection is read from the model's attribute.
The keys of the array [true => 'Yes', false => 'No'] are converted to integers by php (1 and 0). However, in the function renderSelectOptions, no conversion of $selection takes place if it is of boolean type.

I am under the impression that such a conversion would make sense here, since the conversion is also done for boolean array keys by php.

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 28, 2022

['No', 'Yes'] converts to [['value' => '0', 'text' => 'No'], ['value' => '1', 'text' => 'Yes']], prepend prompt: [['value' => '', 'text' => 'Please select'], ['value' => '0', 'text' => 'No'], ['value' => '1', 'text' => 'Yes']]

(string)false is '' i.e. prompt value

@WinterSilence
Copy link
Contributor

you can use AttributeTypecastBehavior to normalize values

@adnandautovic
Copy link
Contributor Author

['No', 'Yes'] converts to [['value' => '0', 'text' => 'No'], ['value' => '1', 'text' => 'Yes']], prepend prompt: [['value' => '', 'text' => 'Please select'], ['value' => '0', 'text' => 'No'], ['value' => '1', 'text' => 'Yes']]

(string)false is '' i.e. prompt value

That does not appear to be quite correct. In your explanation, $key and $selection are mixed up. Let me try to make it more clear:
When I call dropDownList([true => 'Yes', false => 'No'], ['prompt' => 'Please select']), it is the same as if I had called dropDownList([1 => 'Yes', 0 => 'No'], ['prompt' => 'Please select']), because php immediately does the conversion of array keys.

The cast (string) false therefore never occurs.

Here,

$attrs['value'] = (string) $key;

the $key is cast to a string, which yields '0' and that is fine. After this line,
$attrs = [ 'value' => 1, 'selected' => false ].

And updating 'selected' fails, because this comparison fails:

(!ArrayHelper::isTraversable($selection) && !strcmp($key, $selection)

Since $key (being the integer 0) and $selection (being the boolean false) do not compare to equal with strcmp, which makes sense of course.

At the end of the function, the $lines array contains

$lines = [
'<option value="">Please select<\/option>',
'<option value="1">Yes<\/option>',
'<option value="0">No<\/option>']

The correct value would be

$lines = [
'<option value="">Please select<\/option>',
'<option value="1">Yes<\/option>',
'<option value="0 selected">No<\/option>']

and actually, I can force this in the call to dropDownList:

<div>
    <?php $form = ActiveForm::begin([
        'action' => '/some/path',
        'method' => 'GET'
     ]) ?>

    <?php $form->field($model, 'value')->textInput()->label(
        'text')->dropDownList([true => 'Yes', false => 'No'],
                ['prompt' => 'Please select',
                'options' => [
                        '1' => [
                        'value' => '1',
                        'selected' => $model->value
                        ],
                        '0' => [
                            'value' => '0',
                            'selected' => !$model->value
                        ]
                ]
]) ?>
</div>

But that is infeasible in practice, because there are many calls like this and adding this options array makes very verbose what I think should be the default behaviour. Furthermore, handling the case where $model->value is null manually would be even more complicated, as I mustn't pass 'selected' if $model->value isn't set.

(It is only checked whether the key is set:)

if (!array_key_exists('selected', $attrs)) {

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 29, 2022

@adnandautovic

(string)false is '' i.e. prompt value

I mean your boolean attribute converts to string value, (string)null is too ''

$selection = array_map('strval', ArrayHelper::toArray($selection));

in this case ActiveField::checkbox() looks more appropriate

@adnandautovic
Copy link
Contributor Author

I mean your boolean attribute converts to string value, (string)null is too ''

Actually, it does not:

if (ArrayHelper::isTraversable($selection)) {
$selection = array_map('strval', ArrayHelper::toArray($selection));
}

$selection is not traversable, since it is not an array, but a boolean.

in this case ActiveField::checkbox() looks more appropriate

Unfortunately, this does not work. The model represents a filter and there are three possible selections: None (display all), Yes (display only things where condition is true) and No (display only things where condition is false).

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 29, 2022

@adnandautovic you right, but prompt is first option in list i.e. selected by default (when $selected is null).
your bool attribute in any case converts to string in !strcmp($key, $selection)

@adnandautovic
Copy link
Contributor Author

@WinterSilence Yes, it gets converted to string in !strcmp($key, $selection) and that is precisely where the problem lies.
My suggested fix would be to add

if (is_bool($selection)) {
    $selection = (int) $selection;
}

just after

$attrs['value'] = (string) $key;

because that is exactly what php does for an array with boolean keys.

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 29, 2022

@adnandautovic users must normalize sended values ​​themselves, but I think possible fix:

 $attrs['selected'] = $selection !== null &&
      (!ArrayHelper::isTraversable($selection) && !($strict ? $selection == $key : strcmp($key, $selection))
      || ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$key, $selection, $strict));

@adnandautovic
Copy link
Contributor Author

@WinterSilence The normalization takes place in the model's rules, where casting to bool takes place (since the underlying GET request does not pass a true boolean to php).

Anyway, the fix you suggested would also be quite fine. I just think the ! is misplaced and it should read as follows instead (strcmp returns 0 if it thinks the values are equal):

 $attrs['selected'] = $selection !== null &&
      (!ArrayHelper::isTraversable($selection) && ($strict ? $selection == $key : !strcmp($key, $selection))
      || ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$key, $selection, $strict));

@WinterSilence
Copy link
Contributor

The normalization takes place in the model's rules, where casting to bool takes place (since the underlying GET request does not pass a true boolean to php).

value converts to bool when you load request data. also you can declare attribute setter/getter to convert value.

@adnandautovic adnandautovic changed the title ActiveForm dropDownList does not set the default selection propery if the underlying model's attribute is of boolean type ActiveForm dropDownList does not set the selected option properly if the underlying model's attribute is of boolean type Mar 30, 2022
@adnandautovic
Copy link
Contributor Author

I just realized I had given the issue a misleading name. The problem was not incorrect setting of the default value ('Please select'), but incorrect setting of the selected value ('Yes') or ('No').

@adnandautovic
Copy link
Contributor Author

value converts to bool when you load request data.

I'm sorry, but I don't think this is correct in my case. At some point, I call $model->load(Yii::$app->request->get(), '') and the value I recieve is a string, which is either '', '0' or '1', depending on what was selected in the active form.

Now, during the call to $model->setAttributes inside of $model->load, these would get casted to booleans. In fact, I overwrite the setAttributes function to have more control over the type casting (my real model is more complicated and has more variables, I just want to give a rough idea of what is going on):

class MyModel extends Model
{
    public ?bool $isPropertySet = false;

    private const BOOLEAN_ATTRIBUTES = ['isPropertySet'];


    public function setAttributes($values, $safeOnly = true)
    {
        if (is_array($values)) {
            $values = $this->normalizeParams($values);
            parent::setAttributes($values);
        }
    }

    private function normalizeParams(array $params): array
    {
        foreach ($params as $name => $value) {
            if (in_array($name, self::INTEGER_ATTRIBUTES)) {
                $value = self::filterInteger($value);
            } elseif (in_array($name, self::BOOLEAN_ATTRIBUTES)) {
                $value = self::filterBoolean($value);
                // ...
            } elseif ($value === '') {
                $value = null;
            }
            $params[$name] = $value;
        }
        return $params;
    }

    public static function filterBoolean(string|bool $value): bool|null
    {
        if (is_string($value)) {
            $boolValues = ['0' => 0, '1' => 1, 'false' => 0, 'true' => 1];
            return $boolValues[strtolower($value)] ?? null;
        } 
        return $value;
    }
}

@adnandautovic users must normalize sended values ​​themselves,

Therefore, I already normalize the values I recieve and that is not the underlying issue here.

also you can declare attribute setter/getter to convert value.

I do not think that would help in this case, because I already convert the values to what I need them to be. Furthermore, defining setters and getters for the many attributes that are affected by this does not seem reasonable to me when the renderSelectOptions could just be fixed, instead.

@WinterSilence
Copy link
Contributor

...or use checkbox input as all normal developers :)

@adnandautovic
Copy link
Contributor Author

...or use checkbox input as all normal developers :)

A checkbox can represent two states, checked and unchecked.
A boolean attribute can represent three states: true, false and unselected.

As previously elaborated, I need to represent three states. If you have an idea on how to achieve that with a checkbox, feel free to let me know.

In any case, I think this is a place to discuss a bug in the yii framework and as far as I'm aware, there is a code of conduct in place.

@WinterSilence
Copy link
Contributor

A boolean attribute can represent three states: true, false and unselected.

I got your idea, but it's not boolean, it's enum or something like this, use getter/setter:

<?=$form->field($model, 'value')->label('text')->dropDownList(['null' => 'Please select', 'true' => 'Yes', 'false' => 'No'])?>
protected ?bool $value = null;

public function getValue(): ?bool
{
    return $this->value;
}

public function setValue(bool|null|string $value)
{
    $this->value = is_string($value) ? json_decode($value) : $value;
}

@adnandautovic
Copy link
Contributor Author

@WinterSilence Thank you for the suggestion, but, you see, these getter and setter functions do not solve the problem in the renderSelectOptions function.

The setting of the value works perfectly fine (although your code for doing so is shorter than what I wrote above when there is only one boolean variable in the model). It is when the value is read inside of renderSelectOptions and the boolean false is compared to the integer 0 inside of strcmp that the comparison fails. Have you looked at the function in a debugger?

And will my pull request #19331 be considered as a fix? Currently, it is not clear to me whether this issue has been recognized/accepted as a bug.

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 31, 2022

@adnandautovic

And will my pull request #19331 be considered as a fix?

I do not know, but fact that strict mode is not used for single selection is error.

I'm think check must be like this (fixed error in my previous solution):

$attrs['selected'] = false;
if ($selection !== null) {
    if (ArrayHelper::isTraversable($selection)) {
        $attrs['selected'] = ArrayHelper::isIn($key, $selection, $strict);
    } else {
        $attrs['selected'] = $strict ? strcmp((string)$key, (string)$selection) == 0 : $key == $selection;
    };
}

@WinterSilence
Copy link
Contributor

WinterSilence commented Mar 31, 2022

namespace yii\helpers;
class Html extends BaseHtml
{
    public static function renderSelectOptions($selection, $items, &$tagOptions = [])
    {
        if (ArrayHelper::isTraversable($selection)) {
            $selection = array_map('strval', ArrayHelper::toArray($selection));
        }

        $lines = [];
        $encodeSpaces = ArrayHelper::remove($tagOptions, 'encodeSpaces', false);
        $encode = ArrayHelper::remove($tagOptions, 'encode', true);
        $strict = ArrayHelper::remove($tagOptions, 'strict', false);
        if (isset($tagOptions['prompt'])) {
            $promptOptions = ['value' => ''];
            if (is_string($tagOptions['prompt'])) {
                $promptText = $tagOptions['prompt'];
            } else {
                $promptText = $tagOptions['prompt']['text'];
                $promptOptions = array_merge($promptOptions, $tagOptions['prompt']['options']);
            }
            $promptText = $encode ? static::encode($promptText) : $promptText;
            if ($encodeSpaces) {
                $promptText = str_replace(' ', '&nbsp;', $promptText);
            }
            $lines[] = static::tag('option', $promptText, $promptOptions);
        }
        unset($tagOptions['prompt');

        $options = ArrayHelper::remove($tagOptions, 'options', []);
        $groups = ArrayHelper::remove($tagOptions, 'groups', []);
        $options['encodeSpaces'] = ArrayHelper::getValue($options, 'encodeSpaces', $encodeSpaces);
        $options['encode'] = ArrayHelper::getValue($options, 'encode', $encode);

        foreach ($items as $key => $value) {
            if (is_array($value)) {
                $groupAttrs = isset($groups[$key]) ? $groups[$key] : [];
                if (!isset($groupAttrs['label'])) {
                    $groupAttrs['label'] = $key;
                }
                $attrs = compact('options', 'groups', 'encodeSpaces', 'encode', 'strict');
                $content = static::renderSelectOptions($selection, $value, $attrs);
                $lines[] = static::tag('optgroup', "\n" . $content . "\n", $groupAttrs);
            } else {
                $attrs = isset($options[$key]) ? $options[$key] : [];
                $attrs['value'] = (string) $key;
                if (!array_key_exists('selected', $attrs)) {
                    $attrs['selected'] = false;
                    if ($selection !== null) {
                        if (ArrayHelper::isTraversable($selection)) {
                            $attrs['selected'] = ArrayHelper::isIn($key, $selection, $strict);
                        } else {
                            $attrs['selected'] = $strict ? $key === $selection : $key == $selection;
                        };
                    }
                }
                $text = $encode ? static::encode($value) : $value;
                if ($encodeSpaces) {
                    $text = str_replace(' ', '&nbsp;', $text);
                }
                $lines[] = static::tag('option', $text, $attrs);
            }
        }

        return implode("\n", $lines);
    }
}

Demo:

class Demo extends \yii\base\Model
{
    public ?bool $boolValue = null;
}

$model = new Demo();
$form = \yii\widgets\ActiveForm::begin();
echo $form->field($model, 'boolValue')
     ->label('text')
     ->dropDownList(
        ['No', 'Yes'],
        ['prompt' => 'Please select']
    );

$model->boolValue = false;
echo $form->field($model, 'boolValue')
     ->label('text')
     ->dropDownList(
        ['No', 'Yes'],
        ['prompt' => 'Please select']
    );

изображение

@adnandautovic
Copy link
Contributor Author

I do not know, but fact that strict mode is not used for single selection is error.

Ah, yes, if we compare to yii\helpers\BaseArrayHelper::isIn, there the non-strict check is done with == and the strict check is done with ===:

    public static function isIn($needle, $haystack, $strict = false)
    {
        if ($haystack instanceof Traversable) {
            foreach ($haystack as $value) {
                if ($needle == $value && (!$strict || $needle === $value)) {
                    return true;
                }
            }
        } elseif (is_array($haystack)) {
            return in_array($needle, $haystack, $strict);
        } else {
            throw new InvalidArgumentException('Argument $haystack must be an array or implement Traversable');
        }

        return false;
    }

and if it is not a Traversable, for expamle in_array(false, array('1.10', '', 1.13)) yields true.

$attrs['selected'] = false;
if ($selection !== null) {
    if (ArrayHelper::isTraversable($selection)) {
        $attrs['selected'] = ArrayHelper::isIn($key, $selection, $strict);
    } else {
        $attrs['selected'] = $strict ? strcmp((string)$key, (string)$selection) == 0 : $key == $selection;
    };
}

This is just a more verbose form of the previous version with additional type casting and inversion of the strict.
Is it better to be more verbose here?

And one more thing: If we compare to yii\helpers\BaseArrayHelper::isIn above, there is no usage of the strcmp function. Therefore, it would be more consistent to write

$attrs['selected'] = $strict ? $key === $selection : $key == $selection;

don't you think? Otherwise the function returns that integer 1 and string '1' are equal, even with strict=true.

@WinterSilence
Copy link
Contributor

WinterSilence commented Apr 1, 2022

@adnandautovic

Is it better to be more verbose here?

what's you mean?

Therefore, it would be more consistent to write

yes, I was thinking same, but maybe we miss reason to using strcmp

@bizley bizley closed this as completed in 94dfccd Apr 11, 2022
yus-ham added a commit to yus-ham/yii2 that referenced this issue Jun 11, 2022
* Added missing note for $categoryMap (yiisoft#18834)

* fix invalid link & update (yiisoft#18835)

* Fix yiisoft#18823: Rollback changes yiisoft#18806 in `yii\validators\ExistValidator::checkTargetRelationExistence()`

* docs: update RFC 7239 link (yiisoft#18839)

fix yiisoft#18838

* Do not mention yii2-codeception as it it deprecated

* Fix yiisoft#18840: Fix `yii2/log/Logger` to set logger globally

* Revert changes in dispatcher 18841 (yiisoft#18843)

* Use ircs as IRC protocol

See composer/composer@b583310

* update Nginx: X-Accel-Redirec link (yiisoft#18848)

* update HttpOnly wiki article link (yiisoft#18851)

* Fix yiisoft#18783: Add support for URI namespaced tags in `XmlResponseFormatter`, add `XmlResponseFormatter::$objectTagToLowercase` option to lowercase object tags

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18762: Added `yii\helpers\Json::$keepObjectType` and `yii\web\JsonResponseFormatter::$keepObjectType` in order to avoid changing zero-indexed objects to array in `yii\helpers\Json::encode()`

* update SecureFlag wiki article link (yiisoft#18853)

* Remove typo in pt-BR migration docs (yiisoft#18855)

Was: "...deleta um registro de uma tabela, você possivelmente mente"
Changed to: "...deleta um registro de uma tabela, você possivelmente"

* Optimistic locking update (yiisoft#18857)

The steps/example requires including the optimisticLock() function in the model that will return the field storing the version.

* Add optimisticLock to all guide languages (yiisoft#18860)

* Fix yiisoft#17119: Fix `yii\caching\Cache::multiSet()` to use `yii\caching\Cache::$defaultDuration` when no duration is passed

* Fix yiisoft#18845: Fix duplicating `id` in `MigrateController::addDefaultPrimaryKey()`

* Minor tests cleanup (yiisoft#18811)

* update PHP callback link (yiisoft#18864)

* Fix yiisoft#18812: Added error messages and optimized "error" methods in `yii\helpers\BaseJson`

* Fix yii\base\Controller::bindInjectedParams() to not throw error when argument of `ReflectionUnionType` type is passed (yiisoft#18869)

* update traits link (yiisoft#18870)

* update class autoloading mechanism link (yiisoft#18874)

* update namespace links (yiisoft#18881)

* Fixed ArrayHelper::toArray for DateTime (yiisoft#18880)

* Fixed ArrayHelper::toArray() for DateTime object

* Updated README.md for yiisoft#18880 (Fixed ArrayHelper::toArray() for DateTime object)

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18858: Reduce memory usage in `yii\base\View::afterRender` method

* Fix header collection from array (yiisoft#18883)

* Fixed HeaderCollection::fromArray() key case

* Added CHANGELOG.md line for yiisoft#18883 (Fixed HeaderCollection::fromArray() key case)

* Fix phpdoc of `yii\base\Model` (yiisoft#18888)

* Fix phpdoc of yii\base\Model

* update PDO link (yiisoft#18889)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix PhpDoc of `yii\console\Controller::stderr()` (yiisoft#18885)

* Fix yiisoft#18886: Fix default return of `yii\db\Migration::safeUp()` and `yii\db\Migration::safeDown()`

* Update oracle link (yiisoft#18896)

* Fix an invalid phpDoc annotation of `yii\data\DataProviderInterface::getSort()`. (yiisoft#18897)

* Fix @SInCE tag in XmlResponseFormatter.php (yiisoft#18901)

Wrong version, see https://github.com/yiisoft/yii2/blob/master/framework/CHANGELOG.md#2044-under-development

* Fix yiisoft#18898: Fix `yii\helpers\Inflector::camel2words()` to work with words ending with 0

* update PHP manual link (yiisoft#18905)

* Fix yiisoft#18904: Improve Captcha client-side validation

* Fix yiisoft#18899: Replace usages of `strpos` with `strncmp` and remove redundant usage of `array_merge` and `array_values`

* update prepared statements link (yiisoft#18911)

* Fix yiisoft#18913: Add filename validation for `MessageSource::getMessageFilePath()`

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18733: Fix session offset doc types (yiisoft#18919)

* Fix yiisoft#18908: Add stdClass as possible return type to getBodyParams (yiisoft#18918)

* [docs] typofixes (yiisoft#18920)

* Fix BaseMigrateController::$migrationPath phpdoc (yiisoft#18924)

* Shorten two identical statements in compare validator (yiisoft#18922)

* Fix typos

* Fix yii\i18n\GettextMessageSource PHPDoc (yiisoft#18916)

* Fix phpdoc in BaseFileHelper (yiisoft#18928)

* Framework(Baseyii.php)  -----> fixed typos and improved doc (yiisoft#18927)

* fixed typos and improved doc

* spacing fix

* The ---> the

* removed "are"

Co-authored-by: Bizley <pawel@positive.codes>

* Docs: Update interface link (yiisoft#18931)

* docs improvment (yiisoft#18935)

* Update db-query-builder.md (yiisoft#18934)

* Update db-query-builder.md

Fixing 404 page on guide

* Update db-query-builder.md

removing html

Co-authored-by: Bizley <pawel@positive.codes>

* Update db-query-builder.md (yiisoft#18938)

* Typo PHPDoc (yiisoft#18939)

Typo PHPDoc

Co-authored-by: toir427 <t.tuychiev@safenetpay.com>
Co-authored-by: Bizley <pawel@positive.codes>

* Update db-active-record.md interface link (yiisoft#18944)

* update DOMLint link (yiisoft#18946)

* update max_file_uploads link (yiisoft#18953)

* Fix yiisoft#18909: Fix bug with binding default action parameters for controllers

* update date() link (yiisoft#18956)

Co-authored-by: Bizley <pawel@positive.codes>

* [doc] Update PHP doc links (yiisoft#18957)

* Replace https://secure.php.net with https://www.php.net

* Replace http://www.php.net with https://www.php.net

* Fix JA guide page (yiisoft#18958)

* Update PR template (yiisoft#18963)

* Fix yiisoft#18955: Check `yiisoft/yii2-swiftmailer` before using as default mailer in `yii\base\Application`

* Remove redundand comments in `PhpDocController` (yiisoft#18968)

* Update Session.php (yiisoft#18969)

* Fix yiisoft#18328: Raise warning when trying to register a file after `View::endBody()` has been called

* update NIST RBAC model link (yiisoft#18973)

* StringHelper::dirname() fixed for trailing slash (yiisoft#18965)

* StringHelper::dirname() fixed for trailing slash

* StringHelper::dirname() fix for PHP <7 versions

* Update CHANGELOG.md

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: Bizley <pawel@positive.codes>

* Fix#18328: Yii::warning() raised on file register after View::endBody() has been moved to View::endPage() (yiisoft#18975)

Co-authored-by: Mehdi Achour <machour@gmail.com>

* Fix yiisoft#18962: Extend ignore list in `yii\console\MessageController::$except`

* Fix migration command example in BaseMigrateController (yiisoft#18978)

* update Data Validation link (yiisoft#18980)

* Docs enhancements (yiisoft#18985)

- added more strict checks in if condition: that if `$user` exists, only then call its method
 - Renamed `verifyPassword` to `validatePassword` because yii2-advanced-template use that method name

* update Command Injection link (yiisoft#18989)

* Brazilian Portuguese translation of the Helpers Overview (yiisoft#18996)

* Improve ArrayAccess phpdoc in yii\base\Model (yiisoft#18992)

Fix parameter name in `offsetSet()`
Fix type of property `$offset` in PhpDoc's

* Fix yiisoft#18988: Fix default value of `yii\console\controllers\MessageController::$translator`

* update code Injection link (yiisoft#18999)

* update Cross Site Scripting link (yiisoft#19002)

* Correct note about html encoded items in radio/checkboxlist (yiisoft#19007)

* Fix variable references in phpdoc (yiisoft#19006)

* Update core-code-style.md (yiisoft#19008)

Changed Section 4 from CamelCase to StudlyCase to match the overview and Section 3.

* Fix PhpDoc of  `ActiveField` (yiisoft#19001)

* Fix yiisoft#18993: Load defaults by `attributes()` in `yii\db\ActiveRecord::loadDefaultValues()`

* update SQL Injection link (yiisoft#19015)

* update csrf link (yiisoft#19023)

* Prepare for new apidoc (part 2) (yiisoft#19010)

* Fix broken links for events with different namespace
* Fix broken links in see tag
* Fix broken links in see tag (loadData())
* Fix broken link for var_export()
* Fix broken link for CVE
* Remove redundant markdown link wrap in see tags
* Remove see tags that refer to private properties
* Remove more see tags that refer to private properties
* Remove see tags that refer to private methods
* Remove one more redundant markdown link wrap in see tag [skip ci]
* Fix typo in see tag (causes broken link)
* Remove more see tags that refer to private methods

* update SameSite link (yiisoft#19029)

* Fix yiisoft#19021: Fix return type in PhpDoc `yii\db\Migration` functions `up()`, `down()`, `safeUp()` and `safeDown()`

* Fixed PhpDoc in Migration.php (revert yiisoft#18886)

Fixed the return type of `up()`, `down()`, `safeUp()` and `safeDown()` functions to match the described behavior.
The current implementation checks for `false`, "all other return values mean the migration succeeds".
This PR also reverts yiisoft#18886 since it was a code fix for what was documentation error.

Allow all possible values for `yii\db\Migration` functions `up()`, `down()`, `safeUp()` and `safeDown()`

* update Exception Handling link (yiisoft#19035)

* Fix yiisoft#18967: Use proper attribute names for tabular data in `yii\widgets\ActiveField::addAriaAttributes()`

* Fix yiisoft#19042: Fix broken link (https://owasp.org/index.php/Top_10_2007-Information_Leakage) (yiisoft#19043)

* Normalize todos (yiisoft#19045)

* Fix yiisoft#13105: Add yiiActiveForm validate_only property for skipping form auto-submission

* update APC extension link (yiisoft#19051)

* Update Controller phpdoc (yiisoft#19052)

* Fix yiisoft#19030: Add DI container usage to `yii\base\Widget::end()`

* Fix yiisoft#19031: Fix displaying console help for parameters with declared types

* (Docs) Fixed preview for $prepareDataProvider (yiisoft#19055)

* update PHP XCache link (yiisoft#19058)

* update MySQL link (yiisoft#19063)

* (Docs) Normalized existing "virtual" / "magic" methods' descriptions, add missing ones (yiisoft#19066)

* Fix yiisoft#19005: Add `yii\base\Module::setControllerPath()`

* Fix bugs preventing generation of PDF guide [skip ci] (yiisoft#19076)

* Update RFC 7232 links (yiisoft#19069)

* Update CORS Preflight requests link (yiisoft#19078)

* Fixed rendering of Apache config snippet in ru guide [skip ci] (yiisoft#19080)

* (Docs) Added missing close tag for span (yiisoft#19081)

* Fix yiisoft#19086: Update HTTP Bearer Tokens link (yiisoft#19087)

* Fix yiisoft#19095: Update broken ICU manual link (yiisoft#19097)

* Fix ci-mssql.yml (yiisoft#19102)

* Fix build.yml (yiisoft#19104)

* Revert "Fix ci-mssql.yml (yiisoft#19102)"

This reverts commit 53a9953.

* Fix yiisoft#19096: Fix `Request::getIsConsoleRequest()` may return erroneously when testing a Web application in Codeception

* update common media types link (yiisoft#19106)

* Fix yiisoft#19108: Optimize `Component::hasEventHandlers()` and `Component::trigger()`

* Fix yiisoft#19110: Update docker.com link (yiisoft#19111)

* Fix yiisoft#18660: Check name if backslash appears

* Fix yiisoft#19098: Add `yii\helper\BaseHtml::$normalizeClassAttribute` to fix duplicate classes

* Add symfonymailer to list of extensions

* update download page link (yiisoft#19115)

* Fix yiisoft#19067: Fix constant session regeneration (yiisoft#19113)

* Fix constant session regeneration
* Add tests for session ID, always regenerating session ID for switching identity

* Adjust CHANGELOG messages

* Use https in composer.json for yiiframework.com

* release version 2.0.44

* prepare for next release

* update documentation of the ICU project link (yiisoft#19125)

* update ICU documentation link (yiisoft#19128)

* Fixed typo (yiisoft#19134)

* update ICU API reference link (yiisoft#19143)

* Fix yiisoft#19138: Allow digits in language code

Co-authored-by: ntesic <nikolatesic@gmail.com>

* update formatting reference link (yiisoft#19157)

* Fix making a guide-2.0 for the website (yiisoft#19159)

* update formatting reference link (yiisoft#19164)

* Fix yiisoft#19041: Fix PHP 8.1 issues

* Fix typo (yiisoft#19168)

* update numbering schemas link (yiisoft#19170)

* Fix yiisoft#19148: Fix undefined array key errors in `yii\db\ActiveRelationTrait`

* Fix yiisoft#19176: Add #[\ReturnTypeWillChange] on MSSQL classes (yiisoft#19177)

* Fix yiisoft#19178: Fix null value in unserialize for PHP 8.1 (yiisoft#19178)

* Fix yiisoft#19182: RBAC Migration failed when use oracle with oci8

* update rules reference link (yiisoft#19181)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix yiisoft#19171: Added `$pagination` and `$sort` to `\yii\rest\IndexAction` for easy configuration

* Fix incorrect translation in Russian tutorial-start-from-scratch.md (yiisoft#19193)

* Fix yiisoft#19191: Change `\Exception` to `\Throwable` in `BadRequestHttpException` and `HttpException`

* Fix yiisoft#19187: Fix `yii\filters\PageCache` to store original headers names instead of normalized ones

* update ICU library link (yiisoft#19190)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix BC introduced in yiisoft#19188 (yiisoft#19194)

* update ICU site link (yiisoft#19196)

* update ICU manual link (yiisoft#19201)

* Fix yiisoft#19204: Support numbers in Inflector::camel2words

* update APC link (yiisoft#19210)

* Fix yiisoft#19047, fix yiisoft#19118: Fix deprecated preg_match() passing null parameters #2 in db\mysql\Schema.php

* Fix yiisoft#19004: Container::resolveCallableDependencies() unable to handle union and intersection types

Co-authored-by: Sartor <sartor@syneforge.com>

* Fix yiisoft#19130: Fix DbSession breaks in some case

* Fix yiisoft#18821: Allow `yii\db\ExpressionInterface` as column in `yii\db\conditions\InBuilder`

* Fix yiisoft#18821: Additional type fixes (yiisoft#19217)

* update boolean attributes link (yiisoft#19216)

Co-authored-by: Bizley <pawel@positive.codes>

* clarification added (yiisoft#19220)

* release version 2.0.45

* prepare for next release

* Fix MimeTest

* update links (en) (yiisoft#19222)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix a typo in a Japanese doc (yiisoft#19232)

👍🏻

* Fix PhpDoc of `yii\db\pgsql\QueryBuilder::normalizeTableRowData()` (yiisoft#19234)

* Update links (ar) (yiisoft#19230)

* Fix bug yiisoft#19235 (yiisoft#19247)

* Fix bug yiisoft#19235

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update db-active-record.md (yiisoft#19250)

Complete the php command.

* Fix yiisoft#19243: Handle `finfo_open` for tar.xz as `application/octet-stream` on PHP 8.1

* Remove code duplication in `ActiveRecord::attributes()`

* update links (es, fr) (yiisoft#19245)

* update links (id, it lang) (yiisoft#19258)

* Fixing typo (yiisoft#19269)

Fixing typo on word "métido", it is supposed to be "método"

* update links (ja, pl lang) (yiisoft#19276)

* Update links (RU and PT-BR lang) (yiisoft#19281)

* Update links (RU lang)

* Update links (PT-BR lang)

* composer update (allow-plugins) (yiisoft#19277)

Co-authored-by: Bizley <pawel@positive.codes>

* update links (yiisoft#19283)

* Fix @param type (yiisoft#19286)

* update links (uk, uz lang) (yiisoft#19288)

* Fix `Model::__clone()` (yiisoft#19291)

* Fix Model::__clone()

Reset validators and errors after cloning to prevent changing cloned model via inner objects of clone like as InlineValidator

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* update links (vi, zh lang) (yiisoft#19294)

* Update links (internals) (yiisoft#19298)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* update internals links (yiisoft#19300)

* Set the default  to an array (yiisoft#19306)

* Rewrite Model::attributes() (yiisoft#19309)

* Optimize Model::attributes()

* Update CHANGELOG.md

* Add TrimValidator (yiisoft#19304)

* Add TrimValidator

* Update Validator.php

* Update Validator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update CHANGELOG.md

* Update Validator.php

* Fix yiisoft#19322: Revert force setting value to empty string in case it's `null` in `yii\validators\FilterValidator::validateAttribute()`

* Fix yii\caching\Dependency::generateReusableHash() (yiisoft#19303)

* Fix yii\caching\Dependency::generateReusableHash()

* Update DbQueryDependencyTest.php

* Update CHANGELOG.md

* Update Dependency.php

* Update framework/caching/Dependency.php

Co-authored-by: Bizley <pawel@positive.codes>

* Update comment Dependency::generateReusableHash()

Co-authored-by: Bizley <pawel@positive.codes>

* GroupUrlRule slash in prefix (yiisoft#19330)

* Bring back slash

* changelog

* group url rule test

* Add `yii\web\UploadedFile::$fullPath` (yiisoft#19308)

* Add `yii\web\UploadedFile::$fullPath`

`$_FILES['userfile']['full_path']` Available as of PHP 8.1.

Updates related methods `loadFilesRecursive()` and `loadFilesRecursive()`

* Update UploadedFile.php

* Update UploadedFile.php

* Update UploadedFile.php

* Update CHANGELOG.md

* Apply suggestions from code review

Co-authored-by: Bizley <pawel@positive.codes>

* Update UploadedFile.php

Co-authored-by: Bizley <pawel@positive.codes>

* Fix types (yiisoft#19332)

* Migration::upsert() returns void

* Unneeded `@property` tags

* Add missing `null` param/return types

* Null types for db\Query + db\ActiveQuery

* Fixed testSelect

* Fix yiisoft#19254: Support specifying custom characters for `yii.validation.trim()` and replace deprecated `jQuery.trim()`

* Fix more types (yiisoft#19333)

* Migration::upsert() returns void

* Unneeded `@property` tags

* Add missing `null` param/return types

* Null types for db\Query + db\ActiveQuery

* Fixed testSelect

* Null types for Validator

* Several more null types

* One more

* Make AccessRule::$allow always a boolean

It doesn't have any special null handling, so it's safe to default to false

* Validator::$skipOnEmpty is always a boolean

* Catch all throwable from Widget::widget()

* Don't limit $previous args to \Exception

The actual \Exception allows $previous to be any throwable in PHP 7+

* Add Throwable catch block to Instance::get()

* Throwable cleanup

Comment changes only.

- Document \Throwable instead of \Exception wherever appropriate
- Removed redundant exception/error classes when \Throwable is referenced

* Yii::setlogger() accepts null

* ArrayHelper::removeValue() can remove any type of value

* Change default $allow value to false

* Added `jfif` to mimeTypes.php (yiisoft#19338)

* Added `jfif` to mimeTypes.php

Added the 'image/jpeg' mime type for `.jfif` files (https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)

* Update MimeTest.php

Added 'jfif' extension to MimeTest

* Fix autoload sections in composer.json (yiisoft#19337)

Move `yii\cs\`  into `autoload-dev` and add  `test` and `build` namespaces

* Fix yiisoft#19328: Passing null to parameter #1 ($string) of type string is deprecated in `yii\db\oci\Schema`

Co-authored-by: Kevin Desmettre <kdesmettre@oph74.fr>

* Extend examples in `guide/input-tabular-input.md` (yiisoft#19278)

* Fix yiisoft#19295: Added alias `text/rtf` for mime-type `application/rtf`

* Fix yiisoft#19270: Replace deprecated `scss` converter in `yii\web\AssetConverter::$commands`

* Fix yiisoft#19256: Pass missed `$view` to user's callback in `yii\validators\InlineValidator::clientValidateAttribute()`

* Resolve yiisoft#19327 (yiisoft#19336)

* Resolve yiisoft#19327

* cast from extracted column

* Update CHANGELOG

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* Improve DataFilterTest (yiisoft#19341)

* Fix broken code block inside note block (yiisoft#19342)

* Fix yiisoft#19312: Fix PHP 8.1 error when passing null to `yii\helpers\BaseInflector`

* Fix broken code block (yiisoft#19344)

* 19324 dropdownlist selection for boolean attributes (yiisoft#19331)

* Fix yiisoft#19324 by allowing for direct comparison

* Invert meaning of strict

* Remove WinterSilence from authors list

* Fix improper implementation of strict checks

* Add test for renderSelectOptions

* Partially revert 'Fix improper implementation of strict checks'

* Add additional tests for strict

* Revert 'Fix improper implementation of strict checks'

* Add failing test for demonstration

* Comment out demonstration test

* Update framework/CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

Co-authored-by: Bizley <pawel@positive.codes>

* Fix code block in rest resource docs (yiisoft#19346)

Co-authored-by: Bizley <pawel@positive.codes>

* Allow null values for date formatters in Formatter (yiisoft#19348)

* Fix PHP 8.1 Empty header DataColumn (yiisoft#19350)

* Fix PHP 8.1 Empty header DataColumn

yiisoft#19349

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* Fix generation of docs on the site (yiisoft#19353)

* Fix yiisoft#19290: Fix `Request::getHostInfo()` doesn’t return the port if a Host header is used

* Fixed issue when trying to check if a multidimensional array is dirty… (yiisoft#19272)

* Fixed issue when trying to check if a multidimensional array is dirty attribute or not

* fixed issue in logic and added test

* Updated test to only support PHP 7 and above

* Code refactoring

* Updated Test Cases

* Update framework/helpers/BaseArrayHelper.php

Co-authored-by: Bizley <pawel@positive.codes>

* Added to CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Maher Al Ghoul <maher.gh@opensooq.com>
Co-authored-by: Bizley <pawel@positive.codes>
Co-authored-by: Maher Al Ghoul <maher@rufoof.com>
Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: Maher Al Ghoul <Maher.AlGhoul@opensooq.com>

* Fix guide generation errors (yiisoft#19356)

* Add guide section for filtering REST collection. (yiisoft#19357)

* Add guide section for filtering REST collection.

* Update docs/guide/rest-filtering-collections.md

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

* Update docs/guide/rest-filtering-collections.md

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

* Optimize BaseArrayHelper::isIndexed() (yiisoft#19363)

* add rest-quick-start (yiisoft#19364)

* Fix yiisoft#19368: Fix PHP 8.1 error when `$fileMimeType` is `null` in `yii\validators\FileValidator::validateMimeType()`

* Update workflows (yiisoft#19370)

* Fix scrutinizer ci and remove code coverage github actions. (yiisoft#19371)

* Fix typo in pipeline config (yiisoft#19372)

* Update PHP version is README.md (yiisoft#19375)

* Update link in Yii::powered() (yiisoft#19376)

* Fix returning type of `yii\base\Widget::run()` (yiisoft#19378)

* Fix yiisoft#19380: Fix PHP 8.1 passing non string to trim() in `yii\db\Query`

* Add Uzbek cyrillic messages translation (yiisoft#19382)

* Add Uzbek (cyrillic) language in messages config (yiisoft#19383)

* Fix typo in rest-filtering-collections.md (yiisoft#19388)

* Simple optimization and PHPDoc type fixes in yii\helpers\BaseArrayHelper (yiisoft#19387)

* Removed merging of parent labels in DynamicModel::attributeLabels() since DynamicModel::attributes() does not merge parent attributes. Cleaned up DynamicModel documentation. (yiisoft#19394)

* Fix scrutinizer (yiisoft#19395)

* fix import UnauthorizedHttpException (yiisoft#19404)

* Fix BaseArrayHelper::htmlDecode() (yiisoft#19386)

* Fix BaseArrayHelper::htmlDecode()

Add missed second argument on recursive calling.

* Fix BaseArrayHelper::htmlDecode()

`htmlspecialchars_decode()` flags must be same to `htmlspecialchars()` in `BaseArrayHelper::htmlEncode()`

* Update ArrayHelperTest.php

* Update ArrayHelperTest.php

* Update ArrayHelperTest.php

* Update CHANGELOG.md

* test workflow fix

* Update DeadLockTest::testDeadlockException() (yiisoft#19385)

* Add test case for Cache::getValue() with non existent key (yiisoft#19396)

* Fix yiisoft#19384: Normalize `setBodyParams()` and `getBodyParam()` in `yii\web\Request`

* Add TrimValidator to classes.php (yiisoft#19412)

* Fix translators in `messages/config.php` (yiisoft#19416)

* Fix translators in `messages/config.php` 

yiisoft#19415

* Update messageConfig.php

* Update config.php

* Update messageConfig.php

* Update CHANGELOG.md

* Update framework/CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

Co-authored-by: Bizley <pawel@positive.codes>

* Fix outdated links in Formatter (yiisoft#19422)

* Normalize PhpDoc types in AssetsManager (yiisoft#19419)

* Fix yiisoft#19402: Add shutdown event and fix working directory in `yii\base\ErrorHandler`

* Fix yiisoft#19403: Fix types in `yii\web\SessionIterator`

* Fix yiisoft#19420: Update list of JS callbacks in `yii\widgets\MaskedInput`

* Change http to https in requirements.php (yiisoft#19423)

* Fix yiisoft#19401: Delay `exit(1)` in `yii\base\ErrorHandler::handleFatalError`

* Make docs more clear about the length of the result (yiisoft#19424)

* Truncate help add method and suffix (yiisoft#19425)

yiisoft#19424

* update memcached link (yiisoft#19428)

* Update intro-yii.md & intro-upgrade-from-v1.md & add start-prerequisites.md translation [id] (yiisoft#19427)

* Update intro-yii.md translation [id]

* Update intro-upgrade-from-v1.md translation [id]

* Add start-prerequisites.md translation [id]

Co-authored-by: Mas Aldo <aldo@mifx.com>

Co-authored-by: Bizley <pawel@positive.codes>
Co-authored-by: Ihor Sychevskyi <arhell333@gmail.com>
Co-authored-by: Anton <info@ensostudio.ru>
Co-authored-by: Evgeniy Tkachenko <et.coder@gmail.com>
Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: lexizz <lexizz19@mail.ru>
Co-authored-by: Jaak Tamre <jaak.tamre@gmail.com>
Co-authored-by: Francisco Budaszewski Zanatta <xikaoswow@gmail.com>
Co-authored-by: Senthil Nathan <snathan9@users.noreply.github.com>
Co-authored-by: Oscar Barrett <OscarBarrett@users.noreply.github.com>
Co-authored-by: rhertogh <rhertogh@users.noreply.github.com>
Co-authored-by: Leo <leo.on.the.earth@gmail.com>
Co-authored-by: Alexander Gubarev <gubarev.alex@gmail.com>
Co-authored-by: Basil <git@nadar.io>
Co-authored-by: Michaël Arnauts <michael.arnauts@gmail.com>
Co-authored-by: hexkir <4928273+hexkir@users.noreply.github.com>
Co-authored-by: Oleg Poludnenko <ua.oleg@gmail.com>
Co-authored-by: Mario Simão <mariosimao@poli.ufrj.br>
Co-authored-by: JT Smith <nexxai@gmail.com>
Co-authored-by: Toir Tuychiev <toir427@gmail.com>
Co-authored-by: BIKI DAS <bikid475@gmail.com>
Co-authored-by: Chris Smith <chris@cgsmith.net>
Co-authored-by: toir427 <t.tuychiev@safenetpay.com>
Co-authored-by: Aleksandr Bogatikov <perlexed@gmail.com>
Co-authored-by: Mehdi Achour <machour@gmail.com>
Co-authored-by: Sohel Ahmed Mesaniya <sam.wankaner@gmail.com>
Co-authored-by: Raphael de Almeida <jaguarnet7@gmail.com>
Co-authored-by: Marco van 't Wout <marco@tremani.nl>
Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>
Co-authored-by: John Goetz <jgoetz@users.noreply.github.com>
Co-authored-by: AnkIF <33079906+AnkIF@users.noreply.github.com>
Co-authored-by: ptolomaues <vladislav.lutsenko@gmail.com>
Co-authored-by: Papp Péter <papp.peter@p4it.hu>
Co-authored-by: irice <sgetaplus@gmail.com>
Co-authored-by: Bilal <33921776+glowinginthedark@users.noreply.github.com>
Co-authored-by: ntesic <nikola.tesic@open.telekom.rs>
Co-authored-by: ntesic <nikolatesic@gmail.com>
Co-authored-by: charescape <53265646+charescape@users.noreply.github.com>
Co-authored-by: stevekr <stevekr@users.noreply.github.com>
Co-authored-by: Aurélien Chretien <achretien@users.noreply.github.com>
Co-authored-by: Roman <murolike@gmail.com>
Co-authored-by: twinpigs <mr.owner@gmail.com>
Co-authored-by: Dmitrijlin <dmitrij-lin9@rambler.ru>
Co-authored-by: Long TRAN <longthanhtran@users.noreply.github.com>
Co-authored-by: Sartor <sartorua@gmail.com>
Co-authored-by: Sartor <sartor@syneforge.com>
Co-authored-by: Roman Grinyov <w3lifer@gmail.com>
Co-authored-by: AIZAWA Hina <hina@fetus.jp>
Co-authored-by: Ar Rakin <68149013+virtual-designer@users.noreply.github.com>
Co-authored-by: jef348 <71833496+jef348@users.noreply.github.com>
Co-authored-by: Daniel Becker Alves <danielbeckeralves@gmail.com>
Co-authored-by: Ar Rakin <rakinar2@gmail.com>
Co-authored-by: Tobias Munk <schmunk@usrbin.de>
Co-authored-by: Ben Croker <57572400+bencroker@users.noreply.github.com>
Co-authored-by: eecjimmy <eecjimmy@users.noreply.github.com>
Co-authored-by: Brandon Kelly <brandon@pixelandtonic.com>
Co-authored-by: Arkeins <7311955+Arkeins@users.noreply.github.com>
Co-authored-by: Kevin Desmettre <kdesmettre@oph74.fr>
Co-authored-by: Alexey <neff.alexey@gmail.com>
Co-authored-by: FordSmh <61039737+FordSmh@users.noreply.github.com>
Co-authored-by: Adnan <100121069+adnandautovic@users.noreply.github.com>
Co-authored-by: Maher Al Ghoul <speedplli@windowslive.com>
Co-authored-by: Maher Al Ghoul <maher.gh@opensooq.com>
Co-authored-by: Maher Al Ghoul <maher@rufoof.com>
Co-authored-by: Maher Al Ghoul <Maher.AlGhoul@opensooq.com>
Co-authored-by: Wilmer Arambula <42547589+terabytesoftw@users.noreply.github.com>
Co-authored-by: Kenjebaev Sag'indiq <kenjebaev.sagindik@gmail.com>
Co-authored-by: Vitaly <walkboy@mail.ru>
Co-authored-by: PowerGamer1 <PowerGamer1@users.noreply.github.com>
Co-authored-by: Nekrasov Ilya <nekrasov.ilya90@gmail.com>
Co-authored-by: Aldo Karendra <akarendra835@gmail.com>
Co-authored-by: Mas Aldo <aldo@mifx.com>
yus-ham added a commit to yus-ham/yii2 that referenced this issue Jun 11, 2022
* Added missing note for $categoryMap (yiisoft#18834)

* fix invalid link & update (yiisoft#18835)

* Fix yiisoft#18823: Rollback changes yiisoft#18806 in `yii\validators\ExistValidator::checkTargetRelationExistence()`

* docs: update RFC 7239 link (yiisoft#18839)

fix yiisoft#18838

* Do not mention yii2-codeception as it it deprecated

* Fix yiisoft#18840: Fix `yii2/log/Logger` to set logger globally

* Revert changes in dispatcher 18841 (yiisoft#18843)

* Use ircs as IRC protocol

See composer/composer@b583310

* update Nginx: X-Accel-Redirec link (yiisoft#18848)

* update HttpOnly wiki article link (yiisoft#18851)

* Fix yiisoft#18783: Add support for URI namespaced tags in `XmlResponseFormatter`, add `XmlResponseFormatter::$objectTagToLowercase` option to lowercase object tags

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18762: Added `yii\helpers\Json::$keepObjectType` and `yii\web\JsonResponseFormatter::$keepObjectType` in order to avoid changing zero-indexed objects to array in `yii\helpers\Json::encode()`

* update SecureFlag wiki article link (yiisoft#18853)

* Remove typo in pt-BR migration docs (yiisoft#18855)

Was: "...deleta um registro de uma tabela, você possivelmente mente"
Changed to: "...deleta um registro de uma tabela, você possivelmente"

* Optimistic locking update (yiisoft#18857)

The steps/example requires including the optimisticLock() function in the model that will return the field storing the version.

* Add optimisticLock to all guide languages (yiisoft#18860)

* Fix yiisoft#17119: Fix `yii\caching\Cache::multiSet()` to use `yii\caching\Cache::$defaultDuration` when no duration is passed

* Fix yiisoft#18845: Fix duplicating `id` in `MigrateController::addDefaultPrimaryKey()`

* Minor tests cleanup (yiisoft#18811)

* update PHP callback link (yiisoft#18864)

* Fix yiisoft#18812: Added error messages and optimized "error" methods in `yii\helpers\BaseJson`

* Fix yii\base\Controller::bindInjectedParams() to not throw error when argument of `ReflectionUnionType` type is passed (yiisoft#18869)

* update traits link (yiisoft#18870)

* update class autoloading mechanism link (yiisoft#18874)

* update namespace links (yiisoft#18881)

* Fixed ArrayHelper::toArray for DateTime (yiisoft#18880)

* Fixed ArrayHelper::toArray() for DateTime object

* Updated README.md for yiisoft#18880 (Fixed ArrayHelper::toArray() for DateTime object)

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18858: Reduce memory usage in `yii\base\View::afterRender` method

* Fix header collection from array (yiisoft#18883)

* Fixed HeaderCollection::fromArray() key case

* Added CHANGELOG.md line for yiisoft#18883 (Fixed HeaderCollection::fromArray() key case)

* Fix phpdoc of `yii\base\Model` (yiisoft#18888)

* Fix phpdoc of yii\base\Model

* update PDO link (yiisoft#18889)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix PhpDoc of `yii\console\Controller::stderr()` (yiisoft#18885)

* Fix yiisoft#18886: Fix default return of `yii\db\Migration::safeUp()` and `yii\db\Migration::safeDown()`

* Update oracle link (yiisoft#18896)

* Fix an invalid phpDoc annotation of `yii\data\DataProviderInterface::getSort()`. (yiisoft#18897)

* Fix @SInCE tag in XmlResponseFormatter.php (yiisoft#18901)

Wrong version, see https://github.com/yiisoft/yii2/blob/master/framework/CHANGELOG.md#2044-under-development

* Fix yiisoft#18898: Fix `yii\helpers\Inflector::camel2words()` to work with words ending with 0

* update PHP manual link (yiisoft#18905)

* Fix yiisoft#18904: Improve Captcha client-side validation

* Fix yiisoft#18899: Replace usages of `strpos` with `strncmp` and remove redundant usage of `array_merge` and `array_values`

* update prepared statements link (yiisoft#18911)

* Fix yiisoft#18913: Add filename validation for `MessageSource::getMessageFilePath()`

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>

* Fix yiisoft#18733: Fix session offset doc types (yiisoft#18919)

* Fix yiisoft#18908: Add stdClass as possible return type to getBodyParams (yiisoft#18918)

* [docs] typofixes (yiisoft#18920)

* Fix BaseMigrateController::$migrationPath phpdoc (yiisoft#18924)

* Shorten two identical statements in compare validator (yiisoft#18922)

* Fix typos

* Fix yii\i18n\GettextMessageSource PHPDoc (yiisoft#18916)

* Fix phpdoc in BaseFileHelper (yiisoft#18928)

* Framework(Baseyii.php)  -----> fixed typos and improved doc (yiisoft#18927)

* fixed typos and improved doc

* spacing fix

* The ---> the

* removed "are"

Co-authored-by: Bizley <pawel@positive.codes>

* Docs: Update interface link (yiisoft#18931)

* docs improvment (yiisoft#18935)

* Update db-query-builder.md (yiisoft#18934)

* Update db-query-builder.md

Fixing 404 page on guide

* Update db-query-builder.md

removing html

Co-authored-by: Bizley <pawel@positive.codes>

* Update db-query-builder.md (yiisoft#18938)

* Typo PHPDoc (yiisoft#18939)

Typo PHPDoc

Co-authored-by: toir427 <t.tuychiev@safenetpay.com>
Co-authored-by: Bizley <pawel@positive.codes>

* Update db-active-record.md interface link (yiisoft#18944)

* update DOMLint link (yiisoft#18946)

* update max_file_uploads link (yiisoft#18953)

* Fix yiisoft#18909: Fix bug with binding default action parameters for controllers

* update date() link (yiisoft#18956)

Co-authored-by: Bizley <pawel@positive.codes>

* [doc] Update PHP doc links (yiisoft#18957)

* Replace https://secure.php.net with https://www.php.net

* Replace http://www.php.net with https://www.php.net

* Fix JA guide page (yiisoft#18958)

* Update PR template (yiisoft#18963)

* Fix yiisoft#18955: Check `yiisoft/yii2-swiftmailer` before using as default mailer in `yii\base\Application`

* Remove redundand comments in `PhpDocController` (yiisoft#18968)

* Update Session.php (yiisoft#18969)

* Fix yiisoft#18328: Raise warning when trying to register a file after `View::endBody()` has been called

* update NIST RBAC model link (yiisoft#18973)

* StringHelper::dirname() fixed for trailing slash (yiisoft#18965)

* StringHelper::dirname() fixed for trailing slash

* StringHelper::dirname() fix for PHP <7 versions

* Update CHANGELOG.md

Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: Bizley <pawel@positive.codes>

* Fix#18328: Yii::warning() raised on file register after View::endBody() has been moved to View::endPage() (yiisoft#18975)

Co-authored-by: Mehdi Achour <machour@gmail.com>

* Fix yiisoft#18962: Extend ignore list in `yii\console\MessageController::$except`

* Fix migration command example in BaseMigrateController (yiisoft#18978)

* update Data Validation link (yiisoft#18980)

* Docs enhancements (yiisoft#18985)

- added more strict checks in if condition: that if `$user` exists, only then call its method
 - Renamed `verifyPassword` to `validatePassword` because yii2-advanced-template use that method name

* update Command Injection link (yiisoft#18989)

* Brazilian Portuguese translation of the Helpers Overview (yiisoft#18996)

* Improve ArrayAccess phpdoc in yii\base\Model (yiisoft#18992)

Fix parameter name in `offsetSet()`
Fix type of property `$offset` in PhpDoc's

* Fix yiisoft#18988: Fix default value of `yii\console\controllers\MessageController::$translator`

* update code Injection link (yiisoft#18999)

* update Cross Site Scripting link (yiisoft#19002)

* Correct note about html encoded items in radio/checkboxlist (yiisoft#19007)

* Fix variable references in phpdoc (yiisoft#19006)

* Update core-code-style.md (yiisoft#19008)

Changed Section 4 from CamelCase to StudlyCase to match the overview and Section 3.

* Fix PhpDoc of  `ActiveField` (yiisoft#19001)

* Fix yiisoft#18993: Load defaults by `attributes()` in `yii\db\ActiveRecord::loadDefaultValues()`

* update SQL Injection link (yiisoft#19015)

* update csrf link (yiisoft#19023)

* Prepare for new apidoc (part 2) (yiisoft#19010)

* Fix broken links for events with different namespace
* Fix broken links in see tag
* Fix broken links in see tag (loadData())
* Fix broken link for var_export()
* Fix broken link for CVE
* Remove redundant markdown link wrap in see tags
* Remove see tags that refer to private properties
* Remove more see tags that refer to private properties
* Remove see tags that refer to private methods
* Remove one more redundant markdown link wrap in see tag [skip ci]
* Fix typo in see tag (causes broken link)
* Remove more see tags that refer to private methods

* update SameSite link (yiisoft#19029)

* Fix yiisoft#19021: Fix return type in PhpDoc `yii\db\Migration` functions `up()`, `down()`, `safeUp()` and `safeDown()`

* Fixed PhpDoc in Migration.php (revert yiisoft#18886)

Fixed the return type of `up()`, `down()`, `safeUp()` and `safeDown()` functions to match the described behavior.
The current implementation checks for `false`, "all other return values mean the migration succeeds".
This PR also reverts yiisoft#18886 since it was a code fix for what was documentation error.

Allow all possible values for `yii\db\Migration` functions `up()`, `down()`, `safeUp()` and `safeDown()`

* update Exception Handling link (yiisoft#19035)

* Fix yiisoft#18967: Use proper attribute names for tabular data in `yii\widgets\ActiveField::addAriaAttributes()`

* Fix yiisoft#19042: Fix broken link (https://owasp.org/index.php/Top_10_2007-Information_Leakage) (yiisoft#19043)

* Normalize todos (yiisoft#19045)

* Fix yiisoft#13105: Add yiiActiveForm validate_only property for skipping form auto-submission

* update APC extension link (yiisoft#19051)

* Update Controller phpdoc (yiisoft#19052)

* Fix yiisoft#19030: Add DI container usage to `yii\base\Widget::end()`

* Fix yiisoft#19031: Fix displaying console help for parameters with declared types

* (Docs) Fixed preview for $prepareDataProvider (yiisoft#19055)

* update PHP XCache link (yiisoft#19058)

* update MySQL link (yiisoft#19063)

* (Docs) Normalized existing "virtual" / "magic" methods' descriptions, add missing ones (yiisoft#19066)

* Fix yiisoft#19005: Add `yii\base\Module::setControllerPath()`

* Fix bugs preventing generation of PDF guide [skip ci] (yiisoft#19076)

* Update RFC 7232 links (yiisoft#19069)

* Update CORS Preflight requests link (yiisoft#19078)

* Fixed rendering of Apache config snippet in ru guide [skip ci] (yiisoft#19080)

* (Docs) Added missing close tag for span (yiisoft#19081)

* Fix yiisoft#19086: Update HTTP Bearer Tokens link (yiisoft#19087)

* Fix yiisoft#19095: Update broken ICU manual link (yiisoft#19097)

* Fix ci-mssql.yml (yiisoft#19102)

* Fix build.yml (yiisoft#19104)

* Revert "Fix ci-mssql.yml (yiisoft#19102)"

This reverts commit 53a9953.

* Fix yiisoft#19096: Fix `Request::getIsConsoleRequest()` may return erroneously when testing a Web application in Codeception

* update common media types link (yiisoft#19106)

* Fix yiisoft#19108: Optimize `Component::hasEventHandlers()` and `Component::trigger()`

* Fix yiisoft#19110: Update docker.com link (yiisoft#19111)

* Fix yiisoft#18660: Check name if backslash appears

* Fix yiisoft#19098: Add `yii\helper\BaseHtml::$normalizeClassAttribute` to fix duplicate classes

* Add symfonymailer to list of extensions

* update download page link (yiisoft#19115)

* Fix yiisoft#19067: Fix constant session regeneration (yiisoft#19113)

* Fix constant session regeneration
* Add tests for session ID, always regenerating session ID for switching identity

* Adjust CHANGELOG messages

* Use https in composer.json for yiiframework.com

* release version 2.0.44

* prepare for next release

* update documentation of the ICU project link (yiisoft#19125)

* update ICU documentation link (yiisoft#19128)

* Fixed typo (yiisoft#19134)

* update ICU API reference link (yiisoft#19143)

* Fix yiisoft#19138: Allow digits in language code

Co-authored-by: ntesic <nikolatesic@gmail.com>

* update formatting reference link (yiisoft#19157)

* Fix making a guide-2.0 for the website (yiisoft#19159)

* update formatting reference link (yiisoft#19164)

* Fix yiisoft#19041: Fix PHP 8.1 issues

* Fix typo (yiisoft#19168)

* update numbering schemas link (yiisoft#19170)

* Fix yiisoft#19148: Fix undefined array key errors in `yii\db\ActiveRelationTrait`

* Fix yiisoft#19176: Add #[\ReturnTypeWillChange] on MSSQL classes (yiisoft#19177)

* Fix yiisoft#19178: Fix null value in unserialize for PHP 8.1 (yiisoft#19178)

* Fix yiisoft#19182: RBAC Migration failed when use oracle with oci8

* update rules reference link (yiisoft#19181)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix yiisoft#19171: Added `$pagination` and `$sort` to `\yii\rest\IndexAction` for easy configuration

* Fix incorrect translation in Russian tutorial-start-from-scratch.md (yiisoft#19193)

* Fix yiisoft#19191: Change `\Exception` to `\Throwable` in `BadRequestHttpException` and `HttpException`

* Fix yiisoft#19187: Fix `yii\filters\PageCache` to store original headers names instead of normalized ones

* update ICU library link (yiisoft#19190)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix BC introduced in yiisoft#19188 (yiisoft#19194)

* update ICU site link (yiisoft#19196)

* update ICU manual link (yiisoft#19201)

* Fix yiisoft#19204: Support numbers in Inflector::camel2words

* update APC link (yiisoft#19210)

* Fix yiisoft#19047, fix yiisoft#19118: Fix deprecated preg_match() passing null parameters #2 in db\mysql\Schema.php

* Fix yiisoft#19004: Container::resolveCallableDependencies() unable to handle union and intersection types

Co-authored-by: Sartor <sartor@syneforge.com>

* Fix yiisoft#19130: Fix DbSession breaks in some case

* Fix yiisoft#18821: Allow `yii\db\ExpressionInterface` as column in `yii\db\conditions\InBuilder`

* Fix yiisoft#18821: Additional type fixes (yiisoft#19217)

* update boolean attributes link (yiisoft#19216)

Co-authored-by: Bizley <pawel@positive.codes>

* clarification added (yiisoft#19220)

* release version 2.0.45

* prepare for next release

* Fix MimeTest

* update links (en) (yiisoft#19222)

Co-authored-by: Bizley <pawel@positive.codes>

* Fix a typo in a Japanese doc (yiisoft#19232)

👍🏻

* Fix PhpDoc of `yii\db\pgsql\QueryBuilder::normalizeTableRowData()` (yiisoft#19234)

* Update links (ar) (yiisoft#19230)

* Fix bug yiisoft#19235 (yiisoft#19247)

* Fix bug yiisoft#19235

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update db-active-record.md (yiisoft#19250)

Complete the php command.

* Fix yiisoft#19243: Handle `finfo_open` for tar.xz as `application/octet-stream` on PHP 8.1

* Remove code duplication in `ActiveRecord::attributes()`

* update links (es, fr) (yiisoft#19245)

* update links (id, it lang) (yiisoft#19258)

* Fixing typo (yiisoft#19269)

Fixing typo on word "métido", it is supposed to be "método"

* update links (ja, pl lang) (yiisoft#19276)

* Update links (RU and PT-BR lang) (yiisoft#19281)

* Update links (RU lang)

* Update links (PT-BR lang)

* composer update (allow-plugins) (yiisoft#19277)

Co-authored-by: Bizley <pawel@positive.codes>

* update links (yiisoft#19283)

* Fix @param type (yiisoft#19286)

* update links (uk, uz lang) (yiisoft#19288)

* Fix `Model::__clone()` (yiisoft#19291)

* Fix Model::__clone()

Reset validators and errors after cloning to prevent changing cloned model via inner objects of clone like as InlineValidator

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* update links (vi, zh lang) (yiisoft#19294)

* Update links (internals) (yiisoft#19298)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* Update links (internals)

* update internals links (yiisoft#19300)

* Set the default  to an array (yiisoft#19306)

* Rewrite Model::attributes() (yiisoft#19309)

* Optimize Model::attributes()

* Update CHANGELOG.md

* Add TrimValidator (yiisoft#19304)

* Add TrimValidator

* Update Validator.php

* Update Validator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update TrimValidator.php

* Update CHANGELOG.md

* Update Validator.php

* Fix yiisoft#19322: Revert force setting value to empty string in case it's `null` in `yii\validators\FilterValidator::validateAttribute()`

* Fix yii\caching\Dependency::generateReusableHash() (yiisoft#19303)

* Fix yii\caching\Dependency::generateReusableHash()

* Update DbQueryDependencyTest.php

* Update CHANGELOG.md

* Update Dependency.php

* Update framework/caching/Dependency.php

Co-authored-by: Bizley <pawel@positive.codes>

* Update comment Dependency::generateReusableHash()

Co-authored-by: Bizley <pawel@positive.codes>

* GroupUrlRule slash in prefix (yiisoft#19330)

* Bring back slash

* changelog

* group url rule test

* Add `yii\web\UploadedFile::$fullPath` (yiisoft#19308)

* Add `yii\web\UploadedFile::$fullPath`

`$_FILES['userfile']['full_path']` Available as of PHP 8.1.

Updates related methods `loadFilesRecursive()` and `loadFilesRecursive()`

* Update UploadedFile.php

* Update UploadedFile.php

* Update UploadedFile.php

* Update CHANGELOG.md

* Apply suggestions from code review

Co-authored-by: Bizley <pawel@positive.codes>

* Update UploadedFile.php

Co-authored-by: Bizley <pawel@positive.codes>

* Fix types (yiisoft#19332)

* Migration::upsert() returns void

* Unneeded `@property` tags

* Add missing `null` param/return types

* Null types for db\Query + db\ActiveQuery

* Fixed testSelect

* Fix yiisoft#19254: Support specifying custom characters for `yii.validation.trim()` and replace deprecated `jQuery.trim()`

* Fix more types (yiisoft#19333)

* Migration::upsert() returns void

* Unneeded `@property` tags

* Add missing `null` param/return types

* Null types for db\Query + db\ActiveQuery

* Fixed testSelect

* Null types for Validator

* Several more null types

* One more

* Make AccessRule::$allow always a boolean

It doesn't have any special null handling, so it's safe to default to false

* Validator::$skipOnEmpty is always a boolean

* Catch all throwable from Widget::widget()

* Don't limit $previous args to \Exception

The actual \Exception allows $previous to be any throwable in PHP 7+

* Add Throwable catch block to Instance::get()

* Throwable cleanup

Comment changes only.

- Document \Throwable instead of \Exception wherever appropriate
- Removed redundant exception/error classes when \Throwable is referenced

* Yii::setlogger() accepts null

* ArrayHelper::removeValue() can remove any type of value

* Change default $allow value to false

* Added `jfif` to mimeTypes.php (yiisoft#19338)

* Added `jfif` to mimeTypes.php

Added the 'image/jpeg' mime type for `.jfif` files (https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)

* Update MimeTest.php

Added 'jfif' extension to MimeTest

* Fix autoload sections in composer.json (yiisoft#19337)

Move `yii\cs\`  into `autoload-dev` and add  `test` and `build` namespaces

* Fix yiisoft#19328: Passing null to parameter #1 ($string) of type string is deprecated in `yii\db\oci\Schema`

Co-authored-by: Kevin Desmettre <kdesmettre@oph74.fr>

* Extend examples in `guide/input-tabular-input.md` (yiisoft#19278)

* Fix yiisoft#19295: Added alias `text/rtf` for mime-type `application/rtf`

* Fix yiisoft#19270: Replace deprecated `scss` converter in `yii\web\AssetConverter::$commands`

* Fix yiisoft#19256: Pass missed `$view` to user's callback in `yii\validators\InlineValidator::clientValidateAttribute()`

* Resolve yiisoft#19327 (yiisoft#19336)

* Resolve yiisoft#19327

* cast from extracted column

* Update CHANGELOG

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* Improve DataFilterTest (yiisoft#19341)

* Fix broken code block inside note block (yiisoft#19342)

* Fix yiisoft#19312: Fix PHP 8.1 error when passing null to `yii\helpers\BaseInflector`

* Fix broken code block (yiisoft#19344)

* 19324 dropdownlist selection for boolean attributes (yiisoft#19331)

* Fix yiisoft#19324 by allowing for direct comparison

* Invert meaning of strict

* Remove WinterSilence from authors list

* Fix improper implementation of strict checks

* Add test for renderSelectOptions

* Partially revert 'Fix improper implementation of strict checks'

* Add additional tests for strict

* Revert 'Fix improper implementation of strict checks'

* Add failing test for demonstration

* Comment out demonstration test

* Update framework/CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

Co-authored-by: Bizley <pawel@positive.codes>

* Fix code block in rest resource docs (yiisoft#19346)

Co-authored-by: Bizley <pawel@positive.codes>

* Allow null values for date formatters in Formatter (yiisoft#19348)

* Fix PHP 8.1 Empty header DataColumn (yiisoft#19350)

* Fix PHP 8.1 Empty header DataColumn

yiisoft#19349

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

* Fix generation of docs on the site (yiisoft#19353)

* Fix yiisoft#19290: Fix `Request::getHostInfo()` doesn’t return the port if a Host header is used

* Fixed issue when trying to check if a multidimensional array is dirty… (yiisoft#19272)

* Fixed issue when trying to check if a multidimensional array is dirty attribute or not

* fixed issue in logic and added test

* Updated test to only support PHP 7 and above

* Code refactoring

* Updated Test Cases

* Update framework/helpers/BaseArrayHelper.php

Co-authored-by: Bizley <pawel@positive.codes>

* Added to CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Maher Al Ghoul <maher.gh@opensooq.com>
Co-authored-by: Bizley <pawel@positive.codes>
Co-authored-by: Maher Al Ghoul <maher@rufoof.com>
Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: Maher Al Ghoul <Maher.AlGhoul@opensooq.com>

* Fix guide generation errors (yiisoft#19356)

* Add guide section for filtering REST collection. (yiisoft#19357)

* Add guide section for filtering REST collection.

* Update docs/guide/rest-filtering-collections.md

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

* Update docs/guide/rest-filtering-collections.md

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>

* Optimize BaseArrayHelper::isIndexed() (yiisoft#19363)

* add rest-quick-start (yiisoft#19364)

* Fix yiisoft#19368: Fix PHP 8.1 error when `$fileMimeType` is `null` in `yii\validators\FileValidator::validateMimeType()`

* Update workflows (yiisoft#19370)

* Fix scrutinizer ci and remove code coverage github actions. (yiisoft#19371)

* Fix typo in pipeline config (yiisoft#19372)

* Update PHP version is README.md (yiisoft#19375)

* Update link in Yii::powered() (yiisoft#19376)

* Fix returning type of `yii\base\Widget::run()` (yiisoft#19378)

* Fix yiisoft#19380: Fix PHP 8.1 passing non string to trim() in `yii\db\Query`

* Add Uzbek cyrillic messages translation (yiisoft#19382)

* Add Uzbek (cyrillic) language in messages config (yiisoft#19383)

* Fix typo in rest-filtering-collections.md (yiisoft#19388)

* Simple optimization and PHPDoc type fixes in yii\helpers\BaseArrayHelper (yiisoft#19387)

* Removed merging of parent labels in DynamicModel::attributeLabels() since DynamicModel::attributes() does not merge parent attributes. Cleaned up DynamicModel documentation. (yiisoft#19394)

* Fix scrutinizer (yiisoft#19395)

* fix import UnauthorizedHttpException (yiisoft#19404)

* Fix BaseArrayHelper::htmlDecode() (yiisoft#19386)

* Fix BaseArrayHelper::htmlDecode()

Add missed second argument on recursive calling.

* Fix BaseArrayHelper::htmlDecode()

`htmlspecialchars_decode()` flags must be same to `htmlspecialchars()` in `BaseArrayHelper::htmlEncode()`

* Update ArrayHelperTest.php

* Update ArrayHelperTest.php

* Update ArrayHelperTest.php

* Update CHANGELOG.md

* test workflow fix

* Update DeadLockTest::testDeadlockException() (yiisoft#19385)

* Add test case for Cache::getValue() with non existent key (yiisoft#19396)

* Fix yiisoft#19384: Normalize `setBodyParams()` and `getBodyParam()` in `yii\web\Request`

* Add TrimValidator to classes.php (yiisoft#19412)

* Fix translators in `messages/config.php` (yiisoft#19416)

* Fix translators in `messages/config.php` 

yiisoft#19415

* Update messageConfig.php

* Update config.php

* Update messageConfig.php

* Update CHANGELOG.md

* Update framework/CHANGELOG.md

Co-authored-by: Bizley <pawel@positive.codes>

Co-authored-by: Bizley <pawel@positive.codes>

* Fix outdated links in Formatter (yiisoft#19422)

* Normalize PhpDoc types in AssetsManager (yiisoft#19419)

* Fix yiisoft#19402: Add shutdown event and fix working directory in `yii\base\ErrorHandler`

* Fix yiisoft#19403: Fix types in `yii\web\SessionIterator`

* Fix yiisoft#19420: Update list of JS callbacks in `yii\widgets\MaskedInput`

* Change http to https in requirements.php (yiisoft#19423)

* Fix yiisoft#19401: Delay `exit(1)` in `yii\base\ErrorHandler::handleFatalError`

* Make docs more clear about the length of the result (yiisoft#19424)

* Truncate help add method and suffix (yiisoft#19425)

yiisoft#19424

* update memcached link (yiisoft#19428)

* Update intro-yii.md & intro-upgrade-from-v1.md & add start-prerequisites.md translation [id] (yiisoft#19427)

* Update intro-yii.md translation [id]

* Update intro-upgrade-from-v1.md translation [id]

* Add start-prerequisites.md translation [id]

Co-authored-by: Mas Aldo <aldo@mifx.com>

Co-authored-by: Bizley <pawel@positive.codes>
Co-authored-by: Ihor Sychevskyi <arhell333@gmail.com>
Co-authored-by: Anton <info@ensostudio.ru>
Co-authored-by: Evgeniy Tkachenko <et.coder@gmail.com>
Co-authored-by: Alexander Makarov <sam@rmcreative.ru>
Co-authored-by: lexizz <lexizz19@mail.ru>
Co-authored-by: Jaak Tamre <jaak.tamre@gmail.com>
Co-authored-by: Francisco Budaszewski Zanatta <xikaoswow@gmail.com>
Co-authored-by: Senthil Nathan <snathan9@users.noreply.github.com>
Co-authored-by: Oscar Barrett <OscarBarrett@users.noreply.github.com>
Co-authored-by: rhertogh <rhertogh@users.noreply.github.com>
Co-authored-by: Leo <leo.on.the.earth@gmail.com>
Co-authored-by: Alexander Gubarev <gubarev.alex@gmail.com>
Co-authored-by: Basil <git@nadar.io>
Co-authored-by: Michaël Arnauts <michael.arnauts@gmail.com>
Co-authored-by: hexkir <4928273+hexkir@users.noreply.github.com>
Co-authored-by: Oleg Poludnenko <ua.oleg@gmail.com>
Co-authored-by: Mario Simão <mariosimao@poli.ufrj.br>
Co-authored-by: JT Smith <nexxai@gmail.com>
Co-authored-by: Toir Tuychiev <toir427@gmail.com>
Co-authored-by: BIKI DAS <bikid475@gmail.com>
Co-authored-by: Chris Smith <chris@cgsmith.net>
Co-authored-by: toir427 <t.tuychiev@safenetpay.com>
Co-authored-by: Aleksandr Bogatikov <perlexed@gmail.com>
Co-authored-by: Mehdi Achour <machour@gmail.com>
Co-authored-by: Sohel Ahmed Mesaniya <sam.wankaner@gmail.com>
Co-authored-by: Raphael de Almeida <jaguarnet7@gmail.com>
Co-authored-by: Marco van 't Wout <marco@tremani.nl>
Co-authored-by: Alexey Rogachev <arogachev90@gmail.com>
Co-authored-by: John Goetz <jgoetz@users.noreply.github.com>
Co-authored-by: AnkIF <33079906+AnkIF@users.noreply.github.com>
Co-authored-by: ptolomaues <vladislav.lutsenko@gmail.com>
Co-authored-by: Papp Péter <papp.peter@p4it.hu>
Co-authored-by: irice <sgetaplus@gmail.com>
Co-authored-by: Bilal <33921776+glowinginthedark@users.noreply.github.com>
Co-authored-by: ntesic <nikola.tesic@open.telekom.rs>
Co-authored-by: ntesic <nikolatesic@gmail.com>
Co-authored-by: charescape <53265646+charescape@users.noreply.github.com>
Co-authored-by: stevekr <stevekr@users.noreply.github.com>
Co-authored-by: Aurélien Chretien <achretien@users.noreply.github.com>
Co-authored-by: Roman <murolike@gmail.com>
Co-authored-by: twinpigs <mr.owner@gmail.com>
Co-authored-by: Dmitrijlin <dmitrij-lin9@rambler.ru>
Co-authored-by: Long TRAN <longthanhtran@users.noreply.github.com>
Co-authored-by: Sartor <sartorua@gmail.com>
Co-authored-by: Sartor <sartor@syneforge.com>
Co-authored-by: Roman Grinyov <w3lifer@gmail.com>
Co-authored-by: AIZAWA Hina <hina@fetus.jp>
Co-authored-by: Ar Rakin <68149013+virtual-designer@users.noreply.github.com>
Co-authored-by: jef348 <71833496+jef348@users.noreply.github.com>
Co-authored-by: Daniel Becker Alves <danielbeckeralves@gmail.com>
Co-authored-by: Ar Rakin <rakinar2@gmail.com>
Co-authored-by: Tobias Munk <schmunk@usrbin.de>
Co-authored-by: Ben Croker <57572400+bencroker@users.noreply.github.com>
Co-authored-by: eecjimmy <eecjimmy@users.noreply.github.com>
Co-authored-by: Brandon Kelly <brandon@pixelandtonic.com>
Co-authored-by: Arkeins <7311955+Arkeins@users.noreply.github.com>
Co-authored-by: Kevin Desmettre <kdesmettre@oph74.fr>
Co-authored-by: Alexey <neff.alexey@gmail.com>
Co-authored-by: FordSmh <61039737+FordSmh@users.noreply.github.com>
Co-authored-by: Adnan <100121069+adnandautovic@users.noreply.github.com>
Co-authored-by: Maher Al Ghoul <speedplli@windowslive.com>
Co-authored-by: Maher Al Ghoul <maher.gh@opensooq.com>
Co-authored-by: Maher Al Ghoul <maher@rufoof.com>
Co-authored-by: Maher Al Ghoul <Maher.AlGhoul@opensooq.com>
Co-authored-by: Wilmer Arambula <42547589+terabytesoftw@users.noreply.github.com>
Co-authored-by: Kenjebaev Sag'indiq <kenjebaev.sagindik@gmail.com>
Co-authored-by: Vitaly <walkboy@mail.ru>
Co-authored-by: PowerGamer1 <PowerGamer1@users.noreply.github.com>
Co-authored-by: Nekrasov Ilya <nekrasov.ilya90@gmail.com>
Co-authored-by: Aldo Karendra <akarendra835@gmail.com>
Co-authored-by: Mas Aldo <aldo@mifx.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants