ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilObjBookingPoolGUI Class Reference

Class ilObjBookingPoolGUI. More...

+ Inheritance diagram for ilObjBookingPoolGUI:
+ Collaboration diagram for ilObjBookingPoolGUI:

Public Member Functions

 __construct ($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
 Constructor. More...
 
 executeCommand ()
 
 editObject ()
 
 showNoScheduleMessage ()
 Show no schedule message. More...
 
 addExternalEditFormCustom (ilPropertyFormGUI $a_form)
 
 setTabs ()
 get tabs More...
 
 bookObject ()
 First step in booking process. More...
 
 confirmedBookingObject ()
 Book object - either of type or specific - for given dates. More...
 
 confirmBookingNumbers (array $a_objects_counter, $a_group_id, ilPropertyFormGUI $a_form=null)
 
 confirmedBookingNumbersObject ()
 
 processBooking ($a_object_id, $a_from=null, $a_to=null, $a_group_id=null)
 Book object for date. More...
 
 logObject ()
 List reservations. More...
 
 logDetailsObject ()
 
 changeStatusObject ()
 Change status of given reservations. More...
 
 applyLogFilterObject ()
 Apply filter from reservations table gui. More...
 
 resetLogFilterObject ()
 Reset filter in reservations table gui. More...
 
 infoScreenObject ()
 this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed More...
 
 infoScreen ()
 
 rsvConfirmCancelObject ()
 
 rsvConfirmCancelAggregationForm ($a_ids)
 
 rsvConfirmCancelAggregationObject (array $a_ids=null)
 
 rsvCancelObject ()
 
 rsvConfirmDeleteObject ()
 
 rsvDeleteObject ()
 
 rsvInUseObject ()
 
 rsvNotInUseObject ()
 
 showProfileObject ()
 
 addLocatorItems ()
 
 saveNotificationObject ()
 Save notification. More...
 
 bookMultipleParticipantsObject ()
 Create reservations for a bunch of booking pool participants. More...
 
 redirectToListObject ()
 
 saveMultipleBookingsObject ()
 Save multiple users reservations for one booking pool object. More...
 
- Public Member Functions inherited from ilObjectGUI
 executeCommand ()
 execute command More...
 
 withReferences ()
 determines wether objects are referenced or not (got ref ids or not) More...
 
 setCreationMode ($a_mode=true)
 if true, a creation screen is displayed the current $_GET[ref_id] don't belong to the current class! the mode is determined in ilrepositorygui More...
 
 getCreationMode ()
 get creation mode More...
 
 prepareOutput ($a_show_subobjects=true)
 prepare output More...
 
 getAdminTabs ()
 administration tabs show only permissions and trash folder More...
 
 getHTML ()
 
 confirmedDeleteObject ()
 confirmed deletion of object -> objects are moved to trash or deleted immediately, if trash is disabled More...
 
 cancelDeleteObject ()
 cancel deletion of object More...
 
 cancelObject ()
 cancel action and go back to previous page public More...
 
 createObject ()
 create new object form More...
 
 cancelCreation ()
 cancel create action and go back to repository parent More...
 
 saveObject ()
 save object More...
 
 getDidacticTemplateVar ($a_type)
 Get didactic template setting from creation screen. More...
 
 putObjectInTree (ilObject $a_obj, $a_parent_node_id=null)
 Add object to tree at given position. More...
 
 editObject ()
 edit object More...
 
 addExternalEditFormCustom (ilPropertyFormGUI $a_form)
 
 updateObject ()
 updates object entry in object_data More...
 
 getFormAction ($a_cmd, $a_formaction="")
 get form action for command (command is method name without "Object", e.g. More...
 
 isVisible ($a_ref_id, $a_type)
 
 viewObject ()
 list childs of current object More...
 
 deleteObject ($a_error=false)
 Display deletion confirmation screen. More...
 
 cloneAllObject ()
 Clone single (not container object) Method is overwritten in ilContainerGUI. More...
 
 redirectAfterCreation ()
 Redirect after creation, see https://docu.ilias.de/goto_docu_wiki_wpage_5035_1357.html. More...
 

Static Public Member Functions

static _goto ($a_target)
 
- Static Public Member Functions inherited from ilObjectGUI
static _gotoRepositoryRoot ($a_raise_error=false)
 Goto repository root. More...
 
static _gotoRepositoryNode ($a_ref_id, $a_cmd="frameset")
 Goto repository root. More...
 

Protected Member Functions

 initCreationForms ($a_new_type)
 
 afterSave (ilObject $a_new_object)
 
 initEditCustomForm (ilPropertyFormGUI $a_form)
 
 getEditFormCustomValues (array &$a_values)
 
 updateCustom (ilPropertyFormGUI $a_form)
 
 setHelpId ($a_id)
 
 renderSlots (ilBookingSchedule $schedule, array $object_ids, $title)
 
 buildDatesBySchedule ($week_start, array $hours, $schedule, array $object_ids, $seed, array &$dates)
 
 handleBookingSuccess ($a_obj_id, array $a_rsv_ids=null)
 
 initBookingNumbersForm (array $a_objects_counter, $a_group_id, $a_reload=false)
 
 addDaysDate ($a_date, $a_days)
 
 addDaysStamp ($a_stamp, $a_days)
 
 getLogReservationIds ()
 
 initHeaderAction ($a_sub_type=null, $a_sub_id=null)
 
 saveParticipant ()
 
- Protected Member Functions inherited from ilObjectGUI
 getObjectService ()
 Get object service. More...
 
 assignObject ()
 
 setTitleAndDescription ()
 called by prepare output More...
 
 initHeaderAction ($a_sub_type=null, $a_sub_id=null)
 Add header action menu. More...
 
 insertHeaderAction ($a_list_gui)
 Insert header action into main template. More...
 
 addHeaderAction ()
 Add header action menu. More...
 
 redrawHeaderActionObject ()
 Ajax call: redraw action header only. More...
 
 showMountWebfolderIcon ()
 
 setTabs ()
 set admin tabs public More...
 
 setAdminTabs ()
 set admin tabs public More...
 
 setLocator ()
 set Locator More...
 
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 omitLocator ($a_omit=true)
 
 addAdminLocatorItems ($a_do_not_add_object=false)
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 initCreationForms ($a_new_type)
 Init creation froms. More...
 
 getCreationFormsHTML (array $a_forms)
 Get HTML for creation forms (accordion) More...
 
 initCreateForm ($a_new_type)
 Init object creation form. More...
 
 initDidacticTemplate (ilPropertyFormGUI $form)
 Show didactic template types. More...
 
 addDidacticTemplateOptions (array &$a_options)
 Add custom templates. More...
 
 afterSave (ilObject $a_new_object)
 Post (successful) object creation hook. More...
 
 initEditForm ()
 Init object edit form. More...
 
 initEditCustomForm (ilPropertyFormGUI $a_form)
 Add custom fields to update form. More...
 
 getEditFormValues ()
 Get values for edit form. More...
 
 getEditFormCustomValues (array &$a_values)
 Add values to custom edit fields. More...
 
 validateCustom (ilPropertyFormGUI $a_form)
 Validate custom values (if not possible with checkInput()) More...
 
 updateCustom (ilPropertyFormGUI $a_form)
 Insert custom update form values into object. More...
 
 afterUpdate ()
 Post (successful) object update hook. More...
 
 initImportForm ($a_new_type)
 Init object import form. More...
 
 importFileObject ($parent_id=null, $a_catch_errors=true)
 Import. More...
 
 afterImport (ilObject $a_new_object)
 Post (successful) object import hook. More...
 
 setFormAction ($a_cmd, $a_formaction)
 set specific form action for command More...
 
 getReturnLocation ($a_cmd, $a_location="")
 get return location for command (command is method name without "Object", e.g. More...
 
 setReturnLocation ($a_cmd, $a_location)
 set specific return location for command More...
 
 getTargetFrame ($a_cmd, $a_target_frame="")
 get target frame for command (command is method name without "Object", e.g. More...
 
 setTargetFrame ($a_cmd, $a_target_frame)
 set specific target frame for command More...
 
 showPossibleSubObjects ()
 show possible subobjects (pulldown menu) More...
 
 getTemplateFile ($a_cmd, $a_type="")
 get a template blockfile format: tpl. More...
 
 getTabs ()
 get tabs abstract method. More...
 
 __showButton ($a_cmd, $a_text, $a_target='')
 
 hitsperpageObject ()
 
__initTableGUI ()
 
 __setTableGUIBasicData (&$tbl, &$result_set, $a_from="")
 standard implementation for tables use 'from' variable use different initial setting of table More...
 
 redirectToRefId ($a_ref_id, $a_cmd="")
 redirects to (repository) view per ref id usually to a container and usually used at the end of a save/import method where the object gui type (of the new object) doesn't match with the type of the current $_GET["ref_id"] value More...
 
 fillCloneTemplate ($a_tpl_varname, $a_type)
 Fill object clone template This method can be called from any object GUI class that wants to offer object cloning. More...
 
 getCenterColumnHTML ()
 Get center column. More...
 
 getRightColumnHTML ()
 Display right column. More...
 
 setColumnSettings (ilColumnGUI $column_gui)
 May be overwritten in subclasses. More...
 
 checkPermission ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission and redirect on error. More...
 
 checkPermissionBool ($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
 Check permission. More...
 
 enableDragDropFileUpload ()
 Enables the file upload into this object by dropping files. More...
 
 handleAutoRating (ilObject $a_new_obj)
 Activate rating automatically if parent container setting. More...
 

Protected Attributes

 $tabs
 
 $nav_history
 
 $help
 
 $user_id_to_book
 
 $user_id_assigner
 
- Protected Attributes inherited from ilObjectGUI
 $ilErr
 
 $locator
 
 $user
 
 $access
 
 $settings
 
 $rbacreview
 
 $toolbar
 
 $tmp_import_dir
 
 $tabs_gui = null
 
 $ctrl
 
 $object_service
 

Additional Inherited Members

- Data Fields inherited from ilObjectGUI
const COPY_WIZARD_NEEDS_PAGE = 1
 
 $objDefinition
 
 $tpl
 
 $tree
 
 $lng
 
 $data
 
 $object
 
 $ref_id
 
 $obj_id
 
 $maxcount
 
 $formaction
 
 $return_location
 
 $target_frame
 
 $tab_target_script
 
 $actions
 
 $sub_objects
 
 $omit_locator = false
 
const CFORM_NEW = 1
 
const CFORM_IMPORT = 2
 
const CFORM_CLONE = 3
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilObjBookingPoolGUI::__construct (   $a_data,
  $a_id,
  $a_call_by_reference,
  $a_prepare_output = true 
)

Constructor.

Definition at line 49 of file class.ilObjBookingPoolGUI.php.

References $_GET, $DIC, $user_id_assigner, ilBookingObject\lookupPoolId(), ilUtil\stripSlashes(), and user().

50  {
51  global $DIC;
52 
53  $this->tpl = $DIC["tpl"];
54  $this->tabs = $DIC->tabs();
55  $this->nav_history = $DIC["ilNavigationHistory"];
56  $this->help = $DIC["ilHelp"];
57  $this->ctrl = $DIC->ctrl();
58  $this->lng = $DIC->language();
59  $this->type = "book";
60  parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
61  $this->lng->loadLanguageModule("book");
62 
63  $this->user_profile_id = (int) $_GET["user_id"];
64  $this->book_obj_id = (int) $_REQUEST['object_id'];
65  $this->seed = ilUtil::stripSlashes($_GET['seed']);
66  $this->sseed = ilUtil::stripSlashes($_GET['sseed']);
67  $this->reservation_id = ilUtil::stripSlashes($_GET["reservation_id"]);
68  $this->profile_user_id = (int) $_GET['user_id'];
69 
70  $this->user_id_assigner = $this->user->getId();
71  if ($_GET['bkusr']) {
72  $this->user_id_to_book = (int) $_GET['bkusr'];
73  } else {
74  $this->user_id_to_book = $this->user_id_assigner; // by default user books his own booking objects.
75  }
76 
77  if ((int) $_REQUEST['object_id'] > 0 && ilBookingObject::lookupPoolId((int) $_REQUEST['object_id']) != $this->object->getId()) {
78  throw new ilException("Booking Object ID does not match Booking Pool.");
79  }
80  }
global $DIC
Definition: saml.php:7
$_GET["client_id"]
user()
Definition: user.php:4
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static lookupPoolId($object_id)
Lookup pool id.
+ Here is the call graph for this function:

Member Function Documentation

◆ _goto()

static ilObjBookingPoolGUI::_goto (   $a_target)
static

Definition at line 1335 of file class.ilObjBookingPoolGUI.php.

References $DIC, ilObjectGUI\$lng, ilObjectGUI\_gotoRepositoryNode(), ilObjectGUI\_gotoRepositoryRoot(), ilObject\_lookupObjId(), ilObject\_lookupTitle(), and ilUtil\sendFailure().

1336  {
1337  global $DIC;
1338 
1339  $ilAccess = $DIC->access();
1340  $lng = $DIC->language();
1341 
1342  if ($ilAccess->checkAccess("read", "", $a_target)) {
1343  ilObjectGUI::_gotoRepositoryNode($a_target, "render");
1344  } elseif ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
1345  ilUtil::sendFailure(sprintf(
1346  $lng->txt("msg_no_perm_read_item"),
1348  ), true);
1350  }
1351  }
global $DIC
Definition: saml.php:7
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
static _lookupTitle($a_id)
lookup object title
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
static _lookupObjId($a_id)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
+ Here is the call graph for this function:

◆ addDaysDate()

ilObjBookingPoolGUI::addDaysDate (   $a_date,
  $a_days 
)
protected

Definition at line 1013 of file class.ilObjBookingPoolGUI.php.

Referenced by confirmedBookingNumbersObject().

1014  {
1015  $date = date_parse($a_date);
1016  $stamp = mktime(0, 0, 1, $date["month"], $date["day"] + $a_days, $date["year"]);
1017  return date("Y-m-d", $stamp);
1018  }
+ Here is the caller graph for this function:

◆ addDaysStamp()

ilObjBookingPoolGUI::addDaysStamp (   $a_stamp,
  $a_days 
)
protected

Definition at line 1020 of file class.ilObjBookingPoolGUI.php.

Referenced by confirmedBookingNumbersObject().

1021  {
1022  $date = getDate($a_stamp);
1023  return mktime(
1024  $date["hours"],
1025  $date["minutes"],
1026  $date["seconds"],
1027  $date["mon"],
1028  $date["mday"] + $a_days,
1029  $date["year"]
1030  );
1031  }
+ Here is the caller graph for this function:

◆ addExternalEditFormCustom()

ilObjBookingPoolGUI::addExternalEditFormCustom ( ilPropertyFormGUI  $a_form)

Definition at line 355 of file class.ilObjBookingPoolGUI.php.

References ilObjectServiceSettingsGUI\CUSTOM_METADATA, and ilObjectServiceSettingsGUI\initServiceSettingsForm().

356  {
357  include_once './Services/Container/classes/class.ilContainer.php';
358  include_once './Services/Object/classes/class.ilObjectServiceSettingsGUI.php';
360  $this->object->getId(),
361  $a_form,
363  );
364  }
static initServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Init service settings form.
+ Here is the call graph for this function:

◆ addLocatorItems()

ilObjBookingPoolGUI::addLocatorItems ( )

Definition at line 1769 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$locator.

1770  {
1771  $ilLocator = $this->locator;
1772 
1773  if (is_object($this->object)) {
1774  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, "render"), "", $this->object->getRefId());
1775  }
1776  }

◆ afterSave()

ilObjBookingPoolGUI::afterSave ( ilObject  $a_new_object)
protected

Definition at line 214 of file class.ilObjBookingPoolGUI.php.

References ilObject\getRefId(), and ilObject\update().

215  {
216  $a_new_object->setOffline(true);
217  $a_new_object->update();
218 
219  // always send a message
220  ilUtil::sendSuccess($this->lng->txt("book_pool_added"), true);
221  $this->ctrl->setParameter($this, "ref_id", $a_new_object->getRefId());
222  $this->ctrl->redirect($this, "edit");
223  }
getRefId()
get reference id public
update()
update object in db
+ Here is the call graph for this function:

◆ applyLogFilterObject()

ilObjBookingPoolGUI::applyLogFilterObject ( )

Apply filter from reservations table gui.

Definition at line 1296 of file class.ilObjBookingPoolGUI.php.

References $table, ilObjectGUI\checkPermissionBool(), logObject(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1297  {
1298  $show_all = ($this->checkPermissionBool('write') || $this->object->hasPublicLog());
1299 
1300  include_once 'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
1302  $this,
1303  'log',
1304  $this->ref_id,
1305  $this->object->getId(),
1306  $show_all,
1307  ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE)
1308  );
1309  $table->resetOffset();
1310  $table->writeFilterToSession();
1311  $this->logObject();
1312  }
logObject()
List reservations.
if(empty($password)) $table
Definition: pwgen.php:24
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:

