ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilBookingReservation Class Reference

a booking reservation More...

+ Collaboration diagram for ilBookingReservation:

Public Member Functions

 __construct ($a_id=NULL)
 Constructor. More...
 
 getId ()
 Get id. More...
 
 setObjectId ($a_object_id)
 Set object id. More...
 
 getObjectId ()
 Get object id. More...
 
 setUserId ($a_user_id)
 Set booking user id. More...
 
 getUserId ()
 Get booking user id. More...
 
 setFrom ($a_from)
 Set booking from date. More...
 
 getFrom ()
 Get booking from date. More...
 
 setTo ($a_to)
 Set booking to date. More...
 
 getTo ()
 Get booking to date. More...
 
 setStatus ($a_status)
 Set booking status. More...
 
 getStatus ()
 Get booking status. More...
 
 setGroupId ($a_group_id)
 Set group id. More...
 
 getGroupId ()
 Get group id. More...
 
 save ()
 Create new entry in db. More...
 
 update ()
 Update entry in db. More...
 
 delete ()
 Delete single entry. More...
 
 getCalendarEntry ()
 

Static Public Member Functions

static isValidStatus ($a_status)
 Check if given status is valid. More...
 
static getNewGroupId ()
 Get next group id
More...
 
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. More...
 
static isObjectAvailableInPeriod ($a_obj_id, ilBookingSchedule $a_schedule, $a_from, $a_to)
 
static isObjectAvailableNoSchedule ($a_obj_id)
 
static getCurrentOrUpcomingReservation ($a_object_id)
 Get details about object reservation. More...
 
static getObjectReservationForUser ($a_object_id, $a_user_id, $a_multi=false)
 
static getList ($a_object_ids, $a_limit=10, $a_offset=0, array $filter)
 List all reservations. More...
 
static getListByDate ($a_has_schedule, array $a_object_ids, array $filter=null)
 List all reservations by date. More...
 
static getUserFilter (array $a_object_ids)
 Get all users who have reservations for object(s) More...
 
static changeStatus (array $a_ids, $a_status)
 List all reservations. More...
 
static getCancelDetails ($a_obj_id, $a_user_id, $a_from, $a_to)
 Get reservation ids from aggregated id for cancellation. More...
 

Data Fields

const STATUS_IN_USE = 2
 
const STATUS_CANCELLED = 5
 

Protected Member Functions

 read ()
 Get dataset from db. More...
 

Protected Attributes

 $id
 
 $object_id
 
 $user_id
 
 $from
 
 $to
 
 $status
 
 $group_id
 

Detailed Description

a booking reservation

Author
Jörg Lützenkirchen luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

Definition at line 12 of file class.ilBookingReservation.php.

Constructor & Destructor Documentation

◆ __construct()

ilBookingReservation::__construct (   $a_id = NULL)

Constructor.

if id is given will read dataset from db

Parameters
int$a_id

Definition at line 32 of file class.ilBookingReservation.php.

33 {
34 $this->id = (int)$a_id;
35 $this->read();
36 }

References read().

+ Here is the call graph for this function:

Member Function Documentation

◆ changeStatus()

static ilBookingReservation::changeStatus ( array  $a_ids,
  $a_status 
)
static

List all reservations.

Parameters
array$a_object_ids
int$a_limit
int$a_offset
array$filter
array$a_group_id
Returns
array Batch update reservation status
Parameters
array$a_ids
int$a_status
Returns
bool

Definition at line 1008 of file class.ilBookingReservation.php.

1009 {
1010 global $ilDB;
1011
1012 if(self::isValidStatus($a_status))
1013 {
1014 return $ilDB->manipulate('UPDATE booking_reservation'.
1015 ' SET status = '.$ilDB->quote($a_status, 'integer').
1016 ' WHERE '.$ilDB->in('booking_reservation_id', $a_ids, '', 'integer'));
1017
1018 }
1019 }
global $ilDB

References $ilDB.

Referenced by ilObjBookingPoolGUI\changeStatusObject().

+ Here is the caller graph for this function:

◆ delete()

ilBookingReservation::delete ( )

Delete single entry.

Returns
bool

Definition at line 261 of file class.ilBookingReservation.php.

262 {
263 global $ilDB;
264
265 if($this->id)
266 {
267 return $ilDB->manipulate('DELETE FROM booking_reservation'.
268 ' WHERE booking_reservation_id = '.$ilDB->quote($this->id, 'integer'));
269 }
270 }

