Ejemplo n.º 1
0
 /**
  * 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');
     }
 }