Exemple #1
0
 /**
  * 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');
     }
 }
Exemple #2
0
$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++;
        }
    }
}