◆ bookMultipleParticipantsObject()

ilObjBookingPoolGUI::bookMultipleParticipantsObject ( )

Create reservations for a bunch of booking pool participants.

Definition at line 1859 of file class.ilObjBookingPoolGUI.php.

References $_POST, $id, $name, ilObjUser\_lookupFullname(), and ilBookingReservation\numAvailableFromObjectNoSchedule().

1860  {
1861  if ($_POST["mass"]) {
1862  $participants = $_POST["mass"];
1863  } else {
1864  $this->ctrl->redirectByClass('ilbookingobjectgui', 'render');
1865  }
1866 
1867  $this->tabs->clearTargets();
1868  $this->ctrl->setParameterByClass('ilbookingobjectgui', 'object_id', $this->book_obj_id);
1869  $this->tabs->setBackTarget($this->lng->txt("back"), $this->ctrl->getLinkTargetByClass('ilbookingobjectgui', 'assignparticipants'));
1870  $this->ctrl->setParameterByClass('ilbookingobjectgui', 'object_id', '');
1871 
1872  $conf = new ilConfirmationGUI();
1873  $conf->setFormAction($this->ctrl->getFormAction($this));
1874 
1875  //add user list as items.
1876  foreach ($participants as $id) {
1878  $conf->addItem("participants[]", $id, $name);
1879  }
1880 
1881  $available = ilBookingReservation::numAvailableFromObjectNoSchedule($this->book_obj_id);
1882  if (sizeof($participants) > $available) {
1883  $obj = new ilBookingObject($this->book_obj_id);
1884  $conf->setHeaderText(
1885  sprintf(
1886  $this->lng->txt('book_limit_objects_available'),
1887  sizeof($participants),
1888  $obj->getTitle(),
1889  $available
1890  )
1891  );
1892  } else {
1893  $conf->setHeaderText($this->lng->txt('book_confirm_booking_no_schedule'));
1894  $conf->addHiddenItem("object_id", $this->book_obj_id);
1895  $conf->setConfirm($this->lng->txt("assign"), "saveMultipleBookings");
1896  }
1897 
1898  $conf->setCancel($this->lng->txt("cancel"), 'redirectToList');
1899  $this->tpl->setContent($conf->getHTML());
1900  }
a bookable ressource
static _lookupFullname($a_user_id)
Lookup Full Name.
if(!array_key_exists('StateId', $_REQUEST)) $id
static numAvailableFromObjectNoSchedule($a_obj_id)
$_POST["username"]
Confirmation screen class.
+ Here is the call graph for this function:

◆ bookObject()

ilObjBookingPoolGUI::bookObject ( )

First step in booking process.

Definition at line 466 of file class.ilObjBookingPoolGUI.php.

References $_GET, ilObjectGUI\$tpl, ilBookingParticipantGUI\PARTICIPANT_VIEW, renderSlots(), setHelpId(), and ilObjBookingPool\TYPE_FIX_SCHEDULE.

Referenced by confirmedBookingObject().

467  {
468  $tpl = $this->tpl;
469 
470  $this->tabs_gui->clearTargets();
471  $this->tabs_gui->setBackTarget($this->lng->txt('book_back_to_list'), $this->ctrl->getLinkTarget($this, 'render'));
472 
473  $this->setHelpId("book");
474 
475  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
476  $obj = new ilBookingObject((int) $_GET['object_id']);
477 
478  $this->lng->loadLanguageModule("dateplaner");
479  $this->ctrl->setParameter($this, 'object_id', $obj->getId());
480 
481  if ($this->user_id_to_book != $this->user_id_assigner) {
482  $this->ctrl->setParameter($this, 'bkusr', $this->user_id_to_book);
483  }
484 
485  if ($this->object->getScheduleType() == ilObjBookingPool::TYPE_FIX_SCHEDULE) {
486  include_once 'Modules/BookingManager/classes/class.ilBookingSchedule.php';
487  $schedule = new ilBookingSchedule($obj->getScheduleId());
488 
489  $tpl->setContent($this->renderSlots($schedule, array($obj->getId()), $obj->getTitle()));
490  } else {
491  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
492  $cgui = new ilConfirmationGUI();
493  $cgui->setHeaderText($this->lng->txt("book_confirm_booking_no_schedule"));
494 
495  $cgui->setFormAction($this->ctrl->getFormAction($this));
496  $cgui->setCancel($this->lng->txt("cancel"), "render");
497  $cgui->setConfirm($this->lng->txt("confirm"), "confirmedBooking");
498 
499  $cgui->addItem("object_id", $obj->getId(), $obj->getTitle());
500 
501  if ($_GET['part_view'] == ilBookingParticipantGUI::PARTICIPANT_VIEW) {
502  $cgui->addHiddenItem("part_view", ilBookingParticipantGUI::PARTICIPANT_VIEW);
503  }
504 
505  $tpl->setContent($cgui->getHTML());
506  }
507  }
a bookable ressource
renderSlots(ilBookingSchedule $schedule, array $object_ids, $title)
$_GET["client_id"]
schedule for booking ressource
Confirmation screen class.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildDatesBySchedule()

ilObjBookingPoolGUI::buildDatesBySchedule (   $week_start,
array  $hours,
  $schedule,
array  $object_ids,
  $seed,
array &  $dates 
)
protected

Definition at line 679 of file class.ilObjBookingPoolGUI.php.

References $from, $id, $ilUser, $in, $map, ilObjectGUI\$user, ilCalendarUtil\_buildWeekDayList(), ilCalendarUserSettings\_getInstanceByUserId(), ilDatePresentation\formatDate(), ilBookingReservation\getAvailableObject(), IL_CAL_DATE, IL_CAL_FKT_GETDATE, IL_CAL_UNIX, and ilCalendarSettings\TIME_FORMAT_12.

Referenced by renderSlots().

680  {
682 
683  include_once 'Services/Calendar/classes/class.ilCalendarUserSettings.php';
684  $user_settings = ilCalendarUserSettings::_getInstanceByUserId($ilUser->getId());
685 
686  $map = array('mo', 'tu', 'we', 'th', 'fr', 'sa', 'su');
687  $definition = $schedule->getDefinition();
688 
689  $av_from = ($schedule->getAvailabilityFrom() && !$schedule->getAvailabilityFrom()->isNull())
690  ? $schedule->getAvailabilityFrom()->get(IL_CAL_DATE)
691  : null;
692  $av_to = ($schedule->getAvailabilityTo() && !$schedule->getAvailabilityTo()->isNull())
693  ? $schedule->getAvailabilityTo()->get(IL_CAL_DATE)
694  : null;
695 
696  $has_open_slot = false;
697  foreach (ilCalendarUtil::_buildWeekDayList($seed, $week_start)->get() as $date) {
698  $date_info = $date->get(IL_CAL_FKT_GETDATE, '', 'UTC');
699 
700  #24045 and #24936
701  if ($av_from || $av_to) {
702  $today = $date->get(IL_CAL_DATE);
703 
704  if ($av_from && $av_from > $today) {
705  continue;
706  }
707 
708  if ($av_to && $av_to < $today) {
709  continue;
710  }
711  }
712 
713  $slots = array();
714  if (isset($definition[$map[$date_info['isoday'] - 1]])) {
715  $slots = array();
716  foreach ($definition[$map[$date_info['isoday'] - 1]] as $slot) {
717  $slot = explode('-', $slot);
718  $slots[] = array('from' => str_replace(':', '', $slot[0]),
719  'to' => str_replace(':', '', $slot[1]));
720  }
721  }
722 
723  $last = array_pop(array_keys($hours));
724  $slot_captions = array();
725  foreach ($hours as $hour => $period) {
726  $dates[$hour][0] = $period;
727 
728  $period = explode("-", $period);
729 
730  // #13738
731  if ($user_settings->getTimeFormat() == ilCalendarSettings::TIME_FORMAT_12) {
732  $period[0] = date("H", strtotime($period[0]));
733  if (sizeof($period) == 2) {
734  $period[1] = date("H", strtotime($period[1]));
735  }
736  }
737 
738  if (sizeof($period) == 1) {
739  $period_from = (int) substr($period[0], 0, 2) . "00";
740  $period_to = (int) substr($period[0], 0, 2) . "59";
741  } else {
742  $period_from = (int) substr($period[0], 0, 2) . "00";
743  $period_to = (int) substr($period[1], 0, 2) . "59";
744  }
745 
746  $column = $date_info['isoday'];
747  if (!$week_start) {
748  if ($column < 7) {
749  $column++;
750  } else {
751  $column = 1;
752  }
753  }
754 
755  if (sizeof($slots)) {
756  $in = false;
757  foreach ($slots as $slot) {
758  $slot_from = mktime(substr($slot['from'], 0, 2), substr($slot['from'], 2, 2), 0, $date_info["mon"], $date_info["mday"], $date_info["year"]);
759  $slot_to = mktime(substr($slot['to'], 0, 2), substr($slot['to'], 2, 2), 0, $date_info["mon"], $date_info["mday"], $date_info["year"]);
760 
761  // always single object, we can sum up
762  $nr_available = (array) ilBookingReservation::getAvailableObject($object_ids, $slot_from, $slot_to - 1, false, true);
763 
764  // any objects available?
765  if (!array_sum($nr_available)) {
766  continue;
767  }
768 
769  // check deadline
770  if ($schedule->getDeadline() >= 0) {
771  // 0-n hours before slots begins
772  if ($slot_from < (time() + $schedule->getDeadline() * 60 * 60)) {
773  continue;
774  }
775  } else {
776  // running slots can be booked, only ended slots are invalid
777  if ($slot_to < time()) {
778  continue;
779  }
780  }
781 
782  // is slot active in current hour?
783  if ((int) $slot['from'] < $period_to && (int) $slot['to'] > $period_from) {
785  $from = array_pop(explode(' ', $from));
787  $to = array_pop(explode(' ', $to));
788 
789  // show caption (first hour) of slot
790  $id = $slot_from . '_' . $slot_to;
791  if (!in_array($id, $slot_captions)) {
792  $dates[$hour][$column]['captions'][$id] = $from . '-' . $to;
793  $dates[$hour][$column]['available'][$id] = array_sum($nr_available);
794  $slot_captions[] = $id;
795  }
796 
797  $in = true;
798  }
799  }
800  // (any) active slot
801  if ($in) {
802  $has_open_slot = true;
803  $dates[$hour][$column]['in_slot'] = $in;
804  }
805  }
806  }
807  }
808 
809  return $has_open_slot;
810  }
static _getInstanceByUserId($a_user_id)
get singleton instance
if(!array_key_exists('StateId', $_REQUEST)) $id
$from
static _buildWeekDayList($a_day, $a_weekstart)
build week day list
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
Date and time handling
$ilUser
Definition: imgupload.php:18
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.
if(php_sapi_name() !='cli') $in
Definition: Utf8Test.php:37
const IL_CAL_FKT_GETDATE
const IL_CAL_DATE
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeStatusObject()