References $ilDB.

◆ getAvailableObject()

static ilBookingReservation::getAvailableObject ( array  $a_ids,
  $a_from,
  $a_to,
  $a_return_single = true,
  $a_return_counter = false 
)
static

Check if any of given objects are bookable.

Parameters
array$a_ids
int$a_from
int$a_to
int$a_return_single
Returns
int

Definition at line 291 of file class.ilBookingReservation.php.

292 {
293 global $ilDB;
294
296
297 $from = $ilDB->quote($a_from, 'integer');
298 $to = $ilDB->quote($a_to, 'integer');
299
300 $set = $ilDB->query('SELECT count(*) cnt, object_id'.
301 ' FROM booking_reservation'.
302 ' WHERE '.$ilDB->in('object_id', $a_ids, '', 'integer').
303 ' AND (status IS NULL OR status <> '.$ilDB->quote(self::STATUS_CANCELLED, 'integer').')'.
304 ' AND ((date_from <= '.$from.' AND date_to >= '.$from.')'.
305 ' OR (date_from <= '.$to.' AND date_to >= '.$to.')'.
306 ' OR (date_from >= '.$from.' AND date_to <= '.$to.'))'.
307 ' GROUP BY object_id');
308 $blocked = $counter = array();
309 while($row = $ilDB->fetchAssoc($set))
310 {
311 if($row['cnt'] >= $nr_map[$row['object_id']])
312 {
313 $blocked[] = $row['object_id'];
314 }
315 else if($a_return_counter)
316 {
317 $counter[$row['object_id']] = (int)$nr_map[$row['object_id']]-(int)$row['cnt'];
318 }
319 }
320
321 // #17868 - validate against schedule availability
322 foreach($a_ids as $obj_id)
323 {
324 $bobj = new ilBookingObject($obj_id);
325 if($bobj->getScheduleId())
326 {
327 include_once "Modules/BookingManager/classes/class.ilBookingSchedule.php";
328 $schedule = new ilBookingSchedule($bobj->getScheduleId());
329
330 $av_from = ($schedule->getAvailabilityFrom() && !$schedule->getAvailabilityFrom()->isNull())
331 ? $schedule->getAvailabilityFrom()->get(IL_CAL_UNIX)
332 : null;
333 $av_to = ($schedule->getAvailabilityTo() && !$schedule->getAvailabilityTo()->isNull())
334 ? strtotime($schedule->getAvailabilityTo()->get(IL_CAL_DATE)." 23:59:59")
335 : null;
336
337 if(($av_from && $a_from < $av_from) ||
338 ($av_to && $a_to > $av_to))
339 {
340 $blocked[] = $obj_id;
341 unset($counter[$obj_id]);
342 }
343 }
344 }
345
346 $available = array_diff($a_ids, $blocked);
347 if(sizeof($available))
348 {
349 if($a_return_counter)
350 {
351 foreach($a_ids as $id)
352 {
353 if(!isset($counter[$id]))
354 {
355 $counter[$id] = (int)$nr_map[$id];
356 }
357 }
358 return $counter;
359 }
360 else if($a_return_single)
361 {
362 return array_shift($available);
363 }
364 else
365 {
366 return $available;
367 }
368 }
369 }
const IL_CAL_DATE
const IL_CAL_UNIX
a bookable ressource
static getNrOfItemsForObjects(array $a_obj_ids)
Get nr of available items
schedule for booking ressource

References $from, $id, $ilDB, $row, $to, ilBookingObject\getNrOfItemsForObjects(), IL_CAL_DATE, and IL_CAL_UNIX.

Referenced by ilObjBookingPoolGUI\buildDatesBySchedule(), ilObjBookingPoolGUI\confirmedBookingNumbersObject(), and ilObjBookingPoolGUI\confirmedBookingObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCalendarEntry()

ilBookingReservation::getCalendarEntry ( )

Definition at line 1021 of file class.ilBookingReservation.php.

1022 {
1023 global $ilDB;
1024
1025 include_once 'Services/Calendar/classes/class.ilCalendarCategory.php';
1026
1027 $set = $ilDB->query("SELECT ce.cal_id FROM cal_entries ce".
1028 " JOIN cal_cat_assignments cca ON ce.cal_id = cca.cal_id".
1029 " JOIN cal_categories cc ON cca.cat_id = cc.cat_id".
1030 " JOIN booking_reservation br ON ce.context_id = br.booking_reservation_id".
1031 " WHERE cc.obj_id = ".$ilDB->quote($this->getUserId(),'integer').
1032 " AND br.user_id = ".$ilDB->quote($this->getUserId(),'integer').
1033 " AND cc.type = ".$ilDB->quote(ilCalendarCategory::TYPE_BOOK,'integer').
1034 " AND ce.context_id = ".$ilDB->quote($this->getId(), 'integer'));
1035 $row = $ilDB->fetchAssoc($set);
1036 return $row["cal_id"];
1037 }

