4require_once 
"./Services/Object/classes/class.ilObjectGUI.php";
 
   23        function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output = 
true)
 
   26                $this->
ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
 
   27                $this->lng->loadLanguageModule(
"book");
 
   35                global 
$tpl, $ilTabs, $ilNavigationHistory, 
$ilUser;
 
   37                $next_class = $this->ctrl->getNextClass($this);
 
   38                $cmd = $this->ctrl->getCmd();
 
   40                if(!$next_class && 
$cmd == 
'render')
 
   42                        if(
$ilUser->getId() != ANONYMOUS_USER_ID)
 
   44                                $this->ctrl->setCmdClass(
'ilBookingObjectGUI');
 
   45                                $next_class = $this->ctrl->getNextClass($this);
 
   49                                $this->ctrl->redirect($this, 
"infoscreen");
 
   53                if(substr(
$cmd, 0, 4) == 
'book')
 
   58                $ilNavigationHistory->addItem($this->ref_id,
 
   59                                "./goto.php?target=book_".$this->ref_id, 
"book");
 
   65                        case 'ilpermissiongui':
 
   66                                $this->tabs_gui->setTabActive(
'perm_settings');
 
   67                                include_once(
"Services/AccessControl/classes/class.ilPermissionGUI.php");
 
   69                                $ret =& $this->ctrl->forwardCommand($perm_gui);
 
   72                        case 'ilbookingobjectgui':
 
   73                                $this->tabs_gui->setTabActive(
'render');
 
   74                                include_once(
"Modules/BookingManager/classes/class.ilBookingObjectGUI.php");
 
   76                                $ret =& $this->ctrl->forwardCommand($object_gui);
 
   79                        case 'ilbookingschedulegui':
 
   80                                $this->tabs_gui->setTabActive(
'schedules');
 
   81                                include_once(
"Modules/BookingManager/classes/class.ilBookingScheduleGUI.php");
 
   83                                $ret =& $this->ctrl->forwardCommand($schedule_gui);
 
   86                        case 'ilpublicuserprofilegui':
 
   87                                $ilTabs->clearTargets();
 
   88                                include_once(
"Services/User/classes/class.ilPublicUserProfileGUI.php");
 
   90                                $profile->setBackUrl($this->ctrl->getLinkTarget($this, 
'log'));
 
   91                                $ret = $this->ctrl->forwardCommand($profile);
 
   95                        case 'ilinfoscreengui':
 
   99                        case "ilcommonactiondispatchergui":
 
  100                                include_once(
"Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
 
  102                                $this->ctrl->forwardCommand($gui);
 
  105                        case "ilobjectcopygui":
 
  106                                include_once 
"./Services/Object/classes/class.ilObjectCopyGUI.php";
 
  108                                $cp->setType(
"book");
 
  109                                $this->ctrl->forwardCommand($cp);
 
  113                                $cmd = $this->ctrl->getCmd();
 
  125                $forms = parent::initCreationForms($a_new_type);
 
  126                unset($forms[self::CFORM_IMPORT]);              
 
  133                $a_new_object->setOffline(
true);
 
  138                $this->ctrl->setParameter($this, 
"ref_id", $a_new_object->
getRefId());
 
  139                $this->ctrl->redirect($this, 
"edit");
 
  145                include_once 
"Modules/BookingManager/classes/class.ilBookingSchedule.php";
 
  152                return parent::editObject();
 
  161                $type->setRequired(
true);
 
  165                include_once 
"Modules/BookingManager/classes/class.ilBookingObject.php";
 
  168                        $type->setDisabled(
true);
 
  172                $fixed->setInfo($this->lng->txt(
"book_schedule_type_fixed_info"));
 
  173                $type->addOption($fixed);
 
  176                $none->setInfo($this->lng->txt(
"book_schedule_type_none_info"));
 
  177                $type->addOption($none);
 
  179                $limit = 
new ilNumberInputGUI($this->lng->txt(
"book_overall_limit"), 
"limit");
 
  181                $limit->setMinValue(1);
 
  182                $limit->setInfo($this->lng->txt(
"book_overall_limit_info"));
 
  183                $none->addSubItem($limit);
 
  186                $public->setInfo($this->lng->txt(
"book_public_log_info"));
 
  192                $a_values[
"online"] = !$this->
object->isOffline();
 
  193                $a_values[
"public"] = $this->
object->hasPublicLog();
 
  194                $a_values[
"stype"] = $this->
object->getScheduleType();
 
  195                $a_values[
"limit"] = $this->
object->getOverallLimit();
 
  200                $this->
object->setOffline(!$a_form->
getInput(
'online'));
 
  201                $this->
object->setPublicLog($a_form->
getInput(
'public'));
 
  202                $this->
object->setScheduleType($a_form->
getInput(
'stype'));
 
  203                $this->
object->setOverallLimit($a_form->
getInput(
'limit') ? $a_form->
getInput(
'limit') : 
null);
 
  211                global $ilAccess, $ilHelp, 
$ilUser;
 
  213                if (in_array($this->ctrl->getCmd(), array(
"create", 
"save")) && !$this->ctrl->getNextClass())
 
  218                $ilHelp->setScreenIdComponent(
"book");
 
  220                if ($ilAccess->checkAccess(
'read', 
'', $this->object->getRefId()))
 
  222                        if(
$ilUser->getId() != ANONYMOUS_USER_ID)
 
  224                                $this->tabs_gui->addTab(
"render",
 
  225                                                $this->lng->txt(
"book_booking_types"),
 
  226                                                $this->ctrl->getLinkTarget($this, 
"render"));
 
  229                        $this->tabs_gui->addTab(
"info",
 
  230                                        $this->lng->txt(
"info_short"),
 
  231                                        $this->ctrl->getLinkTarget($this, 
"infoscreen"));
 
  233                        if(
$ilUser->getId() != ANONYMOUS_USER_ID || $this->object->hasPublicLog())
 
  235                                $this->tabs_gui->addTab(
"log",
 
  236                                        $this->lng->txt(
"book_log"),
 
  237                                        $this->ctrl->getLinkTarget($this, 
"log"));              
 
  241                if ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()))
 
  245                                $this->tabs_gui->addTab(
"schedules",
 
  246                                        $this->lng->txt(
"book_schedules"),
 
  247                                        $this->ctrl->getLinkTargetByClass(
"ilbookingschedulegui", 
"render"));
 
  250                        $this->tabs_gui->addTab(
"settings",
 
  251                                $this->lng->txt(
"settings"),
 
  252                                $this->ctrl->getLinkTarget($this, 
"edit"));
 
  255                if($ilAccess->checkAccess(
'edit_permission', 
'', $this->object->getRefId()))
 
  257                        $this->tabs_gui->addTab(
"perm_settings",
 
  258                                $this->lng->txt(
"perm_settings"),
 
  259                                $this->ctrl->getLinkTargetByClass(
"ilpermissiongui", 
"perm"));
 
  270                $this->tabs_gui->clearTargets();
 
  271                $this->tabs_gui->setBackTarget($this->lng->txt(
'book_back_to_list'), $this->ctrl->getLinkTarget($this, 
'render'));
 
  273                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
  276                $this->lng->loadLanguageModule(
"dateplaner");
 
  277                $this->ctrl->setParameter($this, 
'object_id', $obj->getId());
 
  281                        include_once 
