"This Event is overlapping an other Event", ); protected $_start; protected $_eventMapper; protected $_event; protected $_poolID; public function __construct($option) { if ($option instanceof Zend_Config) { $option = $option->toArray(); } if (is_array($option)) { $this->_eventMapper = new Application_Model_EventMapper(); if (array_key_exists('start', $option)) { $_start = strtotime($option['start']); $this->_setStart($_start); } else { require_once 'Zend/Validate/Exception.php'; throw new Zend_Validate_Exception("Missing option 'start'"); } if (array_key_exists('poolID', $option)) { $_poolID = $option['poolID']; $this->_setPoolID($_poolID); } else { require_once 'Zend/Validate/Exception.php'; throw new Zend_Validate_Exception("Missing option 'poolID'"); } if (array_key_exists('eventID', $option)) { $_eventID = $option['eventID']; $this->_event = new Application_Model_Event(); $this->_eventMapper->find($_eventID, $this->_event); } } } public function _getStart() { return $this->_start; } public function _setStart($_start) { $this->_start = $_start; } public function _getPoolID() { return $this->_poolID; } public function _setPoolID($_poolID) { $this->_poolID = $_poolID; } public function _getEvent() { return $this->_event; } public function _setEvent(Application_Model_Event $_event) { $this->_event = $_event; } public function _getEventMapper() { return $this->_eventMapper; } public function _setEventMapper(Application_Model_EventMapper $_eventMapper) { $this->_eventMapper = $_eventMapper; } public function isValid($value) { $this->_setValue(strtotime($value)); if(is_object($this->_event)) { $overlappingEvents = $this->_eventMapper->getOverlappingEvents(date('Y-m-d H:i:s', $this->_start), date('Y-m-d H:i:s', $this->_value), $this->_poolID, $this->_event); } else { $overlappingEvents = $this->_eventMapper->getOverlappingEvents(date('Y-m-d H:i:s', $this->_start), date('Y-m-d H:i:s', $this->_value), $this->_poolID); } if (count($overlappingEvents) > 0) { $this->_error(self::EVENT_OVERLAPPING); return false; } return true; } }