public function get() { if (parent::get() !== false) { $rs = $this->getParam("data"); if (!$rs) { $rs = $this->getRawData(); } $s = ''; if (count($rs->items) > 0) { $s1 = ''; $s2 = ''; foreach ($rs->items as $rel) { $s2 = $rel->toXML(true); $releases = $rel->getReleases(); if (count($releases) > 0) { $s3 = ''; foreach ($releases as $release) { $s3 .= $release->toXML(true); } $s2 = str_replace("</MetaProductRepoArea>", $s3 . "</MetaProductRepoArea>", $s2); } $s2 = str_replace("</MetaProductRepoArea>", "<utclastproductiondate>" . $rel->getUTCLastProductionBuild() . "</utclastproductiondate></MetaProductRepoArea>", $s2); $s2 = str_replace("</MetaProductRepoArea>", "<utcservertime>" . gmdate("Y-m-d H:i:s", (int) gmdate('U')) . "</utcservertime></MetaProductRepoArea>", $s2); $s1 .= $s2; } $s = '<repository datatype="list" content="repositoryarea">' . $s1 . '</repository>'; return RepositoryXSLT::transform($s, "repoareas"); } else { $this->setError(RestErrorEnum::RE_ITEM_NOT_FOUND); return false; } } }
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; }