function show_newest_releases() { global $Language; $return = ""; $hp = Codendi_HTMLPurifier::instance(); // Fetch releases that are no more than 3 months old $start_time = strval(time() - 3 * 30 * 24 * 3600); $query = new_utils_get_new_releases_short($start_time); $res_newrel = db_query($query); // print each one but only show one release per project $count = 0; $DONE = array(); $frspf = new FRSPackageFactory(); $frsrf = new FRSReleaseFactory(); while (($row_newrel = db_fetch_array($res_newrel)) && $count < 10) { if (!isset($DONE[$row_newrel['group_id']])) { //if ((!permission_exist("PACKAGE_READ",$row_newrel['package_id'] ))&& // (!permission_exist("RELEASE_READ",$row_newrel['release_id'] ))) { if ($frspf->userCanRead($row_newrel['group_id'], $row_newrel['package_id'], 100) && $frsrf->userCanRead($row_newrel['group_id'], $row_newrel['package_id'], $row_newrel['release_id'], 100)) { $return .= '(' . $hp->purify($row_newrel['release_version'], CODENDI_PURIFIER_CONVERT_HTML) . ') ' . '<A href="/projects/' . $row_newrel['unix_group_name'] . '/">' . $hp->purify(util_unconvert_htmlspecialchars($row_newrel['group_name']), CODENDI_PURIFIER_CONVERT_HTML) . "</A><BR>\n"; $count++; $DONE[$row_newrel['group_id']] = true; } } } $return .= '<center><A href="/new/?func=releases">[ ' . $Language->getText('include_features_boxes', 'more') . ' ]</A></center>'; return $return; }
private function importPackage(Project $project, SimpleXMLElement $xml_pkg, $extraction_path) { $attrs = $xml_pkg->attributes(); $rank = isset($attrs['rank']) ? $attrs['rank'] : 'end'; $hidden = isset($attrs['hidden']) ? $attrs['hidden'] : 'false'; $hidden = $hidden == 'true' || $hidden == '1'; $package = new FRSPackage(); $package->setGroupId($project->getId()); $package->setName((string) $attrs['name']); $package->setStatusID($hidden ? FRSPackage::STATUS_HIDDEN : FRSPackage::STATUS_ACTIVE); $package->setRank($rank); $package->setApproveLicense(true); $package->setPackageID($this->package_factory->create($package->toArray())); $read_perms = array(); foreach ($xml_pkg->{'read-access'} as $perm) { $ugroup_name = (string) $perm->ugroup; $ugroup = $this->getUGroupManager()->getUGroupByName($project, $ugroup_name); $read_perms[] = $ugroup->getId(); } $this->getPermissionsManager()->savePermissions($project, $package->getPackageID(), FRSPackage::PERM_READ, $read_perms); foreach ($xml_pkg->children() as $xml_rel) { if ($xml_rel->getName() != "release") { continue; } $this->importRelease($project, $package, $xml_rel, $extraction_path); } }
function testGetFRSPackageFromDb() { $packageArray1 = array('package_id' => 1, 'group_id' => 1, 'name' => 'pkg1', 'status_id' => 2, 'rank' => null, 'approve_license' => null, 'data_array' => null, 'package_releases' => null, 'error_state' => null, 'error_message' => null); $package1 = FRSPackageFactory::getFRSPackageFromArray($packageArray1); $dar1 = new MockDataAccessResult($this); $dar1->setReturnValue('isError', false); $dar1->setReturnValue('current', $packageArray1); $dar1->setReturnValueAt(0, 'valid', true); $dar1->setReturnValueAt(1, 'valid', false); $dar1->setReturnValue('rowCount', 1); $packageArray2 = array('package_id' => 2, 'group_id' => 2, 'name' => 'pkg2', 'status_id' => 1, 'rank' => null, 'approve_license' => null, 'data_array' => null, 'package_releases' => null, 'error_state' => null, 'error_message' => null); $package2 = FRSPackageFactory::getFRSPackageFromArray($packageArray2); $dar2 = new MockDataAccessResult($this); $dar2->setReturnValue('isError', false); $dar2->setReturnValue('current', $packageArray2); $dar2->setReturnValueAt(0, 'valid', true); $dar2->setReturnValueAt(1, 'valid', false); $dar2->setReturnValue('rowCount', 1); $dar3 = new MockDataAccessResult($this); $dar3->setReturnValue('isError', false); $dar3->setReturnValue('current', array()); $dar3->setReturnValueAt(0, 'valid', true); $dar3->setReturnValueAt(1, 'valid', false); $dar3->setReturnValue('rowCount', 0); $dao = new FRSPackageDaoTestVersion(); $dao->da = TestHelper::getPartialMock('DataAccess', array('DataAccess')); $dao->setReturnValue('retrieve', $dar1, array('SELECT p.* FROM frs_package AS p WHERE p.package_id = 1 ORDER BY rank DESC LIMIT 1')); $dao->setReturnValue('retrieve', $dar2, array('SELECT p.* FROM frs_package AS p WHERE p.package_id = 2 AND p.status_id != 0 ORDER BY rank DESC LIMIT 1')); $dao->setReturnValue('retrieve', $dar3); $PackageFactory = new FRSPackageFactoryTestVersion(); $PackageFactory->setReturnValue('_getFRSPackageDao', $dao); $this->assertEqual($PackageFactory->getFRSPackageFromDb(1, null, 0x1), $package1); $this->assertEqual($PackageFactory->getFRSPackageFromDb(2), $package2); }
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; }
public function setUp() { $package_factory = new FRSPackageFactoryMock(); $release_factory = new FRSReleaseFactory(); $file_factory = new FRSXMLImporterTest_FRSFileFactory(); $this->package_dao = mock('FRSPackageDao'); $package_factory->dao = $this->package_dao; FRSPackageFactory::setInstance($package_factory); $this->permissions_manager = mock('PermissionsManager'); PermissionsManager::setInstance($this->permissions_manager); $this->release_dao = mock('FRSReleaseDao'); $release_factory->dao = $this->release_dao; $release_factory->package_factory = $package_factory; $release_factory->file_factory = $file_factory; FRSReleaseFactory::setInstance($release_factory); $this->file_dao = mock('FRSFileDao'); $file_factory->dao = $this->file_dao; $file_factory->release_factory = $release_factory; $this->processor_dao = mock('FRSProcessorDao'); $this->filetype_dao = mock('FRSFileTypeDao'); $this->user_finder = mock('User\\XML\\Import\\IFindUserFromXMLReference'); $this->user_manager = mock('UserManager'); UserManager::setInstance($this->user_manager); $this->ugroup_dao = mock("UGroupDao"); stub($this->ugroup_dao)->searchByGroupIdAndName()->returns(new DataAccessResultEmpty()); $this->frs_importer = new FRSXMLImporter(mock('Logger'), new XML_RNGValidator(), $package_factory, $release_factory, $file_factory, $this->user_finder, new UGroupManager($this->ugroup_dao), $this->processor_dao, $this->filetype_dao); EventManager::setInstance(mock('EventManager')); $GLOBALS['Language'] = mock('BaseLanguage'); if (isset($GLOBALS['ftp_incoming_dir'])) { $this->old_ftp_incoming_dir = $GLOBALS['ftp_incoming_dir']; } if (isset($GLOBALS['old_ftp_frs_dir_prefix'])) { $this->old_ftp_frs_dir_prefix = $GLOBALS['ftp_frs_dir_prefix']; } $GLOBALS['ftp_incoming_dir'] = parent::getTmpDir(); $GLOBALS['ftp_frs_dir_prefix'] = parent::getTmpDir(); }
// require_once 'pre.php'; require_once 'common/frs/FRSFileFactory.class.php'; require_once 'common/frs/FRSPackageFactory.class.php'; $vGroupId = new Valid_GroupId(); $vGroupId->required(); $vFileId = new Valid_UInt('file_id'); $vFileId->required(); if ($request->valid($vGroupId) && $request->valid($vFileId)) { $group_id = $request->get('group_id'); $file_id = $request->get('file_id'); } else { exit_missing_param(); } $frsff = new FRSFileFactory(); $frspf = new FRSPackageFactory(); // Must have a group_id and file_id otherwise // we cannot do much if (!$file_id || !$group_id) { exit_missing_param(); } if (!$GLOBALS['sys_frs_license_mandatory']) { // Display license popup? // This is useful when using a 'file #123' reference, that points to this script $res =& $frspf->getFRSPackageByFileIdFromDb($file_id); //$sql="SELECT approve_license FROM frs_package,frs_release,frs_file WHERE frs_file.file_id=$file_id and frs_file.release_id=frs_release.release_id and frs_release.package_id=frs_package.package_id"; //res = db_query( $sql); if (count($res) > 0) { if ($res->getApproveLicense() == 0) { // Directly display file $location = "Location: /file/download.php/{$group_id}/{$file_id}";
/** * 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; }
define("FRS_EXPANDED_ICON", util_get_image_theme("ic/toggle_minus.png")); define("FRS_COLLAPSED_ICON", util_get_image_theme("ic/toggle_plus.png")); $authorized_user = false; $hp = Codendi_HTMLPurifier::instance(); $request =& HTTPRequest::instance(); $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($request->valid($vGroupId)) { $group_id = $request->get('group_id'); } else { exit_no_group(); } if (user_ismember($group_id, 'R2') || user_ismember($group_id, 'A')) { $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); } }
/** * Test is user can administrate FRS service of given project * * @param PFUser $user User to test * @param Integer $groupId Project * * @return Boolean */ protected function userCanAdmin($user, $groupId) { return FRSPackageFactory::userCanAdmin($user, $groupId); }
/** * Get a Package Factory * * @return FRSPackageFactory */ function _getFRSPackageFactory() { return FRSPackageFactory::instance(); }
/** * 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; } } } }
// http://sourceforge.net // // require_once 'pre.php'; require_once 'common/frs/FRSPackageFactory.class.php'; require_once 'common/frs/FileModuleMonitorFactory.class.php'; if (user_isloggedin()) { $vFilemodule_id = new Valid_UInt('filemodule_id'); $vFilemodule_id->required(); if ($request->valid($vFilemodule_id)) { $filemodule_id = $request->get('filemodule_id'); $pm = ProjectManager::instance(); $um = UserManager::instance(); $userHelper = new UserHelper(); $currentUser = $um->getCurrentUser(); $frspf = new FRSPackageFactory(); $fmmf = new FileModuleMonitorFactory(); if ($frspf->userCanRead($group_id, $filemodule_id, $currentUser->getId())) { $fmmf->processMonitoringActions($request, $currentUser, $group_id, $filemodule_id, $um, $userHelper); file_utils_header(array('title' => $Language->getText('file_showfiles', 'file_p_for', $pm->getProject($group_id)->getPublicName()))); echo $fmmf->getMonitoringHTML($currentUser, $group_id, $filemodule_id, $um, $userHelper); file_utils_footer(array()); } else { $GLOBALS['Response']->addFeedback('error', $Language->getText('file_filemodule_monitor', 'no_permission')); $GLOBALS['Response']->redirect('showfiles.php?group_id=' . $group_id); } } else { $GLOBALS['Response']->addFeedback('error', $Language->getText('file_filemodule_monitor', 'choose_p')); $GLOBALS['Response']->redirect('showfiles.php?group_id=' . $group_id); } } else {
If you pass just the group_id, you will be given a list of releases with the option to edit those releases or create a new release If you pass the group_id plus the package_id, you will get the list of releases with just the releases of that package shown */ $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($request->valid($vGroupId)) { $group_id = $request->get('group_id'); } else { exit_no_group(); } $frspf = new FRSPackageFactory(); $user = UserManager::instance()->getCurrentUser(); if (!$frspf->userCanAdmin($user, $group_id)) { exit_permission_denied(); } $frsrf = new FRSReleaseFactory(); $frsff = new FRSFileFactory(); $existing_packages = array(); $res = $frspf->getFRSPackagesFromDb($group_id); foreach ($res as $p => $nop) { $existing_packages[] = array('id' => $res[$p]->getPackageId(), 'name' => $res[$p]->getName(), 'rank' => $res[$p]->getRank()); } $vFunc = new Valid_WhiteList('func', array('delete', 'add', 'create', 'edit', 'update')); $vFunc->required(); if ($request->valid($vFunc)) { switch ($request->get('func')) {
function file_get_package_name_from_id($package_id) { $frspf = new FRSPackageFactory(); $res =& $frspf->getFRSPackageFromDb($package_id); return $res->getName(); }
public static function clearInstance() { self::$instance = null; }
require_once 'www/project/admin/permissions.php'; require_once 'common/include/HTTPRequest.class.php'; $request =& HTTPRequest::instance(); /* Quick file release system , Darrell Brogdon, SourceForge, Aug, 2000 With much code horked from editreleases.php */ $vGroupId = new Valid_GroupId(); $vGroupId->required(); if ($request->valid($vGroupId)) { $group_id = $request->get('group_id'); } else { exit_no_group(); } $frspf = new FRSPackageFactory(); $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');
/** * Function userCanRead : determine if the user can view this package or not * * @param int $user_id if not given or 0 take the current user * @return boolean true if user has Read access to this package, false otherwise */ function userCanRead($user_id = 0) { $frspf = new FRSPackageFactory(); return $frspf->userCanRead($this->getGroupID(), $this->getPackageID(), $user_id); }
/** * 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'); } }
**/ $query = new_utils_get_new_releases_long(0, 0, $limit * 3); $res = db_query($query); // ## one time output print " <channel>\n"; print " <copyright>" . $Language->getText('export_rss_sfnewreleases', 'copyright', array($GLOBALS['sys_long_org_name'], $GLOBALS['sys_name'], date('Y', time()))) . "</copyright>\n"; print " <pubDate>" . gmdate('D, d M Y g:i:s', time()) . " GMT</pubDate>\n"; print " <description>" . $Language->getText('export_rss_sfnewreleases', 'new_releases', $GLOBALS['sys_name']) . "</description>\n"; print " <link>" . get_server_url() . "</link>\n"; print " <title>" . $Language->getText('export_rss_sfnewreleases', 'new_releases', $GLOBALS['sys_name']) . "</title>\n"; list($host, $port) = explode(':', $GLOBALS['sys_default_domain']); print " <webMaster>webmaster@" . $host . "</webMaster>\n"; print " <language>en-us</language>\n"; // ## item outputs $outputtotal = 0; $frspf = new FRSPackageFactory(); $frsrf = new FRSReleaseFactory(); while ($row = db_fetch_array($res)) { if (!$G_RELEASE["{$row['group_id']}"]) { if ($frspf->userCanRead($row['group_id'], $row['package_id'], 100) && $frsrf->userCanRead($row['group_id'], $row['package_id'], $row_newrel['release_id'], 100)) { print " <item>\n"; print " <title>" . htmlspecialchars($row['group_name'] . " " . $row['release_version']) . "</title>\n"; print " <link>" . get_server_url() . "/file/showfiles.php?group_id={$row['group_id']}</link>\n"; print " <description>" . rss_description($row['short_description']) . "</description>\n"; print " </item>\n"; $outputtotal++; // ## eliminate dupes, only do $limit of these $G_RELEASE[$row['group_id']] = 1; if ($outputtotal >= $limit) { break; }