Skip to content

PHP Fatal error: Uncaught TypeError: Unsupported operand types: string - string in /home/wwwroovendor/shardj/zf1-future/library/Zend/Locale/Math/PhpMath.php:97 Stack trace: #3129

@TangLiang

Description

@TangLiang

verision:[v20.1.0-rc2]

File: Mage_Adminhtml_Cms_PageController::_filterPostData()
when i save the cms page, this error comes.

    protected function _filterPostData($data)
    {
        Mage::log($data);
        $data = $this->_filterDates($data, ['custom_theme_from', 'custom_theme_to']);
        Mage::log($data);
        return $data;
    }

from the code, system will validate two filed from the post custom_theme_from & custom_theme_to, even if it's empty.

file:Mage_Core_Controller_Varien_Action::_filterDates

    protected function _filterDates($array, $dateFields)
    {
        if (empty($dateFields)) {
            return $array;
        }
        $filterInput = new Zend_Filter_LocalizedToNormalized([
            'date_format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)
        ]);
        $filterInternal = new Zend_Filter_NormalizedToLocalized([
            'date_format' => Varien_Date::DATE_INTERNAL_FORMAT
        ]);

        foreach ($dateFields as $dateField) {
            if (array_key_exists($dateField, $array) && !empty($dateField)) {
                $array[$dateField] = $filterInput->filter($array[$dateField]);
                $array[$dateField] = $filterInternal->filter($array[$dateField]);
            }
        }
        return $array;
    }

fix: array_key_exists($dateField, $array) && !empty($dateField) to array_key_exists($dateField, $array) && !empty($array[$dateField])

    protected function _filterDates($array, $dateFields)
    {
        if (empty($dateFields)) {
            return $array;
        }
        $filterInput = new Zend_Filter_LocalizedToNormalized([
            'date_format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)
        ]);
        $filterInternal = new Zend_Filter_NormalizedToLocalized([
            'date_format' => Varien_Date::DATE_INTERNAL_FORMAT
        ]);

        foreach ($dateFields as $dateField) {
            if (array_key_exists($dateField, $array) && !empty($array[$dateField])) {
                $array[$dateField] = $filterInput->filter($array[$dateField]);
                $array[$dateField] = $filterInternal->filter($array[$dateField]);
            }
        }
        return $array;
    }

this is just happen on OpenMage 20.1.0-rc2

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions