initial commit

This commit is contained in:
Chris Sewell
2012-11-28 03:55:08 -05:00
parent 7adb399b2e
commit cf140a2e97
3247 changed files with 492437 additions and 0 deletions

View File

@ -0,0 +1,137 @@
<?php
/*
* This file is part of the symfony package.
* (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
* (c) 2004-2006 Sean Kerr.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* sfDateValidator verifies a parameter is of a date format.
*
* @package symfony
* @subpackage validator
* @author Nick Lane <nick.lane@internode.on.net>
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
* @author Sean Kerr <skerr@mojavi.org>
* @version SVN: $Id: sfDateValidator.class.php 3233 2007-01-11 21:01:08Z fabien $
*/
class sfDateValidator extends sfValidator
{
/**
* Execute this validator.
*
* @param mixed A file or parameter value/array
* @param error An error message reference
*
* @return bool true, if this validator executes successfully, otherwise false
*/
public function execute(&$value, &$error)
{
$culture = $this->getContext()->getUser()->getCulture();
// Validate the given date
$value1 = $this->getValidDate($value, $culture);
if (!$value1)
{
$error = $this->getParameter('date_error');
return false;
}
// Is there a compare to do?
$compareDateParam = $this->getParameter('compare');
$compareDate = $this->getContext()->getRequest()->getParameter($compareDateParam);
// If the compare date is given
if ($compareDate)
{
$operator = trim($this->getParameter('operator', '=='), '\'" ');
$value2 = $this->getValidDate($compareDate, $culture);
// If the check date is valid, compare it. Otherwise ignore the comparison
if ($value2)
{
$valid = false;
switch ($operator)
{
case '>':
$valid = $value1 > $value2;
break;
case '>=':
$valid = $value1 >= $value2;
break;
case '==':
$valid = $value1 == $value2;
break;
case '<=':
$valid = $value1 <= $value2;
break;
case '<':
$valid = $value1 < $value2;
break;
default:
throw new sfValidatorException(sprintf('Invalid date comparison operator "%s"', $operator));
}
if (!$valid)
{
$error = $this->getParameter('compare_error');
return false;
}
}
}
return true;
}
/**
* Converts the given date into a Unix timestamp.
*
* Returns null if the date is invalid
*
* @param $value Date to convert
* @param $culture Language culture to use
*/
protected function getValidDate($value, $culture)
{
// Use the language culture date format
$result = sfI18N::getDateForCulture($value, $culture);
list($d, $m, $y) = $result;
// Make sure the date is a valid gregorian calendar date also
if ($result === null || !checkdate($m, $d, $y))
{
return null;
}
return strtotime("$y-$m-$d 00:00");
}
/**
* Initializes the validator.
*
* @param sfContext The current application context
* @param array An associative array of initialization parameters
*
* @return bool true, if initialization completes successfully, otherwise false
*/
public function initialize($context, $parameters = null)
{
// Initialize parent
parent::initialize($context, $parameters);
// Set defaults
$this->getParameterHolder()->set('date_error', 'Invalid date');
$this->getParameterHolder()->set('compare_error', 'Compare failed');
$this->getParameterHolder()->add($parameters);
return true;
}
}