ilObjBookingPoolGUI::changeStatusObject ( )

Change status of given reservations.

Definition at line 1275 of file class.ilObjBookingPoolGUI.php.

References $_POST, ilBookingReservation\changeStatus(), ilObjectGUI\checkPermissionBool(), logObject(), and ilUtil\sendFailure().

1276  {
1277  $this->tabs_gui->setTabActive('log');
1278 
1279  if (!$_POST['reservation_id']) {
1280  ilUtil::sendFailure($this->lng->txt('select_one'));
1281  return $this->logObject();
1282  }
1283 
1284  if ($this->checkPermissionBool('write')) {
1285  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1286  ilBookingReservation::changeStatus($_POST['reservation_id'], (int) $_POST['tstatus']);
1287  }
1288 
1289  ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
1290  return $this->ctrl->redirect($this, 'log');
1291  }
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
logObject()
List reservations.
static changeStatus(array $a_ids, $a_status)
List all reservations.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
$_POST["username"]
+ Here is the call graph for this function:

◆ confirmBookingNumbers()

ilObjBookingPoolGUI::confirmBookingNumbers ( array  $a_objects_counter,
  $a_group_id,
ilPropertyFormGUI  $a_form = null 
)

Definition at line 999 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$tpl, and initBookingNumbersForm().

Referenced by confirmedBookingNumbersObject(), and confirmedBookingObject().

1000  {
1001  $tpl = $this->tpl;
1002 
1003  $this->tabs_gui->clearTargets();
1004  $this->tabs_gui->setBackTarget($this->lng->txt('book_back_to_list'), $this->ctrl->getLinkTarget($this, 'render'));
1005 
1006  if (!$a_form) {
1007  $a_form = $this->initBookingNumbersForm($a_objects_counter, $a_group_id);
1008  }
1009 
1010  $tpl->setContent($a_form->getHTML());
1011  }
initBookingNumbersForm(array $a_objects_counter, $a_group_id, $a_reload=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ confirmedBookingNumbersObject()

ilObjBookingPoolGUI::confirmedBookingNumbersObject ( )

Definition at line 1033 of file class.ilObjBookingPoolGUI.php.

References $_POST, $end, $form, $from, $id, ilObjectGUI\$obj_id, $success, addDaysDate(), addDaysStamp(), confirmBookingNumbers(), ilBookingReservation\getAvailableObject(), handleBookingSuccess(), IL_CAL_DATE, initBookingNumbersForm(), ilCalendarUtil\parseIncomingDate(), processBooking(), saveParticipant(), and ilUtil\sendFailure().

1034  {
1035  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1036  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
1037 
1038  //get the user who will get the booking.
1039  if ($_POST['bkusr']) {
1040  $this->user_id_to_book = (int) $_POST['bkusr'];
1041  }
1042 
1043  // convert post data to initial form config
1044  $counter = array();
1045  $current_first = $obj_id = null;
1046  foreach (array_keys($_POST) as $id) {
1047  if (substr($id, 0, 9) == "conf_nr__") {
1048  $id = explode("_", substr($id, 9));
1049  $counter[$id[0] . "_" . $id[1] . "_" . $id[2]] = (int) $id[3];
1050  if (!$current_first) {
1051  $current_first = date("Y-m-d", $id[1]);
1052  }
1053  }
1054  }
1055 
1056  // recurrence
1057 
1058  // checkInput() has not been called yet, so we have to improvise
1059  include_once 'Services/Calendar/classes/class.ilCalendarUtil.php';
1061 
1062  if ((int) $_POST["recm"] > 0 && $end && $current_first) {
1063  ksort($counter);
1064  $end = $end->get(IL_CAL_DATE);
1065  $cycle = (int) $_POST["recm"] * 7;
1066  $cut = 0;
1067  $org = $counter;
1068  while ($cut < 1000 && $this->addDaysDate($current_first, $cycle) <= $end) {
1069  $cut++;
1070  $current_first = null;
1071  foreach ($org as $item_id => $max) {
1072  $parts = explode("_", $item_id);
1073  $obj_id = $parts[0];
1074 
1075  $from = $this->addDaysStamp($parts[1], $cycle * $cut);
1076  $to = $this->addDaysStamp($parts[2], $cycle * $cut);
1077 
1078  $new_item_id = $obj_id . "_" . $from . "_" . $to;
1079 
1080  // form reload because of validation errors
1081  if (!isset($counter[$new_item_id]) && date("Y-m-d", $to) <= $end) {
1082  // get max available for added dates
1083  $new_max = ilBookingReservation::getAvailableObject(array($obj_id), $from, $to - 1, false, true);
1084  $new_max = (int) $new_max[$obj_id];
1085 
1086  $counter[$new_item_id] = $new_max;
1087 
1088  if (!$current_first) {
1089  $current_first = date("Y-m-d", $from);
1090  }
1091 
1092  // clone input
1093  $_POST["conf_nr__" . $new_item_id . "_" . $new_max] = $_POST["conf_nr__" . $item_id . "_" . $max];
1094  }
1095  }
1096  }
1097  }
1098 
1099  $group_id = $_POST["grp_id"];
1100 
1101  $form = $this->initBookingNumbersForm($counter, $group_id, true);
1102  if ($form->checkInput()) {
1103  $success = false;
1104  $rsv_ids = array();
1105  foreach ($counter as $id => $all_nr) {
1106  $book_nr = $form->getInput("conf_nr__" . $id . "_" . $all_nr);
1107  $parts = explode("_", $id);
1108  $obj_id = $parts[0];
1109  $from = $parts[1];
1110  $to = $parts[2] - 1;
1111 
1112  // get currently available slots
1113  $counter = ilBookingReservation::getAvailableObject(array($obj_id), $from, $to, false, true);
1114  $counter = $counter[$obj_id];
1115  if ($counter) {
1116  // we can only book what is left
1117  $book_nr = min($book_nr, $counter);
1118  for ($loop = 0; $loop < $book_nr; $loop++) {
1119  $rsv_ids[] = $this->processBooking($obj_id, $from, $to, $group_id);
1120  $success = $obj_id;
1121  }
1122  }
1123  }
1124  if ($success) {
1125  $this->saveParticipant();
1126  $this->handleBookingSuccess($success, $rsv_ids);
1127  } else {
1128  ilUtil::sendFailure($this->lng->txt('book_reservation_failed'), true);
1129  $this->ctrl->redirect($this, 'render');
1130  }
1131  } else {
1132  // ilDateTimeInputGUI does NOT add hidden values on disabled!
1133 
1134  $rece_array = explode(".", $_POST['rece']);
1135 
1136  $rece_day = str_pad($rece_array[0], 2, "0", STR_PAD_LEFT);
1137  $rece_month = str_pad($rece_array[1], 2, "0", STR_PAD_LEFT);
1138  $rece_year = $rece_array[2];
1139 
1140  // ilDateTimeInputGUI will choke on POST array format
1141  $_POST["rece"] = null;
1142 
1143  $form->setValuesByPost();
1144 
1145  $rece_date = new ilDate($rece_year . "-" . $rece_month . "-" . $rece_day, IL_CAL_DATE);
1146 
1147  $form->getItemByPostVar("rece")->setDate($rece_date);
1148  $form->getItemByPostVar("recm")->setHideSubForm($_POST["recm"] < 1);
1149 
1150  $hidden_date = new ilHiddenInputGUI("rece");
1151  $hidden_date->setValue($rece_date);
1152  $form->addItem($hidden_date);
1153 
1154  return $this->confirmBookingNumbers($counter, $group_id, $form);
1155  }
1156  }
handleBookingSuccess($a_obj_id, array $a_rsv_ids=null)
if(!array_key_exists('StateId', $_REQUEST)) $id
$from
initBookingNumbersForm(array $a_objects_counter, $a_group_id, $a_reload=false)
This class represents a hidden form property in a property form.
$success
Definition: Utf8Test.php:86
Class for single dates.
if(isset($_POST['submit'])) $form
processBooking($a_object_id, $a_from=null, $a_to=null, $a_group_id=null)
Book object for date.
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 sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const IL_CAL_DATE
confirmBookingNumbers(array $a_objects_counter, $a_group_id, ilPropertyFormGUI $a_form=null)
$_POST["username"]
static parseIncomingDate($a_value, $a_add_time=null)
Try to parse incoming value to date object.
+ Here is the call graph for this function:

◆ confirmedBookingObject()

ilObjBookingPoolGUI::confirmedBookingObject ( )

Book object - either of type or specific - for given dates.

Definition at line 815 of file class.ilObjBookingPoolGUI.php.

References $_POST, $ilUser, $success, ilObjectGUI\$user, bookObject(), confirmBookingNumbers(), ilBookingReservation\getAvailableObject(), ilBookingReservation\getNewGroupId(), ilBookingObject\getNrOfItemsForObjects(), ilBookingReservation\getObjectReservationForUser(), handleBookingSuccess(), ilBookingReservation\isObjectAvailableNoSchedule(), processBooking(), saveParticipant(), ilUtil\sendFailure(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

816  {
818 
819  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
820  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
821 
822  $success = false;
823  $rsv_ids = array();
824 
825  if ($this->object->getScheduleType() == ilObjBookingPool::TYPE_NO_SCHEDULE) {
826  if ($this->book_obj_id > 0) {
827  $object_id = $this->book_obj_id;
828  if ($object_id) {
830  !ilBookingReservation::getObjectReservationForUser($object_id, $this->user_id_to_book)) { // #18304
831  $rsv_ids[] = $this->processBooking($object_id);
832  $success = $object_id;
833  } else {
834  // #11852
835  ilUtil::sendFailure($this->lng->txt('book_reservation_failed_overbooked'), true);
836  $this->ctrl->redirect($this, 'render');
837  }
838  }
839  }
840  } else {
841  if (!isset($_POST['date'])) {
842  ilUtil::sendFailure($this->lng->txt('select_one'));
843  return $this->bookObject();
844  }
845 
846  // single object reservation(s)
847  if ($this->book_obj_id > 0) {
848  $confirm = array();
849 
850  $object_id = $this->book_obj_id;
851  if ($object_id) {
852  $group_id = null;
853  $nr = ilBookingObject::getNrOfItemsForObjects(array($object_id));
854  // needed for recurrence
856  foreach ($_POST['date'] as $date) {
857  $fromto = explode('_', $date);
858  $fromto[1]--;
859 
860  $counter = ilBookingReservation::getAvailableObject(array($object_id), $fromto[0], $fromto[1], false, true);
861  $counter = $counter[$object_id];
862  if ($counter) {
863  // needed for recurrence
864  $confirm[$object_id . "_" . $fromto[0] . "_" . ($fromto[1] + 1)] = $counter;
865  }
866  }
867  }
868 
869  if (sizeof($confirm)) {
870  return $this->confirmBookingNumbers($confirm, $group_id);
871  }
872  }
873  }
874 
875  if ($success) {
876  $this->saveParticipant();
877  $this->handleBookingSuccess($success, $rsv_ids);
878  } else {
879  ilUtil::sendFailure($this->lng->txt('book_reservation_failed'), true);
880  $this->ctrl->redirect($this, 'book');
881  }
882  }
static isObjectAvailableNoSchedule($a_obj_id)
bookObject()
First step in booking process.
handleBookingSuccess($a_obj_id, array $a_rsv_ids=null)
static getNewGroupId()
Get next group id.
static getNrOfItemsForObjects(array $a_obj_ids)
Get nr of available items.
static getObjectReservationForUser($a_object_id, $a_user_id, $a_multi=false)
$success
Definition: Utf8Test.php:86
processBooking($a_object_id, $a_from=null, $a_to=null, $a_group_id=null)
Book object for date.
$ilUser
Definition: imgupload.php:18
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 sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
confirmBookingNumbers(array $a_objects_counter, $a_group_id, ilPropertyFormGUI $a_form=null)
$_POST["username"]
+ Here is the call graph for this function:

◆ editObject()

ilObjBookingPoolGUI::editObject ( )

Definition at line 225 of file class.ilObjBookingPoolGUI.php.

References showNoScheduleMessage().

226  {
227  $this->showNoScheduleMessage();
228  return parent::editObject();
229  }
showNoScheduleMessage()
Show no schedule message.
+ Here is the call graph for this function:

◆ executeCommand()

ilObjBookingPoolGUI::executeCommand ( )
Returns
bool
Exceptions
ilCtrlException
ilObjectException

Definition at line 87 of file class.ilObjBookingPoolGUI.php.

References $ilUser, $nav_history, $ret, $tabs, ilObjectGUI\$tpl, ilObjectGUI\$user, ilObjectGUI\addHeaderAction(), ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), infoScreen(), and ilObjectGUI\prepareOutput().

88  {
89  $tpl = $this->tpl;
90  $ilTabs = $this->tabs;
91  $ilNavigationHistory = $this->nav_history;
93 
94  $next_class = $this->ctrl->getNextClass($this);
95  $cmd = $this->ctrl->getCmd();
96 
97  if (!$next_class && $cmd == 'render') {
98  if ($ilUser->getId() != ANONYMOUS_USER_ID) {
99  $this->ctrl->setCmdClass('ilBookingObjectGUI');
100  $next_class = $this->ctrl->getNextClass($this);
101  } else {
102  $this->ctrl->redirect($this, "infoscreen");
103  }
104  }
105 
106  if (substr($cmd, 0, 4) == 'book') {
107  $next_class = '';
108  }
109 
110  $ilNavigationHistory->addItem(
111  $this->ref_id,
112  "./goto.php?target=book_" . $this->ref_id,
113  "book"
114  );
115 
116  $this->prepareOutput();
117 
118  switch ($next_class) {
119  case 'ilpermissiongui':
120  $this->checkPermission('edit_permission');
121  $this->tabs_gui->setTabActive('perm_settings');
122  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
123  $perm_gui = new ilPermissionGUI($this);
124  $ret = &$this->ctrl->forwardCommand($perm_gui);
125  break;
126 
127  case 'ilbookingobjectgui':
128  if (!$this->checkPermissionBool('read') && $this->checkPermissionBool('visible')) {
129  $this->ctrl->redirect($this, "infoScreen");
130  }
131  $this->checkPermission('read');
132  $this->tabs_gui->setTabActive('render');
133  include_once("Modules/BookingManager/classes/class.ilBookingObjectGUI.php");
134  $object_gui = new ilBookingObjectGUI($this);
135  $ret = &$this->ctrl->forwardCommand($object_gui);
136  break;
137 
138  case 'ilbookingschedulegui':
139  $this->checkPermission('write');
140  $this->tabs_gui->setTabActive('schedules');
141  include_once("Modules/BookingManager/classes/class.ilBookingScheduleGUI.php");
142  $schedule_gui = new ilBookingScheduleGUI($this);
143  $ret = &$this->ctrl->forwardCommand($schedule_gui);
144  break;
145 
146  case 'ilpublicuserprofilegui':
147  $this->checkPermission('read');
148  $ilTabs->clearTargets();
149  include_once("Services/User/classes/class.ilPublicUserProfileGUI.php");
150  $profile = new ilPublicUserProfileGUI($this->user_profile_id);
151  $profile->setBackUrl($this->ctrl->getLinkTarget($this, 'log'));
152  $ret = $this->ctrl->forwardCommand($profile);
153  $tpl->setContent($ret);
154  break;
155 
156  case 'ilinfoscreengui':
157  $this->checkPermission('visible');
158  $this->infoScreen();
159  break;
160 
161  case "ilcommonactiondispatchergui":
162  $this->checkPermission('read');
163  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
165  $this->ctrl->forwardCommand($gui);
166  break;
167 
168  case "ilobjectcopygui":
169  $this->checkPermission('copy');
170  include_once "./Services/Object/classes/class.ilObjectCopyGUI.php";
171  $cp = new ilObjectCopyGUI($this);
172  $cp->setType("book");
173  $this->ctrl->forwardCommand($cp);
174  break;
175 
176  case 'ilobjectmetadatagui':
177  $this->checkPermission('write');
178  $this->tabs_gui->setTabActive('meta_data');
179  include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
180  $md_gui = new ilObjectMetaDataGUI($this->object, 'bobj');
181  $this->ctrl->forwardCommand($md_gui);
182  break;
183 
184  case 'ilbookingparticipantgui':
185  $this->checkPermission('write');
186  $this->tabs_gui->setTabActive('participants');
187  include_once("Modules/BookingManager/classes/class.ilBookingParticipantGUI.php");
188  $object_gui = new ilBookingParticipantGUI($this);
189  $this->ctrl->forwardCommand($object_gui);
190  break;
191 
192  default:
193  if (!in_array($cmd, ["create", "save", "infoScreen"])) {
194  $this->checkPermission('read');
195  }
196  $cmd = $this->ctrl->getCmd();
197  $cmd .= 'Object';
198  $this->$cmd();
199  break;
200  }
201 
202  $this->addHeaderAction();
203  return true;
204  }
Class ilObjectMetaDataGUI.
GUI class for the workflow of copying objects.
Class ilBookingParticipantGUI.
prepareOutput($a_show_subobjects=true)
prepare output
GUI class for public user profile presentation.
Class ilBookingObjectGUI.
$ilUser
Definition: imgupload.php:18
Class ilBookingScheduleGUI.
$ret
Definition: parser.php:6
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
addHeaderAction()
Add header action menu.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
+ Here is the call graph for this function:

◆ getEditFormCustomValues()

ilObjBookingPoolGUI::getEditFormCustomValues ( array &  $a_values)
protected

Definition at line 320 of file class.ilObjBookingPoolGUI.php.

321  {
322  $a_values["online"] = !$this->object->isOffline();
323  $a_values["public"] = $this->object->hasPublicLog();
324  $a_values["stype"] = $this->object->getScheduleType();
325  $a_values["limit"] = $this->object->getOverallLimit();
326  $a_values["period"] = $this->object->getReservationFilterPeriod();
327  $a_values["rmd"] = $this->object->getReminderStatus();
328  $a_values["rmd_day"] = $this->object->getReminderDay();
329  }

◆ getLogReservationIds()

ilObjBookingPoolGUI::getLogReservationIds ( )
protected

Definition at line 1402 of file class.ilObjBookingPoolGUI.php.

References $_POST.

Referenced by rsvConfirmCancelObject(), rsvInUseObject(), and rsvNotInUseObject().

1403  {
1404  if ($_POST["mrsv"]) {
1405  return $_POST["mrsv"];
1406  } elseif ($this->reservation_id > 0) {
1407  return array($this->reservation_id);
1408  }
1409  }
$_POST["username"]
+ Here is the caller graph for this function:

◆ handleBookingSuccess()

ilObjBookingPoolGUI::handleBookingSuccess (   $a_obj_id,
array  $a_rsv_ids = null 
)
protected

Definition at line 884 of file class.ilObjBookingPoolGUI.php.

References $_POST, and ilBookingParticipantGUI\PARTICIPANT_VIEW.

Referenced by confirmedBookingNumbersObject(), and confirmedBookingObject().

885  {
886  ilUtil::sendSuccess($this->lng->txt('book_reservation_confirmed'), true);
887 
888  // show post booking information?
889  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
890  $obj = new ilBookingObject($a_obj_id);
891  $pfile = $obj->getPostFile();
892  $ptext = $obj->getPostText();
893  if (trim($ptext) || $pfile) {
894  if (sizeof($a_rsv_ids)) {
895  $this->ctrl->setParameterByClass('ilbookingobjectgui', 'rsv_ids', implode(";", $a_rsv_ids));
896  }
897  $this->ctrl->setParameterByClass('ilbookingobjectgui', 'object_id', $obj->getId());
898  $this->ctrl->redirectByClass('ilbookingobjectgui', 'displayPostInfo');
899  } else {
901  $this->ctrl->redirectByClass('ilbookingparticipantgui', 'render');
902  } else {
903  $this->ctrl->redirect($this, 'render');
904  }
905  }
906  }
a bookable ressource
$_POST["username"]
+ Here is the caller graph for this function:

◆ infoScreen()

ilObjBookingPoolGUI::infoScreen ( )

Definition at line 1365 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$ctrl, $ilCtrl, $info, ilObjectGUI\checkPermission(), and ilObjectGUI\checkPermissionBool().

Referenced by executeCommand(), and infoScreenObject().

1366  {
1367  $ilCtrl = $this->ctrl;
1368 
1369  $this->tabs_gui->setTabActive('info');
1370 
1371  $this->checkPermission("visible");
1372 
1373  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1374  $info = new ilInfoScreenGUI($this);
1375 
1376  $info->enablePrivateNotes();
1377 
1378  if ($this->checkPermissionBool("read")) {
1379  $info->enableNews();
1380  }
1381 
1382  // no news editing for files, just notifications
1383  $info->enableNewsEditing(false);
1384  if ($this->checkPermissionBool("write")) {
1385  $news_set = new ilSetting("news");
1386  $enable_internal_rss = $news_set->get("enable_rss_for_internal");
1387 
1388  if ($enable_internal_rss) {
1389  $info->setBlockProperty("news", "settings", true);
1390  $info->setBlockProperty("news", "public_notifications_option", true);
1391  }
1392  }
1393 
1394  // forward the command
1395  if ($ilCtrl->getNextClass() == "ilinfoscreengui") {
1396  $ilCtrl->forwardCommand($info);
1397  } else {
1398  return $ilCtrl->getHTML($info);
1399  }
1400  }
Class ilInfoScreenGUI.
global $ilCtrl
Definition: ilias.php:18
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
$info
Definition: index.php:5
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ infoScreenObject()

ilObjBookingPoolGUI::infoScreenObject ( )

this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed

Definition at line 1358 of file class.ilObjBookingPoolGUI.php.

References infoScreen().

1359  {
1360  $this->ctrl->setCmd("showSummary");
1361  $this->ctrl->setCmdClass("ilinfoscreengui");
1362  $this->infoScreen();
1363  }
+ Here is the call graph for this function:

◆ initBookingNumbersForm()

ilObjBookingPoolGUI::initBookingNumbersForm ( array  $a_objects_counter,
  $a_group_id,
  $a_reload = false 
)
protected

Definition at line 908 of file class.ilObjBookingPoolGUI.php.

References $form, $id, $section, ilDatePresentation\formatPeriod(), IL_CAL_UNIX, and ilFormPropertyGUI\setRequired().

Referenced by confirmBookingNumbers(), and confirmedBookingNumbersObject().

909  {
910  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
911  $form = new ilPropertyFormGUI();
912  $form->setFormAction($this->ctrl->getFormAction($this, "confirmedBooking"));
913  $form->setTitle($this->lng->txt("book_confirm_booking_schedule_number_of_objects"));
914  $form->setDescription($this->lng->txt("book_confirm_booking_schedule_number_of_objects_info"));
915 
916  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
917  $section = false;
918  $min_date = null;
919  foreach ($a_objects_counter as $id => $counter) {
920  $id = explode("_", $id);
921  $book_id = $id[0] . "_" . $id[1] . "_" . $id[2] . "_" . $counter;
922 
923  $obj = new ilBookingObject($id[0]);
924 
925  if (!$section) {
927  $section->setTitle($obj->getTitle());
928  $form->addItem($section);
929 
930  $section = true;
931  }
932 
933  $period = /* $this->lng->txt("book_period").": ". */
935  new ilDateTime($id[1], IL_CAL_UNIX),
936  new ilDateTime($id[2], IL_CAL_UNIX)
937  );
938 
939  $nr_field = new ilNumberInputGUI($period, "conf_nr__" . $book_id);
940  $nr_field->setValue(1);
941  $nr_field->setSize(3);
942  $nr_field->setMaxValue($counter);
943  $nr_field->setMinValue($counter ? 1 : 0);
944  $nr_field->setRequired(true);
945  $form->addItem($nr_field);
946 
947  if (!$min_date || $id[1] < $min_date) {
948  $min_date = $id[1];
949  }
950  }
951 
952  // recurrence
953  $this->lng->loadLanguageModule("dateplaner");
954  $rec_mode = new ilSelectInputGUI($this->lng->txt("cal_recurrences"), "recm");
955  $rec_mode->setRequired(true);
956  $rec_mode->setOptions(array(
957  "-1" => $this->lng->txt("cal_no_recurrence"),
958  1 => $this->lng->txt("cal_weekly"),
959  2 => $this->lng->txt("r_14"),
960  4 => $this->lng->txt("r_4_weeks")
961  ));
962  $form->addItem($rec_mode);
963 
964  $rec_end = new ilDateTimeInputGUI($this->lng->txt("cal_repeat_until"), "rece");
965  $rec_end->setRequired(true);
966  $rec_mode->addSubItem($rec_end);
967 
968  if (!$a_reload) {
969  // show date only if active recurrence
970  $rec_mode->setHideSubForm(true, '>= 1');
971 
972  if ($min_date) {
973  $rec_end->setDate(new ilDateTime($min_date, IL_CAL_UNIX));
974  }
975  } else {
976  // recurrence may not be changed on reload
977  $rec_mode->setDisabled(true);
978  $rec_end->setDisabled(true);
979  }
980 
981  if ($a_group_id) {
982  $grp = new ilHiddenInputGUI("grp_id");
983  $grp->setValue($a_group_id);
984  $form->addItem($grp);
985  }
986 
987  if ($this->user_id_assigner != $this->user_id_to_book) {
988  $usr = new ilHiddenInputGUI("bkusr");
989  $usr->setValue($this->user_id_to_book);
990  $form->addItem($usr);
991  }
992 
993  $form->addCommandButton("confirmedBookingNumbers", $this->lng->txt("confirm"));
994  $form->addCommandButton("render", $this->lng->txt("cancel"));
995 
996  return $form;
997  }
a bookable ressource
This class represents a selection list property in a property form.
This class represents a property form user interface.
This class represents a section header in a property form.
if(!array_key_exists('StateId', $_REQUEST)) $id
const IL_CAL_UNIX
This class represents a date/time property in a property form.
$section
Definition: Utf8Test.php:83
This class represents a hidden form property in a property form.
if(isset($_POST['submit'])) $form
This class represents a number property in a property form.
Date and time handling
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
setRequired($a_required)
Set Required.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initCreationForms()

