/** * Get remote folder structure * * @param string $service Service name (google or dropbox) * @param integer $uid User ID * @param array &$remoteFolders Collector array * @param string $path * * @return NULL */ public function getFolderStructure($service = 'google', $uid = 0, &$remoteFolders, $path = '') { // Get api $apiService = $this->getAPI($service, $uid); if (!$apiService) { if (!$this->getError()) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_SYNC_API_UNAVAILABLE')); } return false; } if ($service == 'google') { // Get remote folder ID $folderID = $this->getConfigParam($service, 'remote_dir_id'); $folderName = $this->getConfigParam($service, 'remote_dir'); // Check that master folder is there try { $folder = $apiService->files->get($folderID); if ($folder && $folder['labels']['trashed'] == 1) { // Untrash Google::untrashItem($apiService, $folderID); } if ($folder && $folder['title'] != $folderName) { // Save renamed reference $obj = new \Components\Projects\Tables\Project($this->_db); $obj->saveParam($this->model->get('id'), $service . '_dir', $folder['title']); } } catch (Exception $e) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_SYNC_SERVICE_UNAVAILABLE')); return false; } Google::getFolders($apiService, $folderID, $remoteFolders, $path); } return true; }