示例#1
0
 public function findSearchedUnregisteredUsersByTeam(Team $team, $search = '', $orderedBy = 'firstName', $order = 'ASC', $executeQuery = true)
 {
     $dql = "\n            SELECT DISTINCT u\n            FROM Claroline\\CoreBundle\\Entity\\User u\n            WHERE u.isRemoved = false\n            AND (\n                u IN (\n                    SELECT DISTINCT u1\n                    FROM Claroline\\CoreBundle\\Entity\\User u1\n                    JOIN u1.roles r1 WITH r1 IN (\n                        SELECT r12\n                        FROM Claroline\\CoreBundle\\Entity\\Role r12\n                        WHERE r12.workspace = :workspace\n                    )\n                    WHERE u1.isRemoved = false\n                )\n                OR u IN (\n                    SELECT DISTINCT u2\n                    FROM Claroline\\CoreBundle\\Entity\\User u2\n                    JOIN u2.groups g\n                    JOIN g.roles r2 WITH r2 IN (\n                        SELECT r22\n                        FROM Claroline\\CoreBundle\\Entity\\Role r22\n                        WHERE r22.workspace = :workspace\n                    )\n                    WHERE u2.isRemoved = false\n                )\n            )\n            AND u NOT IN (\n                SELECT DISTINCT u3\n                FROM Claroline\\CoreBundle\\Entity\\User u3\n                WHERE EXISTS (\n                    SELECT t\n                    FROM Claroline\\TeamBundle\\Entity\\Team t\n                    JOIN t.users u4\n                    WHERE t = :team\n                    AND u4 = u3\n                )\n            )\n            AND u NOT IN (\n                SELECT DISTINCT u5\n                FROM Claroline\\CoreBundle\\Entity\\User u5\n                JOIN u5.roles r5 WITH r5 IN (\n                    SELECT r52\n                    FROM Claroline\\CoreBundle\\Entity\\Role r52\n                    WHERE r52.workspace = :workspace\n                    AND r52.name = :workspaceManagerName\n                )\n                WHERE u5.isRemoved = false\n            )\n            AND u NOT IN (\n                SELECT DISTINCT u6\n                FROM Claroline\\CoreBundle\\Entity\\User u6\n                JOIN u6.groups g2\n                JOIN g2.roles r6 WITH r6 IN (\n                    SELECT r62\n                    FROM Claroline\\CoreBundle\\Entity\\Role r62\n                    WHERE r62.workspace = :workspace\n                    AND r62.name = :workspaceManagerName\n                )\n                WHERE u6.isRemoved = false\n            )\n            AND\n            (\n                UPPER(u.firstName) LIKE :search\n                OR UPPER(u.lastName) LIKE :search\n                OR UPPER(u.username) LIKE :search\n            )\n            ORDER BY u.{$orderedBy} {$order}\n        ";
     $query = $this->_em->createQuery($dql);
     $workspace = $team->getWorkspace();
     $query->setParameter('workspace', $workspace);
     $query->setParameter('team', $team);
     $query->setParameter('workspaceManagerName', 'ROLE_WS_MANAGER_' . $workspace->getGuid());
     $upperSearch = strtoupper($search);
     $query->setParameter('search', "%{$upperSearch}%");
     return $executeQuery ? $query->getResult() : $query;
 }
示例#2
0
 public function initializeTeamDirectoryPerms(Team $team)
 {
     $directory = $team->getDirectory();
     if (!is_null($directory)) {
         $this->om->startFlushSuite();
         $workspace = $team->getWorkspace();
         $teamRole = $team->getRole();
         $teamManagerRole = $team->getTeamManagerRole();
         $isPublic = $team->getIsPublic();
         $node = $directory->getResourceNode();
         $workspaceRoles = $this->roleManager->getRolesByWorkspace($workspace);
         foreach ($workspaceRoles as $role) {
             if ($role->getId() !== $teamRole->getId() && $role->getId() !== $teamManagerRole->getId()) {
                 $rights = array();
                 if ($isPublic) {
                     $rights['open'] = true;
                 }
                 $this->rightsManager->editPerms($rights, $role, $node, true);
             }
         }
         $this->om->endFlushSuite();
     }
 }
示例#3
0
 private function isTeamManager(Team $team, User $user)
 {
     return $user === $team->getTeamManager();
 }