ilObjBookingPoolGUI::initCreationForms (   $a_new_type)
protected

Definition at line 206 of file class.ilObjBookingPoolGUI.php.

207  {
208  $forms = parent::initCreationForms($a_new_type);
209  unset($forms[self::CFORM_IMPORT]);
210 
211  return $forms;
212  }

◆ initEditCustomForm()

ilObjBookingPoolGUI::initEditCustomForm ( ilPropertyFormGUI  $a_form)
protected

Definition at line 248 of file class.ilObjBookingPoolGUI.php.

References $type, ilPropertyFormGUI\addItem(), ilBookingObject\getList(), ilObjectGUI\getObjectService(), ilCheckboxInputGUI\setChecked(), ilRadioOption\setInfo(), ilFormPropertyGUI\setInfo(), ilFormPropertyGUI\setRequired(), ilNumberInputGUI\setSize(), ilObjBookingPool\TYPE_FIX_SCHEDULE, and ilObjBookingPool\TYPE_NO_SCHEDULE.

249  {
250  $obj_service = $this->getObjectService();
251 
252  $online = new ilCheckboxInputGUI($this->lng->txt("online"), "online");
253  $a_form->addItem($online);
254 
255  $type = new ilRadioGroupInputGUI($this->lng->txt("book_schedule_type"), "stype");
256  $type->setRequired(true);
257  $a_form->addItem($type);
258 
259  // #14478
260  include_once "Modules/BookingManager/classes/class.ilBookingObject.php";
261  if (sizeof(ilBookingObject::getList($this->object->getId()))) {
262  $type->setDisabled(true);
263  }
264 
265  $fixed = new ilRadioOption($this->lng->txt("book_schedule_type_fixed"), ilObjBookingPool::TYPE_FIX_SCHEDULE);
266  $fixed->setInfo($this->lng->txt("book_schedule_type_fixed_info"));
267  $type->addOption($fixed);
268 
269  #23637
270  //period
271  $period = new ilNumberInputGUI($this->lng->txt("book_reservation_filter_period"), "period");
272  $period->setInfo($this->lng->txt("book_reservation_filter_period_info"));
273  $period->setSuffix($this->lng->txt("days"));
274  $period->setSize(3);
275  $period->setMinValue(0);
276  $fixed->addSubItem($period);
277 
278  // reminder
279  $rmd = new ilCheckboxInputGUI($this->lng->txt("book_reminder_setting"), "rmd");
280  $rmd->setChecked($this->object->getReminderStatus());
281  $fixed->addSubItem($rmd);
282 
283  $rmd_day = new ilNumberInputGUI($this->lng->txt("book_reminder_day"), "rmd_day");
284  $rmd_day->setRequired(true);
285  $rmd_day->setInfo($this->lng->txt("book_reminder_day_info"));
286  $rmd_day->setSize(3);
287  $rmd_day->setSuffix($this->lng->txt("book_reminder_days"));
288  $rmd_day->setValue(max($this->object->getReminderDay(), 1));
289  $rmd_day->setMinValue(1);
290  $rmd->addSubItem($rmd_day);
291 
292  $none = new ilRadioOption($this->lng->txt("book_schedule_type_none"), ilObjBookingPool::TYPE_NO_SCHEDULE);
293  $none->setInfo($this->lng->txt("book_schedule_type_none_info"));
294  $type->addOption($none);
295 
296  $limit = new ilNumberInputGUI($this->lng->txt("book_overall_limit"), "limit");
297  $limit->setSize(4);
298  $limit->setMinValue(1);
299  $limit->setInfo($this->lng->txt("book_overall_limit_info"));
300  $none->addSubItem($limit);
301 
302  $public = new ilCheckboxInputGUI($this->lng->txt("book_public_log"), "public");
303  $public->setInfo($this->lng->txt("book_public_log_info"));
304  $a_form->addItem($public);
305 
306  // presentation
307  $pres = new ilFormSectionHeaderGUI();
308  $pres->setTitle($this->lng->txt('obj_presentation'));
309  $a_form->addItem($pres);
310 
311  // tile image
312  $obj_service->commonSettings()->legacyForm($a_form, $this->object)->addTileImage();
313 
314  // additional features
315  $feat = new ilFormSectionHeaderGUI();
316  $feat->setTitle($this->lng->txt('obj_features'));
317  $a_form->addItem($feat);
318  }
This class represents an option in a radio group.
static getList($a_pool_id, $a_title=null)
Get list of booking objects for given type.
$type
This class represents a section header in a property form.
This class represents a checkbox property in a property form.
addItem($a_item)
Add Item (Property, SectionHeader).
setInfo($a_info)
Set Info.
setInfo($a_info)
Set Information Text.
setChecked($a_checked)
Set Checked.
This class represents a property in a property form.
This class represents a number property in a property form.
setSize($a_size)
Set Size.
getObjectService()
Get object service.
setRequired($a_required)
Set Required.
+ Here is the call graph for this function:

◆ initHeaderAction()

ilObjBookingPoolGUI::initHeaderAction (   $a_sub_type = null,
  $a_sub_id = null 
)
protected

Definition at line 1781 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$access, ilObjectGUI\$ctrl, $lg, ilObjectGUI\$lng, ilObjectGUI\$user, ilUtil\getImagePath(), ilNotification\hasNotification(), and ilNotification\TYPE_BOOK.

1782  {
1784  $user = $this->user;
1785  $ctrl = $this->ctrl;
1786  $lng = $this->lng;
1787 
1788  $lng->loadLanguageModule("noti");
1789 
1790  $lg = parent::initHeaderAction($a_sub_type, $a_sub_id);
1791 
1792  if ($lg && $access->checkAccess("read", "", $this->ref_id)) {
1793  // notification
1794  if (true) {
1795  if (!ilNotification::hasNotification(ilNotification::TYPE_BOOK, $user->getId(), $this->object->getId())) {
1796  $lg->addHeaderIcon(
1797  "not_icon",
1798  ilUtil::getImagePath("notification_off.svg"),
1799  $lng->txt("noti_notification_deactivated")
1800  );
1801 
1802  $ctrl->setParameter($this, "ntf", 1);
1803  $caption = "noti_activate_notification";
1804  } else {
1805  $lg->addHeaderIcon(
1806  "not_icon",
1807  ilUtil::getImagePath("notification_on.svg"),
1808  $lng->txt("noti_notification_activated")
1809  );
1810 
1811  $ctrl->setParameter($this, "ntf", 0);
1812  $caption = "noti_deactivate_notification";
1813  }
1814 
1815  $lg->addCustomCommand(
1816  $ctrl->getLinkTarget($this, "saveNotification"),
1817  $caption
1818  );
1819 
1820  $ctrl->setParameter($this, "ntf", "");
1821  }
1822  }
1823 
1824  return $lg;
1825  }
$lg
Definition: example_018.php:62
static hasNotification($type, $user_id, $id)
Check notification status for object and user.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
+ Here is the call graph for this function:

◆ logDetailsObject()

ilObjBookingPoolGUI::logDetailsObject ( )

Definition at line 1241 of file class.ilObjBookingPoolGUI.php.

References $table, ilObjectGUI\$tpl, ilObjectGUI\checkPermissionBool(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1242  {
1243  $tpl = $this->tpl;
1244 
1245  $this->tabs_gui->clearTargets();
1246  $this->tabs_gui->setBackTarget(
1247  $this->lng->txt("back"),
1248  $this->ctrl->getLinkTarget($this, "log")
1249  );
1250 
1251  $show_all = ($this->checkPermissionBool('write') || $this->object->hasPublicLog());
1252 
1253  $filter = null;
1254  if ($this->book_obj_id > 0) {
1255  $filter["object"] = $this->book_obj_id;
1256  }
1257 
1258  include_once 'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
1260  $this,
1261  'log',
1262  $this->ref_id,
1263  $this->object->getId(),
1264  $show_all,
1265  ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE),
1266  $filter,
1267  $this->reservation_id
1268  );
1269  $tpl->setContent($table->getHTML());
1270  }
if(empty($password)) $table
Definition: pwgen.php:24
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:

◆ logObject()

ilObjBookingPoolGUI::logObject ( )

List reservations.

Definition at line 1210 of file class.ilObjBookingPoolGUI.php.

References $_GET, $table, ilObjectGUI\$tpl, ilObjectGUI\checkPermissionBool(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

Referenced by applyLogFilterObject(), changeStatusObject(), resetLogFilterObject(), rsvCancelObject(), rsvDeleteObject(), rsvInUseObject(), and rsvNotInUseObject().

1211  {
1212  $tpl = $this->tpl;
1213 
1214  $this->tabs_gui->setTabActive('log');
1215 
1216  $show_all = ($this->checkPermissionBool('write') || $this->object->hasPublicLog());
1217 
1218  $filter = null;
1219  if ($this->book_obj_id > 0) {
1220  $filter["object"] = $this->book_obj_id;
1221  }
1222 
1223  // coming from participants tab to cancel reservations.
1224  if ($_GET['user_id']) {
1225  $filter["user_id"] = (int) $_GET['user_id'];
1226  }
1227 
1228  include_once 'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
1230  $this,
1231  'log',
1232  $this->ref_id,
1233  $this->object->getId(),
1234  $show_all,
1235  ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE),
1236  $filter
1237  );
1238  $tpl->setContent($table->getHTML());
1239  }
$_GET["client_id"]
if(empty($password)) $table
Definition: pwgen.php:24
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ processBooking()

ilObjBookingPoolGUI::processBooking (   $a_object_id,
  $a_from = null,
  $a_to = null,
  $a_group_id = null 
)

Book object for date.

Parameters
int$a_object_id
int$a_fromtimestamp
int$a_totimestamp
int$a_group_id
Returns
int

Definition at line 1167 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$object, ilCalendarCategoryAssignments\addAssignment(), ilObjectGUI\checkPermission(), IL_CAL_UNIX, ilCalendarUtil\initDefaultCalendarByType(), ilCalendarEntry\setStart(), and ilCalendarCategory\TYPE_BOOK.

Referenced by confirmedBookingNumbersObject(), confirmedBookingObject(), and saveMultipleBookingsObject().

1168  {
1169  // #11995
1170  $this->checkPermission('read');
1171 
1172  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1173  $reservation = new ilBookingReservation();
1174  $reservation->setObjectId($a_object_id);
1175  $reservation->setUserId($this->user_id_to_book);
1176  $reservation->setAssignerId($this->user_id_assigner);
1177  $reservation->setFrom($a_from);
1178  $reservation->setTo($a_to);
1179  $reservation->setGroupId($a_group_id);
1180  $reservation->save();
1181 
1182  if ($a_from) {
1183  $this->lng->loadLanguageModule('dateplaner');
1184  include_once 'Services/Calendar/classes/class.ilCalendarUtil.php';
1185  include_once 'Services/Calendar/classes/class.ilCalendarCategory.php';
1186  $def_cat = ilCalendarUtil::initDefaultCalendarByType(ilCalendarCategory::TYPE_BOOK, $this->user_id_to_book, $this->lng->txt('cal_ch_personal_book'), true);
1187 
1188  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
1189  $object = new ilBookingObject($a_object_id);
1190 
1191  include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1192  $entry = new ilCalendarEntry;
1193  $entry->setStart(new ilDateTime($a_from, IL_CAL_UNIX));
1194  $entry->setEnd(new ilDateTime($a_to, IL_CAL_UNIX));
1195  $entry->setTitle($this->lng->txt('book_cal_entry') . ' ' . $object->getTitle());
1196  $entry->setContextId($reservation->getId());
1197  $entry->save();
1198 
1199  include_once 'Services/Calendar/classes/class.ilCalendarCategoryAssignments.php';
1200  $assignment = new ilCalendarCategoryAssignments($entry->getEntryId());
1201  $assignment->addAssignment($def_cat->getCategoryId());
1202  }
1203 
1204  return $reservation->getId();
1205  }
a bookable ressource
Model for a calendar entry.
const IL_CAL_UNIX
Date and time handling
setStart($a_start)
public
static initDefaultCalendarByType($a_type_id, $a_usr_id, $a_title, $a_create=false)
Init the default calendar for given type and user.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ redirectToListObject()

