コード例 #1
0
ファイル: ToolManager.php プロジェクト: ngydat/CoreBundle
 public function getPersonalWorkspaceToolConfigAsArray()
 {
     $roles = $this->roleManager->getAllPlatformRoles();
     $availableTools = $this->getAvailableWorkspaceTools();
     $data = [];
     foreach ($roles as $role) {
         $data[$role->getId()] = array();
         $perms = $this->pwsToolConfigRepo->findByRole($role);
         if ($perms === array() || $perms === null) {
             foreach ($availableTools as $availableTool) {
                 $data[$role->getId()][$availableTool->getId()] = array('toolId' => $availableTool->getId(), 'name' => $availableTool->getName(), 'mask' => 0, 'id' => 0);
             }
         } else {
             $tools = [];
             foreach ($perms as $perm) {
                 $tools[$perm->getTool()->getId()] = array('toolId' => $perm->getTool()->getId(), 'name' => $perm->getTool()->getName(), 'mask' => $perm->getMask(), 'id' => $perm->getId());
             }
             //then we'll have to add the missing roles
             //[ ADD MISSING ROLES HERE]
             foreach ($availableTools as $availableTool) {
                 $found = false;
                 foreach ($tools as $tool) {
                     if ($tool['name'] === $availableTool->getName()) {
                         $found = true;
                     }
                 }
                 if (!$found) {
                     $tools[$availableTool->getId()] = array('toolId' => $availableTool->getId(), 'name' => $availableTool->getName(), 'mask' => 0, 'id' => null);
                 }
             }
             $data[$role->getId()] = $tools;
         }
     }
     //order the array so we can use it easily.
     return $data;
 }