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; }
/** * 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'); } }
function file_get_package_name_from_id($package_id) { $frspf = new FRSPackageFactory(); $res =& $frspf->getFRSPackageFromDb($package_id); return $res->getName(); }
/** * 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; } } } }
$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')); } }