ilObjBookingPoolGUI::redirectToListObject ( )

Definition at line 1902 of file class.ilObjBookingPoolGUI.php.

1903  {
1904  $this->ctrl->setParameterByClass('ilbookingobjectgui', 'object_id', $this->book_obj_id);
1905  $this->ctrl->redirectByClass('ilbookingobjectgui', 'assignParticipants');
1906  }

◆ renderSlots()

ilObjBookingPoolGUI::renderSlots ( ilBookingSchedule  $schedule,
array  $object_ids,
  $title 
)
protected

Definition at line 509 of file class.ilObjBookingPoolGUI.php.

References $i, $ilUser, $title, ilObjectGUI\$user, ilCalendarUtil\_buildWeekDayList(), ilCalendarAppointmentColors\_getColorsByType(), ilCalendarUserSettings\_getInstanceByUserId(), ilCalendarUtil\_numericDayToString(), ilCalendarUtil\_numericMonthToString(), buildDatesBySchedule(), ilCalendarUtil\calculateFontColor(), ilBookingSchedule\getRaster(), IL_CAL_DATE, IL_CAL_FKT_GETDATE, IL_CAL_UNIX, ilCalendarSettings\TIME_FORMAT_12, ilCalendarSettings\TIME_FORMAT_24, ilDateTime\WEEK, and ilDateTime\YEAR.

Referenced by bookObject().

510  {
512 
513  // fix
514  if (!$schedule->getRaster()) {
515  $mytpl = new ilTemplate('tpl.booking_reservation_fix.html', true, true, 'Modules/BookingManager');
516 
517  $mytpl->setVariable('FORM_ACTION', $this->ctrl->getFormAction($this));
518  $mytpl->setVariable('TXT_TITLE', $this->lng->txt('book_reservation_title'));
519  $mytpl->setVariable('TXT_INFO', $this->lng->txt('book_reservation_fix_info'));
520  $mytpl->setVariable('TXT_OBJECT', $title);
521  $mytpl->setVariable('TXT_CMD_BOOK', $this->lng->txt('book_confirm_booking'));
522  $mytpl->setVariable('TXT_CMD_CANCEL', $this->lng->txt('cancel'));
523 
524  include_once 'Services/Calendar/classes/class.ilCalendarUserSettings.php';
525 
526  $user_settings = ilCalendarUserSettings::_getInstanceByUserId($ilUser->getId());
527 
528  $morning_aggr = $user_settings->getDayStart();
529  $evening_aggr = $user_settings->getDayEnd();
530  $hours = array();
531  for ($i = $morning_aggr;$i <= $evening_aggr;$i++) {
532  switch ($user_settings->getTimeFormat()) {
534  if ($morning_aggr > 0 && $i == $morning_aggr) {
535  $hours[$i] = sprintf('%02d:00', 0) . "-";
536  }
537  $hours[$i] .= sprintf('%02d:00', $i);
538  if ($evening_aggr < 23 && $i == $evening_aggr) {
539  $hours[$i] .= "-" . sprintf('%02d:00', 23);
540  }
541  break;
542 
544  if ($morning_aggr > 0 && $i == $morning_aggr) {
545  $hours[$i] = date('h a', mktime(0, 0, 0, 1, 1, 2000)) . "-";
546  }
547  $hours[$i] .= date('h a', mktime($i, 0, 0, 1, 1, 2000));
548  if ($evening_aggr < 23 && $i == $evening_aggr) {
549  $hours[$i] .= "-" . date('h a', mktime(23, 0, 0, 1, 1, 2000));
550  }
551  break;
552  }
553  }
554 
555  if ($this->seed != "") {
556  $find_first_open = false;
557  $seed = new ilDate($this->seed, IL_CAL_DATE);
558  } else {
559  $find_first_open = true;
560  $seed = ($this->sseed != "")
561  ? new ilDate($this->sseed, IL_CAL_DATE)
562  : new ilDate(time(), IL_CAL_UNIX);
563  }
564 
565  include_once 'Services/Calendar/classes/class.ilCalendarUtil.php';
566  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
567  $week_start = $user_settings->getWeekStart();
568 
569  if (!$find_first_open) {
570  $dates = array();
571  $this->buildDatesBySchedule($week_start, $hours, $schedule, $object_ids, $seed, $dates);
572  } else {
573  $dates = array();
574 
575  //loop for 1 week
576  $has_open_slot = $this->buildDatesBySchedule($week_start, $hours, $schedule, $object_ids, $seed, $dates);
577 
578  // find first open slot
579  if (!$has_open_slot) {
580  // 1 year is limit for search
581  $limit = clone($seed);
582  $limit->increment(ilDate::YEAR, 1);
583  $limit = $limit->get(IL_CAL_UNIX);
584 
585  while (!$has_open_slot && $seed->get(IL_CAL_UNIX) < $limit) {
586  $seed->increment(ilDate::WEEK, 1);
587 
588  $dates = array();
589  $has_open_slot = $this->buildDatesBySchedule($week_start, $hours, $schedule, $object_ids, $seed, $dates);
590  }
591  }
592  }
593 
594  include_once 'Services/Calendar/classes/class.ilCalendarHeaderNavigationGUI.php';
595  $navigation = new ilCalendarHeaderNavigationGUI($this, $seed, ilDateTime::WEEK, 'book');
596  $mytpl->setVariable('NAVIGATION', $navigation->getHTML());
597 
598  foreach (ilCalendarUtil::_buildWeekDayList($seed, $week_start)->get() as $date) {
599  $date_info = $date->get(IL_CAL_FKT_GETDATE, '', 'UTC');
600 
601  $mytpl->setCurrentBlock('weekdays');
602  $mytpl->setVariable('TXT_WEEKDAY', ilCalendarUtil:: _numericDayToString($date_info['wday']));
603  $mytpl->setVariable('TXT_DATE', $date_info['mday'] . ' ' . ilCalendarUtil:: _numericMonthToString($date_info['mon']));
604  $mytpl->parseCurrentBlock();
605  }
606 
607  include_once 'Services/Calendar/classes/class.ilCalendarAppointmentColors.php';
608  include_once 'Services/Calendar/classes/class.ilCalendarUtil.php';
609  $color = array();
611  for ($loop = 0; $loop < 7; $loop++) {
612  $col = $all[$loop];
614  $color[$loop + 1] = 'border-bottom: 1px solid ' . $col . '; background-color: ' . $col . '; color: ' . $fnt;
615  }
616 
617  $counter = 0;
618  foreach ($dates as $hour => $days) {
619  $caption = $days;
620  $caption = array_shift($caption);
621 
622  for ($loop = 1; $loop < 8; $loop++) {
623  if (!isset($days[$loop])) {
624  $mytpl->setCurrentBlock('dates');
625  $mytpl->setVariable('DUMMY', '&nbsp;');
626  $mytpl->parseCurrentBlock();
627  } else {
628  if (isset($days[$loop]['captions'])) {
629  foreach ($days[$loop]['captions'] as $slot_id => $slot_caption) {
630  $mytpl->setCurrentBlock('choice');
631  $mytpl->setVariable('TXT_DATE', $slot_caption);
632  $mytpl->setVariable('VALUE_DATE', $slot_id);
633  $mytpl->setVariable('DATE_COLOR', $color[$loop]);
634  $mytpl->setVariable(
635  'TXT_AVAILABLE',
636  sprintf(
637  $this->lng->txt('book_reservation_available'),
638  $days[$loop]['available'][$slot_id]
639  )
640  );
641  $mytpl->parseCurrentBlock();
642  }
643 
644  $mytpl->setCurrentBlock('dates');
645  $mytpl->setVariable('DUMMY', '');
646  $mytpl->parseCurrentBlock();
647  } elseif (isset($days[$loop]['in_slot'])) {
648  $mytpl->setCurrentBlock('dates');
649  $mytpl->setVariable('DATE_COLOR', $color[$loop]);
650  $mytpl->parseCurrentBlock();
651  } else {
652  $mytpl->setCurrentBlock('dates');
653  $mytpl->setVariable('DUMMY', '&nbsp;');
654  $mytpl->parseCurrentBlock();
655  }
656  }
657  }
658 
659  $mytpl->setCurrentBlock('slots');
660  $mytpl->setVariable('TXT_HOUR', $caption);
661  if ($counter % 2) {
662  $mytpl->setVariable('CSS_ROW', 'tblrow1');
663  } else {
664  $mytpl->setVariable('CSS_ROW', 'tblrow2');
665  }
666  $mytpl->parseCurrentBlock();
667 
668  $counter++;
669  }
670  }
671  // flexible
672  else {
673  // :TODO: inactive for now
674  }
675 
676  return $mytpl->get();
677  }
static _getColorsByType($a_type)
get selectable colors
static _numericDayToString($a_day, $a_long=true)
get
static _getInstanceByUserId($a_user_id)
get singleton instance
buildDatesBySchedule($week_start, array $hours, $schedule, array $object_ids, $seed, array &$dates)
getRaster()
Get booking raster.
static _buildWeekDayList($a_day, $a_weekstart)
build week day list
const IL_CAL_UNIX
static _numericMonthToString($a_month, $a_long=true)
numeric month to string
Class for single dates.
special template class to simplify handling of ITX/PEAR
$ilUser
Definition: imgupload.php:18
static calculateFontColor($a_html_color_code)
Calculate best font color from html hex color code.
const IL_CAL_FKT_GETDATE
const IL_CAL_DATE
$i
Definition: disco.tpl.php:19
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetLogFilterObject()

ilObjBookingPoolGUI::resetLogFilterObject ( )

Reset filter in reservations table gui.

Definition at line 1317 of file class.ilObjBookingPoolGUI.php.

References $table, ilObjectGUI\checkPermissionBool(), logObject(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1318  {
1319  $show_all = ($this->checkPermissionBool('write') || $this->object->hasPublicLog());
1320 
1321  include_once 'Modules/BookingManager/classes/class.ilBookingReservationsTableGUI.php';
1323  $this,
1324  'log',
1325  $this->ref_id,
1326  $this->object->getId(),
1327  $show_all,
1328  ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE)
1329  );
1330  $table->resetOffset();
1331  $table->resetFilter();
1332  $this->logObject();
1333  }
logObject()
List reservations.
if(empty($password)) $table
Definition: pwgen.php:24
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:

◆ rsvCancelObject()

ilObjBookingPoolGUI::rsvCancelObject ( )

Definition at line 1586 of file class.ilObjBookingPoolGUI.php.

References $_POST, ilObjectGUI\$ctrl, $form, $id, $ilCtrl, $ilUser, ilObjectGUI\$lng, ilObjectGUI\$tpl, ilObjectGUI\$user, ilObjectGUI\checkPermissionBool(), logObject(), rsvConfirmCancelAggregationForm(), ilUtil\sendFailure(), ilBookingReservation\STATUS_CANCELLED, and ilObjBookingPool\TYPE_NO_SCHEDULE.

1587  {
1588  $ilUser = $this->user;
1589  $tpl = $this->tpl;
1590  $lng = $this->lng;
1591  $ilCtrl = $this->ctrl;
1592 
1593  $ids = $_POST["rsv_id"];
1594 
1595  // parse aggregation form
1596  if ($_POST["rsv_aggr"]) {
1597  $form = $this->rsvConfirmCancelAggregationForm($_POST["rsv_aggr"]);
1598  if (!$form->checkInput()) {
1599  $this->tabs_gui->clearTargets();
1600  $this->tabs_gui->setBackTarget(
1601  $lng->txt("back"),
1602  $ilCtrl->getLinkTarget($this, "log")
1603  );
1604 
1605  return $tpl->setContent($form->getHTML());
1606  }
1607 
1608  $ids = array();
1609  foreach ($_POST["rsv_aggr"] as $idx => $aggr_ids) {
1610  $max = (int) $_POST["rsv_id_" . $idx];
1611  if ($max) {
1612  if (!is_array($aggr_ids)) {
1613  $ids[] = $aggr_ids;
1614  } else {
1615  $aggr_ids = array_slice($aggr_ids, 0, $max);
1616  $ids = array_merge($ids, $aggr_ids);
1617  }
1618  }
1619  }
1620  }
1621 
1622  if ($ids) {
1623  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1624  foreach ($ids as $id) {
1625  $obj = new ilBookingReservation($id);
1626 
1627  if (!$this->checkPermissionBool("write") && $obj->getUserId() != $ilUser->getId()) {
1628  ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
1629  $this->ctrl->redirect($this, 'log');
1630  }
1631 
1632  $obj->setStatus(ilBookingReservation::STATUS_CANCELLED);
1633  $obj->update();
1634 
1635  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE) {
1636  // remove user calendar entry (#11086)
1637  $cal_entry_id = $obj->getCalendarEntry();
1638  if ($cal_entry_id) {
1639  include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1640  $entry = new ilCalendarEntry($cal_entry_id);
1641  $entry->delete();
1642  }
1643  }
1644  }
1645  }
1646 
1647  ilUtil::sendSuccess($this->lng->txt('settings_saved'));
1648  $this->logObject();
1649  }
Model for a calendar entry.
if(!array_key_exists('StateId', $_REQUEST)) $id
global $ilCtrl
Definition: ilias.php:18
if(isset($_POST['submit'])) $form
$ilUser
Definition: imgupload.php:18
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
logObject()
List reservations.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
$_POST["username"]
+ Here is the call graph for this function:

