Exemplo n.º 1
0
 function isValidForUpdate($release, $group_id)
 {
     $frspf = new FRSPackageFactory();
     $frsrf = new FRSReleaseFactory();
     $frsff = new FRSFileFactory();
     if (isset($release['package_id']) && $release['package_id'] != 'null') {
         if (!isset($release['name']) || !$release['name'] || $release['name'] == '') {
             $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'rel_name_empty'));
         } else {
             //see if this package belongs to this project
             $res1 =& $frsrf->getFRSReleaseFromDb($release['release_id'], $group_id);
             if (!$res1 || count($res1) < 1) {
                 $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'p_rel_not_yours'));
             } else {
                 if ($release['package_id'] != $res1->getPackageID()) {
                     //changing to a different package for this release
                     $res2 = $frspf->getFRSPackageFromDb($release['package_id'], $group_id);
                     if (!$res2 || count($res2) < 1) {
                         //new package_id isn't theirs
                         $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'p_not_yours'));
                     }
                 }
                 //check if release name exists already
                 if ($res1->getPackageID() != $release['package_id'] || $res1->getPackageID() == $release['package_id'] && $res1->getName() != $release['name']) {
                     $release_exists = $frsrf->getReleaseIdByName($release['name'], $release['package_id']);
                 }
                 if (!isset($release_exists) || count($release_exists) < 1) {
                     //now check the date
                     if (!ereg("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}", $release['date'])) {
                         $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'data_not_parsed'));
                     }
                 } else {
                     $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'rel_name_exists'));
                 }
             }
         }
     } else {
         $this->addError($GLOBALS['Language']->getText('file_admin_editreleases', 'create_p_before_rel_status'));
     }
     return count($this->_errors) ? false : true;
 }
Exemplo n.º 2
0
 /**
  * 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');
     }
 }
Exemplo n.º 3
0
function file_get_package_name_from_id($package_id)
{
    $frspf = new FRSPackageFactory();
    $res =& $frspf->getFRSPackageFromDb($package_id);
    return $res->getName();
}
Exemplo n.º 4
0
 /**
  * Returns the HTML content for tooltip when hover a reference with the nature release
  * @returns string HTML content for release tooltip
  */
 function getReferenceTooltip()
 {
     $tooltip = '';
     $package_id = $this->getPackageID();
     $pf = new FRSPackageFactory();
     $package = $pf->getFRSPackageFromDb($package_id);
     $tooltip .= '<table>';
     $tooltip .= ' <tr>';
     $tooltip .= '  <td><strong>' . $GLOBALS['Language']->getText('file_admin_editreleases', 'release_name') . ':</strong></td>';
     $tooltip .= '  <td>' . $this->getName() . '</td>';
     $tooltip .= ' </tr>';
     $tooltip .= ' <tr>';
     $tooltip .= '  <td><strong>' . $GLOBALS['Language']->getText('file_admin_editpackages', 'p_name') . ':</strong></td>';
     $tooltip .= '  <td>' . $package->getName() . '</td>';
     $tooltip .= ' </tr>';
     $tooltip .= ' <tr>';
     $tooltip .= '  <td><strong>' . $GLOBALS['Language']->getText('file_showfiles', 'date') . ':</strong></td>';
     $tooltip .= '  <td>' . format_date($GLOBALS['Language']->getText('system', 'datefmt_short'), $this->getReleaseDate()) . '</td>';
     $tooltip .= ' </tr>';
     $tooltip .= '</table>';
     return $tooltip;
 }
 /**
  * Process the monitoring request
  *
  * @param HTTPRequest $request      HTTP request
  * @param PFUser        $currentUser  Current user
  * @param Integer     $groupId      Id of the project
  * @param Integer     $fileModuleId Id of the package
  * @param UserManager $um           UserManager instance
  * @param UserHelper  $userHelper   UserHelper instance
  *
  * @return String
  */
 public function processEditMonitoringAction($request, $currentUser, $groupId, $fileModuleId, $um, $userHelper)
 {
     $frspf = new FRSPackageFactory();
     $package = $frspf->getFRSPackageFromDb($fileModuleId);
     if ($frspf->userCanAdmin($currentUser, $groupId)) {
         if ($request->valid(new Valid_WhiteList('action', array('add_monitoring', 'delete_monitoring')))) {
             $action = $request->get('action');
             switch ($action) {
                 case 'add_monitoring':
                     $users = array_map('trim', preg_split('/[,;]/', $request->get('listeners_to_add')));
                     foreach ($users as $userName) {
                         if (!empty($userName)) {
                             $user = $um->findUser($userName);
                             $this->addUserMonitoring($user, $groupId, $fileModuleId, $package, $frspf, $userHelper);
                         }
                     }
                     break;
                 case 'delete_monitoring':
                     $users = $request->get('delete_user');
                     $this->stopMonitoringForUsers($users, $groupId, $fileModuleId, $package, $um, $userHelper);
                     break;
                 default:
                     break;
             }
         }
     }
 }
Exemplo n.º 6
0
$user = UserManager::instance()->getCurrentUser();
if (!$frspf->userCanAdmin($user, $group_id)) {
    exit_permission_denied();
}
$GLOBALS['HTML']->includeJavascriptFile("/scripts/scriptaculous/scriptaculous.js");
$GLOBALS['HTML']->includeCalendarScripts();
$GLOBALS['HTML']->includeJavascriptFile("../scripts/frs.js");
$frsrf = new FRSReleaseFactory();
$frsff = new FRSFileFactory();
$vFunc = new Valid_WhiteList('func', array('delete', 'add', 'create', 'edit', 'update'));
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'));
                    }
                }