/** mrbsGetRepeatEntryList * * Returns a list of the repeating entrys * * $time - The start time * $enddate - When the repeat ends * $rep_type - What type of repeat is it * $rep_opt - The repeat entrys * $max_ittr - After going through this many entrys assume an error has occured * $_initial_weeknumber - Save initial week number for use in 'monthly repeat same week number' case * * Returns: * empty - The entry does not repeat * an array - This is a list of start times of each of the repeat entrys */ function mrbsGetRepeatEntryList($time, $enddate, $rep_type, $rep_opt, $max_ittr, $rep_num_weeks) { $sec = date("s", $time); $min = date("i", $time); $hour = date("G", $time); $day = date("d", $time); $month = date("m", $time); $year = date("Y", $time); global $_initial_weeknumber; $_initial_weeknumber = (int) (($day - 1) / 7) + 1; $week_num = 0; $start_day = date('w', mktime($hour, $min, $sec, $month, $day, $year)); $cur_day = $start_day; $entrys = ""; for ($i = 0; $i < $max_ittr; $i++) { $time = mktime($hour, $min, $sec, $month, $day, $year); if ($time > $enddate) { break; } $entrys[$i] = $time; switch ($rep_type) { // Daily repeat case 1: $day += 1; break; // Weekly repeat // Weekly repeat case 2: $j = $cur_day = date("w", $entrys[$i]); // Skip over days of the week which are not enabled: while (($j = ($j + 1) % 7) != $cur_day && !$rep_opt[$j]) { $day += 1; } $day += 1; break; // Monthly repeat // Monthly repeat case 3: $month += 1; break; // Yearly repeat // Yearly repeat case 4: $year += 1; break; // Monthly repeat on same week number and day of week // Monthly repeat on same week number and day of week case 5: $day += same_day_next_month($time); break; // n Weekly repeat // n Weekly repeat case 6: while (1) { $day++; $cur_day = ($cur_day + 1) % 7; if ($cur_day % 7 == $start_day) { $week_num++; } if ($week_num % $rep_num_weeks == 0 && $rep_opt[$cur_day] == 1) { break; } } break; // Unknown repeat option // Unknown repeat option default: return; } } return $entrys; }
/** mrbsGetRepeatEntryList * * Returns a list of the repeating entrys * * $time - The start time * $enddate - When the repeat ends * $rep_type - What type of repeat is it * $rep_opt - The repeat entrys * $max_ittr - After going through this many entrys assume an error has occured * *$rep_jour_c - Le jour cycle d'une réservation, si aucun 0 * * Returns: * empty - The entry does not repeat * an array - This is a list of start times of each of the repeat entrys */ function mrbsGetRepeatEntryList($time, $enddate, $rep_type, $rep_opt, $max_ittr, $rep_num_weeks, $rep_jour_c,$area) { $sec = date("s", $time); $min = date("i", $time); $hour = date("G", $time); $day = date("d", $time); $month = date("m", $time); $year = date("Y", $time); $entrys = ""; $entrys_return = ""; $k=0; for($i = 0; $i < $max_ittr; $i++) { $time = mktime($hour, $min, $sec, $month, $day, $year); if ($time > $enddate) break; $time2 = mktime(0, 0, 0, $month, $day, $year); if (!(est_hors_reservation($time2,$area))) { $entrys_return[$k] = $time; $k++; } $entrys[$i] = $time; switch($rep_type) { // Daily repeat case 1: $day += 1; break; // Weekly repeat case 2: $j = $cur_day = date("w", $entrys[$i]); // Skip over days of the week which are not enabled: while ((($j = ($j + 1) % (7*$rep_num_weeks)) != $cur_day && $j<7 &&!$rep_opt[$j]) or ($j>=7)) { $day += 1; } $day += 1; break; // Monthly repeat case 3: $month += 1; break; // Yearly repeat case 4: $year += 1; break; // Monthly repeat on same week number and day of week case 5: $day += same_day_next_month($time); break; // Si la périodicité est par Jours/Cycle case 6: $sql = "SELECT * FROM ".TABLE_PREFIX."_calendrier_jours_cycle WHERE DAY >= '".$time2."' AND DAY <= '".$enddate."' AND Jours = '".$rep_jour_c."'"; $result = mysql_query($sql); $kk = 0; $tableFinale = array(); while($table = mysql_fetch_array($result)){ $day = date("d", $table['DAY']); $month = date("m", $table['DAY']); $year = date("Y", $table['DAY']); $tableFinale[$kk] = mktime($hour, $min, $sec, $month, $day, $year); $kk++; } return $tableFinale; break; // Unknown repeat option default: return; } } return $entrys_return; }