References $ilDB, $row, and ilCalendarCategory\TYPE_BOOK.

◆ getCancelDetails()

static ilBookingReservation::getCancelDetails (   $a_obj_id,
  $a_user_id,
  $a_from,
  $a_to 
)
static

Get reservation ids from aggregated id for cancellation.

Parameters
int$a_obj_id
int$a_user_id
int$a_from
int$a_to
Returns
array

Definition at line 1048 of file class.ilBookingReservation.php.

1049 {
1050 global $ilDB;
1051
1052 $res = array();
1053
1054 $sql = "SELECT booking_reservation_id".
1055 " FROM booking_reservation".
1056 " WHERE object_id = ".$ilDB->quote($a_obj_id, "integer").
1057 " AND user_id = ".$ilDB->quote($a_user_id, "integer").
1058 " AND date_from = ".$ilDB->quote($a_from, "integer").
1059 " AND date_to = ".$ilDB->quote($a_to, "integer").
1060 " AND (status IS NULL".
1061 " OR status <> ".$ilDB->quote(self::STATUS_CANCELLED, "integer").")";
1062 $set = $ilDB->query($sql);
1063 while($row = $ilDB->fetchAssoc($set))
1064 {
1065 $res[] = $row["booking_reservation_id"];
1066 }
1067
1068 return $res;
1069 }

References $ilDB, $res, and $row.

Referenced by ilObjBookingPoolGUI\rsvConfirmCancelObject().

+ Here is the caller graph for this function:

◆ getCurrentOrUpcomingReservation()

static ilBookingReservation::getCurrentOrUpcomingReservation (   $a_object_id)
static

Get details about object reservation.

Parameters
int$a_object_id
Returns
array

Definition at line 478 of file class.ilBookingReservation.php.

479 {
480 global $ilDB;
481
482 $now = $ilDB->quote(time(), 'integer');
483
484 $ilDB->setLimit(1);
485 $set = $ilDB->query('SELECT user_id, status, date_from, date_to'.
486 ' FROM booking_reservation'.
487 ' WHERE ((date_from <= '.$now.' AND date_to >= '.$now.')'.
488 ' OR date_from > '.$now.')'.
489 ' AND (status <> '.$ilDB->quote(self::STATUS_CANCELLED, 'integer').
490 ' OR STATUS IS NULL) AND object_id = '.$ilDB->quote($a_object_id, 'integer').
491 ' ORDER BY date_from');
492 $row = $ilDB->fetchAssoc($set);
493 return $row;
494 }

References $ilDB, and $row.

◆ getFrom()

ilBookingReservation::getFrom ( )

Get booking from date.

Returns
int

Definition at line 96 of file class.ilBookingReservation.php.

97 {
98 return $this->from;
99 }

References $from.

◆ getGroupId()

ilBookingReservation::getGroupId ( )

Get group id.

Returns
int

Definition at line 171 of file class.ilBookingReservation.php.

References $group_id.

◆ getId()

ilBookingReservation::getId ( )

Get id.

Returns
int

Definition at line 42 of file class.ilBookingReservation.php.

43 {
44 return $this->id;
45 }

References $id.

◆ getList()

static ilBookingReservation::getList (   $a_object_ids,
  $a_limit = 10,
  $a_offset = 0,
array  $filter 
)
static

List all reservations.

Parameters
array$a_object_ids
int$a_limit
int$a_offset
array$a_offset
Returns
array

Definition at line 529 of file class.ilBookingReservation.php.