◆ rsvConfirmCancelAggregationForm()

ilObjBookingPoolGUI::rsvConfirmCancelAggregationForm (   $a_ids)

Definition at line 1498 of file class.ilObjBookingPoolGUI.php.

References $_POST, $form, $id, ilDatePresentation\formatPeriod(), ilBookingObject\getTitle(), IL_CAL_UNIX, and ilDatePresentation\setUseRelativeDates().

Referenced by rsvCancelObject(), and rsvConfirmCancelAggregationObject().

1499  {
1500  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
1501  $form = new ilPropertyFormGUI();
1502  $form->setFormAction($this->ctrl->getFormAction($this, "rsvCancel"));
1503  $form->setTitle($this->lng->txt("book_confirm_cancel_aggregation"));
1504 
1505  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
1506  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1507 
1509 
1510  foreach ($a_ids as $idx => $ids) {
1511  if (is_array($ids)) {
1512  $first = $ids;
1513  $first = array_shift($first);
1514  } else {
1515  $first = $ids;
1516  }
1517 
1518  $rsv = new ilBookingReservation($first);
1519  $obj = new ilBookingObject($rsv->getObjectId());
1520 
1521  $caption = $obj->getTitle() . ", " . ilDatePresentation::formatPeriod(
1522  new ilDateTime($rsv->getFrom(), IL_CAL_UNIX),
1523  new ilDateTime($rsv->getTo() + 1, IL_CAL_UNIX)
1524  );
1525 
1526  // #17869
1527  if (is_array($ids)) {
1528  $caption .= " (" . sizeof($ids) . ")";
1529  }
1530 
1531  $item = new ilNumberInputGUI($caption, "rsv_id_" . $idx);
1532  $item->setRequired(true);
1533  $item->setMinValue(0);
1534  $item->setSize(4);
1535  $form->addItem($item);
1536 
1537  if (is_array($ids)) {
1538  $item->setMaxValue(sizeof($ids));
1539 
1540  foreach ($ids as $id) {
1541  $hidden = new ilHiddenInputGUI("rsv_aggr[" . $idx . "][]");
1542  $hidden->setValue($id);
1543  $form->addItem($hidden);
1544  }
1545  } else {
1546  $item->setMaxValue(1);
1547 
1548  $hidden = new ilHiddenInputGUI("rsv_aggr[" . $idx . "]");
1549  $hidden->setValue($ids);
1550  $form->addItem($hidden);
1551  }
1552 
1553  if ($_POST["rsv_id_" . $idx]) {
1554  $item->setValue((int) $_POST["rsv_id_" . $idx]);
1555  }
1556  }
1557 
1558  $form->addCommandButton("rsvCancel", $this->lng->txt("confirm"));
1559  $form->addCommandButton("log", $this->lng->txt("cancel"));
1560 
1561  return $form;
1562  }
a bookable ressource
This class represents a property form user interface.
if(!array_key_exists('StateId', $_REQUEST)) $id
static setUseRelativeDates($a_status)
set use relative dates
const IL_CAL_UNIX
This class represents a hidden form property in a property form.
getTitle()
Get object title.
if(isset($_POST['submit'])) $form
This class represents a number property in a property form.
Date and time handling
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
$_POST["username"]
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rsvConfirmCancelAggregationObject()

ilObjBookingPoolGUI::rsvConfirmCancelAggregationObject ( array  $a_ids = null)

Definition at line 1564 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$ctrl, $form, $ilCtrl, ilObjectGUI\$lng, ilObjectGUI\$tpl, rsvConfirmCancelAggregationForm(), ilUtil\sendQuestion(), and setHelpId().

Referenced by rsvConfirmCancelObject().

1565  {
1566  $tpl = $this->tpl;
1567  $ilCtrl = $this->ctrl;
1568  $lng = $this->lng;
1569 
1570  $this->tabs_gui->clearTargets();
1571  $this->tabs_gui->setBackTarget(
1572  $lng->txt("back"),
1573  $ilCtrl->getLinkTarget($this, "log")
1574  );
1575 
1576  $this->setHelpId("cancel_booking");
1577 
1578  // #13511
1579  ilUtil::sendQuestion($lng->txt("book_confirm_cancel"));
1580 
1581  $form = $this->rsvConfirmCancelAggregationForm($a_ids);
1582 
1583  $tpl->setContent($form->getHTML());
1584  }
global $ilCtrl
Definition: ilias.php:18
if(isset($_POST['submit'])) $form
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rsvConfirmCancelObject()

ilObjBookingPoolGUI::rsvConfirmCancelObject ( )

Definition at line 1411 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$ctrl, $from, $id, $ilCtrl, $ilUser, ilObjectGUI\$lng, ilObjectGUI\$obj_id, ilObjectGUI\$tpl, ilObjectGUI\$user, ilObjectGUI\checkPermissionBool(), ilDatePresentation\formatPeriod(), ilBookingReservation\getCancelDetails(), ilBookingObject\getList(), getLogReservationIds(), ilBookingObject\getTitle(), IL_CAL_UNIX, rsvConfirmCancelAggregationObject(), setHelpId(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1412  {
1413  $ilCtrl = $this->ctrl;
1414  $lng = $this->lng;
1415  $tpl = $this->tpl;
1416  $ilUser = $this->user;
1417 
1418  $ids = $this->getLogReservationIds();
1419  if (!is_array($ids) || !sizeof($ids)) {
1420  $this->ctrl->redirect($this, 'log');
1421  }
1422 
1423  include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
1424  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1425 
1426  $max = array();
1427  foreach ($ids as $idx => $id) {
1428  if (!is_numeric($id)) {
1429  list($obj_id, $user_id, $from, $to) = explode("_", $id);
1430 
1431  $valid_ids = array();
1432  foreach (ilBookingObject::getList($this->object->getId()) as $item) {
1433  $valid_ids[$item["booking_object_id"]] = $item["title"];
1434  }
1435 
1436  if (($this->checkPermissionBool("write") || $user_id == $ilUser->getId()) &&
1437  $from > time() &&
1438  in_array($obj_id, array_keys($valid_ids))) {
1439  $rsv_ids = ilBookingReservation::getCancelDetails($obj_id, $user_id, $from, $to);
1440  if (!sizeof($rsv_ids)) {
1441  unset($ids[$idx]);
1442  }
1443  if (sizeof($rsv_ids) > 1) {
1444  $max[$id] = sizeof($rsv_ids);
1445  $ids[$idx] = $rsv_ids;
1446  } else {
1447  // only 1 in group? treat as normal reservation
1448  $ids[$idx] = array_shift($rsv_ids);
1449  }
1450  } else {
1451  unset($ids[$idx]);
1452  }
1453  }
1454  }
1455 
1456  if (!is_array($ids) || !sizeof($ids)) {
1457  $this->ctrl->redirect($this, 'log');
1458  }
1459 
1460  // show form instead
1461  if (sizeof($max) && max($max) > 1) {
1462  return $this->rsvConfirmCancelAggregationObject($ids);
1463  }
1464 
1465  $this->tabs_gui->clearTargets();
1466  $this->tabs_gui->setBackTarget(
1467  $lng->txt("back"),
1468  $ilCtrl->getLinkTarget($this, "log")
1469  );
1470 
1471  $this->setHelpId("cancel_booking");
1472 
1473  include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
1474  $conf = new ilConfirmationGUI();
1475  $conf->setFormAction($ilCtrl->getFormAction($this, 'rsvCancel'));
1476  $conf->setHeaderText($lng->txt('book_confirm_cancel'));
1477  $conf->setConfirm($lng->txt('book_set_cancel'), 'rsvCancel');
1478  $conf->setCancel($lng->txt('cancel'), 'log');
1479 
1480  foreach ($ids as $id) {
1481  $rsv = new ilBookingReservation($id);
1482  $obj = new ilBookingObject($rsv->getObjectId());
1483 
1484  $details = $obj->getTitle();
1485  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE) {
1486  $details .= ", " . ilDatePresentation::formatPeriod(
1487  new ilDateTime($rsv->getFrom(), IL_CAL_UNIX),
1488  new ilDateTime($rsv->getTo() + 1, IL_CAL_UNIX)
1489  );
1490  }
1491 
1492  $conf->addItem('rsv_id[]', $id, $details);
1493  }
1494 
1495  $tpl->setContent($conf->getHTML());
1496  }
a bookable ressource
static getList($a_pool_id, $a_title=null)
Get list of booking objects for given type.
if(!array_key_exists('StateId', $_REQUEST)) $id
$from
const IL_CAL_UNIX
global $ilCtrl
Definition: ilias.php:18
getTitle()
Get object title.
Date and time handling
$ilUser
Definition: imgupload.php:18
rsvConfirmCancelAggregationObject(array $a_ids=null)
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
static getCancelDetails($a_obj_id, $a_user_id, $a_from, $a_to)
Get reservation ids from aggregated id for cancellation.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Confirmation screen class.
+ Here is the call graph for this function:

◆ rsvConfirmDeleteObject()

ilObjBookingPoolGUI::rsvConfirmDeleteObject ( )

Definition at line 1651 of file class.ilObjBookingPoolGUI.php.

References $DIC, $from, ilObjectGUI\$obj_id, ilObjectGUI\checkPermissionBool(), ilDatePresentation\formatPeriod(), ilBookingReservation\getCancelDetails(), ilBookingObject\getTitle(), IL_CAL_UNIX, ilUtil\sendFailure(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1652  {
1653  global $DIC;
1654  if (!$this->checkPermissionBool("write")) {
1655  ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
1656  $this->ctrl->redirect($this, 'log');
1657  }
1658 
1659  $this->tabs_gui->clearTargets();
1660  $this->tabs_gui->setBackTarget(
1661  $this->lng->txt("back"),
1662  $this->ctrl->getLinkTarget($this, "log")
1663  );
1664 
1665  include_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
1666  $conf = new ilConfirmationGUI();
1667  $conf->setFormAction($this->ctrl->getFormAction($this, 'rsvDelete'));
1668  $conf->setHeaderText($this->lng->txt('book_confirm_delete'));
1669  $conf->setConfirm($this->lng->txt('book_set_delete'), 'rsvDelete');
1670  $conf->setCancel($this->lng->txt('cancel'), 'log');
1671 
1672  list($obj_id, $user_id, $from, $to) = explode("_", $DIC->http()->request()->getQueryParams()['reservation_id']);
1673  $ids = ilBookingReservation::getCancelDetails($obj_id, $user_id, $from, $to);
1674  $rsv = new ilBookingReservation($ids[0]);
1675  $obj = new ilBookingObject($rsv->getObjectId());
1676 
1677  $details = sprintf($this->lng->txt('X_reservations_of'), count($ids)) . ' ' . $obj->getTitle();
1678  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE) {
1679  $details .= ", " . ilDatePresentation::formatPeriod(
1680  new ilDateTime($rsv->getFrom(), IL_CAL_UNIX),
1681  new ilDateTime($rsv->getTo() + 1, IL_CAL_UNIX)
1682  );
1683  }
1684 
1685  $conf->addItem('rsv_ids', implode(',', $ids), $details);
1686  $this->tpl->setContent($conf->getHTML());
1687  }
a bookable ressource
global $DIC
Definition: saml.php:7
$from
const IL_CAL_UNIX
getTitle()
Get object title.
Date and time handling
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
static getCancelDetails($a_obj_id, $a_user_id, $a_from, $a_to)
Get reservation ids from aggregated id for cancellation.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Confirmation screen class.
+ Here is the call graph for this function:

◆ rsvDeleteObject()

ilObjBookingPoolGUI::rsvDeleteObject ( )

Definition at line 1689 of file class.ilObjBookingPoolGUI.php.

References $DIC, $id, $res, ilObjectGUI\checkPermissionBool(), logObject(), ilUtil\sendFailure(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

1690  {
1691  global $DIC;
1692  $get = $DIC->http()->request()->getParsedBody()['rsv_ids'];
1693  if ($get) {
1694  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1695  foreach (explode(',', $get) as $id) {
1696  $res = new ilBookingReservation($id);
1697  $obj = new ilBookingObject($res->getObjectId());
1698  if ($obj->getPoolId() != $this->object->getId() || !$this->checkPermissionBool("write")) {
1699  ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
1700  $this->ctrl->redirect($this, 'log');
1701  }
1702  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE) {
1703  $cal_entry_id = $res->getCalendarEntry();
1704  if ($cal_entry_id) {
1705  include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1706  $entry = new ilCalendarEntry($cal_entry_id);
1707  $entry->delete();
1708  }
1709  }
1710  $res->delete();
1711  }
1712  }
1713 
1714  ilUtil::sendSuccess($this->lng->txt('reservation_deleted'));
1715  $this->logObject();
1716  }
a bookable ressource
Model for a calendar entry.
global $DIC
Definition: saml.php:7
if(!array_key_exists('StateId', $_REQUEST)) $id
foreach($_POST as $key=> $value) $res
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
logObject()
List reservations.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:

