/**
  * prepares the value to be processed by sfValidatorDate::doClean by creating
  * flattening the array structure of the date+timewidget to a string
  *
  * Input: $value['date'], $value['hour'], $value['minute'], $value['second']
  *    where $value['date'] is in the format: yyyy-mm-dd
  *
  * Output: yyyy-mm-dd hh:mm:ss
  *
  * @param mixed $value
  * @return
  */
 protected function doClean($value)
 {
     $hour = isset($value['hour']) ? $value['hour'] : 0;
     $minute = isset($value['minute']) ? $value['minute'] : 0;
     $second = isset($value['second']) ? $value['second'] : 0;
     return parent::doClean(sprintf('%s %s:%s:%s', $value['date'], $hour, $minute, $second));
 }
 protected function doClean($value)
 {
     if (!is_array($value)) {
         $dateSeparator = $this->getOption('date_separator');
         $dateArray = explode($dateSeparator, $value);
         if (count($dateArray) != 3) {
             throw new sfValidatorError($this, 'invalid', array('value' => $value));
         } else {
             $value = array();
             $value['day'] = $dateArray[0];
             $value['month'] = $dateArray[1];
             $value['year'] = $dateArray[2];
         }
     }
     return parent::doClean($value);
 }