'Modules/BookingManager/classes/class.ilBookingSchedule.php';              
 
  284                        $tpl->setContent($this->
renderSlots($schedule, array($obj->getId()), $obj->getTitle()));
 
  288                        include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
 
  290                        $cgui->setHeaderText($this->lng->txt(
"book_confirm_booking_no_schedule"));
 
  292                        $cgui->setFormAction($this->ctrl->getFormAction($this));
 
  293                        $cgui->setCancel($this->lng->txt(
"cancel"), 
"render");
 
  294                        $cgui->setConfirm($this->lng->txt(
"confirm"), 
"confirmedBooking");
 
  296                        $cgui->addItem(
"object_id", $obj->getId(), $obj->getTitle());           
 
  298                        $tpl->setContent($cgui->getHTML());
 
  309                        $mytpl = 
new ilTemplate(
'tpl.booking_reservation_fix.html', 
true, 
true, 
'Modules/BookingManager');
 
  311                        $mytpl->setVariable(
'FORM_ACTION', $this->ctrl->getFormAction($this));
 
  312                        $mytpl->setVariable(
'TXT_TITLE', $this->lng->txt(
'book_reservation_title'));
 
  313                        $mytpl->setVariable(
'TXT_INFO', $this->lng->txt(
'book_reservation_fix_info'));
 
  314                        $mytpl->setVariable(
'TXT_OBJECT', $title);
 
  315                        $mytpl->setVariable(
'TXT_CMD_BOOK', $this->lng->txt(
'book_confirm_booking'));
 
  316                        $mytpl->setVariable(
'TXT_CMD_CANCEL', $this->lng->txt(
'cancel'));
 
  318                        include_once 
'Services/Calendar/classes/class.ilCalendarUserSettings.php';
 
  322                        $morning_aggr = $user_settings->getDayStart();
 
  323                        $evening_aggr = $user_settings->getDayEnd();
 
  325                        for($i = $morning_aggr;$i <= $evening_aggr;$i++)
 
  327                                switch($user_settings->getTimeFormat())
 
  330                                                if ($morning_aggr > 0 && $i == $morning_aggr)
 
  332                                                        $hours[$i] = sprintf(
'%02d:00',0).
"-";
 
  334                                                $hours[$i].= sprintf(
'%02d:00',$i);
 
  335                                                if ($evening_aggr < 23 && $i == $evening_aggr)
 
  337                                                        $hours[$i].= 
"-".sprintf(
'%02d:00',23);
 
  342                                                if ($morning_aggr > 0 && $i == $morning_aggr)
 
  344                                                        $hours[$i] = date(
'h a',mktime(0,0,0,1,1,2000)).
"-";
 
  346                                                $hours[$i].= date(
'h a',mktime($i,0,0,1,1,2000));
 
  347                                                if ($evening_aggr < 23 && $i == $evening_aggr)
 
  349                                                        $hours[$i].= 
