public static function removeRelease($id, $userid, &$output) { $params = array("releaseid" => $id, "action" => "remove"); $release = Repository::getReleaseById($id); if ($release === false) { return self::createErrorResponse("Cannot retrieve release", $output); } $repoareaid = $release->repoAreaId; //Check if release is in production if ($release->currentStateId == 2) { return self::createErrorResponse("Cannot remove release published into production", $output, $params); } //Check if it is a major release and has updates in the same series if ($release->parentId == 0) { $children = $release->getChildren(); if ($children !== null && count($children) > 0) { return self::createErrorResponse("Cannot remove base release in a series with update releases", $output, $params); } } $url = self::getBackendUrl() . "release/action/remove/" . $id . "/release"; $responsetext = web_get_contents($url); if (!$responsetext) { return self::createErrorResponse("Could not connect to community repository backend.", $output, $params); } $delres = Repository::call_delete_release($id, $userid); if ($delres !== true) { return self::createErrorResponse($delres, $output, $params); } //Check if parent repository area has any releases left. //If not then remove repository area as well. $repoarea = Repository::getRepositoryAreaById($repoareaid); if ($repoarea) { $releases = $repoarea->getReleases(); if (count($releases) == 0) { $output2 = ""; $delres = RepositoryBackend::removeSeries($repoareaid, $userid, $output2); if ($delres == false) { return self::createErrorResponse("Could not remove empty series.", $output, $params); } } } $params["seriesid"] = $repoareaid; RepositoryServices::AppDBSyncDeleteRelease($id); return self::createSuccessResponse($output, $params); }
public function removeAction() { $id = isset($_POST["id"]) ? $_POST["id"] : null; $type = isset($_POST["type"]) ? $_POST["type"] : null; $userid = $this->session->userid; if ($_SERVER['REQUEST_METHOD'] != "POST" || $_SERVER["Repository_Enabled"] !== 'true' || is_numeric($userid) == false || is_numeric($id) === false || trim($type) == "") { header("Status: 404 Not Found"); return; } $type = strtolower(trim($type)); $isvalidRequest = false; switch ($type) { case "release": $isvalidRequest = Repository::canManageEntity($userid, $id, "release"); break; case "series": $isvalidRequest = Repository::canManageEntity($userid, $id, "repoarea"); break; default: break; } if (!$isvalidRequest) { header("Status: 404 Not Found"); return; } $output = ""; header("Content-Type: text/xml"); if ($type == "release") { $result = RepositoryBackend::removeRelease($id, $userid, $output); } else { $result = RepositoryBackend::removeSeries($id, $userid, $output); } echo $output; }
public function uploadAction() { ob_start(); ob_get_clean(); ob_end_clean(); $this->_helper->viewRenderer->setNoRender(); $releaseid = $this->_getParam("releaseid"); $targetid = $this->_getParam("targetid"); $swid = $this->_getParam("swid"); $userid = $this->session->userid; if ($_SERVER["Repository_Enabled"] !== 'true' || is_numeric($this->session->userid) === false || is_numeric($releaseid) === false || is_numeric($targetid) === false || is_numeric($swid) === false || $releaseid <= 0 || $targetid <= 0 || $swid <= 0 || Repository::canManageRelease($swid, $userid) === false) { header("Status: 404 Not Found"); return; } //Get release $rl = new RestProductReleaseItem(array("id" => $releaseid)); $release = $rl->getRawData(); if (!$this->handleresterror($rl, "release")) { return; } //retrieve upload target directory $targetDir = RepositoryFS::getScratchSpaceForRelease($release, $error, true); $targetDir .= $targetid; //If cannot find or create the target upload directory... if ($targetDir === false) { return $this->chunkUploadResponse('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "' . $error . '"}, "id" : "id"}'); } $file = $this->chunkUploadHandling($targetDir); if ($file === false) { return; } /***************************************************** * THIS CODE WILL BE REACHED IF UPLOADING IS COMPLETE * ******************************************************/ //check if release is a candidate revert it to unverified if ($release->currentStateId == 3) { RepositoryBackend::unpublish($release->id, "candidate", $output); //TODO: Send command to commrepo backend to remove candidate repositories } //get uploaded filename (full path) $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : ''; //Get target (os arch combination) $rl = new RestTargetItem(array("id" => $targetid)); $target = $rl->getRawData(); if (!$this->handleresterror($rl, "target")) { return; } $warnings = null; $res = RepositoryFS::storeUploadedFile($file, $release, $target, $userid, $warnings); ob_start(); ob_get_clean(); ob_end_clean(); header("Content-Type: text/xml"); if (file_exists($file)) { @unlink($file); } if ($res !== true && (is_numeric($res) === false || $res === false)) { echo '<repository datatype="item" content="upload" ><upload result="error" releaseid="' . $releaseid . '" targetid="' . $targetid . '" filename="' . $file . '" error="' . $res . '"></upload></repository>'; return; } echo '<repository datatype="item" content="upload"><upload result="success" releaseid="' . $releaseid . '" targetid="' . $targetid . '" filename="' . $file . '"'; if ($warnings !== null) { echo 'warning="' . $warnings . '"'; } echo '>'; $pcks = new Repository_Model_MetaPoaReleasePackages(); $pcks->filter->id->equals($res); if (count($pcks->items) > 0) { $pck = $pcks->items[0]; $xml = $pck->toXML(true); $xml = RepositoryXSLT::transform($xml, "poapackage"); debug_log($xml); echo $xml; } echo '</upload></repository>'; return; }