*/ /** * Walidator sprawdzający poprawność wprowadzanych znaków zgodnie ze specyfikacją url * * @package stPropelSeoUrlBehaviorPlugin * @subpackage libs */ class stPropelSeoUrlValidator extends sfValidator { public function execute(&$value, &$error) { $auto_fillin_field = $this->getParameterHolder()->get('auto_fillin_field'); if (preg_match('/([^\]]+)\[([^\]]+)\]/', $auto_fillin_field, $matches)) { $parent = $matches[1]; $subname = $matches[2]; $parent_param = $this->getContext()->getRequest()->getParameter($parent); } else { $parent = $auto_fillin_field; } $seo_error = $this->getParameterHolder()->get('seo_error'); $value = trim($value); $prev = $value; $value = stPropelSeoUrlBehavior::makeSeoFriendly($value); if ($value != $prev) { $error = $seo_error; if (isset($parent_param)) { $parent_param[$subname] = $value; } else { $parent_param = $value; } $this->getContext()->getRequest()->setParameter($parent, $parent_param); return false; } return true; } public function initialize($context, $parameters = null) { if (!isset($parameters['seo_error'])) { $parameters['seo_error'] = 'Podana wartość została dostosowana do wymogów SEO. Kliknij na "Zapisz" aby zatwierdzić zmiany'; } if (!isset($parameters['auto_fillin_field'])) { throw new sfValidatorException('Musisz podać nazwę pola dla parametru "auto_fillin_field"'); } return parent::initialize($context, $parameters); } }