530 {
531 global $ilDB;
532
533 $sql = 'SELECT r.*,o.title'.
534 ' FROM booking_reservation r'.
535 ' JOIN booking_object o ON (o.booking_object_id = r.object_id)';
536
537 $count_sql = 'SELECT COUNT(*) AS counter'.
538 ' FROM booking_reservation r'.
539 ' JOIN booking_object o ON (o.booking_object_id = r.object_id)';
540
541 $where = array($ilDB->in('r.object_id', $a_object_ids, '', 'integer'));
542 if($filter['status'])
543 {
544 if($filter['status'] > 0)
545 {
546 $where[] = 'status = '.$ilDB->quote($filter['status'], 'integer');
547 }
548 else
549 {
550 $where[] = '(status != '.$ilDB->quote(-$filter['status'], 'integer').
551 ' OR status IS NULL)';
552 }
553 }
554 if($filter['from'])
555 {
556 $where[] = 'date_from >= '.$ilDB->quote($filter['from'], 'integer');
557 }
558 if($filter['to'])
559 {
560 $where[] = 'date_to <= '.$ilDB->quote($filter['to'], 'integer');
561 }
562 if(sizeof($where))
563 {
564 $sql .= ' WHERE '.implode(' AND ', $where);
565 $count_sql .= ' WHERE '.implode(' AND ', $where);
566 }
567
568 $set = $ilDB->query($count_sql);
569 $row = $ilDB->fetchAssoc($set);
570 $counter = $row['counter'];
571
572 $sql .= ' ORDER BY date_from DESC, booking_reservation_id DESC';
573
574 $ilDB->setLimit($a_limit, $a_offset);
575 $set = $ilDB->query($sql);
576 $res = array();
577 while($row = $ilDB->fetchAssoc($set))
578 {
579 $res[] = $row;
580 }
581
582 return array('data'=>$res, 'counter'=>$counter);
583 }

References $ilDB, $res, and $row.

Referenced by ilBookingObjectsTableGUI\getItems().

+ Here is the caller graph for this function:

◆ getListByDate()

static ilBookingReservation::getListByDate (   $a_has_schedule,
array  $a_object_ids,
array  $filter = null 
)
static

List all reservations by date.

Parameters
bool$a_has_schedule
array$a_object_ids
string$a_order_field
string$a_order_direction
int$a_offset
int$a_limit
array$filter
Returns
array

Definition at line 596 of file class.ilBookingReservation.php.

597 {
598 global $ilDB;
599
600 $res = array();
601
602 $sql = 'SELECT r.*, o.title'.
603 ' FROM booking_reservation r'.
604 ' JOIN booking_object o ON (o.booking_object_id = r.object_id)';
605
606 $where = array($ilDB->in('object_id', $a_object_ids, '', 'integer'));
607 if($filter['status'])
608 {
609 if($filter['status'] > 0)
610 {
611 $where[] = 'status = '.$ilDB->quote($filter['status'], 'integer');
612 }
613 else
614 {
615 $where[] = '(status != '.$ilDB->quote(-$filter['status'], 'integer').
616 ' OR status IS NULL)';
617 }
618 }
619 if($filter['title'])
620 {
621 $where[] = '('.$ilDB->like('title', 'text', '%'.$filter['title'].'%').
622 ' OR '.$ilDB->like('description', 'text', '%'.$filter['title'].'%').')';
623 }
624 if($a_has_schedule)
625 {
626 if($filter['from'])
627 {
628 $where[] = 'date_from >= '.$ilDB->quote($filter['from'], 'integer');
629 }
630 if($filter['to'])
631 {
632 $where[] = 'date_to <= '.$ilDB->quote($filter['to'], 'integer');
633 }
634 }
635 if($filter['user_id']) // #16584
636 {
637 $where[] = 'user_id = '.$ilDB->quote($filter['user_id'], 'integer');
638 }
639 /*
640 if($a_group_id)
641 {
642 $where[] = 'group_id = '.$ilDB->quote(substr($a_group_id, 1), 'integer');
643 }
644 */
645 if(sizeof($where))
646 {
647 $sql .= ' WHERE '.implode(' AND ', $where);
648 }
649
650 if($a_has_schedule)
651 {
652 $sql .= ' ORDER BY date_from DESC';
653 }
654 else
655 {
656 // #16155 - could be cancelled and re-booked
657 $sql .= ' ORDER BY status';
658 }
659
660 $set = $ilDB->query($sql);
661 while($row = $ilDB->fetchAssoc($set))
662 {
663 $obj_id = $row["object_id"];
664 $user_id = $row["user_id"];
665
666 if($a_has_schedule)
667 {
668 $slot = $row["date_from"]."_".$row["date_to"];
669 $idx = $obj_id."_".$user_id."_".$slot;
670 }
671 else
672 {
673 $idx = $obj_id."_".$user_id;
674 }
675
676 if($a_has_schedule && $filter["slot"])
677 {
678 $slot_idx = date("w", $row["date_from"])."_".date("H:i", $row["date_from"]).
679 "-".date("H:i", $row["date_to"]+1);
680 if($filter["slot"] != $slot_idx)
681 {
682 continue;
683 }
684 }
685
686 if(!isset($res[$idx]))
687 {
689
690 $res[$idx] = array(
691 "object_id" => $obj_id
692 ,"title" => $row["title"]
693 ,"user_id" => $user_id
694 ,"counter" => 1
695 ,"user_name" => $uname["lastname"].", ".$uname["firstname"] // #17862
696 );
697
698 if($a_has_schedule)
699 {
700 $res[$idx]["booking_reservation_id"] = $idx;
701 $res[$idx]["date"] = date("Y-m-d", $row["date_from"]);
702 $res[$idx]["slot"] = date("H:i", $row["date_from"])." - ".
703 date("H:i", $row["date_to"]+1);
704 $res[$idx]["week"] = date("W", $row["date_from"]);
705 $res[$idx]["weekday"] = date("w", $row["date_from"]);
706 $res[$idx]["can_be_cancelled"] = ($row["status"] != self::STATUS_CANCELLED &&
707 $row["date_from"] > time());
708 $res[$idx]["_sortdate"] = $row["date_from"];
709 }
710 else
711 {
712 $res[$idx]["booking_reservation_id"] = $row["booking_reservation_id"];
713 $res[$idx]["status"] = $row["status"];
714 $res[$idx]["can_be_cancelled"] = ($row["status"] != self::STATUS_CANCELLED);
715 }
716 }
717 else
718 {
719 $res[$idx]["counter"]++;
720 }
721 }
722
723 return $res;
724 }
static _lookupName($a_user_id)
lookup user name