"-".date(
'h a',mktime(23,0,0,1,1,2000));
 
  355                        if(isset(
$_GET[
'seed']))
 
  357                                $find_first_open = 
false;
 
  362                                $find_first_open = 
true;
 
  366                        include_once 
'Services/Calendar/classes/class.ilCalendarUtil.php';
 
  367                        include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';                   
 
  368                        $week_start = $user_settings->getWeekStart();
 
  370                        if(!$find_first_open)
 
  378                                $has_open_slot = $this->
buildDatesBySchedule($week_start, $hours, $schedule, $object_ids, $seed, $dates);
 
  384                                        $limit = clone($seed);
 
  388                                        while(!$has_open_slot && $seed->get(
IL_CAL_UNIX) < $limit)
 
  393                                                $has_open_slot = $this->
buildDatesBySchedule($week_start, $hours, $schedule, $object_ids, $seed, $dates);
 
  398                        include_once 
'Services/Calendar/classes/class.ilCalendarHeaderNavigationGUI.php';
 
  400                        $mytpl->setVariable(
'NAVIGATION', $navigation->getHTML());
 
  406                                $mytpl->setCurrentBlock(
'weekdays');
 
  409                                $mytpl->parseCurrentBlock();
 
  412                        include_once 
'Services/Calendar/classes/class.ilCalendarAppointmentColors.php';
 
  413                        include_once 
'Services/Calendar/classes/class.ilCalendarUtil.php';
 
  416                        for($loop = 0; $loop < 7; $loop++)
 
  420                                $color[$loop+1] = 
'border-bottom: 1px solid '.$col.
'; background-color: '.$col.
'; color: '.$fnt;
 
  424                        foreach($dates as $hour => $days)
 
  427                                $caption = array_shift($caption);
 
  429                                for($loop = 1; $loop < 8; $loop++)
 
  431                                        if(!isset($days[$loop]))
 
  433                                                $mytpl->setCurrentBlock(
'dates');
 
  434                                                $mytpl->setVariable(
'DUMMY', 
' ');
 
  435                                                $mytpl->parseCurrentBlock();
 
  439                                                if(isset($days[$loop][
'captions']))
 
  441                                                        foreach($days[$loop][
'captions'] as $slot_id => $slot_caption)
 
  443                                                                $mytpl->setCurrentBlock(
'choice');
 
  444                                                                $mytpl->setVariable(
'TXT_DATE', $slot_caption);
 
  445                                                                $mytpl->setVariable(
'VALUE_DATE', $slot_id);
 
  446                                                                $mytpl->setVariable(
'DATE_COLOR', $color[$loop]);
 
  447                                                                $mytpl->setVariable(
'TXT_AVAILABLE', 
 
  448                                                                        sprintf($this->lng->txt(
'book_reservation_available'), 
 
  449                                                                        $days[$loop][
'available'][$slot_id]));
 
  450                                                                $mytpl->parseCurrentBlock();
 
  453                                                        $mytpl->setCurrentBlock(
'dates');
 
  454                                                        $mytpl->setVariable(
'DUMMY', 
'');
 
  455                                                        $mytpl->parseCurrentBlock();
 
  457                                                else if(isset($days[$loop][
'in_slot']))
 
  459                                                        $mytpl->setCurrentBlock(
'dates');
 
  460                                                        $mytpl->setVariable(
'DATE_COLOR', $color[$loop]);
 
  461                                                        $mytpl->parseCurrentBlock();
 
  465                                                        $mytpl->setCurrentBlock(
'dates');
 
  466                                                        $mytpl->setVariable(
'DUMMY', 
' ');
 
  467                                                        $mytpl->parseCurrentBlock();
 
  472                                $mytpl->setCurrentBlock(
'slots');
 
  473                                $mytpl->setVariable(
'TXT_HOUR', $caption);
 
  476                                        $mytpl->setVariable(
'CSS_ROW', 
'tblrow1');
 
  480                                        $mytpl->setVariable(
'CSS_ROW', 
'tblrow2');
 
  482                                $mytpl->parseCurrentBlock();
 
  493                return $mytpl->get();
 
  496        protected function buildDatesBySchedule($week_start, array $hours, $schedule, array $object_ids, $seed, array &$dates)
 
  500                include_once 
'Services/Calendar/classes/class.ilCalendarUserSettings.php';                      
 
  503                $map = array(
'mo', 
'tu', 
'we', 
'th', 
'fr', 
'sa', 
'su');
 
  504                $definition = $schedule->getDefinition();
 
  506                $has_open_slot = 
false;
 
  512                        if(isset($definition[$map[$date_info[
'isoday']-1]]))
 
  515                                foreach($definition[$map[$date_info[
'isoday']-1]] as $slot)
 
  517                                        $slot = explode(
'-', $slot);
 
  518                                        $slots[] = array(
'from'=>str_replace(
':', 
'', $slot[0]),
 
  519                                                'to'=>str_replace(
':', 
'', $slot[1]));
 
  523                        $last = array_pop(array_keys($hours));
 
  524                        $slot_captions = array();
 
  525                        foreach($hours as $hour => $period)
 
  527                                $dates[$hour][0] = $period;
 
  529                                $period = explode(
"-", $period);
 
  534                                        if(stristr($period[0], 
"pm"))
 
  536                                                $period[0] = (int)$period[0]+12;
 
  540                                                $period[0] = (int)$period[0];
 
  546                                        if(
sizeof($period) == 2)
 
  548                                                if(stristr($period[1], 
"pm"))
 
  550                                                        $period[1] = (int)$period[1]+12;
 
  554                                                        $period[1] = (int)$period[1];
 
  563                                if(
sizeof($period) == 1)
 
  565                                        $period_from = (int)substr($period[0], 0, 2).
