Exemplo n.º 1
0
 public function generateAllTimes($times = 30, $term_id = 0, $limit = 120)
 {
     $limit = new DibiDateTime(strtotime('+' . $limit . ' days', time()));
     dibi::begin();
     if ($term_id) {
         dibi::query('DELETE FROM event_time_all WHERE event_time_id = %i', $term_id);
         // smaze tabulku casu s daným ID termínu
         $res = dibi::select('*, DATEDIFF(event_time.date_to, event_time.date_from) AS diff_dates')->from('event_time')->where('visible', '=', '1')->where('id', '=', $term_id)->fetchAll();
     } else {
         //dibi::query('TRUNCATE TABLE event_time_all'); // smaze celou tabulku casu
         dibi::query('UPDATE event_time SET visible = 0 WHERE (DATEDIFF(event_time.date_from, CURDATE()) < 0 AND DATEDIFF(event_time.date_to, CURDATE()) < 0) OR (DATEDIFF(event_time.date_from, CURDATE()) < 0 AND isnull(`event_time`.`date_to`))');
         // prevede vsechny starsi casy do neaktivni polohy
         $res = dibi::select('*, DATEDIFF(event_time.date_to, event_time.date_from) AS diff_dates')->from('event_time')->where('visible', '=', '1')->fetchAll();
     }
     foreach ($res as $key => $event) {
         $interval = date_diff($event->date_from, date_create());
         if ($interval->days > 0 && $interval->invert) {
             $date_from = $event->date_from;
             //dump('od '.$date_from);
         } else {
             $date_from = new DibiDateTime();
             //dump('od dnes');
         }
         $nextmonday = new DibiDateTime(date('N', strtotime('today')) == 1 ? strtotime('today') : strtotime('next monday', $date_from->getTimestamp()));
         $nexttuesday = new DibiDateTime(date('N', strtotime('today')) == 2 ? strtotime('today') : strtotime('next tuesday', $date_from->getTimestamp()));
         $nextwednesday = new DibiDateTime(date('N', strtotime('today')) == 3 ? strtotime('today') : strtotime('next wednesday', $date_from->getTimestamp()));
         $nextthursday = new DibiDateTime(date('N', strtotime('today')) == 4 ? strtotime('today') : strtotime('next thursday', $date_from->getTimestamp()));
         $nextfriday = new DibiDateTime(date('N', strtotime('today')) == 5 ? strtotime('today') : strtotime('next friday', $date_from->getTimestamp()));
         $nextsaturday = new DibiDateTime(date('N', strtotime('today')) == 6 ? strtotime('today') : strtotime('next saturday', $date_from->getTimestamp()));
         $nextsunday = new DibiDateTime(date('N', strtotime('today')) == 7 ? strtotime('today') : strtotime('next sunday', $date_from->getTimestamp()));
         //dump($date_from);
         if ($event->repeat == 1) {
             if ($event->every_monday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextmonday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_tuesday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nexttuesday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_wednesday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextwednesday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_thursday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextthursday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_friday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextfriday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_saturday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextsaturday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
             if ($event->every_sunday == 1) {
                 for ($i = 0; $i < $times * 7; $i = $i + 7) {
                     $day = new DibiDateTime(strtotime('+' . $i . ' days', $nextsunday->getTimestamp()));
                     if ($day->getTimestamp() > $limit->getTimestamp()) {
                         continue;
                     }
                     $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $day . "', '" . $event->date_to . "'); \r\n";
                     dibi::query($query);
                 }
             }
         } else {
             $query = "INSERT IGNORE INTO event_time_all (event_time_id, date_from, date_to) VALUES ('" . $event->id . "', '" . $event->date_from . "', '" . $event->date_to . "'); \r\n";
             dibi::query($query);
         }
     }
     dibi::query('DELETE FROM event_time_all WHERE date_to < date_from AND date_to !="0000-00-00"');
     dibi::commit();
 }
Exemplo n.º 2
0
 private function getFlags(&$item)
 {
     $created = new \DibiDateTime($item['created']);
     $changed = new \DibiDateTime($item['changed']);
     $days_created = round((time() - $created->getTimestamp()) / 60 / 60 / 24);
     $days_changed = round((time() - $changed->getTimestamp()) / 60 / 60 / 24);
     if ($days_created < $this->new_days) {
         $item['is_created'] = true;
     } else {
         $item['is_created'] = false;
     }
     if ($days_changed < $this->updated_days) {
         $item['is_changed'] = true;
     } else {
         $item['is_changed'] = false;
     }
 }