/** * deleteEmptyRelease - Delete an empty release or all empty releases in package package_id in project group_id. * * @param String $sessionKey The session hash associated with the session opened by the person who calls the service * @param Integer $group_id Id of the project in which we want to delete empty releases * @param Integer $package_id Id of the package in which we want to delete empty releases * @param Integer $release_id Id of the release to delete * @param Boolean $cleanup_all Set to true to delete all empty releases * * @return Array list of deleted releases, or a soap fault if: * - group_id does not match with a valid project * - the package_id does not match * - the user does not have permissions to delete releases * - the system was not able to delete the releases. */ function deleteEmptyRelease($sessionKey, $group_id, $package_id, $release_id, $cleanup_all) { if (session_continue($sessionKey)) { try { $pm = ProjectManager::instance(); $pm->getGroupByIdForSoap($group_id, 'deleteRelease'); } catch (SoapFault $e) { return $e; } $packageFactory = new FRSPackageFactory(); $package = $packageFactory->getFRSPackageFromDb($package_id); if (!$package || $package->getGroupID() != $group_id) { return new SoapFault(invalid_package_fault, 'Invalid Package', 'deleteRelease'); } $releaseFactory = new FRSReleaseFactory(); $releases = array(); if ($release_id && !$cleanup_all) { $release = $releaseFactory->getFRSReleaseFromDb($release_id); if (!$release || $release->getPackageID() != $package_id) { return new SoapFault(invalid_release_fault, 'Invalid Release', 'deleteRelease'); } $releases[] = $release; } elseif ($cleanup_all) { // retrieve all the releases $releases = $releaseFactory->getFRSReleasesFromDb($package_id); } $deleted = array(); foreach ($releases as $release) { $fileFactory = new FRSFileFactory(); $files = $fileFactory->getFRSFilesFromDb($release->getReleaseID()); if (empty($files)) { if ($releaseFactory->userCanUpdate($group_id, $release->getReleaseID())) { if ($releaseFactory->delete_release($group_id, $release->getReleaseID())) { $deleted[] = release_to_soap($release); } else { return new SoapFault(invalid_package_fault, 'Release ' . $release->getReleaseID() . ' could not be deleted', 'deleteRelease'); } } else { return new SoapFault(invalid_package_fault, 'You don\'t have permission to delete package ' . $release->getReleaseID(), 'deleteRelease'); } } } return $deleted; } else { return new SoapFault(invalid_session_fault, 'Invalid Session', 'deleteRelease'); } }
if (!$request->valid($vFunc)) { $GLOBALS['Response']->redirect('../showfiles.php?group_id=' . $group_id); } if ($request->valid(new Valid_UInt('package_id'))) { $package_id = $request->get('package_id'); if ($package =& $frspf->getFRSPackageFromDb($package_id, $group_id)) { switch ($request->get('func')) { case 'delete': if ($request->valid(new Valid_UInt('id'))) { $release_id = $request->get('id'); /* Delete a release with all the files included Delete the corresponding row from the database Delete the corresponding directory from the server */ if (!$frsrf->delete_release($group_id, $release_id)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_not_yours')); } else { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_del')); } } $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); break; case 'add': $release = new FRSRelease(); $release->setPackageId($package_id); $release->setStatusId($frsrf->STATUS_ACTIVE); $release->setReleaseDate(time()); frs_display_release_form($is_update = false, $release, $group_id, $Language->getText('file_admin_editreleases', 'create_new_release'), '?func=create&postExpected=&group_id=' . $group_id . '&package_id=' . $package_id); break; case 'create':