"00";
 
  566                                        $period_to = (int)substr($period[0], 0, 2).
"59";
 
  570                                        $period_from = (int)substr($period[0], 0, 2).
"00";
 
  571                                        $period_to = (int)substr($period[1], 0, 2).
"59";
 
  574                                $column = $date_info[
'isoday'];
 
  590                                        foreach($slots as $slot)
 
  592                                                $slot_from = mktime(substr($slot[
'from'], 0, 2), substr($slot[
'from'], 2, 2), 0, $date_info[
"mon"], $date_info[
"mday"], $date_info[
"year"]);
 
  593                                                $slot_to = mktime(substr($slot[
'to'], 0, 2), substr($slot[
'to'], 2, 2), 0, $date_info[
"mon"], $date_info[
"mday"], $date_info[
"year"]);
 
  599                                                if($slot_from < (time()+$schedule->getDeadline()*60*60) || !array_sum($nr_available))
 
  605                                                if((
int)$slot[
'from'] < $period_to && (int)$slot[
'to'] > $period_from)
 
  608                                                        $from = array_pop(explode(
' ', $from));
 
  610                                                        $to = array_pop(explode(
' ', $to));
 
  613                                                        $id = $slot_from.
'_'.$slot_to;
 
  614                                                        if(!in_array($id, $slot_captions))
 
  616                                                                $dates[$hour][$column][
'captions'][$id] = $from.
'-'.$to;
 
  617                                                                $dates[$hour][$column][
'available'][$id] = array_sum($nr_available);
 
  618                                                                $slot_captions[] = $id;
 
  627                                                $has_open_slot = 
true;
 
  628                                                $dates[$hour][$column][
'in_slot'] = 
$in;
 
  634                return $has_open_slot;
 
  644                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
  645                include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';           
 
  654                                $object_id = 
$_POST[
'object_id'];
 
  667                                                $this->ctrl->redirect($this, 
'render');                                         
 
  674                        if(!isset(
$_POST[
'date']))
 
  681                        if(isset(
$_GET[
'object_id']))
 
  685                                $object_id = (int)
$_GET[
'object_id'];
 
  695                                        foreach(
$_POST[
'date'] as $date)
 
  697                                                $fromto = explode(
'_', $date);
 
  701                                                $counter = $counter[$object_id];
 
  707                                                                $confirm[$object_id.
"_".$fromto[0].
"_".($fromto[1]+1)] = $counter;
 
  711                                                                $rsv_ids[] = $this->
processBooking($object_id, $fromto[0], $fromto[1], $group_id);
 
  782                        $this->ctrl->redirect($this, 
'book');
 
  791                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
  793                $pfile = $obj->getPostFile();
 
  794                $ptext = $obj->getPostText();
 
  795                if(trim($ptext) || $pfile)
 
  797                        if(
sizeof($a_rsv_ids))
 
  799                                $this->ctrl->setParameterByClass(
'ilbookingobjectgui', 
'rsv_ids', implode(
";", $a_rsv_ids));            
 
  801                        $this->ctrl->setParameterByClass(
'ilbookingobjectgui', 
'object_id', $obj->getId());                             
 
  802                        $this->ctrl->redirectByClass(
'ilbookingobjectgui', 
'displayPostInfo');
 
  806                        $this->ctrl->redirect($this, 
'render');
 
  812                include_once 
'Services/Form/classes/class.ilPropertyFormGUI.php';
 
  814                $form->setFormAction($this->ctrl->getFormAction($this, 
"confirmedBooking"));
 
  815                $form->setTitle($this->lng->txt(
"book_confirm_booking_schedule_number_of_objects"));
 
  816                $form->setDescription($this->lng->txt(
"book_confirm_booking_schedule_number_of_objects_info"));
 
  818                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
  821                foreach($a_objects_counter as $id => $counter)
 
  823                        $id = explode(
"_", $id);
 
  824                        $book_id = $id[0].
"_".$id[1].
"_".$id[2].
"_".$counter;
 
  831                                $section->setTitle($obj->getTitle());
 
  843                        $nr_field->setValue(1);
 
  844                        $nr_field->setSize(3);
 
  845                        $nr_field->setMaxValue($counter);
 
  846                        $nr_field->setMinValue($counter ? 1 : 0);
 
  847                        $nr_field->setRequired(
true);
 
  848                        $form->addItem($nr_field);      
 
  850                        if(!$min_date || $id[1] < $min_date)
 
  857                $this->lng->loadLanguageModule(
"dateplaner");
 
  858                $rec_mode = 
