/** * deletefile - delete the file $file_id of the release $release_id in the package $package_id * * @param string $sessionKey the session hash associated with the session opened by the person who calls the service * @param int $group_id the ID of the group we want to delete the file * @param int $package_id the ID of the package we want to delete the file * @param int $release_id the ID of the release we want to delete the file * @param int $file_id the ID of the file we want to delete * @return boolean true if the file was deleted, or a soap fault if: * - group_id does not match with a valid project, * - the package_id, release_id, file_id does not match * - the user does not have permissions to delete this file * - the system was not able to delete the file. */ function deleteFile($sessionKey, $group_id, $package_id, $release_id, $file_id) { if (session_continue($sessionKey)) { try { $pm = ProjectManager::instance(); $pm->getGroupByIdForSoap($group_id, 'deleteFile'); } catch (SoapFault $e) { return $e; } // retieve the package $pkg_fact = new FRSPackageFactory(); $package =& $pkg_fact->getFRSPackageFromDb($package_id); if (!$package || $package->getGroupID() != $group_id) { return new SoapFault(invalid_package_fault, 'Invalid Package', 'deleteFile'); } // retrieve the release $release_fact = new FRSReleaseFactory(); $release =& $release_fact->getFRSReleaseFromDb($release_id); if (!$release || $release->getPackageID() != $package_id) { return new SoapFault(invalid_release_fault, 'Invalid Release', 'deleteFile'); } if ($release_fact->userCanUpdate($group_id, $release_id)) { // retrieve the file $file_fact = new FRSFileFactory(); $file_info =& $file_fact->getFRSFileInfoListFromDb($group_id, $file_id); if (count($file_info) == 0) { return new SoapFault(invalid_file_fault, 'Invalid File', 'deleteFile'); } // delete the file if (!$file_fact->delete_file($group_id, $file_id)) { return new SoapFault(invalid_file_fault, 'Impossible to delete file', 'deleteFile'); } else { return true; } } else { return new SoapFault(invalid_release_fault, 'User does not have permission to delete a file in this release.', 'deleteFile'); } } else { return new SoapFault(invalid_session_fault, 'Invalid Session', 'deleteFile'); } }