References $ilDB, $res, $row, $user_id, ilObjUser\_lookupName(), and STATUS_CANCELLED.

Referenced by ilBookingReservationsTableGUI\getItems().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNewGroupId()

static ilBookingReservation::getNewGroupId ( )
static

Get next group id

Returns
int

Definition at line 276 of file class.ilBookingReservation.php.

277 {
278 global $ilDB;
279
280 return $ilDB->nextId('booking_reservation_group');
281 }

References $ilDB.

Referenced by ilObjBookingPoolGUI\confirmedBookingObject().

+ Here is the caller graph for this function:

◆ getObjectId()

ilBookingReservation::getObjectId ( )

Get object id.

Returns
int

Definition at line 60 of file class.ilBookingReservation.php.

References $object_id.

◆ getObjectReservationForUser()

static ilBookingReservation::getObjectReservationForUser (   $a_object_id,
  $a_user_id,
  $a_multi = false 
)
static

Definition at line 496 of file class.ilBookingReservation.php.

497 {
498 global $ilDB;
499
500 $set = $ilDB->query('SELECT booking_reservation_id FROM booking_reservation'.
501 ' WHERE user_id = '.$ilDB->quote($a_user_id, 'integer').
502 ' AND object_id = '.$ilDB->quote($a_object_id, 'integer').
503 ' AND (status <> '.$ilDB->quote(self::STATUS_CANCELLED, 'integer').
504 ' OR STATUS IS NULL)');
505 if(!$a_multi)
506 {
507 $row = $ilDB->fetchAssoc($set);
508 return $row['booking_reservation_id'];
509 }
510 else
511 {
512 $res = array();
513 while($row = $ilDB->fetchAssoc($set))
514 {
515 $res[] = $row['booking_reservation_id'];
516 }
517 return $res;
518 }
519 }

References $ilDB, $res, and $row.

Referenced by ilObjBookingPoolGUI\confirmedBookingObject(), ilBookingObjectGUI\deliverPostFile(), ilBookingObjectGUI\displayPostInfo(), and ilBookingObjectGUI\rsvCancelUser().

+ Here is the caller graph for this function:

◆ getStatus()

ilBookingReservation::getStatus ( )

Get booking status.

Returns
int

Definition at line 139 of file class.ilBookingReservation.php.

References $status.

◆ getTo()

ilBookingReservation::getTo ( )

Get booking to date.

Returns
int

Definition at line 114 of file class.ilBookingReservation.php.

115 {
116 return $this->to;
117 }

References $to.

◆ getUserFilter()

static ilBookingReservation::getUserFilter ( array  $a_object_ids)
static

Get all users who have reservations for object(s)

Parameters
array$a_object_ids
Returns
array

Definition at line 732 of file class.ilBookingReservation.php.

