/**
  * Gather data and build rows
  */
 function getItems()
 {
     global $ilUser;
     include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
     $data = ilBookingObject::getList($this->pool_id);
     include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
     foreach ($data as $item) {
         $item_id = $item["booking_object_id"];
         $item_rsv = ilBookingReservation::getList(array($item_id), 1000, 0, array());
         $this->reservations[$item_id] = $item_rsv["data"];
     }
     if (!$this->has_schedule && $this->overall_limit) {
         $this->current_bookings = 0;
         foreach ($this->reservations as $obj_rsv) {
             foreach ($obj_rsv as $item) {
                 if ($item["status"] != ilBookingReservation::STATUS_CANCELLED) {
                     if ($item["user_id"] == $ilUser->getId()) {
                         $this->current_bookings++;
                     }
                 }
             }
         }
         if ($this->current_bookings >= $this->overall_limit) {
             ilUtil::sendInfo($this->lng->txt("book_overall_limit_warning"));
         }
     }
     $this->setMaxCount(sizeof($data));
     $this->setData($data);
 }
 /**
  * Cancel consultation appointment or ressource booking, was confirmed
  * This will delete the calendar entry
  */
 public function cancelConfirmed()
 {
     global $ilUser;
     $entry = (int) $_POST['app_id'];
     $user = (int) $_GET['bkid'];
     include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
     $entry = new ilCalendarEntry($entry);
     $category = $this->calendarEntryToCategory($entry);
     if ($category->getType() == ilCalendarCategory::TYPE_CH) {
         // find cloned calendar entry in user calendar
         include_once 'Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php';
         $GLOBALS['ilLog']->dump($entry->getStart());
         $apps = ilConsultationHourAppointments::getAppointmentIds($ilUser->getId(), $entry->getContextId(), $entry->getStart(), ilCalendarCategory::TYPE_CH, false);
         $GLOBALS['ilLog']->dump($apps);
         // Fix for wrong, old entries
         foreach ((array) $apps as $own_app) {
             $ref_entry = new ilCalendarEntry($own_app);
             $ref_entry->delete();
         }
         include_once 'Services/Booking/classes/class.ilBookingEntry.php';
         $booking = new ilBookingEntry($entry->getContextId());
         $booking->cancelBooking($entry->getEntryId());
         // do NOT delete original entry
     } else {
         if ($category->getType() == ilCalendarCategory::TYPE_BOOK) {
             include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
             $booking = new ilBookingReservation($entry->getContextId());
             $booking->setStatus(ilBookingReservation::STATUS_CANCELLED);
             $booking->update();
             $entry->delete();
         }
     }
     ilUtil::sendSuccess($this->lng->txt('cal_cancel_booking_confirmed'), true);
     $this->ctrl->returnToParent($this);
 }
 public function deliverPostFile()
 {
     global $ilUser;
     $id = (int) $_GET["object_id"];
     if (!$id) {
         return;
     }
     include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
     $book_id = ilBookingReservation::getObjectReservationForUser($id, $ilUser->getId());
     $obj = new ilBookingReservation($book_id);
     if ($obj->getUserId() != $ilUser->getId()) {
         return;
     }
     include_once 'Modules/BookingManager/classes/class.ilBookingObject.php';
     $obj = new ilBookingObject($id);
     $file = $obj->getPostFileFullPath();
     if ($file) {
         ilUtil::deliverFile($file, $obj->getPostFile());
     }
 }
 function rsvNotInUseObject()
 {
     global $ilAccess;
     $this->tabs_gui->setTabActive('log');
     if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
         ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
         $this->ctrl->redirect($this, 'log');
     }
     $id = (int) $_GET['reservation_id'];
     include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
     $obj = new ilBookingReservation($id);
     $obj->setStatus(NULL);
     $obj->update();
     ilUtil::sendSuccess($this->lng->txt('settings_saved'));
     $this->logObject();
 }
 /**
  * Gather data and build rows
  * @param	array	$filter
  */
 function getItems(array $filter)
 {
     global $ilUser;
     $this->determineOffsetAndOrder();
     if (!$filter["object"]) {
         $ids = array_keys($this->objects);
     } else {
         $ids = array($filter["object"]);
     }
     include_once "Modules/BookingManager/classes/class.ilBookingReservation.php";
     $data = ilBookingReservation::getGroupedList($ids, $this->getLimit(), $this->getOffset(), $filter, $this->group_id);
     if (!$this->show_all) {
         foreach ($data['data'] as $idx => $item) {
             if ($item["user_id"] != $ilUser->getId()) {
                 unset($data['data'][$idx]);
             }
         }
     }
     $this->setData($data['data']);
     $this->setMaxCount($data['counter']);
 }
 function rsvNotInUseObject()
 {
     global $ilAccess;
     if (!$ilAccess->checkAccess("write", "", $this->ref_id)) {
         ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
         $this->ctrl->redirect($this, 'log');
     }
     $ids = $this->getLogReservationIds();
     if ($ids) {
         include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
         foreach ($ids as $id) {
             $obj = new ilBookingReservation($id);
             $obj->setStatus(NULL);
             $obj->update();
         }
     }
     ilUtil::sendSuccess($this->lng->txt('settings_saved'));
     $this->logObject();
 }
 /**
  * Fill table row
  * @param	array	$a_set
  */
 protected function fillRow($a_set)
 {
     global $lng, $ilCtrl, $ilUser;
     $has_booking = false;
     $booking_possible = true;
     $has_reservations = false;
     $this->tpl->setVariable("TXT_TITLE", $a_set["title"]);
     $this->tpl->setVariable("TXT_DESC", nl2br($a_set["description"]));
     if (!$this->has_schedule) {
         include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
         $reservation = ilBookingReservation::getList(array($a_set['booking_object_id']), 1000, 0, array());
         $cnt = 0;
         foreach ($reservation["data"] as $item) {
             if ($item["status"] != ilBookingReservation::STATUS_CANCELLED) {
                 $cnt++;
                 if ($item["user_id"] == $ilUser->getId()) {
                     $has_booking = true;
                 }
                 $has_reservations = true;
             }
         }
         $this->tpl->setVariable("VALUE_AVAIL", $a_set["nr_items"] - $cnt);
         $this->tpl->setVariable("VALUE_AVAIL_ALL", $a_set["nr_items"]);
         if ($a_set["nr_items"] <= $cnt || $has_booking) {
             $booking_possible = false;
         }
     } else {
         if (!$this->may_edit) {
             include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
             $reservation = ilBookingReservation::getList(array($a_set['booking_object_id']), 1000, 0, array());
             foreach ($reservation["data"] as $item) {
                 if ($item["status"] != ilBookingReservation::STATUS_CANCELLED && $item["user_id"] == $ilUser->getId()) {
                     $has_booking = true;
                 }
             }
         }
     }
     $items = array();
     $ilCtrl->setParameter($this->parent_obj, 'object_id', $a_set['booking_object_id']);
     if ($a_set['info_file']) {
         $items['info'] = array($lng->txt('book_download_info'), $ilCtrl->getLinkTarget($this->parent_obj, 'deliverInfo'));
     }
     if ($booking_possible) {
         $items['book'] = array($lng->txt('book_book'), $ilCtrl->getLinkTarget($this->parent_obj, 'book'));
     }
     if (!$this->schedule && $has_booking) {
         if (trim($a_set['post_text']) || $a_set['post_file']) {
             $items['post'] = array($lng->txt('book_post_booking_information'), $ilCtrl->getLinkTarget($this->parent_obj, 'displayPostInfo'));
         }
         $items['cancel'] = array($lng->txt('book_set_cancel'), $ilCtrl->getLinkTarget($this->parent_obj, 'rsvCancelUser'));
     }
     if ($this->may_edit || $has_booking) {
         $ilCtrl->setParameterByClass('ilObjBookingPoolGUI', 'object_id', $a_set['booking_object_id']);
         $items['log'] = array($lng->txt('book_log'), $ilCtrl->getLinkTargetByClass('ilObjBookingPoolGUI', 'log'));
         $ilCtrl->setParameterByClass('ilObjBookingPoolGUI', 'object_id', '');
     }
     if ($this->may_edit) {
         // #10890
         if (!$has_reservations) {
             $items['delete'] = array($lng->txt('delete'), $ilCtrl->getLinkTarget($this->parent_obj, 'confirmDelete'));
         }
         $items['edit'] = array($lng->txt('edit'), $ilCtrl->getLinkTarget($this->parent_obj, 'edit'));
     }
     if (sizeof($items)) {
         $this->tpl->setCurrentBlock("actions");
         foreach ($items as $item) {
             $this->tpl->setVariable("ACTION_CAPTION", $item[0]);
             $this->tpl->setVariable("ACTION_LINK", $item[1]);
             $this->tpl->parseCurrentBlock();
         }
     }
 }
 /**
  * Fill table row
  * @param	array	$a_set
  */
 protected function fillRow($a_set)
 {
     global $lng, $ilCtrl, $ilUser;
     $has_booking = false;
     $booking_possible = true;
     $has_reservations = false;
     $this->tpl->setVariable("TXT_TITLE", $a_set["title"]);
     $this->tpl->setVariable("TXT_DESC", nl2br($a_set["description"]));
     if (!$this->has_schedule) {
         include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
         $reservation = ilBookingReservation::getList(array($a_set['booking_object_id']), 1000, 0, array());
         $cnt = 0;
         $user_ids = array();
         foreach ($reservation["data"] as $item) {
             if ($item["status"] != ilBookingReservation::STATUS_CANCELLED) {
                 $cnt++;
                 $user_ids[$item["user_id"]] = ilObjUser::_lookupFullName($item['user_id']);
                 if ($item["user_id"] == $ilUser->getId()) {
                     $has_booking = true;
                 }
                 $has_reservations = true;
             }
         }
         $this->tpl->setVariable("VALUE_AVAIL", $a_set["nr_items"] - $cnt);
         $this->tpl->setVariable("VALUE_AVAIL_ALL", $a_set["nr_items"]);
         if ($a_set["nr_items"] <= $cnt) {
             $booking_possible = false;
         }
         if ($this->may_edit) {
             if ($user_ids) {
                 $this->tpl->setVariable("TXT_CURRENT_USER", implode("<br />", array_unique($user_ids)));
             } else {
                 $this->tpl->setVariable("TXT_CURRENT_USER", "");
             }
         }
     } else {
         if ($this->may_edit) {
             include_once 'Modules/BookingManager/classes/class.ilBookingReservation.php';
             $reservation = ilBookingReservation::getCurrentOrUpcomingReservation($a_set['booking_object_id']);
             if ($reservation) {
                 $date_from = new ilDateTime($reservation['date_from'], IL_CAL_UNIX);
                 $date_to = new ilDateTime($reservation['date_to'], IL_CAL_UNIX);
                 $this->tpl->setVariable("TXT_CURRENT_USER", ilObjUser::_lookupFullName($reservation['user_id']));
                 $this->tpl->setVariable("VALUE_DATE", ilDatePresentation::formatPeriod($date_from, $date_to));
                 $has_reservations = true;
             } else {
                 $this->tpl->setVariable("TXT_CURRENT_USER", "");
                 $this->tpl->setVariable("VALUE_DATE", "");
             }
         }
     }
     $items = array();
     $ilCtrl->setParameter($this->parent_obj, 'object_id', $a_set['booking_object_id']);
     if ($a_set['info_file']) {
         $items['info'] = array($lng->txt('book_download_info'), $ilCtrl->getLinkTarget($this->parent_obj, 'deliverInfo'));
     }
     if (!$has_booking) {
         if ($booking_possible) {
             $items['book'] = array($lng->txt('book_book'), $ilCtrl->getLinkTarget($this->parent_obj, 'book'));
         }
     } else {
         if (trim($a_set['post_text']) || $a_set['post_file']) {
             $items['post'] = array($lng->txt('book_post_booking_information'), $ilCtrl->getLinkTarget($this->parent_obj, 'displayPostInfo'));
         }
         $items['cancel'] = array($lng->txt('book_set_cancel'), $ilCtrl->getLinkTarget($this->parent_obj, 'rsvCancelUser'));
     }
     if ($this->may_edit) {
         // #10890
         if (!$has_reservations) {
             $items['delete'] = array($lng->txt('delete'), $ilCtrl->getLinkTarget($this->parent_obj, 'confirmDelete'));
         }
         $items['edit'] = array($lng->txt('edit'), $ilCtrl->getLinkTarget($this->parent_obj, 'edit'));
     }
     if (sizeof($items)) {
         $this->tpl->setCurrentBlock("actions");
         foreach ($items as $item) {
             $this->tpl->setVariable("ACTION_CAPTION", $item[0]);
             $this->tpl->setVariable("ACTION_LINK", $item[1]);
             $this->tpl->parseCurrentBlock();
         }
     }
 }
 /**
  * Gather data and build rows
  * @param	array	$filter
  */
 function getItems(array $filter)
 {
     $this->determineOffsetAndOrder();
     $ids = array();
     include_once "Modules/BookingManager/classes/class.ilBookingObject.php";
     foreach (ilBookingObject::getList($this->pool_id) as $item) {
         $ids[] = $item["booking_object_id"];
     }
     include_once "Modules/BookingManager/classes/class.ilBookingReservation.php";
     $data = ilBookingReservation::getList($ids, $this->getLimit(), $this->getOffset(), $filter);
     $this->setMaxCount($data['counter']);
     $this->setData($data['data']);
 }
 /**
  * Gather data and build rows
  * @param	array	$filter
  */
 function getItems(array $filter)
 {
     global $ilUser;
     $this->determineOffsetAndOrder();
     if (!$filter["object"]) {
         $ids = array_keys($this->objects);
     } else {
         $ids = array($filter["object"]);
     }
     if (!$this->show_all) {
         $filter["user_id"] = $ilUser->getId();
     }
     include_once "Modules/BookingManager/classes/class.ilBookingReservation.php";
     $data = ilBookingReservation::getListByDate($this->has_schedule, $ids, $this->getOrderField(), $this->getOrderDirection(), $this->getOffset(), $this->getLimit(), $filter);
     $this->setData($data['data']);
     $this->setMaxCount($data['counter']);
 }