/** * Fixes broken UserInput. * * @param mixed $http Class eZHTTPTool. * @param string $base Seems to be always 'ContentObjectAttribute'. * @param mixed $classAttribute Class eZContentClassAttribute. * * @return void */ public function fixupClassAttributeHTTPInput($http, $base, $classAttribute) { $minValueName = $base . self::MIN_VARIABLE . $classAttribute->attribute("id"); $maxValueName = $base . self::MAX_VARIABLE . $classAttribute->attribute("id"); if ($http->hasPostVariable($minValueName) and $http->hasPostVariable($maxValueName)) { $locale = eZLocale::instance(); $minValueValue = $http->postVariable($minValueName); $minValueValue = str_replace(" ", "", $minValueValue); $minValueValue = $locale->internalNumber($minValueValue); $maxValueValue = $http->postVariable($maxValueName); $maxValueValue = str_replace(" ", "", $maxValueValue); $maxValueValue = $locale->internalNumber($maxValueValue); if ($minValueValue > $maxValueValue) { $this->FloatValidator->setRange($minValueValue, false); $maxValueValue = $this->FloatValidator->fixup($maxValueValue); $http->setPostVariable($maxValueName, $maxValueValue); } } }
/** * Validates currency data: * - checks that custom_rate_value & rate_factor are provided and are floats. * * @param array $currencyData Currenty data as submitted. Will be modified to * remove invalid values since it is passed by reference * @return false|string True if data is valid, an error message if it's not */ function validateCurrencyData(&$currencyData) { $return = false; $floatValidator = new eZFloatValidator(0); if ($floatValidator->validate($currencyData['custom_rate_value']) == eZInputValidator::STATE_INVALID) { $return = ezpI18n::tr('kernel/shop', "'%value' is not a valid custom rate value (positive number expected)", 'Error message', array('%value' => $currencyData['custom_rate_value'])); $currencyData['custom_rate_value'] = ''; } if ($floatValidator->validate($currencyData['rate_factor']) == eZInputValidator::STATE_INVALID) { if ($return === false) { $return = ezpI18n::tr('kernel/shop', "'%value' is not a valid rate_factor value (positive number expected)", 'Error message', array('%value' => $currencyData['rate_factor'])); } $currencyData['rate_factor'] = ''; } return $return; }
function processEditActions(&$validation, $params) { parent::processEditActions($validation, $params); $http = eZHTTPTool::instance(); $locale = eZLocale::instance(); $prefix = eZSurveyType::PREFIX_ATTRIBUTE; $attributeID = $params['contentobjectattribute_id']; $postNumHidden = $prefix . '_ezsurvey_question_' . $this->ID . '_num_hidden_' . $attributeID; if ($http->hasPostVariable($postNumHidden)) { $postNum = $prefix . '_ezsurvey_question_' . $this->ID . '_num_' . $attributeID; if ($http->hasPostVariable($postNum)) { $newNum = 1; } else { $newNum = 0; } if ($this->attribute('num') != $newNum) { $this->setAttribute('num', $newNum); } } if ($this->attribute('num')) { $reqInteger = true; $validator = new eZIntegerValidator(); } else { $reqInteger = false; $validator = new eZFloatValidator(); } $this->setAttribute('text2', trim($this->attribute('text2'))); $this->setAttribute('text3', trim($this->attribute('text3'))); $this->setAttribute('default_value', trim($this->attribute('default_value'))); if (strlen($this->attribute('text2')) > 0) { $data = $this->attribute('text2'); $data = trim($data); $data = $locale->internalNumber($data); if ($reqInteger && is_numeric($data) and (int) $data == $data) { $data = (int) $data; } if ($validator->validate($data) == eZInputValidator::STATE_ACCEPTED) { $this->setAttribute('text2', $data); } } if (strlen($this->attribute('text3')) > 0) { $data = $this->attribute('text3'); $data = trim($data); $data = $locale->internalNumber($data); if ($reqInteger && is_numeric($data) && (int) $data == $data) { $data = (int) $data; } if ($validator->validate($data) == eZInputValidator::STATE_ACCEPTED) { $this->setAttribute('text3', $data); } } if (strlen($this->attribute('default_value')) > 0) { $data = $this->attribute('default_value'); $data = trim($data); $data = $locale->internalNumber($data); if ($reqInteger && is_numeric($data) && (int) $data == $data) { $data = (int) $data; } if ($validator->validate($data) == eZInputValidator::STATE_ACCEPTED) { $this->setAttribute('default_value', $data); } } }