◆ rsvInUseObject()

ilObjBookingPoolGUI::rsvInUseObject ( )

Definition at line 1718 of file class.ilObjBookingPoolGUI.php.

References $id, ilObjectGUI\checkPermission(), getLogReservationIds(), logObject(), and ilBookingReservation\STATUS_IN_USE.

1719  {
1720  $this->checkPermission("write");
1721 
1722  $ids = $this->getLogReservationIds();
1723  if ($ids) {
1724  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1725  foreach ($ids as $id) {
1726  $obj = new ilBookingReservation($id);
1727  $obj->setStatus(ilBookingReservation::STATUS_IN_USE);
1728  $obj->update();
1729  }
1730  }
1731 
1732  ilUtil::sendSuccess($this->lng->txt('settings_saved'));
1733  $this->logObject();
1734  }
if(!array_key_exists('StateId', $_REQUEST)) $id
logObject()
List reservations.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
+ Here is the call graph for this function:

◆ rsvNotInUseObject()

ilObjBookingPoolGUI::rsvNotInUseObject ( )

Definition at line 1736 of file class.ilObjBookingPoolGUI.php.

References $id, ilObjectGUI\checkPermission(), getLogReservationIds(), and logObject().

1737  {
1738  $this->checkPermission("write");
1739 
1740  $ids = $this->getLogReservationIds();
1741  if ($ids) {
1742  include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
1743  foreach ($ids as $id) {
1744  $obj = new ilBookingReservation($id);
1745  $obj->setStatus(null);
1746  $obj->update();
1747  }
1748  }
1749 
1750  ilUtil::sendSuccess($this->lng->txt('settings_saved'));
1751  $this->logObject();
1752  }
if(!array_key_exists('StateId', $_REQUEST)) $id
logObject()
List reservations.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
+ Here is the call graph for this function:

◆ saveMultipleBookingsObject()

ilObjBookingPoolGUI::saveMultipleBookingsObject ( )

Save multiple users reservations for one booking pool object.

//TODO check if object/user exist in the DB,

Definition at line 1912 of file class.ilObjBookingPoolGUI.php.

References $_POST, $id, processBooking(), and ilUtil\sendFailure().

1913  {
1914  if ($_POST["participants"] && $_POST['object_id']) {
1915  $participants = $_POST["participants"];
1916  $this->book_obj_id = $_POST['object_id'];
1917  } else {
1918  $this->ctrl->redirectByClass('ilbookingobjectgui', 'render');
1919  }
1920  $rsv_ids = array();
1921  foreach ($participants as $id) {
1922  $this->user_id_to_book = $id;
1923  $rsv_ids[] = $this->processBooking($this->book_obj_id);
1924  }
1925 
1926  if (sizeof($rsv_ids)) {
1927  ilUtil::sendSuccess("booking_multiple_succesfully");
1928  $this->ctrl->redirectByClass('ilbookingobjectgui', 'render');
1929  } else {
1930  ilUtil::sendFailure($this->lng->txt('book_reservation_failed_overbooked'), true);
1931  $this->ctrl->redirect($this, 'render');
1932  }
1933  }
if(!array_key_exists('StateId', $_REQUEST)) $id
processBooking($a_object_id, $a_from=null, $a_to=null, $a_group_id=null)
Book object for date.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$_POST["username"]
+ Here is the call graph for this function:

◆ saveNotificationObject()

ilObjBookingPoolGUI::saveNotificationObject ( )

Save notification.

Definition at line 1830 of file class.ilObjBookingPoolGUI.php.

References $_GET, ilObjectGUI\$ctrl, ilObjectGUI\$user, ilNotification\setNotification(), and ilNotification\TYPE_BOOK.

1831  {
1832  $ctrl = $this->ctrl;
1833  $user = $this->user;
1834 
1835 
1836  switch ($_GET["ntf"]) {
1837  case 0:
1838  ilNotification::setNotification(ilNotification::TYPE_BOOK, $user->getId(), $this->object->getId(), false);
1839  break;
1840 
1841  case 1:
1842  ilNotification::setNotification(ilNotification::TYPE_BOOK, $user->getId(), $this->object->getId(), true);
1843  break;
1844  }
1845  $ctrl->redirect($this, "render");
1846  }
$_GET["client_id"]
static setNotification($type, $user_id, $id, $status=true)
Set notification status for object and user.
+ Here is the call graph for this function:

◆ saveParticipant()

ilObjBookingPoolGUI::saveParticipant ( )
protected

Definition at line 1850 of file class.ilObjBookingPoolGUI.php.

Referenced by confirmedBookingNumbersObject(), and confirmedBookingObject().

1851  {
1852  include_once("./Modules/BookingManager/classes/class.ilBookingParticipant.php");
1853  $participant = new ilBookingParticipant($this->user_id_to_book, $this->object->getId());
1854  }
Class ilBookingParticipant.
+ Here is the caller graph for this function:

◆ setHelpId()

ilObjBookingPoolGUI::setHelpId (   $a_id)
protected

Definition at line 450 of file class.ilObjBookingPoolGUI.php.

References $help, and ilObjBookingPool\TYPE_FIX_SCHEDULE.

Referenced by bookObject(), rsvConfirmCancelAggregationObject(), and rsvConfirmCancelObject().

451  {
452  $ilHelp = $this->help;
453 
454  $object_subtype = ($this->object->getScheduleType() == ilObjBookingPool::TYPE_FIX_SCHEDULE)
455  ? '-schedule'
456  : '-nonschedule';
457 
458  $ilHelp->setScreenIdComponent('book');
459  $ilHelp->setScreenId('object' . $object_subtype);
460  $ilHelp->setSubScreenId($a_id);
461  }
+ Here is the caller graph for this function:

◆ setTabs()

ilObjBookingPoolGUI::setTabs ( )

get tabs

Definition at line 369 of file class.ilObjBookingPoolGUI.php.

References $help, $ilUser, ilObjectGUI\$user, ilObjectGUI\checkPermissionBool(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

370  {
371  $ilHelp = $this->help;
373 
374  if (in_array($this->ctrl->getCmd(), array("create", "save")) && !$this->ctrl->getNextClass()) {
375  return;
376  }
377 
378  $ilHelp->setScreenIdComponent("book");
379 
380  if ($this->checkPermissionBool('read')) {
381  if ($ilUser->getId() != ANONYMOUS_USER_ID) {
382  $this->tabs_gui->addTab(
383  "render",
384  $this->lng->txt("book_booking_types"),
385  $this->ctrl->getLinkTarget($this, "render")
386  );
387  }
388 
389  $this->tabs_gui->addTab(
390  "info",
391  $this->lng->txt("info_short"),
392  $this->ctrl->getLinkTarget($this, "infoscreen")
393  );
394 
395  if ($ilUser->getId() != ANONYMOUS_USER_ID || $this->object->hasPublicLog()) {
396  $this->tabs_gui->addTab(
397  "log",
398  $this->lng->txt("book_log"),
399  $this->ctrl->getLinkTarget($this, "log")
400  );
401  }
402  }
403 
404  if ($this->checkPermissionBool('write')) {
405  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE) {
406  $this->tabs_gui->addTab(
407  "schedules",
408  $this->lng->txt("book_schedules"),
409  $this->ctrl->getLinkTargetByClass("ilbookingschedulegui", "render")
410  );
411  }
412 
413  $this->tabs_gui->addTab(
414  "settings",
415  $this->lng->txt("settings"),
416  $this->ctrl->getLinkTarget($this, "edit")
417  );
418 
419  // meta data
420  include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
421  $mdgui = new ilObjectMetaDataGUI($this->object, "bobj");
422  $mdtab = $mdgui->getTab();
423  if ($mdtab) {
424  $this->tabs_gui->addTarget(
425  "meta_data",
426  $mdtab,
427  "",
428  "ilobjectmetadatagui"
429  );
430  }
431  }
432 
433  if ($this->checkPermissionBool('write')) {
434  $this->tabs_gui->addTab(
435  "participants",
436  $this->lng->txt("participants"),
437  $this->ctrl->getLinkTargetByClass("ilbookingparticipantgui", "render")
438  );
439  }
440 
441  if ($this->checkPermissionBool('edit_permission')) {
442  $this->tabs_gui->addTab(
443  "perm_settings",
444  $this->lng->txt("perm_settings"),
445  $this->ctrl->getLinkTargetByClass("ilpermissiongui", "perm")
446  );
447  }
448  }
Class ilObjectMetaDataGUI.
$ilUser
Definition: imgupload.php:18
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
+ Here is the call graph for this function:

◆ showNoScheduleMessage()

ilObjBookingPoolGUI::showNoScheduleMessage ( )

Show no schedule message.

Parameters

Definition at line 237 of file class.ilObjBookingPoolGUI.php.

References ilBookingSchedule\getList(), ilUtil\sendInfo(), and ilObjBookingPool\TYPE_NO_SCHEDULE.

Referenced by editObject().

238  {
239  // if we have no schedules yet - show info
240  include_once "Modules/BookingManager/classes/class.ilBookingSchedule.php";
241  if ($this->object->getScheduleType() != ilObjBookingPool::TYPE_NO_SCHEDULE &&
242  !sizeof(ilBookingSchedule::getList($this->object->getId()))) {
243  ilUtil::sendInfo($this->lng->txt("book_schedule_warning_edit"));
244  }
245  }
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getList($a_pool_id)
Get list of booking objects for given pool.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showProfileObject()

ilObjBookingPoolGUI::showProfileObject ( )

Definition at line 1754 of file class.ilObjBookingPoolGUI.php.

References ilObjectGUI\$ctrl, $ilCtrl, and ilObjectGUI\$tpl.

1755  {
1756  $tpl = $this->tpl;
1757  $ilCtrl = $this->ctrl;
1758 
1759  $this->tabs_gui->clearTargets();
1760 
1761  $user_id = $this->profile_user_id;
1762 
1763  include_once 'Services/User/classes/class.ilPublicUserProfileGUI.php';
1764  $profile = new ilPublicUserProfileGUI($user_id);
1765  $profile->setBackUrl($this->ctrl->getLinkTarget($this, 'log'));
1766  $tpl->setContent($ilCtrl->getHTML($profile));
1767  }
global $ilCtrl
Definition: ilias.php:18
GUI class for public user profile presentation.

◆ updateCustom()

ilObjBookingPoolGUI::updateCustom ( ilPropertyFormGUI  $a_form)
protected

Definition at line 331 of file class.ilObjBookingPoolGUI.php.

References ilObjectServiceSettingsGUI\CUSTOM_METADATA, ilPropertyFormGUI\getInput(), ilObjectGUI\getObjectService(), and ilObjectServiceSettingsGUI\updateServiceSettingsForm().

332  {
333  $obj_service = $this->getObjectService();
334 
335  $this->object->setOffline(!$a_form->getInput('online'));
336  $this->object->setReminderStatus($a_form->getInput('rmd'));
337  $this->object->setReminderDay($a_form->getInput('rmd_day'));
338  $this->object->setPublicLog($a_form->getInput('public'));
339  $this->object->setScheduleType($a_form->getInput('stype'));
340  $this->object->setOverallLimit($a_form->getInput('limit') ? $a_form->getInput('limit') : null);
341  $this->object->setReservationFilterPeriod(strlen($a_form->getInput('period')) ? (int) $a_form->getInput('period') : null);
342 
343  // tile image
344  $obj_service->commonSettings()->legacyForm($a_form, $this->object)->saveTileImage();
345 
346  include_once './Services/Container/classes/class.ilContainer.php';
347  include_once './Services/Object/classes/class.ilObjectServiceSettingsGUI.php';
349  $this->object->getId(),
350  $a_form,
352  );
353  }
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
static updateServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Update service settings.
getObjectService()
Get object service.
+ Here is the call graph for this function:

Field Documentation

◆ $help

ilObjBookingPoolGUI::$help
protected

Definition at line 33 of file class.ilObjBookingPoolGUI.php.

Referenced by setHelpId(), and setTabs().

◆ $nav_history

ilObjBookingPoolGUI::$nav_history
protected

Definition at line 28 of file class.ilObjBookingPoolGUI.php.

Referenced by executeCommand().

◆ $tabs

ilObjBookingPoolGUI::$tabs
protected

Definition at line 23 of file class.ilObjBookingPoolGUI.php.

Referenced by executeCommand().

◆ $user_id_assigner

ilObjBookingPoolGUI::$user_id_assigner
protected

Definition at line 43 of file class.ilObjBookingPoolGUI.php.

Referenced by __construct().

◆ $user_id_to_book

ilObjBookingPoolGUI::$user_id_to_book
protected

Definition at line 38 of file class.ilObjBookingPoolGUI.php.


The documentation for this class was generated from the following file: