/** * @see DataObject::setData() */ function setData($key, $value, $locale = null) { // Directly write internal settings. if (is_null($locale)) { if (in_array($key, $this->getInternalSettings()) || in_array($key, $this->getSettingNames())) { return parent::setData($key, $value); } } else { if (in_array($key, $this->getLocalizedSettingNames())) { return parent::setData($key, $value, $locale); } } // All other settings will be delegated to sub-filters. $settingsMapping = $this->getSettingsMappingForSetting($key); if (!is_array($settingsMapping)) { $settingsMapping = array($settingsMapping); } foreach ($settingsMapping as $compositeSettingName) { // Write the setting to the sub-filter. list($filter, $settingName) = $this->_resolveCompositeSettingName($compositeSettingName); $filter->setData($settingName, $value, $locale); } }