733 {
734 global $ilDB;
735
736 $res = array();
737
738 $sql = "SELECT ud.usr_id,ud.lastname,ud.firstname,ud.login".
739 " FROM usr_data ud ".
740 " LEFT JOIN booking_reservation r ON (r.user_id = ud.usr_id)".
741 " WHERE ud.usr_id <> ".$ilDB->quote(ANONYMOUS_USER_ID, "integer").
742 " AND ".$ilDB->in("r.object_id", $a_object_ids, "", "integer").
743 " ORDER BY ud.lastname,ud.firstname";
744 $set = $ilDB->query($sql);
745 while($row = $ilDB->fetchAssoc($set))
746 {
747 $res[$row["usr_id"]] = $row["lastname"].", ".$row["firstname"].
748 " (".$row["login"].")";
749 }
750
751 return $res;
752 }

References $ilDB, $res, and $row.

Referenced by ilBookingReservationsTableGUI\initFilter().

+ Here is the caller graph for this function:

◆ getUserId()

ilBookingReservation::getUserId ( )

Get booking user id.

Returns
int

Definition at line 78 of file class.ilBookingReservation.php.

79 {
80 return $this->user_id;
81 }

References $user_id.

◆ isObjectAvailableInPeriod()

static ilBookingReservation::isObjectAvailableInPeriod (   $a_obj_id,
ilBookingSchedule  $a_schedule,
  $a_from,
  $a_to 
)
static

Definition at line 371 of file class.ilBookingReservation.php.

372 {
373 global $ilDB;
374
375 if(!$a_from)
376 {
377 $a_from = time();
378 }
379 if(!$a_to)
380 {
381 $a_to = strtotime("+1year", $a_from);
382 }
383
384 if($a_from > $a_to)
385 {
386 return;
387 }
388
389 $from = $ilDB->quote($a_from, 'integer');
390 $to = $ilDB->quote($a_to, 'integer');
391
392 // all bookings in period
393 $set = $ilDB->query('SELECT count(*) cnt'.
394 ' FROM booking_reservation'.
395 ' WHERE object_id = '.$ilDB->quote($a_obj_id, 'integer').
396 ' AND (status IS NULL OR status <> '.$ilDB->quote(self::STATUS_CANCELLED, 'integer').')'.
397 ' AND ((date_from <= '.$from.' AND date_to >= '.$from.')'.
398 ' OR (date_from <= '.$to.' AND date_to >= '.$to.')'.
399 ' OR (date_from >= '.$from.' AND date_to <= '.$to.'))');
400 $row = $ilDB->fetchAssoc($set);
401 $booked_in_period = $row["cnt"];
402
403 $per_slot = ilBookingObject::getNrOfItemsForObjects(array($a_obj_id));
404 $per_slot = $per_slot[$a_obj_id];
405
406 // max available nr of items per (week)day
407 $schedule_slots = array();
408 $definition = $a_schedule->getDefinition();
409 $map = array_flip(array("su", "mo", "tu", "we", "th", "fr", "sa"));
410 foreach($definition as $day => $day_slots)
411 {
412 $schedule_slots[$map[$day]] = $day_slots;
413 }
414
415 $av_from = ($a_schedule->getAvailabilityFrom() && !$a_schedule->getAvailabilityFrom()->isNull())
416 ? $a_schedule->getAvailabilityFrom()->get(IL_CAL_UNIX)
417 : null;
418 $av_to = ($a_schedule->getAvailabilityTo() && !$a_schedule->getAvailabilityTo()->isNull())
419 ? strtotime($a_schedule->getAvailabilityTo()->get(IL_CAL_DATE)." 23:59:59")
420 : null;
421
422 // sum up max available items in period per (week)day
423 $available_in_period = 0;
424 $loop = 0;
425 while($a_from < $a_to &&
426 ++$loop < 1000)
427 {
428 // any slots for current weekday?
429 $day_slots = $schedule_slots[date("w", $a_from)];
430 if($day_slots)
431 {
432 foreach($day_slots as $slot)
433 {
434 // convert slot to current datetime
435 $slot = explode("-", $slot);
436 $slot_from = strtotime(date("Y-m-d", $a_from)." ".$slot[0]);
437 $slot_to = strtotime(date("Y-m-d", $a_from)." ".$slot[1]);
438
439 // slot has to be in the future and part of schedule availability
440 if($slot_to > time() &&
441 $slot_from >= $av_from &&
442 $slot_to <= $av_to)
443 {
444 $available_in_period += $per_slot;
445 }
446 }
447 }
448
449 $a_from += (60*60*24);
450 }
451
452 return (bool)($available_in_period-$booked_in_period);
453 }
getAvailabilityTo()
Get availability end.
getAvailabilityFrom()
Get availability start.
getDefinition()
Get definition.