new ilSelectInputGUI($this->lng->txt(
"cal_recurrences"), 
"recm");
 
  859                $rec_mode->setRequired(
true);
 
  860                $rec_mode->setOptions(array(                    
 
  861                        "-1" => $this->lng->txt(
"cal_no_recurrence"),
 
  862                        1 => $this->lng->txt(
"cal_weekly"),
 
  863                        2 => $this->lng->txt(
"r_14"),
 
  864                        4 => $this->lng->txt(
"r_4_weeks")
 
  866                $form->addItem($rec_mode);
 
  869                $rec_mode->addSubItem($rec_end);        
 
  874                        $rec_mode->setHideSubForm(
true, 
'>= 1');
 
  884                        $rec_mode->setDisabled(
true);
 
  885                        $rec_end->setDisabled(
true);                    
 
  891                        $grp->setValue($a_group_id);
 
  892                        $form->addItem($grp);           
 
  895                $form->addCommandButton(
"confirmedBookingNumbers", $this->lng->txt(
"confirm"));
 
  896                $form->addCommandButton(
"render", $this->lng->txt(
"cancel"));
 
  905                $this->tabs_gui->clearTargets();
 
  906                $this->tabs_gui->setBackTarget($this->lng->txt(
'book_back_to_list'), $this->ctrl->getLinkTarget($this, 
'render'));
 
  913                $tpl->setContent($a_form->getHTML());
 
  918                $date = date_parse($a_date);            
 
  919                $stamp = mktime(0, 0, 1, $date[
"month"], $date[
"day"]+$a_days, $date[
"year"]);
 
  920                return date(
"Y-m-d", $stamp);
 
  925                $date = getDate($a_stamp);              
 
  926                return mktime($date[
"hours"], $date[
"minutes"], $date[
"seconds"], 
 
  927                        $date[
"mon"], $date[
"mday"]+$a_days, $date[
"year"]);
 
  932                include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';                                                           
 
  933                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
  937                $current_first = 
$obj_id = 
null;
 
  938                foreach(array_keys(
$_POST) as $id)
 
  940                        if(substr($id, 0, 9) == 
"conf_nr__")
 
  942                                $id = explode(
"_", substr($id, 9));
 
  943                                $counter[$id[0].
"_".$id[1].
"_".$id[2]] = (int)$id[3];           
 
  946                                        $current_first = date(
"Y-m-d", $id[1]);
 
  952                if((
int)
$_POST[
"recm"] > 0 && $current_first)
 
  955                        $end = 
$_POST[
"rece"][
"date"];
 
  956                        $end = date(
"Y-m-d", mktime(23, 59, 59, $end[
"m"], $end[
"d"], $end[
"y"]));                                      
 
  957                        $cycle = (int)
$_POST[
"recm"]*7;                 
 
  960                        while($cut < 1000 && $this->
addDaysDate($current_first, $cycle) <= $end)
 
  963                                $current_first = 
null;
 
  964                                foreach($org as $item_id => $max)
 
  966                                        $parts = explode(
"_", $item_id);
 
  972                                        $new_item_id = 
$obj_id.
"_".$from.
"_".$to;
 
  975                                        if(!isset($counter[$new_item_id]) && date(
"Y-m-d", $to) <= $end)
 
  979                                                $new_max = (int)$new_max[
$obj_id];
 
  981                                                $counter[$new_item_id] = $new_max;
 
  985                                                        $current_first = date(
"Y-m-d", $from);
 
  989                                                $_POST[
"conf_nr__".$new_item_id.
"_".$new_max] = 
$_POST[
"conf_nr__".$item_id.
"_".$max];          
 
  995                $group_id = 
$_POST[
"grp_id"];
 
  998                if($form->checkInput())
 
 1002                        foreach($counter as $id => $all_nr)
 
 1004                                $book_nr = $form->getInput(
"conf_nr__".$id.
"_".$all_nr);
 
 1005                                $parts = explode(
"_", $id);
 
 1016                                        $book_nr = min($book_nr, $counter);                                                     
 
 1017                                        for($loop = 0; $loop < $book_nr; $loop++)
 
 1031                                $this->ctrl->redirect($this, 
'render');
 
 1036                        $form->setValuesByPost();
 
 1040                        $rece_year = 
$_POST[
"rece"][
"date"][
"y"];
 
 1041                        $rece_month = str_pad(
$_POST[
"rece"][
"date"][
"m"], 2, 
"0", STR_PAD_LEFT);
 
 1042                        $rece_day = str_pad(
$_POST[
"rece"][
"date"][
"d"], 2, 
"0", STR_PAD_LEFT);
 
 1044                        $form->getItemByPostVar(
"rece")->setDate(
new ilDate($rece_year.
"-".$rece_month.
"-".$rece_day, 
IL_CAL_DATE));
 
 1045                        $form->getItemByPostVar(
"recm")->setHideSubForm(
$_POST[
"recm"] < 1);
 
 1048                        $hidden_date->setValue($rece_year);                     
 
 1049                        $form->addItem($hidden_date);
 
 1051                        $hidden_date->setValue($rece_month);                    
 
 1052                        $form->addItem($hidden_date);
 
 1054                        $hidden_date->setValue($rece_day);                      
 
 1055                        $form->addItem($hidden_date);
 
 1070        function processBooking($a_object_id, $a_from = 
null, $a_to = 
null, $a_group_id = 
null)
 
 1075                if(!$ilAccess->checkAccess(
'read', 
'', $this->object->getRefId()))
 
 1077                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
 
 1080                include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';
 
 1082                $reservation->setObjectId($a_object_id);
 
 1083                $reservation->setUserId(
$ilUser->getID());
 
 1084                $reservation->setFrom($a_from);
 
 1085                $reservation->setTo($a_to);
 
 1086                $reservation->setGroupId($a_group_id);
 
 1087                $reservation->save();
 
 1091                        $this->lng->loadLanguageModule(
'dateplaner');
 
 1092                        include_once 
'Services/Calendar/classes/class.ilCalendarUtil.php';
 
 1093                        include_once 
'Services/Calendar/classes/class.ilCalendarCategory.php';
 
 1096                        include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
 1099                        include_once 
'Services/Calendar/classes/class.ilCalendarEntry.php';
 
 1103                        $entry->setTitle($this->lng->txt(
'book_cal_entry').
' '.
$object->getTitle());
 
 1104                        $entry->setContextId($reservation->getId());
 
 1107                        include_once 
'Services/Calendar/classes/class.ilCalendarCategoryAssignments.php';
 
 1109                        $assignment->addAssignment($def_cat->getCategoryId());
 
 1112                return $reservation->getId();
 
 1120                global 
$tpl, $ilAccess;
 
 1122                $this->tabs_gui->setTabActive(
'log');
 
 1124                $show_all = ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()) ||
 
 1125                        $this->
object->hasPublicLog());
 
 1128                if(
$_GET[
"object_id"])
 
 1130                        $filter[
"object"] = (int)
$_GET[
"object_id"];
 
 1133                include_once 
