summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEgorLazarovich <egor.26.93@gmail.com>2015-08-27 16:25:08 +0300
committerEgorLazarovich <egor.26.93@gmail.com>2015-08-27 16:25:08 +0300
commit601518cbcf4cbdf9429993e280a44e5e8b905721 (patch)
tree50e5721865352b54b138feaed44c4fcd2f021bb5
parenta1d1e9404b3be20e668cdbde86d6be8cff98f159 (diff)
parent24d461ecc3469f4d468b1cbedd02629c12da6397 (diff)
downloadscheduler-helper-php-601518cbcf4cbdf9429993e280a44e5e8b905721.zip
scheduler-helper-php-601518cbcf4cbdf9429993e280a44e5e8b905721.tar.gz
scheduler-helper-php-601518cbcf4cbdf9429993e280a44e5e8b905721.tar.bz2
Merge pull request #3 from mperednya/master
Fix issue with getData when recurring is bigger than getData interval.
-rwxr-xr-xSchedulerHelper.php86
1 files changed, 41 insertions, 45 deletions
diff --git a/SchedulerHelper.php b/SchedulerHelper.php
index bf708d1..25bd2b0 100755
--- a/SchedulerHelper.php
+++ b/SchedulerHelper.php
@@ -34,9 +34,9 @@ abstract class DHelper extends SchedulerHelperConnector
"debug" => true
);
- protected $_mapped_fields = array();
+ protected $_mapped_fields = array();
- protected $_use_only_mapped_fields = false;
+ protected $_use_only_mapped_fields = false;
protected function getIdFieldName()
{
@@ -100,8 +100,8 @@ abstract class DHelper extends SchedulerHelperConnector
if(!is_array($fieldsDataArray))
throw new Exception("Fields data must be array.");
- $this->_mapped_fields = $fieldsDataArray;
- $this->_use_only_mapped_fields = $useOnlySetFields;
+ $this->_mapped_fields = $fieldsDataArray;
+ $this->_use_only_mapped_fields = $useOnlySetFields;
foreach($fieldsDataArray as $fieldKey => $fieldValue) {
//If field name is numeric, then made same field key and field value.
@@ -154,10 +154,10 @@ class Helper extends DHelper implements IHelper
return new self($connectConfigs);
}
- /**
- * Get recurring events data exceptions. And prepare data to format: []
- * @return array
- */
+ /**
+ * Get recurring events data exceptions. And prepare data to format: []
+ * @return array
+ */
private function _getRecurringEventsExceptionsByInterval()
{
$getEventsSql = "
@@ -191,14 +191,14 @@ class Helper extends DHelper implements IHelper
return $events;
}
- /**
- * Get simple events by interval.
- * @param $startDate
- * @param $endDate
- * @return array
- */
- private function _getSimpleEventsByInterval($startDate, $endDate) {
- $getEventsSql = "
+ /**
+ * Get simple events by interval.
+ * @param $startDate
+ * @param $endDate
+ * @return array
+ */
+ private function _getSimpleEventsByInterval($startDate, $endDate) {
+ $getEventsSql = "
SELECT
*
FROM
@@ -222,10 +222,10 @@ class Helper extends DHelper implements IHelper
AND ".$this->getLengthFieldName()." = '0'
";
- $query = $this->getPDO()->prepare($getEventsSql);
- $query->execute();
- return $query->fetchAll();
- }
+ $query = $this->getPDO()->prepare($getEventsSql);
+ $query->execute();
+ return $query->fetchAll();
+ }
/**
* Get recurring events data by interval.
@@ -234,8 +234,8 @@ class Helper extends DHelper implements IHelper
* @return array
*/
private function _getRecurringEventsByInterval($startDate, $endDate)
- {
- $getEventsSql = "
+ {
+ $getEventsSql = "
SELECT
*
FROM
@@ -243,12 +243,8 @@ class Helper extends DHelper implements IHelper
WHERE
(
(
- ".$this->getStartDateFieldName()." >= '{$startDate}'
- AND ".$this->getStartDateFieldName()." <= '{$endDate}'
- )
- OR (
".$this->getEndDateFieldName()." >= '{$startDate}'
- AND ".$this->getEndDateFieldName()." <= '{$endDate}'
+ AND ".$this->getStartDateFieldName()." <= '{$endDate}'
)
)
AND (
@@ -272,18 +268,18 @@ class Helper extends DHelper implements IHelper
private function _filterEventDataToResponse($eventDataArray)
{
$filteredEventData = array();
- $fullEventData = array();
+ $fullEventData = array();
foreach($eventDataArray as $dataKey => $dataValue) {
- $mappedFieldsValues = array_flip($this->_mapped_fields);
- $fullEventData[$dataKey] = $dataValue;
-
- if(
- ($this->_use_only_mapped_fields && array_key_exists($dataKey, $mappedFieldsValues))
- || !$this->_use_only_mapped_fields
- ) {
- $filteredEventData[$dataKey] = $dataValue;
- }
+ $mappedFieldsValues = array_flip($this->_mapped_fields);
+ $fullEventData[$dataKey] = $dataValue;
+
+ if(
+ ($this->_use_only_mapped_fields && array_key_exists($dataKey, $mappedFieldsValues))
+ || !$this->_use_only_mapped_fields
+ ) {
+ $filteredEventData[$dataKey] = $dataValue;
+ }
}
// $this->_use_only_mapped_fields
@@ -359,22 +355,22 @@ class Helper extends DHelper implements IHelper
//Exclude recurring exceptions by dates and prepare events data.
$recurringEventData = $this->_prepareRecurringDataWithoutExceptions($recurringDatesStamps, $eventData, $recurringEventsExceptions);
- $eventsData = array_merge($eventsData, $recurringEventData);
+ $eventsData = array_merge($eventsData, $recurringEventData);
}
- //Add simple events.
- $simpleEvents = $this->_getSimpleEventsByInterval($startDate, $endDate);
- $eventsData = array_merge($eventsData, $simpleEvents);
+ //Add simple events.
+ $simpleEvents = $this->_getSimpleEventsByInterval($startDate, $endDate);
+ $eventsData = array_merge($eventsData, $simpleEvents);
//Leave events that belongs to interval.
$resultData = array();
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()]);
+ $fullEventData = $eventData["full_event_data"];
+ $recurringStartDateStamp = SchedulerHelperDate::getDateTimestamp($fullEventData[$this->getStartDateFieldName()]);
+ $recurringEndDateStamp = SchedulerHelperDate::getDateTimestamp($fullEventData[$this->getEndDateFieldName()]);
- if(
+ if(
(($intervalStartDateStamp <= $recurringStartDateStamp) && ($recurringStartDateStamp <= $intervalEndDateStamp))
|| (($intervalStartDateStamp <= $recurringEndDateStamp) && ($recurringEndDateStamp <= $intervalEndDateStamp))
) {