References $from, $ilDB, $row, $to, ilBookingSchedule\getAvailabilityFrom(), ilBookingSchedule\getAvailabilityTo(), ilBookingSchedule\getDefinition(), ilBookingObject\getNrOfItemsForObjects(), IL_CAL_DATE, and IL_CAL_UNIX.

Referenced by ilBookingObjectsTableGUI\getItems().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isObjectAvailableNoSchedule()

static ilBookingReservation::isObjectAvailableNoSchedule (   $a_obj_id)
static

Definition at line 455 of file class.ilBookingReservation.php.

456 {
457 global $ilDB;
458
459 $all = ilBookingObject::getNrOfItemsForObjects(array($a_obj_id));
460 $all = (int)$all[$a_obj_id];
461
462 $set = $ilDB->query('SELECT COUNT(*) cnt'.
463 ' FROM booking_reservation r'.
464 ' JOIN booking_object o ON (o.booking_object_id = r.object_id)'.
465 ' WHERE (status IS NULL OR status <> '.$ilDB->quote(self::STATUS_CANCELLED, 'integer').')'.
466 ' AND r.object_id = '.$ilDB->quote($a_obj_id, 'integer'));
467 $cnt = $ilDB->fetchAssoc($set);
468 $cnt = (int)$cnt['cnt'];
469
470 return (bool)($all-$cnt); // #11864
471 }

References $ilDB, and ilBookingObject\getNrOfItemsForObjects().

Referenced by ilObjBookingPoolGUI\confirmedBookingObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isValidStatus()

static ilBookingReservation::isValidStatus (   $a_status)
static

Check if given status is valid.

Parameters
int$a_status
Returns
bool

Definition at line 149 of file class.ilBookingReservation.php.

150 {
151 if(in_array($a_status, array(self::STATUS_IN_USE, self::STATUS_CANCELLED)))
152 {
153 return true;
154 }
155 return false;
156 }

Referenced by setStatus().

+ Here is the caller graph for this function:

◆ read()

ilBookingReservation::read ( )
protected

Get dataset from db.

Definition at line 179 of file class.ilBookingReservation.php.

180 {
181 global $ilDB;
182
183 if($this->id)
184 {
185 $set = $ilDB->query('SELECT *'.
186 ' FROM booking_reservation'.
187 ' WHERE booking_reservation_id = '.$ilDB->quote($this->id, 'integer'));
188 $row = $ilDB->fetchAssoc($set);
189 $this->setUserId($row['user_id']);
190 $this->setObjectId($row['object_id']);
191 $this->setFrom($row['date_from']);
192 $this->setTo($row['date_to']);
193 $this->setStatus($row['status']);
194 $this->setGroupId($row['group_id']);
195 }
196 }
setTo($a_to)
Set booking to date.
setObjectId($a_object_id)
Set object id.
setFrom($a_from)
Set booking from date.
setGroupId($a_group_id)
Set group id.
setStatus($a_status)
Set booking status.
setUserId($a_user_id)
Set booking user id.

References $ilDB, $row, setFrom(), setGroupId(), setObjectId(), setStatus(), setTo(), and setUserId().

Referenced by __construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ save()

ilBookingReservation::save ( )

Create new entry in db.

Returns
bool

Definition at line 202 of file class.ilBookingReservation.php.

203 {
204 global $ilDB;
205
206 if($this->id)
207 {
208 return false;
209 }
210
211 $this->id = $ilDB->nextId('booking_reservation');
212
213 return $ilDB->manipulate('INSERT INTO booking_reservation'.
214 ' (booking_reservation_id,user_id,object_id,date_from,date_to,status,group_id)'.
215 ' VALUES ('.$ilDB->quote($this->id, 'integer').
216 ','.$ilDB->quote($this->getUserId(), 'integer').
217 ','.$ilDB->quote($this->getObjectId(), 'integer').
218 ','.$ilDB->quote($this->getFrom(), 'integer').
219 ','.$ilDB->quote($this->getTo(), 'integer').
220 ','.$ilDB->quote($this->getStatus(), 'integer').
221 ','.$ilDB->quote($this->getGroupId(), 'integer').')');
222 }

