/** * Wrapper to access ResourceNode accessibleUntil property. * * @return \DateTime */ public function getAccessibleUntil() { if (!empty($this->activity)) { return $this->activity->getResourceNode()->getAccessibleUntil(); } return; }
/** * Wrapper to access Activity name * @return string */ public function getName() { if (!empty($this->activity)) { return $this->activity->getResourceNode()->getName(); } else { return ''; } }
/** * @EXT\Route( * "/workspace/manager/activity/{activityId}/evaluations/page/{page}", * name="claro_workspace_manager_activity_evaluations_show", * defaults={"page"=1} * ) * @EXT\ParamConverter("currentUser", options={"authenticatedUser" = true}) * @EXT\ParamConverter( * "activity", * class="ClarolineCoreBundle:Resource\Activity", * options={"id" = "activityId", "strictId" = true} * ) * @EXT\Template("ClarolineCoreBundle:Tool/workspace/analytics:workspaceManagerActivityEvaluations.html.twig") * * Displays evaluations of an activity for each user of the workspace * * @return Response * * @throws \Exception */ public function workspaceManagerActivityEvaluationsShowAction(User $currentUser, Activity $activity, $page) { $roleNames = $currentUser->getRoles(); $workspace = $activity->getResourceNode()->getWorkspace(); $isWorkspaceManager = $this->isWorkspaceManager($workspace, $roleNames); if (!$isWorkspaceManager) { throw new AccessDeniedException(); } $resourceNode = $activity->getResourceNode(); $activityParams = $activity->getParameters(); $roles = $this->roleManager->getRolesWithRightsByResourceNode($resourceNode); $usersPager = $this->userManager->getUsersByRolesIncludingGroups($roles, $page); $users = array(); foreach ($usersPager as $user) { $users[] = $user; } $allEvaluations = $this->activityManager->getEvaluationsByUsersAndActivityParams($users, $activityParams); $evaluations = array(); foreach ($allEvaluations as $evaluation) { $user = $evaluation->getUser(); $evaluations[$user->getId()] = $evaluation; } $nbSuccess = 0; foreach ($users as $user) { if (!isset($evaluations[$user->getId()])) { $evaluations[$user->getId()] = $this->activityManager->createBlankEvaluation($user, $activityParams); } $status = $evaluations[$user->getId()]->getStatus(); if ($status === AbstractEvaluation::STATUS_COMPLETED || $status === AbstractEvaluation::STATUS_PASSED) { $nbSuccess++; } } $progress = count($users) > 0 ? round($nbSuccess / count($users), 2) * 100 : 0; $ruleScore = null; if ($activityParams->getEvaluationType() === AbstractEvaluation::TYPE_AUTOMATIC && count($activityParams->getRules()) > 0) { $rule = $activityParams->getRules()->first(); $score = $rule->getResult(); $scoreMax = $rule->getResultMax(); if (!is_null($score)) { $ruleScore = $score; if (!is_null($scoreMax)) { $ruleScore .= ' / ' . $scoreMax; } } } return array('analyticsTab' => 'activities', 'activity' => $activity, 'activityParams' => $activityParams, 'workspace' => $workspace, 'users' => $usersPager, 'page' => $page, 'evaluations' => $evaluations, 'ruleScore' => $ruleScore, 'progress' => $progress); }
/** * What does it do ? I can't remember. It's annoying. * Initialize the resource permissions of an activity. * * @param Activity $activity */ public function initializePermissions(Activity $activity) { $primary = $activity->getPrimaryResource(); $secondaries = []; $nodes = []; $token = $this->tokenStorage->getToken(); $user = $token === null ? $activity->getResourceNode()->getCreator() : $token->getUser(); if ($primary) { $nodes[] = $primary; } foreach ($activity->getParameters()->getSecondaryResources() as $res) { $secondaries[] = $res; } $nodes = array_merge($nodes, $secondaries); $nodesInitialized = []; foreach ($nodes as $node) { $isNodeCreator = $node->getCreator() === $user; $ws = $node->getWorkspace(); $roleWsManager = $this->roleRepo->findManagerRole($ws); $isWsManager = $user->hasRole($roleWsManager); if ($isNodeCreator || $isWsManager) { $nodesInitialized[] = $node; } } $rolesInitialized = []; $rights = $activity->getResourceNode()->getRights(); foreach ($rights as $right) { $role = $right->getRole(); if (!strpos('_' . $role->getName(), 'ROLE_WS_MANAGER') && $right->getMask() & 1) { $rolesInitialized[] = $role; } } $this->rightsManager->initializePermissions($nodesInitialized, $rolesInitialized); }