public static function compare(DateRange $left, DateRange $right) { if ($left->isEmpty() && $right->isEmpty()) { return 0; } elseif ($left->isEmpty()) { return 1; } elseif ($right->isEmpty()) { return -1; } $leftStart = $left->getStartStamp(); $leftEnd = $left->getEndStamp(); $rightStart = $right->getStartStamp(); $rightEnd = $right->getEndStamp(); if (!$leftStart && !$rightStart || $leftStart && $rightStart && $leftStart == $rightStart) { if (!$leftEnd && !$rightEnd || $leftEnd && $rightEnd && $leftEnd == $rightEnd) { return 0; } elseif (!$leftEnd && $rightEnd) { return 1; } elseif ($leftEnd && !$rightEnd) { return -1; } elseif ($leftEnd < $rightEnd) { return -1; } else { return 1; } } elseif (!$leftStart && $rightStart) { return -1; } elseif ($leftStart && !$rightStart) { return 1; } elseif ($leftStart < $rightStart) { return -1; } else { return 1; } }
protected function checkRanges(DateRange $range) { return !($this->min && $this->min->toStamp() < $range->getStartStamp()) && !($this->max && $this->max->toStamp() > $range->getEndStamp()); }