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_id_from_release_id($release_id) { $frsrf = new FRSReleaseFactory(); $res = $frsrf->getFRSReleaseFromDb($release_id); return $res->getPackageID(); }
$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++; } } } if ($request->valid(new Valid_Pv('pv'))) { $pv = $request->get('pv'); } else { $pv = false; } $pm = ProjectManager::instance(); $params = array('title' => $Language->getText('file_showfiles', 'file_p_for', $pm->getProject($group_id)->getPublicName()), 'pv' => $pv);
private function getProjectIdForSystemReference($keyword, $value) { $ref_gid = null; $nature = $this->getSystemReferenceNatureByKeyword($keyword); switch ($nature) { case self::REFERENCE_NATURE_RELEASE: $release_factory = new FRSReleaseFactory(); $release = $release_factory->getFRSReleaseFromDb($value); if ($release) { $ref_gid = $release->getProject()->getID(); } break; case self::REFERENCE_NATURE_FILE: $file_factory = new FRSFileFactory(); $file = $file_factory->getFRSFileFromDb($value); if ($file) { $ref_gid = $file->getGroup()->getID(); } break; case self::REFERENCE_NATURE_FORUM: $forum_dao = new ForumDao(); $forum_group_id_row = $forum_dao->searchByGroupForumId($value)->getRow(); if ($forum_group_id_row) { $ref_gid = $forum_group_id_row['group_id']; } break; case self::REFERENCE_NATURE_FORUMMESSAGE: $forum_dao = new ForumDao(); $message_group_id_row = $forum_dao->getMessageProjectId($value); if ($message_group_id_row) { $ref_gid = $message_group_id_row['group_id']; } break; case self::REFERENCE_NATURE_NEWS: $news_dao = new NewsBytesDao(); $news_group_id_row = $news_dao->searchByForumId($value)->getRow(); if ($news_group_id_row) { $ref_gid = $news_group_id_row['group_id']; } break; } return $ref_gid; }
/** * Returns the HTML content for tooltip when hover a reference with the nature file * @returns string HTML content for file tooltip */ function getReferenceTooltip() { $tooltip = ''; $rf = new FRSReleaseFactory(); $pf = new FRSPackageFactory(); $release_id = $this->getReleaseID(); $release = $rf->getFRSReleaseFromDb($release_id); $package_id = $release->getPackageID(); $package = $pf->getFRSPackageFromDb($package_id); $tooltip .= '<table>'; $tooltip .= ' <tr>'; $tooltip .= ' <td><strong>' . $GLOBALS['Language']->getText('file_admin_editreleases', 'filename') . ':</strong></td>'; $tooltip .= ' <td>' . basename($this->getFileName()) . '</td>'; $tooltip .= ' </tr>'; $tooltip .= ' <tr>'; $tooltip .= ' <td><strong>' . $GLOBALS['Language']->getText('file_ref_tooltip', 'package_release') . ':</strong></td>'; $tooltip .= ' <td>' . $package->getName() . ' / ' . $release->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'), $release->getReleaseDate()) . '</td>'; $tooltip .= ' </tr>'; $tooltip .= ' <tr>'; $tooltip .= ' <td><strong>' . $GLOBALS['Language']->getText('file_showfiles', 'size') . ':</strong></td>'; $tooltip .= ' <td>' . $this->getDisplayFileSize() . '</td>'; $tooltip .= ' </tr>'; $tooltip .= '</table>'; return $tooltip; }
$release->setStatusId($frsrf->STATUS_ACTIVE); $release->setReleaseDate(time()); frs_display_release_form($is_update = false, $release, $group_id, $Language->getText('file_admin_editreleases', 'create_new_release'), '?func=create&postExpected=&group_id=' . $group_id . '&package_id=' . $package_id); break; case 'create': if ($request->exist('cancel')) { $GLOBALS['Response']->addFeedback('info', $Language->getText('file_admin_editreleases', 'create_canceled')); $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); } else { frs_process_release_form($is_update = false, $request, $group_id, $Language->getText('file_admin_editreleases', 'release_new_file_version'), '?func=create&postExpected=&group_id=' . $group_id . '&package_id=' . $package_id); } break; case 'edit': if ($request->valid(new Valid_UInt('id'))) { $release_id = $request->get('id'); if ($release =& $frsrf->getFRSReleaseFromDb($release_id, $group_id)) { frs_display_release_form($is_update = true, $release, $group_id, $Language->getText('file_admin_editreleases', 'edit_release'), '?func=update&postExpected=&group_id=' . $group_id . '&package_id=' . $package_id . '&id=' . $release_id); } else { $GLOBALS['Response']->addFeedback('error', $Language->getText('file_admin_editreleases', 'rel_id_not_found')); $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); } } else { $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); } break; case 'update': if ($request->exist('cancel')) { $GLOBALS['Response']->addFeedback('info', $Language->getText('file_admin_editreleases', 'update_canceled')); $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id); } else { if ($request->valid(new Valid_UInt('id'))) {