summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEgorLazarovich <egor.26.93@gmail.com>2015-10-02 13:48:44 +0300
committerEgorLazarovich <egor.26.93@gmail.com>2015-10-02 13:48:44 +0300
commit9cb7d5fb4765044c3ea05390af046bf4a538f960 (patch)
tree585d0d8eed8cac418d0d5354e7a2ef1cb1578fbe
parent353d29c7377205b9b883504340d56edd26928b18 (diff)
parent5ba5c32b1c15f6b837c30d2ae1232bdb46af3884 (diff)
downloadscheduler-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-xSchedulerHelper.php40
-rwxr-xr-xSchedulerHelperDate.php29
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) {