/** * Create remote folder * * @param integer $projectid Project ID * @param string $service Service name (google or dropbox) * @param integer $uid User ID * @param string $title Folder name * @param string $path Path to folder * @param string $parentId Parent folder ID * @param array &$remoteFolders Collector array * * @return integer (folder ID) */ public function createRemoteFolder($projectid = NULL, $service = 'google', $uid = 0, $title = '', $path = '', $parentId = 0, &$remoteFolders = array()) { if (!$projectid) { $projectid = $this->model->get('id'); } if (!$projectid || !$title || !$parentId || !$path) { return false; } // Get api $apiService = $this->getAPI($service, $uid); if (!$apiService) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_SYNC_API_UNAVAILABLE')); return false; } // Check once again that we don't have this folder already if (isset($remoteFolders[$path])) { if ($remoteFolders[$path]['status'] == 'D') { // Untrash if ($service == 'google') { Google::untrashItem($apiService, $remoteFolders[$path]['remoteid']); } } $parentId = $remoteFolders[$path]['remoteid']; } else { // We do need to create a new folder $newParentId = 0; // Collector for created folder metadata $metadata = array(); // Perform request if ($service == 'google') { $newParentId = Google::createFolder($apiService, $title, $parentId, $metadata); } // Error! if (!$newParentId) { return NULL; } // Add newly create folder to remoteFolders array $remoteFolders[$path] = array('remoteid' => $newParentId, 'status' => 'A', 'parentid' => $parentId); // Update connection record $objRFile = new \Components\Projects\Tables\RemoteFile($this->_db); $update = $objRFile->updateRecord($projectid, $service, $newParentId, $path, 'folder', $this->_uid, $parentId, $title); return $newParentId; } return $parentId; }