/** * Detect form field class by option * * @param \XLite\Model\Config $option Option * * @return string */ protected function detectFormFieldClassByOption(\XLite\Model\Config $option) { $class = null; $type = $option->getType() ?: 'text'; switch ($type) { case 'textarea': $class = '\\XLite\\View\\FormField\\Textarea\\Simple'; break; case 'checkbox': $class = '\\XLite\\View\\FormField\\Input\\Checkbox\\Simple'; break; case 'country': $class = '\\XLite\\View\\FormField\\Select\\Country'; break; case 'state': $class = '\\XLite\\View\\FormField\\Select\\State'; break; case 'currency': $class = '\\XLite\\View\\FormField\\Select\\Currency'; break; case 'separator': $class = '\\XLite\\View\\FormField\\Separator\\Regular'; break; case 'text': $class = '\\XLite\\View\\FormField\\Input\\Text'; break; default: if (preg_match('/^\\\\?XLite\\\\/Ss', $option->getType())) { $class = $option->getType(); } } return $class; }
/** * Sanitize option new value * * @param \XLite\Model\Config $option Config option * @param string $value New value * * @return string */ protected function sanitizeOptionValue($option, $value) { $category = $option->getCategory(); $name = $option->getName(); $validationMethod = 'sanitize' . \Includes\Utils\Converter::convertToCamelCase($category) . \Includes\Utils\Converter::convertToCamelCase($name); if (method_exists($this, $validationMethod)) { $value = $this->{$validationMethod}($value); } $type = $option->getType(); if ('checkbox' === $type) { $result = empty($value) ? 'N' : 'Y'; } elseif ('serialized' === $type && null !== $value && is_array($value)) { $result = serialize($value); } elseif ('text' === $type) { $result = null !== $value ? trim($value) : ''; } elseif ('XLite\\View\\FormField\\Input\\PasswordWithValue' === $type) { $result = null !== $value ? $value : null; } else { $result = null !== $value ? $value : ''; } return $result; }
/** * {@inheritDoc} */ public function getType() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getType', array()); return parent::getType(); }