public function getAllDownloadsForUser($user, $conn = null){ $loggerID = $this->getUniqLoggerID(); Logger::info($loggerID."getAllDownloadsForUser called."); $haveToClose = false; if($conn == null) { $haveToClose = true; $conn = $this->getConnection(); } $result = array(); if($conn){ $storedUser = $this->getUserById($user->ID, true, $conn); if($storedUser != null) { foreach ($this->getUploadCategories($conn) as $category) { if (strtolower($category->Name) == "unknown") continue; $catContent = array(); $catName = $category->Name; $catPath = $this->downloadsUrl . $category->FolderName . '/'; foreach ($this->getUploadFolders($category->ID, $conn) as $folder) { $folderContent = array(); $folderName = $folder->Name; $folderPath = $catPath . $folder->Name . '/'; $hasAccess = $folder->AccessForAll > 0; if(!$hasAccess) { foreach ($folder->UserGroups as $groupIdInFile) { foreach ($user->Groups as $userGroup) { /* @var $userGroup UserGroup */ if ((int)$userGroup->ID == (int)$groupIdInFile) { $hasAccess = true; break 2; } } } } if(!$hasAccess){ foreach($folder->Users as $userIdInFile){ if((int)$userIdInFile == (int)$user->ID){ $hasAccess = true; break; } } } if(!$hasAccess) continue; foreach ($this->getUploads($folder->ID, $conn) as $file) { $item = new stdClass(); $item->Name = $file->FileName; $item->URL = $folderPath . $file->FileName . '.' . $category->Extension; array_push($folderContent, $item); } if(count($folderContent) > 0) $catContent[$folderName] = $folderContent; } $result[$catName] = $catContent; } } } Logger::info($loggerID."getAllDownloadsForUser result: ".var_export($result,true)); if($haveToClose) $this->killConnection($conn,$loggerID); return $result; }