subscribe.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. // $Id: subscribe.php,v 1.9 2006/05/11 14:36:10 kvansteenkiste Exp $
  3. /*
  4. ==============================================================================
  5. Dokeos - elearning and course management software
  6. Copyright (c) 2004-2008 Dokeos SPRL
  7. Copyright (c) Sebastien Jacobs (www.spiritual-coder.com)
  8. Copyright (c) Kristof Van Steenkiste
  9. Copyright (c) Julio Montoya Armas
  10. For a full list of contributors, see "credits.txt".
  11. The full license can be read in "license.txt".
  12. This program is free software; you can redistribute it and/or
  13. modify it under the terms of the GNU General Public License
  14. as published by the Free Software Foundation; either version 2
  15. of the License, or (at your option) any later version.
  16. See the GNU General Public License for more details.
  17. Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  18. Mail: info@dokeos.com
  19. ==============================================================================
  20. */
  21. /**
  22. ---------------------------------------------------------------------
  23. Reservation-manager (add, edit & delete)
  24. ---------------------------------------------------------------------
  25. */
  26. require_once('rsys.php');
  27. Rsys :: protect_script('reservation');
  28. if (!empty($_GET['cat']) && !empty($_GET['item'] )) {
  29. $cat = (int)$_GET['cat'];
  30. $item = (int)$_GET['item'];
  31. $interbreadcrumb[] = array ('url' => "reservation.php?cat=$cat&item=$item", 'name' => get_lang('Booking'));
  32. } else {
  33. $interbreadcrumb[] = array ('url' => 'reservation.php', 'name' => get_lang('Booking'));
  34. }
  35. $tool_name = get_lang('BookIt');
  36. Display :: display_header($tool_name);
  37. api_display_tool_title($tool_name);
  38. $reservationid = Database::escape_string($_GET['rid']);
  39. $reservation = Rsys :: get_reservation($reservationid);
  40. $item = Rsys :: get_item($reservation[0][2]);
  41. if ($reservation[0][9] < $reservation[0][4]) {
  42. ob_start();
  43. $form = new FormValidator('reservation', 'post', 'subscribe.php?rid='.Security::remove_XSS($_GET['rid']));
  44. $form->addElement('hidden', 'timepicker', $reservation[0][11]);
  45. $form->addElement('hidden', 'accepted', $reservation[0][3]);
  46. if ($reservation[0][11] == 1) {
  47. //$subscribe_timepicker_information="Gelieve voor #name# een peroide te kiezen #from_till tussen :#start_end";
  48. $min_timepicker = $reservation[0][12];
  49. $max_timepicker = $reservation[0][13];
  50. $min_timepicker_min = fmod($min_timepicker,60);
  51. $min_timepicker_hour = floor($min_timepicker/60);
  52. $max_timepicker_min = fmod($max_timepicker,60);
  53. $max_timepicker_hour = floor($max_timepicker/60);
  54. $min_timepicker_show = $min_timepicker_hour."h".$min_timepicker_min."m";
  55. $max_timepicker_show = $max_timepicker_hour."h".$max_timepicker_min."m";
  56. if (!($min_timepicker == 0 && $max_timepicker == 0)) {
  57. if($min_timepicker_show == $max_timepicker_show) {
  58. $from_till = "van ".$min_timepicker_show;
  59. } else {
  60. $from_till = "van ".$min_timepicker_show." tot ".$max_timepicker_show;
  61. }
  62. } else {
  63. $from_till = "";
  64. $min_timepicker = 1;
  65. //een reservatieperiode moet toch wel minimum 1 minuut zijn
  66. }
  67. $res_start_at = $reservation[0][5];
  68. $res_end_at = $reservation[0][6];
  69. //echo time()."-".$res_start_at;
  70. if (time() > Rsys :: mysql_datetime_to_timestamp($res_start_at)) {
  71. $time_start = time();
  72. } else {
  73. $time_start = Rsys :: mysql_datetime_to_timestamp($res_start_at);
  74. }
  75. $sql = "SELECT start_at, end_at FROM ".Rsys :: getTable('subscription')."
  76. WHERE reservation_id='".$reservationid."' and end_at > NOW() ORDER BY start_at";
  77. $result = Database::query($sql);
  78. if (Database::num_rows($result) != 0){
  79. $start_end = "<ul>";
  80. while ($array = Database::fetch_array($result)) {
  81. //print_r($array);
  82. if (time() < Rsys :: mysql_datetime_to_timestamp($array["start_at"]))
  83. {
  84. if (((Rsys :: mysql_datetime_to_timestamp($array["start_at"]) - $time_start) >= ($min_timepicker*60)) && ($time_start < Rsys :: mysql_datetime_to_timestamp($array["start_at"])))
  85. {
  86. $start_end .= "<li>".Rsys :: timestamp_to_datetime($time_start)." en ".$array["start_at"]."</li>";
  87. }
  88. }
  89. $time_start = Rsys :: mysql_datetime_to_timestamp($array["end_at"]);
  90. $end_time_last_block = $array["end_at"];
  91. }
  92. if ((Rsys :: mysql_datetime_to_timestamp($res_end_at) - Rsys :: mysql_datetime_to_timestamp($end_time_last_block)) >= ($min_timepicker*60))
  93. {
  94. $start_end .= "<li>".$end_time_last_block." en ".$res_end_at."</li>";
  95. }
  96. $start_end .= "</ul>";
  97. } else {
  98. $start_end = " ".Rsys :: timestamp_to_datetime($time_start)." en ".$res_end_at;
  99. }
  100. //$form->addElement('html', "timestart:".$time_start."-".Rsys :: mysql_datetime_to_timestamp($res_start_at));
  101. $form->addElement('html', "<p>".str_replace('#start_end',$start_end,str_replace('#from_till', $from_till,str_replace('#name#', "<b>".$item[3]."</b>",str_replace('#start#', "<b>".$reservation[0][5]."</b>", str_replace('#end#', "<b>".$reservation[0][6]."</b>", get_lang("SubscribeTimePickerInformation"))))))." </p>");
  102. $form->add_timewindow('startpicker', 'endpicker', get_lang('StartDate'), get_lang('EndDate'));
  103. $form->addElement('hidden', 'min', $reservation[0][12]);
  104. $form->addElement('hidden', 'max', $reservation[0][13]);
  105. $datum = $_GET['timestart'];
  106. $defaultvalues['startpicker'] = Rsys :: timestamp_to_datetime($datum);
  107. //$defaultvalues['endpicker'] = Rsys :: timestamp_to_datetime($datum +900);
  108. $defaultvalues['endpicker'] = Rsys :: timestamp_to_datetime($datum +($min_timepicker*60));
  109. $form->setDefaults($defaultvalues);
  110. } else {
  111. $form->addElement('html', "<p> * ".str_replace('#name#', "<b>".$item[3]."</b>",str_replace('#start#', "<b>".$reservation[0][5]."</b>", str_replace('#end#', "<b>".$reservation[0][6]."</b>", get_lang('SubscribeInformation'))))." *</p>");
  112. }
  113. $buttons[] = $form->createElement('submit', 'submit', get_lang('Ok'));
  114. $buttons[] = $form->createElement('button', 'cancel', get_lang('Cancel'), array ('onclick' => 'location.href="reservation.php?cat='.$item[1].'&item='.$item[0].'"'));
  115. $form->addGroup($buttons, null, '', '', false);
  116. $buffer = ob_get_contents();
  117. ob_end_clean();
  118. if ($form->validate()) {
  119. $values = $form->exportValues();
  120. if ($values['timepicker'] == 0) {
  121. $result = Rsys :: add_subscription($_GET['rid'], api_get_user_id(),$values['accepted']);
  122. switch ($result) {
  123. case 0 :
  124. Display :: display_normal_message(Rsys :: get_return_msg2(get_lang('ReservationAdded'), "javascript:history.go(-2)", get_lang('BookingView')),false);
  125. break;
  126. case 1 :
  127. Display :: display_normal_message(Rsys :: get_return_msg2(str_replace('#END#', "<b>".$GLOBALS['end_date']."</b>",str_replace('#START#', "<b>".$GLOBALS['start_date']."</b>",get_lang('ReservationAlready'))),"reservation.php?cat=".$item[1]."&item=".$item[0]."", get_lang('BookingView')),false);
  128. break;
  129. }
  130. } else {
  131. $result = Rsys :: add_subscription_timepicker($_GET['rid'], api_get_user_id(), $values['startpicker'], $values['endpicker'],$values['accepted'],$values['min'],$values['max']);
  132. switch ($result) {
  133. case 0 :
  134. Display :: display_normal_message(Rsys :: get_return_msg2(get_lang('ReservationAdded'), "reservation.php?cat=".$item[1]."&item=".$item[0]."&date=".date( 'Y-m-d',Rsys :: mysql_datetime_to_timestamp($values['startpicker']))."&changemonth=yes", get_lang('BookingView')),false);
  135. break;
  136. case 1 :
  137. Display :: display_normal_message(str_replace('#END#', "<b>".$GLOBALS['end_date']."</b>",str_replace('#START#', "<b>".$GLOBALS['start_date']."</b>",get_lang('ReservationOutOfDate'))),false);
  138. $form->display();
  139. echo $buffer;
  140. break;
  141. case 2 :
  142. Display :: display_normal_message(get_lang('BookingPeriodTooSmall'),false);
  143. $form->display();
  144. //echo $buffer;
  145. break;
  146. case 3 :
  147. Display :: display_normal_message(get_lang('BookingPeriodTooBig'),false);
  148. $form->display();
  149. //echo $buffer;
  150. break;
  151. }
  152. }
  153. } else
  154. $form->display();
  155. } else {
  156. Display :: display_normal_message(Rsys :: get_return_msg2(get_lang('ReservationTresspassing'), "javascript:history.go(-2)", get_lang('BookingView')),false);
  157. }
  158. Display :: display_footer();
  159. ?>