'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
 
 1135                        $this->object->getId(), $show_all, 
 
 1138                $tpl->setContent($table->getHTML());
 
 1143                global 
$tpl, $ilAccess;
 
 1145                $this->tabs_gui->clearTargets();
 
 1146                $this->tabs_gui->setBackTarget($this->lng->txt(
"back"),
 
 1147                        $this->ctrl->getLinkTarget($this, 
"log"));
 
 1149                $show_all = ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()) ||
 
 1150                        $this->
object->hasPublicLog());
 
 1153                if(
$_GET[
"object_id"])
 
 1155                        $filter[
"object"] = (int)
$_GET[
"object_id"];
 
 1158                include_once 
'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
 
 1160                        $this->object->getId(), $show_all, 
 
 1162                        $filter, 
$_GET[
"reservation_id"]);
 
 1163                $tpl->setContent($table->getHTML());
 
 1173                $this->tabs_gui->setTabActive(
'log');
 
 1175                if(!
$_POST[
'reservation_id'])
 
 1181                if ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()))
 
 1183                        include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';
 
 1188                return $this->ctrl->redirect($this, 
'log');
 
 1198                $show_all = ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()) ||
 
 1199                        $this->
object->hasPublicLog());
 
 1201                include_once 
'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
 
 1203                        $this->object->getId(), $show_all,
 
 1205                $table->resetOffset();
 
 1206                $table->writeFilterToSession();
 
 1217                $show_all = ($ilAccess->checkAccess(
'write', 
'', $this->object->getRefId()) ||
 
 1218                        $this->
object->hasPublicLog());
 
 1220                include_once 
