mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
Add a method to fetch useable quantity of a resource
This commit is contained in:
parent
00204e1070
commit
5ef339dc9b
@ -838,6 +838,53 @@ class resources_bo
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param $_res_id
|
||||
* @param $_starttime
|
||||
* @param $_endtime
|
||||
* @return array|null returns array of resource data with calculated useable quantity
|
||||
*/
|
||||
function checkUseable($_res_id, $_starttime, $_endtime)
|
||||
{
|
||||
$resource = $this->read($_res_id);
|
||||
if ($resource && $resource['bookable'])
|
||||
{
|
||||
//get a calendar objet for reservations
|
||||
if ( (!isset($this->bocal)) || !(is_object($this->bocal)))
|
||||
{
|
||||
$this->bocal = new calendar_bo();
|
||||
}
|
||||
$overlapping_events =& $this->bocal->search(array(
|
||||
'start' => $_starttime,
|
||||
'end' => $_endtime,
|
||||
'users' => ['r'.$_res_id],
|
||||
'ignore_acl' => true, // otherwise we get only events readable by the user
|
||||
'enum_groups' => false, // otherwise group-events would not block time
|
||||
));
|
||||
|
||||
foreach($overlapping_events as $event)
|
||||
{
|
||||
if ($event['non_blocking']) continue; // ignore non_blocking events
|
||||
// now we are interested only on resources booked by theses events
|
||||
if (isset($event['participants']) && is_array($event['participants'])){
|
||||
foreach($event['participants'] as $part_key => $part_detail){
|
||||
if ($part_key{0}=='r')
|
||||
{
|
||||
$resource_id=substr($part_key,1);
|
||||
if ($resource_id != $_res_id) continue;
|
||||
$quantity = 1;
|
||||
$this->bocal->so->split_status($part_detail,$quantity);
|
||||
$resource['useable']-=$quantity;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $resource;
|
||||
}
|
||||
|
||||
/**
|
||||
* get title for an infolog entry identified by $res_id
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user