Exemplo n.º 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');
     }
 }
Exemplo n.º 2
0
 switch ($request->get('func')) {
     case 'delete':
         //Not yet
         $vPackageId = new Valid_UInt('id');
         if ($request->valid($vPackageId)) {
             $package_id = $request->get('id');
             /*
                  Delete the corresponding package only if it is empty
             */
             $res_release = $frsrf->getFRSReleasesFromDb($package_id, null, $group_id);
             $num_releases = count($res_release);
             //make sure there is no more release in the package
             if ($num_releases > 0) {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editpackages', 'p_not_empty'));
             } else {
                 if (!$frspf->delete_package($group_id, $package_id)) {
                     $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editpackages', 'p_not_yours'));
                 } else {
                     $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editpackages', 'p_del'));
                 }
             }
         }
         $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id);
         break;
     case 'add':
         $package = new FRSPackage(array('group_id' => $group_id));
         frs_display_package_form($package, $GLOBALS['Language']->getText('file_admin_editpackages', 'create_new_p'), '?group_id=' . $group_id . '&func=create', $existing_packages);
         break;
     case 'create':
         if (!$request->exist('submit')) {
             $GLOBALS['Response']->addFeedback('info', $Language->getText('file_admin_editpackages', 'create_canceled'));