/** * deleteEmptyPackage - Delete an empty package or all empty packages 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 the package(s) * @param Integer $package_id Id of the package to delete * @param Boolean $cleanup_all Set to true to delete all empty packages * * @return Array list of deleted packages, or a soap fault if: * - group_id does not match with a valid project * - the user does not have permissions to delete packages * - the system was not able to delete the packages. */ function deleteEmptyPackage($sessionKey, $group_id, $package_id, $cleanup_all) { if (session_continue($sessionKey)) { try { $pm = ProjectManager::instance(); $pm->getGroupByIdForSoap($group_id, 'deletePackage'); } catch (SoapFault $e) { return $e; } $packageFactory = new FRSPackageFactory(); $packages = array(); if ($package_id && !$cleanup_all) { $package = $packageFactory->getFRSPackageFromDb($package_id); if (!$package || $package->getGroupID() != $group_id) { return new SoapFault(invalid_package_fault, 'Invalid Package', 'deletePackage'); } $packages[] = $package; } elseif ($cleanup_all) { $packages = $packageFactory->getFRSPackagesFromDb($group_id); } $deleted = array(); foreach ($packages as $package) { $releaseFactory = new FRSReleaseFactory(); $releases = $releaseFactory->getFRSReleasesFromDb($package->getPackageID()); if (empty($releases)) { if ($packageFactory->userCanUpdate($group_id, $package->getPackageID())) { if ($packageFactory->delete_package($group_id, $package->getPackageID())) { $deleted[] = package_to_soap($package); } else { return new SoapFault(invalid_package_fault, 'Package ' . $package->getPackageID() . ' could not be deleted', 'deletePackage'); } } else { return new SoapFault(invalid_package_fault, 'You don\'t have permission to delete package ' . $package->getPackageID(), 'deletePackage'); } } } return $deleted; } else { return new SoapFault(invalid_session_fault, 'Invalid Session', 'deletePackage'); } }
$vGroupId->required(); if ($request->valid($vGroupId)) { $group_id = $request->get('group_id'); } else { exit_no_group(); } if (user_ismember($group_id, 'R2') || user_ismember($group_id, 'A')) { $authorized_user = true; } $frspf = new FRSPackageFactory(); $frsrf = new FRSReleaseFactory(); $frsff = new FRSFileFactory(); $packages = array(); $num_packages = 0; // Retain only packages the user is authorized to access, or packages containing releases the user is authorized to access... $res = $frspf->getFRSPackagesFromDb($group_id); $user = UserManager::instance()->getCurrentUser(); foreach ($res as $package) { if ($frspf->userCanRead($group_id, $package->getPackageID(), $user->getId())) { if ($request->existAndNonEmpty('release_id')) { if ($request->valid(new Valid_UInt('release_id'))) { $release_id = $request->get('release_id'); $row3 =& $frsrf->getFRSReleaseFromDb($release_id); } } if (!$request->existAndNonEmpty('release_id') || $row3->getPackageID() == $package->getPackageID()) { $packages[$package->getPackageID()] = $package; $num_packages++; } } }