/** * @todo Optimalization. Calculate range between current time and time * of event, and calculate how much days/weeks/months/years has passed * between this values, and call one time strtotime fn, instead of * multiple times, for every interval. I.e. first call * strtotime('+ 4 weeks'), and then, in do...while loop, call * every time, for every interval, like now. One call for 4 weeks, is * quickly, than calls 4 times, for 1 week. */ public function allFromRange($from, $to) { $events = parent::selectQuery('SELECT * FROM ' . $this->dbTable . ' WHERE owner = ' . $this->user()->getId() . ' AND `start` >= ' . $from . ' AND `start` <= ' . $to . ' AND `repeat` = 0 ORDER BY `start` ASC'); $repeated = parent::selectQuery('SELECT * FROM ' . $this->dbTable . ' WHERE owner = ' . $this->user()->getId() . ' AND `repeat` = 1 AND `start` <= ' . $to . ' ORDER BY `start` ASC'); foreach ($repeated as $event) { $checkFrom = $event->getStart(); $checkTo = $event->getEnd(); if ($checkFrom >= $from && $checkFrom <= $to) { $events[] = clone $event; } // For 2 days if ($event->getRepeatType() == 2) { $interval = '+ 2 days'; } elseif ($event->getRepeatType() == 3) { $interval = '+ 1 week'; } elseif ($event->getRepeatType() == 4) { $interval = '+ 2 weeks'; } elseif ($event->getRepeatType() == 5) { $interval = '+ 1 month'; } elseif ($event->getRepeatType() == 6) { $interval = '+ 3 months'; } elseif ($event->getRepeatType() == 7) { $interval = '+ 6 months'; } elseif ($event->getRepeatType() == 8) { $interval = '+ 1 year'; } else { $interval = '+ 1 day'; } do { $checkFrom = strtotime($interval, $checkFrom); $checkTo = strtotime($interval, $checkTo); if ($checkFrom >= $from && $checkFrom <= $to) { $new = clone $event; $new->setStart($checkFrom); $new->setEnd($checkTo); $events[] = $new; } } while ($checkFrom <= $to); } return $events; }
public function allForEdit() { return parent::selectQuery('SELECT * FROM ' . $this->dbTable . ' WHERE userFor = ' . $this->user()->getId() . ' OR userFrom = ' . $this->user()->getId() . ' ORDER BY ordering ASC'); }
public function all() { return parent::selectQuery('SELECT * FROM ' . $this->dbTable . ' WHERE owner = ' . $this->user()->getId()); }