diff options
author | EgorLazarovich <egor.26.93@gmail.com> | 2015-10-02 13:48:44 +0300 |
---|---|---|
committer | EgorLazarovich <egor.26.93@gmail.com> | 2015-10-02 13:48:44 +0300 |
commit | 9cb7d5fb4765044c3ea05390af046bf4a538f960 (patch) | |
tree | 585d0d8eed8cac418d0d5354e7a2ef1cb1578fbe | |
parent | 353d29c7377205b9b883504340d56edd26928b18 (diff) | |
parent | 5ba5c32b1c15f6b837c30d2ae1232bdb46af3884 (diff) | |
download | scheduler-helper-php-9cb7d5fb4765044c3ea05390af046bf4a538f960.zip scheduler-helper-php-9cb7d5fb4765044c3ea05390af046bf4a538f960.tar.gz scheduler-helper-php-9cb7d5fb4765044c3ea05390af046bf4a538f960.tar.bz2 |
Merge pull request #9 from mperednya/fix_simple_events_select
Fix long SimpleEvents returning. Add server_date config.
-rwxr-xr-x | SchedulerHelper.php | 40 | ||||
-rwxr-xr-x | SchedulerHelperDate.php | 29 |
2 files changed, 42 insertions, 27 deletions
diff --git a/SchedulerHelper.php b/SchedulerHelper.php index 1c5edb9..59f7d23 100755 --- a/SchedulerHelper.php +++ b/SchedulerHelper.php @@ -31,7 +31,8 @@ abstract class DHelper extends SchedulerHelperConnector private $_fields_values = array(); public $config = array( - "debug" => true + "debug" => true, + "server_date" => true ); protected $_mapped_fields = array(); @@ -155,6 +156,16 @@ class Helper extends DHelper implements IHelper } /** + * Gets timestamp from date + * @param $date + * @return int + */ + private function getDateTimestamp($date) + { + return SchedulerHelperDate::getDateTimestamp($date, $this->config["server_date"]); + } + + /** * Get recurring events data exceptions. And prepare data to format: [] * @return array */ @@ -206,14 +217,8 @@ class Helper extends DHelper implements IHelper ".$this->getTablename()." WHERE ( - ( - ".$this->getStartDateFieldName()." >= '{$startDate}' - AND ".$this->getStartDateFieldName()." <= '{$endDate}' - ) - OR ( - ".$this->getEndDateFieldName()." >= '{$startDate}' - AND ".$this->getEndDateFieldName()." <= '{$endDate}' - ) + ".$this->getStartDateFieldName()." <= '{$endDate}' + AND ".$this->getEndDateFieldName()." >= '{$startDate}' ) AND ( ".$this->getRecurringTypeFieldName()." = '".RecurringType::IS_RECURRING_EXCEPTION."' @@ -359,16 +364,16 @@ class Helper extends DHelper implements IHelper $recurringEventsExceptions = $this->_getRecurringEventsExceptionsByInterval(); $recurringEvents = $this->_getRecurringEventsByInterval($startDate, $endDate); - $intervalStartDateStamp = SchedulerHelperDate::getDateTimestamp($startDate); - $intervalEndDateStamp = SchedulerHelperDate::getDateTimestamp($endDate); + $intervalStartDateStamp = $this->getDateTimestamp($startDate); + $intervalEndDateStamp = $this->getDateTimestamp($endDate); for($i = 0; $i < count($recurringEvents); $i++) { $eventData = $recurringEvents[$i]; //Parse recurring data format. $recurringTypeData = $eventData[$this->getRecurringTypeFieldName()]; - $recurringStartDateStamp = SchedulerHelperDate::getDateTimestamp($eventData[$this->getStartDateFieldName()]); - $recurringEndDateStamp = SchedulerHelperDate::getDateTimestamp($eventData[$this->getEndDateFieldName()]); + $recurringStartDateStamp = $this->getDateTimestamp($eventData[$this->getStartDateFieldName()]); + $recurringEndDateStamp = $this->getDateTimestamp($eventData[$this->getEndDateFieldName()]); $recurringTypeObj = new RecurringType($recurringTypeData, $recurringStartDateStamp, $recurringEndDateStamp); //Get recurring dates by parsed format. @@ -389,12 +394,11 @@ class Helper extends DHelper implements IHelper for($i = 0; $i < count($eventsData); $i++) { $eventData = $eventsData[$i]; $fullEventData = $eventData["full_event_data"]; - $recurringStartDateStamp = SchedulerHelperDate::getDateTimestamp($fullEventData[$this->getStartDateFieldName()]); - $recurringEndDateStamp = SchedulerHelperDate::getDateTimestamp($fullEventData[$this->getEndDateFieldName()]); + $recurringStartDateStamp = $this->getDateTimestamp($fullEventData[$this->getStartDateFieldName()]); + $recurringEndDateStamp = $this->getDateTimestamp($fullEventData[$this->getEndDateFieldName()]); if( - (($intervalStartDateStamp <= $recurringStartDateStamp) && ($recurringStartDateStamp <= $intervalEndDateStamp)) - || (($intervalStartDateStamp <= $recurringEndDateStamp) && ($recurringEndDateStamp <= $intervalEndDateStamp)) + ($recurringStartDateStamp <= $intervalEndDateStamp) && ($recurringEndDateStamp >= $intervalStartDateStamp) ) { array_push($resultData, $eventData["filtered_event_data"]); } @@ -466,7 +470,7 @@ class Helper extends DHelper implements IHelper * @return int */ public function getRecurringEndDateStr($recurringType, $startDateStr, $eventLength) { - $endDateStamp = RecurringType::getRecurringEndDate($recurringType, SchedulerHelperDate::getDateTimestamp($startDateStr), $eventLength); + $endDateStamp = RecurringType::getRecurringEndDate($recurringType, $this->getDateTimestamp($startDateStr), $eventLength); return date(SchedulerHelperDate::FORMAT_DEFAULT, $endDateStamp); } }
\ No newline at end of file diff --git a/SchedulerHelperDate.php b/SchedulerHelperDate.php index fad3402..c1d3244 100755 --- a/SchedulerHelperDate.php +++ b/SchedulerHelperDate.php @@ -32,17 +32,28 @@ class SchedulerHelperDate return $differenceArray; } - static public function getDateTimestamp($date) + static public function getDateTimestamp($date, $serverDate) { $parsedDate = date_parse($date); - return gmmktime( - $parsedDate["hour"], - $parsedDate["minute"], - $parsedDate["second"], - $parsedDate["month"], - $parsedDate["day"], - $parsedDate["year"] - ); + if ($serverDate) { + return gmmktime( + $parsedDate["hour"], + $parsedDate["minute"], + $parsedDate["second"], + $parsedDate["month"], + $parsedDate["day"], + $parsedDate["year"] + ); + } else { + return mktime( + $parsedDate["hour"], + $parsedDate["minute"], + $parsedDate["second"], + $parsedDate["month"], + $parsedDate["day"], + $parsedDate["year"] + ); + } } static public function getDayOfWeek($timestamp) { |