*/ class MonitorService extends ConfigurableService implements Breadcrumbs { const SERVICE_ID = 'taoProctoring/Monitor/breadcrumbs'; /** * Builds breadcrumbs for a particular route. * @param string $route - The route URL * @param array $parsedRoute - The parsed URL (@see parse_url), augmented with extension, controller and action * @return array|null - The breadcrumb related to the route, or `null` if none. Must contains: * - id: the route id * - url: the route url * - label: the label displayed for the breadcrumb * - entries: a list of related links, using the same format as above */ public function breadcrumbs($route, $parsedRoute) { if (isset($parsedRoute['action'])) { switch ($parsedRoute['action']) { case 'index': return $this->breadcrumbsIndex($route, $parsedRoute); } } return null; } /** * Gets the breadcrumbs for the index page * @param string $route * @param array $parsedRoute * @return array */ protected function breadcrumbsIndex($route, $parsedRoute) { $routeContext = null; $routeDelivery = null; if (isset($parsedRoute['params'])) { if (isset($parsedRoute['params']['delivery'])) { $routeDelivery = $parsedRoute['params']['delivery']; } if (isset($parsedRoute['params']['context'])) { $routeContext = $parsedRoute['params']['context']; } } $service = $this->getServiceManager()->get(ProctorService::SERVICE_ID); $proctor = \common_session_SessionManager::getSession()->getUser(); $deliveries = $service->getProctorableDeliveries($proctor, $routeContext); $entries = array(); $main = null; foreach ($deliveries as $delivery) { $deliveryId = $delivery->getUri(); $crumb = [ 'id' => $deliveryId, 'url' => _url('index', 'Monitor', 'taoProctoring', ['delivery' => $deliveryId, 'context' => $routeContext]), 'label' => $delivery->getLabel(), ]; if ($deliveryId == $routeDelivery) { $main = $crumb; } else { $entries[] = $crumb; } } if ($main) { $main['entries'] = $entries; } return $main; } }