'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
 
 1222                        $this->object->getId(), $show_all,
 
 1224                $table->resetOffset();
 
 1225                $table->resetFilter();
 
 1233                if ($ilAccess->checkAccess(
"read", 
"", $a_target))
 
 1237                else if ($ilAccess->checkAccess(
"read", 
"", ROOT_FOLDER_ID))
 
 1254                $this->ctrl->setCmd(
"showSummary");
 
 1255                $this->ctrl->setCmdClass(
"ilinfoscreengui");
 
 1263                $this->tabs_gui->setTabActive(
'info');
 
 1265                if (!$ilAccess->checkAccess(
"visible", 
"", $this->ref_id))
 
 1267                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
 
 1270                include_once(
"./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
 
 1273                $info->enablePrivateNotes();
 
 1275                if ($ilAccess->checkAccess(
"read", 
"", 
$_GET[
"ref_id"]))
 
 1277                        $info->enableNews();
 
 1281                $info->enableNewsEditing(
false);
 
 1282                if ($ilAccess->checkAccess(
"write", 
"", 
$_GET[
"ref_id"]))
 
 1285                        $enable_internal_rss = $news_set->get(
"enable_rss_for_internal");
 
 1287                        if ($enable_internal_rss)
 
 1289                                $info->setBlockProperty(
"news", 
"settings", 
true);
 
 1290                                $info->setBlockProperty(
"news", 
"public_notifications_option", 
true);
 
 1295                if (
$ilCtrl->getNextClass() == 
"ilinfoscreengui")
 
 1297                        $ilCtrl->forwardCommand($info);
 
 1301                        return $ilCtrl->getHTML($info);
 
 1311                else if(
$_GET[
"reservation_id"])
 
 1313                        return array(
$_GET[
"reservation_id"]);
 
 1324                        $this->ctrl->redirect($this, 
'log');
 
 1327                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
 1328                include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';
 
 1331                foreach($ids as $idx => $id)
 
 1333                        if(!is_numeric($id))
 
 1335                                list(
$obj_id, $user_id, $from, $to) = explode(
"_", $id);
 
 1337                                $valid_ids = array();                           
 
 1340                                        $valid_ids[$item[
"booking_object_id"]] = $item[
"title"];
 
 1343                                if(($ilAccess->checkAccess(
"write", 
"", $this->ref_id) || $user_id == 
$ilUser->getId()) &&
 
 1345                                        in_array(
$obj_id, array_keys($valid_ids)))
 
 1348                                        if(!
sizeof($rsv_ids))
 
 1352                                        if(
sizeof($rsv_ids) > 1)
 
 1354                                                $max[$id] = 
sizeof($rsv_ids);
 
 1355                                                $ids[$idx] = $rsv_ids;
 
 1360                                                $ids[$idx] = array_shift($rsv_ids);
 
 1372                        $this->ctrl->redirect($this, 
'log');
 
 1376                if(
sizeof($max) && max($max) > 1)
 
 1381                $this->tabs_gui->clearTargets();
 
 1382                $this->tabs_gui->setBackTarget(
$lng->txt(
"back"),
 
 1383                        $ilCtrl->getLinkTarget($this, 
"log"));
 
 1385                include_once 
'Services/Utilities/classes/class.ilConfirmationGUI.php';
 
 1387                $conf->setFormAction(
$ilCtrl->getFormAction($this, 
'rsvCancel'));
 
 1388                $conf->setHeaderText(
$lng->txt(
'book_confirm_cancel'));
 
 1389                $conf->setConfirm(
$lng->txt(
'book_set_cancel'), 
'rsvCancel');
 
 1390                $conf->setCancel(
$lng->txt(
'cancel'), 
'log');
 
 1392                foreach($ids as $id)
 
 1397                        $details = $obj->getTitle();
 
 1400                                $details .= 
", ".ilDatePresentation::formatPeriod(
 
 1405                        $conf->addItem(
'rsv_id[]', $id, $details);              
 
 1408                $tpl->setContent($conf->getHTML());             
 
 1413                include_once 
'Services/Form/classes/class.ilPropertyFormGUI.php';
 
 1415                $form->setFormAction($this->ctrl->getFormAction($this, 
"rsvCancel"));
 
 1416                $form->setTitle($this->lng->txt(
"book_confirm_cancel_aggregation"));
 
 1418                include_once 
'Modules/BookingManager/classes/class.ilBookingObject.php';
 
 1419                include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';   
 
 1423                foreach($a_ids as $idx => $ids)
 
 1428                                $first = array_shift($first);
 
 1443                        $item->setRequired(
true);
 
 1444                        $item->setMinValue(0);
 
 1446                        $form->addItem($item);
 
 1450                                $item->setMaxValue(
sizeof($ids));
 
 1452                                foreach($ids as $id)
 
 1455                                        $hidden->setValue($id);
 
 1456                                        $form->addItem($hidden);
 
 1461                                $item->setMaxValue(1);
 
 1464                                $hidden->setValue($ids);
 
 1465                                $form->addItem($hidden);
 
 1468                        if(
$_POST[
"rsv_id_".$idx])
 
 1470                                $item->setValue((
int)
$_POST[
"rsv_id_".$idx]);
 
 1474                $form->addCommandButton(
"rsvCancel", $this->lng->txt(
"confirm"));
 
 1475                $form->addCommandButton(
"log", $this->lng->txt(
"cancel"));      
 
 1484                $this->tabs_gui->clearTargets();
 
 1485                $this->tabs_gui->setBackTarget(
$lng->txt(
"back"),
 
 1486                        $ilCtrl->getLinkTarget($this, 
"log"));
 
 1493                $tpl->setContent($form->getHTML());             
 
 1506                        if(!$form->checkInput())
 
 1508                                $this->tabs_gui->clearTargets();
 
 1509                                $this->tabs_gui->setBackTarget(
$lng->txt(
"back"),
 
 1510                                        $ilCtrl->getLinkTarget($this, 
"log"));
 
 1512                                return $tpl->setContent($form->getHTML());              
 
 1516                        foreach(
$_POST[
"rsv_aggr"] as $idx => $aggr_ids)
 
 1518                                $max = (int)
$_POST[
"rsv_id_".$idx];
 
 1521                                        if(!is_array($aggr_ids))
 
 1527                                                $aggr_ids = array_slice($aggr_ids, 0, $max);
 
 1528                                                $ids = array_merge($ids, $aggr_ids);
 
 1536                        include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';
 
 1537                        foreach($ids as $id)
 
 1541                                if (!$ilAccess->checkAccess(
"write", 
"", $this->ref_id) && $obj->getUserId() != 
$ilUser->getId())
 
 1544                                        $this->ctrl->redirect($this, 
'log');
 
 1553                                        $cal_entry_id = $obj->getCalendarEntry();               
 
 1556                                                include_once 
'Services/Calendar/classes/class.ilCalendarEntry.php';
 
 1600                if(!$ilAccess->checkAccess(
"write", 
"", $this->ref_id))
 
 1603                        $this->ctrl->redirect($this, 
'log');
 
 1609                        include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';           
 
 1610                        foreach($ids as $id)
 
 1626                if(!$ilAccess->checkAccess(
"write", 
"", $this->ref_id))
 
 1629                        $this->ctrl->redirect($this, 
'log');
 
 1635                        include_once 
'Modules/BookingManager/classes/class.ilBookingReservation.php';           
 
 1636                        foreach($ids as $id)
 
 1639                                $obj->setStatus(NULL);
 
 1652                $this->tabs_gui->clearTargets();
 
 1654                $user_id = (int)
$_GET[
'user_id'];
 
 1656                include_once 
'Services/User/classes/class.ilPublicUserProfileGUI.php';
 
 1658                $profile->setBackUrl($this->ctrl->getLinkTarget($this, 
'log'));
 
 1666                if (is_object($this->
object))
 
 1668                        $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, 
"render"), 
"", 
$_GET[
"ref_id"]);
 
