Changeset View
Changeset View
Standalone View
Standalone View
src/applications/phrequent/storage/PhrequentTimeBlock.php
Show All 31 Lines | public function getObjectTimeRanges($now) { | ||||
foreach ($this->events as $event) { | foreach ($this->events as $event) { | ||||
// First, convert each event's preempting stack into a linear timeline | // First, convert each event's preempting stack into a linear timeline | ||||
// of events. | // of events. | ||||
$timeline = array(); | $timeline = array(); | ||||
$timeline[] = array( | $timeline[] = array( | ||||
'event' => $event, | 'event' => $event, | ||||
'at' => $event->getDateStarted(), | 'at' => (int)$event->getDateStarted(), | ||||
'type' => 'start', | 'type' => 'start', | ||||
); | ); | ||||
$timeline[] = array( | $timeline[] = array( | ||||
'event' => $event, | 'event' => $event, | ||||
'at' => nonempty($event->getDateEnded(), $now), | 'at' => (int)nonempty($event->getDateEnded(), $now), | ||||
'type' => 'end', | 'type' => 'end', | ||||
); | ); | ||||
$base_phid = $event->getObjectPHID(); | $base_phid = $event->getObjectPHID(); | ||||
$preempts = $event->getPreemptingEvents(); | $preempts = $event->getPreemptingEvents(); | ||||
foreach ($preempts as $preempt) { | foreach ($preempts as $preempt) { | ||||
$same_object = ($preempt->getObjectPHID() == $base_phid); | $same_object = ($preempt->getObjectPHID() == $base_phid); | ||||
$timeline[] = array( | $timeline[] = array( | ||||
'event' => $preempt, | 'event' => $preempt, | ||||
'at' => $preempt->getDateStarted(), | 'at' => (int)$preempt->getDateStarted(), | ||||
'type' => $same_object ? 'start' : 'push', | 'type' => $same_object ? 'start' : 'push', | ||||
); | ); | ||||
$timeline[] = array( | $timeline[] = array( | ||||
'event' => $preempt, | 'event' => $preempt, | ||||
'at' => nonempty($preempt->getDateEnded(), $now), | 'at' => (int)nonempty($preempt->getDateEnded(), $now), | ||||
'type' => $same_object ? 'end' : 'pop', | 'type' => $same_object ? 'end' : 'pop', | ||||
); | ); | ||||
} | } | ||||
// Now, figure out how much time was actually spent working on the | // Now, figure out how much time was actually spent working on the | ||||
// object. | // object. | ||||
usort($timeline, array(__CLASS__, 'sortTimeline')); | usort($timeline, array(__CLASS__, 'sortTimeline')); | ||||
▲ Show 20 Lines • Show All 203 Lines • Show Last 20 Lines |