References $ilDB.

◆ setFrom()

ilBookingReservation::setFrom (   $a_from)

Set booking from date.

Parameters
int$a_from

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

88 {
89 $this->from = (int)$a_from;
90 }

Referenced by read().

+ Here is the caller graph for this function:

◆ setGroupId()

ilBookingReservation::setGroupId (   $a_group_id)

Set group id.

Parameters
int$a_group_id

Definition at line 162 of file class.ilBookingReservation.php.

163 {
164 $this->group_id = $a_group_id;
165 }

Referenced by read().

+ Here is the caller graph for this function:

◆ setObjectId()

ilBookingReservation::setObjectId (   $a_object_id)

Set object id.

Parameters
int$a_object_id

Definition at line 51 of file class.ilBookingReservation.php.

52 {
53 $this->object_id = $a_object_id;
54 }

Referenced by read().

+ Here is the caller graph for this function:

◆ setStatus()

ilBookingReservation::setStatus (   $a_status)

Set booking status.

Parameters
int$a_status

Definition at line 123 of file class.ilBookingReservation.php.

124 {
125 if($a_status === NULL)
126 {
127 $this->status = NULL;
128 }
129 if($this->isValidStatus((int)$a_status))
130 {
131 $this->status = (int)$a_status;
132 }
133 }
static isValidStatus($a_status)
Check if given status is valid.

References isValidStatus().

Referenced by read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setTo()

ilBookingReservation::setTo (   $a_to)

Set booking to date.

Parameters
int$a_to

Definition at line 105 of file class.ilBookingReservation.php.

106 {
107 $this->to = (int)$a_to;
108 }

Referenced by read().

+ Here is the caller graph for this function:

◆ setUserId()

ilBookingReservation::setUserId (   $a_user_id)

Set booking user id.

Parameters
int$a_user_id

Definition at line 69 of file class.ilBookingReservation.php.

70 {
71 $this->user_id = (int)$a_user_id;
72 }

Referenced by read().

+ Here is the caller graph for this function:

◆ update()

ilBookingReservation::update ( )

Update entry in db.

Returns
bool

Definition at line 228 of file class.ilBookingReservation.php.

229 {
230 global $ilDB;
231
232 if(!$this->id)
233 {
234 return false;
235 }
236
237 /* there can only be 1
238 if($this->getStatus() == self::STATUS_IN_USE)
239 {
240 $ilDB->manipulate('UPDATE booking_reservation'.
241 ' SET status = '.$ilDB->quote(NULL, 'integer').
242 ' WHERE object_id = '.$ilDB->quote($this->getObjectId(), 'integer').
243 ' AND status = '.$ilDB->quote(self::STATUS_IN_USE, 'integer'));
244 }
245 */
246
247 return $ilDB->manipulate('UPDATE booking_reservation'.
248 ' SET object_id = '.$ilDB->quote($this->getObjectId(), 'text').
249 ', user_id = '.$ilDB->quote($this->getUserId(), 'integer').
250 ', date_from = '.$ilDB->quote($this->getFrom(), 'integer').
251 ', date_to = '.$ilDB->quote($this->getTo(), 'integer').
252 ', status = '.$ilDB->quote($this->getStatus(), 'integer').
253 ', group_id = '.$ilDB->quote($this->getGroupId(), 'integer').
254 ' WHERE booking_reservation_id = '.$ilDB->quote($this->id, 'integer'));
255 }

References $ilDB.

Field Documentation

◆ $from

ilBookingReservation::$from
protected

◆ $group_id

ilBookingReservation::$group_id
protected

Definition at line 20 of file class.ilBookingReservation.php.

Referenced by getGroupId().

◆ $id

ilBookingReservation::$id
protected

Definition at line 14 of file class.ilBookingReservation.php.

Referenced by getAvailableObject(), and getId().

◆ $object_id

ilBookingReservation::$object_id
protected

Definition at line 15 of file class.ilBookingReservation.php.

Referenced by getObjectId().

◆ $status

ilBookingReservation::$status
protected

Definition at line 19 of file class.ilBookingReservation.php.

Referenced by getStatus().

◆ $to

ilBookingReservation::$to
protected

◆ $user_id

ilBookingReservation::$user_id
protected

Definition at line 16 of file class.ilBookingReservation.php.

Referenced by getListByDate(), and getUserId().

◆ STATUS_CANCELLED

◆ STATUS_IN_USE


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