public function findOneAdminByWorkspaceAndTag(Workspace $workspace, WorkspaceTag $tag) { $dql = ' SELECT rwt FROM Claroline\\CoreBundle\\Entity\\Workspace\\RelWorkspaceTag rwt JOIN rwt.workspace w JOIN rwt.tag t WHERE t.user IS NULL AND w.id = :workspaceId AND t.id = :tagId '; $query = $this->_em->createQuery($dql); $query->setParameter('workspaceId', $workspace->getId()); $query->setParameter('tagId', $tag->getId()); return $query->getOneOrNullResult(); }
/** * Checks if given tag or at least one of its children is associated to a workspace. * * @param int $tagId * @param array $tagWorkspaces * @param array $hierarchy * * @return bool */ private function isTagDisplayable(WorkspaceTag $tag, array $tagWorkspaces, array $hierarchy) { $displayable = false; $tagId = $tag->getId(); if (isset($tagWorkspaces[$tagId]) && count($tagWorkspaces[$tagId]) > 0 || !is_null($tag->getWorkspace())) { $displayable = true; } else { if (isset($hierarchy[$tagId]) && count($hierarchy[$tagId]) > 0) { $children = $hierarchy[$tagId]; foreach ($children as $child) { $displayable = $this->isTagDisplayable($child, $tagWorkspaces, $hierarchy); if ($displayable) { break; } } } } return $displayable; }
protected static function createWorkspaceTag($name, User $user = null) { $tag = new WorkspaceTag(); $tag->setName($name); $tag->setUser($user); self::create($name, $tag); }
/** * @EXT\Route( * "admin/tag/{workspaceTagId}/link/workspace/{workspaceId}", * name="claro_admin_workspace_tag_link_workspace", * defaults={"workspaceId"=null}, * options={"expose"=true} * ) * @EXT\Method("POST") * @EXT\ParamConverter( * "workspaceTag", * class="ClarolineCoreBundle:Workspace\WorkspaceTag", * options={"id" = "workspaceTagId", "strictId" = true} * ) * @EXT\ParamConverter( * "workspace", * class="ClarolineCoreBundle:Workspace\Workspace", * options={"id" = "workspaceId", "strictId" = true} * ) * * Associate a Workspace Tag to a Workspace * * @return Response */ public function adminWorkspaceTagLinkWorkspaceAction(WorkspaceTag $workspaceTag, Workspace $workspace = null) { if (!$this->authorization->isGranted('ROLE_ADMIN')) { throw new AccessDeniedException(); } if (is_null($workspaceTag->getUser())) { $this->tagManager->linkWorkspace($workspaceTag, $workspace); } return new Response('success', 204); }