Class ilBookingObjectGUI.
static getNrOfItemsForObjects(array $a_obj_ids)
Get nr of available items
static getList($a_pool_id)
Get list of booking objects for given type
static getObjectReservationForUser($a_object_id, $a_user_id, $a_multi=false)
static changeStatus(array $a_ids, $a_status)
List all reservations.
static getAvailableObject(array $a_ids, $a_from, $a_to, $a_return_single=true, $a_return_counter=false)
Check if any of given objects are bookable.
static getCancelDetails($a_obj_id, $a_user_id, $a_from, $a_to)
Get reservation ids from aggregated id for cancellation.
static getNewGroupId()
Get next group id
static isObjectAvailableNoSchedule($a_obj_id)
Class ilBookingScheduleGUI.
schedule for booking ressource
getRaster()
Get booking raster.
static getList($a_pool_id)
Get list of booking objects for given pool.
static _getColorsByType($a_type)
get selectable colors
Model for a calendar entry.
setStart(ilDateTime $a_start)
@access public
static _getInstanceByUserId($a_user_id)
get singleton instance
static _numericDayToString($a_day, $a_long=true)
get
static _buildWeekDayList($a_day, $a_weekstart)
build week day list
static calculateFontColor($a_html_color_code)
Calculate best font color from html hex color code.
static _numericMonthToString($a_month, $a_long=true)
numeric month to string
static initDefaultCalendarByType($a_type_id, $a_usr_id, $a_title, $a_create=false)
Init the default calendar for given type and user.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Confirmation screen class.
static formatPeriod(ilDateTime $start, ilDateTime $end)
Format a period of two date Shows: 14.
static setUseRelativeDates($a_status)
set use relative dates
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
Class ilObjBookingPoolGUI.
confirmBookingNumbers(array $a_objects_counter, $a_group_id, ilPropertyFormGUI $a_form=null)
buildDatesBySchedule($week_start, array $hours, $schedule, array $object_ids, $seed, array &$dates)
applyLogFilterObject()
Apply filter from reservations table gui.
bookObject()
First step in booking process.
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
Constructor.
executeCommand()
main switch
afterSave(ilObject $a_new_object)
Post (successful) object creation hook.
changeStatusObject()
Change status of given reservations.
getEditFormCustomValues(array &$a_values)
Add values to custom edit fields.
rsvConfirmCancelAggregationForm($a_ids)
processBooking($a_object_id, $a_from=null, $a_to=null, $a_group_id=null)
Book object for date.
initCreationForms($a_new_type)
Init creation froms.
initEditCustomForm(ilPropertyFormGUI $a_form)
Add custom fields to update form.
confirmedBookingNumbersObject()
rsvConfirmCancelAggregationObject(array $a_ids=null)
addDaysDate($a_date, $a_days)
renderSlots(ilBookingSchedule $schedule, array $object_ids, $title)
addDaysStamp($a_stamp, $a_days)
handleBookingSuccess($a_obj_id, array $a_rsv_ids=null)
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
confirmedBookingObject()
Book object - either of type or specific - for given dates.
initBookingNumbersForm(array $a_objects_counter, $a_group_id, $a_reload=false)
updateCustom(ilPropertyFormGUI $a_form)
Insert custom update form values into object.
resetLogFilterObject()
Reset filter in reservations table gui.
addLocatorItems()
should be overwritten to add object specific items (repository items are preloaded)
logObject()
List reservations.
GUI class for the workflow of copying objects.
Class ilObjectGUI Basic methods of all Output classes.
ilObjectGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=true)
Constructor @access public.
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
prepareOutput()
prepare output
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
addHeaderAction()
Add header action menu.
Class ilObject Basic functions for all objects.
static _lookupObjId($a_id)
update()
update object in db
static _lookupTitle($a_id)
lookup object title
getRefId()
get reference id @access public
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
GUI class for public user profile presentation.
This class represents an option in a radio group.
special template class to simplify handling of ITX/PEAR
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
redirection script todo: (a better solution should control the processing via a xml file)