/** * Return the list of Packages for given project * * @param Integer $group_id * @param String $status_id * * @return Array */ function getFRSPackagesFromDb($group_id, $status_id = null) { $_id = (int) $group_id; $dao = $this->_getFRSPackageDao(); if ($status_id) { $_status_id = (int) $status_id; $dar = $dao->searchActivePackagesByGroupId($_id, $this->STATUS_ACTIVE); } else { $dar = $dao->searchByGroupId($_id); } if ($dar && !$dar->isError()) { $packages = array(); $um = UserManager::instance(); $user = $um->getCurrentUser(); foreach ($dar as $data_array) { if ($status_id) { if ($this->userCanRead($group_id, $data_array['package_id'], $user->getID())) { $packages[] = $this->getFRSPackageFromArray($data_array); } else { $frsrf = new FRSReleaseFactory(); $authorised_releases = $frsrf->getFRSReleasesFromDb($data_array['package_id'], 1, $group_id); if ($authorised_releases && count($authorised_releases) > 0) { $packages[] = $this->getFRSPackageFromArray($data_array); } } } else { $packages[] = $this->getFRSPackageFromArray($data_array); } } return $packages; } return; }
print '<img src="' . util_get_image_theme("ic/notification_start.png") . '" alt="' . $Language->getText('file_showfiles', 'start_monitoring') . '" title="' . $Language->getText('file_showfiles', 'start_monitoring') . '" />'; } print '</a>'; if ($frspf->userCanAdmin($user, $group_id)) { print ' <a href="admin/package.php?func=delete&group_id=' . $group_id . '&id=' . $package_id . '" title="' . $hp->purify($GLOBALS['Language']->getText('file_admin_editreleases', 'delete'), CODENDI_PURIFIER_CONVERT_HTML) . '" onclick="return confirm(\'' . $hp->purify($GLOBALS['Language']->getText('file_admin_editpackages', 'warn'), CODENDI_PURIFIER_CONVERT_HTML) . '\');">' . $GLOBALS['HTML']->getImage('ic/trash.png', array('alt' => $hp->purify($GLOBALS['Language']->getText('file_admin_editreleases', 'delete'), CODENDI_PURIFIER_CONVERT_HTML), 'title' => $hp->purify($GLOBALS['Language']->getText('file_admin_editreleases', 'delete'), CODENDI_PURIFIER_CONVERT_HTML))) . '</a>'; } } print '</legend>'; if ($package->isHidden()) { //TODO i18n print '<div style="text-align:center"><em>' . $Language->getText('file_showfiles', 'hidden_package') . '</em></div>'; } // get the releases of the package // Order by release_date and release_id in case two releases // are published the same day $res_release = $frsrf->getFRSReleasesFromDb($package_id, null, $group_id); $num_releases = count($res_release); if (!isset($proj_stats['releases'])) { $proj_stats['releases'] = 0; } $proj_stats['releases'] += $num_releases; $javascript_releases_array = array(); print '<div id="p_' . $package_id . '">'; if (!$pv && $frspf->userCanAdmin($user, $group_id)) { echo '<p><a href="admin/release.php?func=add&group_id=' . $group_id . '&package_id=' . $package_id . '">[' . $GLOBALS['Language']->getText('file_admin_editpackages', 'add_releases') . ']</a></p>'; } if (!$res_release || $num_releases < 1) { print '<B>' . $Language->getText('file_showfiles', 'no_releases') . '</B>' . "\n"; } else { $cpt_release = 0; // iterate and show the releases of the package
/** * 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'); } }
/** * getReleases - gets Release objects for all the releases in this package. * * return array Array of FRSRelease Objects. */ function &getReleases() { if (!is_array($this->package_releases) || count($this->package_releases) < 1) { $this->package_releases = array(); $frsrf = new FRSReleaseFactory(); $this->package_releases = $frsrf->getFRSReleasesFromDb($this->getPackageID()); } return $this->package_releases; }