diff options
author | msquare <msquare@notrademark.de> | 2017-07-28 19:15:52 +0200 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2017-07-28 19:15:52 +0200 |
commit | a0af8d4624be9ca8579817d291036a6727aeb574 (patch) | |
tree | 869e7c39a3ec05aa6a4e478b51eb59bbf42746d1 /includes/view | |
parent | 5794c4cab8f6ef0529dfc51343b5ec78b134fb2a (diff) |
further switching to db exceptions instead of return false
Diffstat (limited to 'includes/view')
-rw-r--r-- | includes/view/ShiftCalendarLane.php | 5 | ||||
-rw-r--r-- | includes/view/ShiftCalendarRenderer.php | 82 |
2 files changed, 45 insertions, 42 deletions
diff --git a/includes/view/ShiftCalendarLane.php b/includes/view/ShiftCalendarLane.php index 774683bd..251b8013 100644 --- a/includes/view/ShiftCalendarLane.php +++ b/includes/view/ShiftCalendarLane.php @@ -38,15 +38,14 @@ class ShiftCalendarLane * Returns true on success. * * @param array $shift The shift to add - * @return boolean true on success */ public function addShift($shift) { if ($this->shiftFits($shift)) { $this->shifts[] = $shift; - return true; + return; } - return false; + throw new Exception('Unable to add shift to shift calendar lane.'); } /** diff --git a/includes/view/ShiftCalendarRenderer.php b/includes/view/ShiftCalendarRenderer.php index aad0d643..df24ad3b 100644 --- a/includes/view/ShiftCalendarRenderer.php +++ b/includes/view/ShiftCalendarRenderer.php @@ -1,9 +1,9 @@ <?php - namespace Engelsystem; class ShiftCalendarRenderer { + /** * 15m * 60s/m = 900s */ @@ -49,10 +49,10 @@ class ShiftCalendarRenderer /** * ShiftCalendarRenderer constructor. * - * @param array[] $shifts - * @param array[] $needed_angeltypes - * @param array[] $shift_entries - * @param ShiftsFilter $shiftsFilter + * @param array[] $shifts + * @param array[] $needed_angeltypes + * @param array[] $shift_entries + * @param ShiftsFilter $shiftsFilter */ public function __construct($shifts, $needed_angeltypes, $shift_entries, ShiftsFilter $shiftsFilter) { @@ -67,22 +67,23 @@ class ShiftCalendarRenderer /** * Assigns the shifts to different lanes per room if they collide * - * @param array[] $shifts The shifts to assign - * + * @param array[] $shifts + * The shifts to assign + * * @return array Returns an array that assigns a room_id to an array of ShiftCalendarLane containing the shifts */ private function assignShiftsToLanes($shifts) { // array that assigns a room id to a list of lanes (per room) $lanes = []; - + foreach ($shifts as $shift) { $room_id = $shift['RID']; $header = Room_name_render([ - 'RID' => $room_id, + 'RID' => $room_id, 'Name' => $shift['room_name'] ]); - if (!isset($lanes[$room_id])) { + if (! isset($lanes[$room_id])) { // initialize room with one lane $lanes[$room_id] = [ new ShiftCalendarLane($header, $this->getFirstBlockStartTime(), $this->getBlocksPerSlot()) @@ -92,25 +93,25 @@ class ShiftCalendarRenderer $shift_added = false; foreach ($lanes[$room_id] as $lane) { /** @var ShiftCalendarLane $lane */ - $shift_added = $lane->addShift($shift); - if ($shift_added == true) { + try { + $lane->addShift($shift); + } catch (Exception $e) { break; } } // If all lanes for this room are busy, create a new lane and add shift to it if ($shift_added == false) { $newLane = new ShiftCalendarLane($header, $this->getFirstBlockStartTime(), $this->getBlocksPerSlot()); - if (!$newLane->addShift($shift)) { - engelsystem_error('Unable to add shift to new lane.'); - } + $newLane->addShift($shift); $lanes[$room_id][] = $newLane; } } - + return $lanes; } /** + * * @return int */ public function getFirstBlockStartTime() @@ -119,6 +120,7 @@ class ShiftCalendarRenderer } /** + * * @return int */ public function getLastBlockEndTime() @@ -127,6 +129,7 @@ class ShiftCalendarRenderer } /** + * * @return float */ public function getBlocksPerSlot() @@ -148,9 +151,9 @@ class ShiftCalendarRenderer return ''; } return div('shift-calendar', [ - $this->renderTimeLane(), - $this->renderShiftLanes() - ]) . $this->renderLegend(); + $this->renderTimeLane(), + $this->renderShiftLanes() + ]) . $this->renderLegend(); } /** @@ -166,45 +169,41 @@ class ShiftCalendarRenderer $html .= $this->renderLane($lane); } } - + return $html; } /** * Renders a single lane * - * @param ShiftCalendarLane $lane The lane to render + * @param ShiftCalendarLane $lane + * The lane to render * @return string */ private function renderLane(ShiftCalendarLane $lane) { global $user; - + $shift_renderer = new ShiftCalendarShiftRenderer(); $html = ''; $rendered_until = $this->getFirstBlockStartTime(); - + foreach ($lane->getShifts() as $shift) { while ($rendered_until + ShiftCalendarRenderer::SECONDS_PER_ROW <= $shift['start']) { $html .= $this->renderTick($rendered_until); $rendered_until += ShiftCalendarRenderer::SECONDS_PER_ROW; } - - list($shift_height, $shift_html) = $shift_renderer->render( - $shift, - $this->needed_angeltypes[$shift['SID']], - $this->shift_entries[$shift['SID']], - $user - ); + + list ($shift_height, $shift_html) = $shift_renderer->render($shift, $this->needed_angeltypes[$shift['SID']], $this->shift_entries[$shift['SID']], $user); $html .= $shift_html; $rendered_until += $shift_height * ShiftCalendarRenderer::SECONDS_PER_ROW; } - + while ($rendered_until < $this->getLastBlockEndTime()) { $html .= $this->renderTick($rendered_until); $rendered_until += ShiftCalendarRenderer::SECONDS_PER_ROW; } - + return div('lane', [ div('header', $lane->getHeader()), $html @@ -214,21 +213,23 @@ class ShiftCalendarRenderer /** * Renders a tick/block for given time * - * @param int $time unix timestamp - * @param boolean $label Should time labels be generated? + * @param int $time + * unix timestamp + * @param boolean $label + * Should time labels be generated? * @return string rendered tick html */ private function renderTick($time, $label = false) { if ($time % (24 * 60 * 60) == 23 * 60 * 60) { - if (!$label) { + if (! $label) { return div('tick day'); } return div('tick day', [ date('m-d<b\r />H:i', $time) ]); } elseif ($time % (60 * 60) == 0) { - if (!$label) { + if (! $label) { return div('tick hour'); } return div('tick hour', [ @@ -250,7 +251,7 @@ class ShiftCalendarRenderer _('Time') ]) ]; - for ($block = 0; $block < $this->getBlocksPerSlot(); $block++) { + for ($block = 0; $block < $this->getBlocksPerSlot(); $block ++) { $thistime = $this->getFirstBlockStartTime() + ($block * ShiftCalendarRenderer::SECONDS_PER_ROW); $time_slot[] = $this->renderTick($thistime, true); } @@ -258,7 +259,8 @@ class ShiftCalendarRenderer } /** - * @param array[] $shifts + * + * @param array[] $shifts * @return int */ private function calcFirstBlockStartTime($shifts) @@ -273,7 +275,8 @@ class ShiftCalendarRenderer } /** - * @param array[] $shifts + * + * @param array[] $shifts * @return int */ private function calcLastBlockEndTime($shifts) @@ -288,6 +291,7 @@ class ShiftCalendarRenderer } /** + * * @return int */ private function calcBlocksPerSlot() |