/** * @param Request $request * @return Response */ protected function handle(Request $request) { $errorMessage = ""; $jobqueueId = -1; $userId = $_SESSION['UserId']; $groupId = $_SESSION['GroupId']; $uploadId = intval($_POST['uploadId']); $agentName = $_POST['agentName']; if ($uploadId > 0) { $upload = $this->uploadDao->getUpload($uploadId); $uploadName = $upload->getFilename(); $jobId = JobAddJob($userId, $groupId, $uploadName, $uploadId); $ourPlugin = plugin_find($agentName); $jobqueueId = $ourPlugin->AgentAdd($jobId, $uploadId, $errorMessage, array()); } else { $errorMessage = "bad request"; } ReportCachePurgeAll(); $headers = array('Content-type' => 'text/json'); if (empty($errorMessage) && $jobqueueId > 0) { return new Response(json_encode(array("jqid" => $jobqueueId)), Response::HTTP_OK, $headers); } else { return new Response(json_encode(array("error" => $errorMessage)), Response::HTTP_INTERNAL_SERVER_ERROR, $headers); } }
/** * @brief Returns uploadname as link for geeky scan * @param $job_pk * @return uploadname **/ function getUploadNameForGeekyScan($job_pk) { $row = $this->showJobsDao->getDataForASingleJob($job_pk); if (empty($row["job_upload_fk"])) { return ''; } if (empty($row['jq_pk'])) { return _("Job history record is no longer available"); } /* get the upload filename */ $uploadFileName = htmlspecialchars($this->uploadDao->getUpload($row['job_upload_fk'])->getFilename()); if (empty($uploadFileName)) { /* upload has been deleted so try to get the job name from the original upload job record */ $jobName = $this->showJobsDao->getJobName($row["job_upload_fk"]); $uploadFileName = "Deleted " . $jobName; } $uploadtree_pk = -1; /* Find the uploadtree_pk for this upload so that it can be used in the browse link */ try { $uploadtree_pk = $this->uploadDao->getUploadParent($row['job_upload_fk']); } catch (Exception $e) { echo $e->getMessage(), "\n"; } /* upload file name link to browse */ $uploadNameLink = "<a title='Click to browse this upload' href='" . Traceback_uri() . "?mod=browse&upload=" . $row['job_upload_fk'] . "&item=" . $uploadtree_pk . "'>" . $uploadFileName . "</a>"; return $uploadNameLink; }
function doEdit($userId, $groupId, $itemId) { $licenses = GetParm("licenseNumbersToBeSubmitted", PARM_RAW); $removed = $_POST['removed'] === 't' || $_POST['removed'] === 'true'; $itemTreeBounds = $this->uploadDao->getItemTreeBounds($itemId); $uploadId = $itemTreeBounds->getUploadId(); $upload = $this->uploadDao->getUpload($uploadId); $uploadName = $upload->getFilename(); $jobId = JobAddJob($userId, $groupId, $uploadName, $uploadId); if (isset($licenses)) { if (!is_array($licenses)) { return $this->errorJson("bad license array"); } foreach ($licenses as $licenseId) { if (intval($licenseId) <= 0) { return $this->errorJson("bad license"); } $this->clearingDao->insertClearingEvent($itemId, $userId, $groupId, $licenseId, $removed, ClearingEventTypes::USER, $reportInfo = '', $comment = '', $jobId); } } /** @var agent_fodecider $deciderPlugin */ $deciderPlugin = plugin_find("agent_deciderjob"); $conflictStrategyId = null; $errorMsg = ""; $jq_pk = $deciderPlugin->AgentAdd($jobId, $uploadId, $errorMsg, array(), $conflictStrategyId); /** after changing one license, purge all the report cache */ ReportCachePurgeAll(); //Todo: Change sql statement of fossology/src/buckets/agent/leaf.c line 124 to take the newest valid license, then uncomment this line // $this->ChangeBuckets(); // change bucket accordingly if (empty($errorMsg) && $jq_pk > 0) { return new JsonResponse(array("jqid" => $jq_pk)); } else { return $this->errorJson($errorMsg, 500); } }
/** * @param int $uploadId */ protected function computeUri($uploadId) { global $SysConf; $upload = $this->uploadDao->getUpload($uploadId); $packageName = $upload->getFilename(); $fileBase = $SysConf['FOSSOLOGY']['path'] . "/report/"; $this->uri = $this->getUri($fileBase, $packageName); }
private function writeReport($contents, $uploadId) { global $SysConf; $packageName = $this->uploadDao->getUpload($uploadId)->getFilename(); $fileBase = $SysConf['FOSSOLOGY']['path'] . "/report/"; $fileName = $fileBase . "ReadMe_OSS_" . $packageName . '_' . time() . ".txt"; foreach ($this->additionalUploadIds as $addUploadId) { $packageName .= ', ' . $this->uploadDao->getUpload($addUploadId)->getFilename(); } if (!is_dir($fileBase)) { mkdir($fileBase, 0777, true); } umask(0133); $message = $this->generateReport($contents, $packageName); file_put_contents($fileName, $message); $this->updateReportTable($uploadId, $this->jobId, $fileName); }
/** * @param int $uploadId * @param int $reuseUploadId * @param int $groupId * @param int $reuseGroupId * @param int $reuseMode */ protected function createPackageLink($uploadId, $reuseUploadId, $groupId, $reuseGroupId, $reuseMode = 0) { /* @var $packageDao PackageDao */ $packageDao = $GLOBALS['container']->get('dao.package'); $newUpload = $this->uploadDao->getUpload($uploadId); $uploadForReuse = $this->uploadDao->getUpload($reuseUploadId); $package = $packageDao->findPackageForUpload($reuseUploadId); if ($package === null) { $packageName = StringOperation::getCommonHead($uploadForReuse->getFilename(), $newUpload->getFilename()); $package = $packageDao->createPackage($packageName ?: $uploadForReuse->getFilename()); $packageDao->addUploadToPackage($reuseUploadId, $package); } $packageDao->addUploadToPackage($uploadId, $package); $this->uploadDao->addReusedUpload($uploadId, $reuseUploadId, $groupId, $reuseGroupId, $reuseMode); }
/** * * @param int $uploadTreeId * @param Request $request * @return int $jobQueueId */ private function getJobQueueId($uploadTreeId, Request $request) { $uploadEntry = $this->uploadDao->getUploadEntry($uploadTreeId); $uploadId = intval($uploadEntry['upload_fk']); $userId = Auth::getUserId(); $groupId = Auth::getGroupId(); if ($uploadId <= 0 || !$this->uploadDao->isAccessible($uploadId, $groupId)) { throw new Exception('permission denied'); } $bulkScope = $request->get('bulkScope'); switch ($bulkScope) { case 'u': $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($uploadId); $topBounds = $this->uploadDao->getParentItemBounds($uploadId, $uploadTreeTable); $uploadTreeId = $topBounds->getItemId(); break; case 'f': if (!Isdir($uploadEntry['ufile_mode']) && !Iscontainer($uploadEntry['ufile_mode']) && !Isartifact($uploadEntry['ufile_mode'])) { $uploadTreeId = $uploadEntry['parent'] ?: $uploadTreeId; } break; default: throw new InvalidArgumentException('bad scope request'); } $refText = $request->get('refText'); $actions = $request->get('bulkAction'); $licenseRemovals = array(); foreach ($actions as $licenseAction) { $licenseRemovals[$licenseAction['licenseId']] = $licenseAction['action'] == 'remove'; } $bulkId = $this->licenseDao->insertBulkLicense($userId, $groupId, $uploadTreeId, $licenseRemovals, $refText); if ($bulkId <= 0) { throw new Exception('cannot insert bulk reference'); } $upload = $this->uploadDao->getUpload($uploadId); $uploadName = $upload->getFilename(); $job_pk = JobAddJob($userId, $groupId, $uploadName, $uploadId); /** @var DeciderJobAgentPlugin $deciderPlugin */ $deciderPlugin = plugin_find("agent_deciderjob"); $dependecies = array(array('name' => 'agent_monk_bulk', 'args' => $bulkId)); $conflictStrategyId = intval($request->get('forceDecision')); $errorMsg = ''; $jqId = $deciderPlugin->AgentAdd($job_pk, $uploadId, $errorMsg, $dependecies, $conflictStrategyId); if (!empty($errorMsg)) { throw new Exception(str_replace('<br>', "\n", $errorMsg)); } return $jqId; }
private function getJobQueueId($uploadTreeId) { $uploadEntry = $this->uploadDao->getUploadEntry($uploadTreeId); $uploadId = intval($uploadEntry['upload_fk']); if ($uploadId <= 0) { throw new Exception('permission denied'); } $bulkScope = filter_input(INPUT_POST, 'bulkScope'); switch ($bulkScope) { case 'u': $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($uploadId); $row = $this->dbManager->getSingleRow("SELECT uploadtree_pk FROM {$uploadTreeTable} WHERE upload_fk = \$1 ORDER BY uploadtree_pk LIMIT 1", array($uploadId), __METHOD__ . "adam" . $uploadTreeTable); $uploadTreeId = $row['uploadtree_pk']; break; case 'f': if (!Isdir($uploadEntry['ufile_mode']) && !Iscontainer($uploadEntry['ufile_mode']) && !Isartifact($uploadEntry['ufile_mode'])) { $uploadTreeId = $uploadEntry['parent'] ?: $uploadTreeId; } break; default: throw new InvalidArgumentException('bad scope request'); } $userId = Auth::getUserId(); $groupId = Auth::getGroupId(); $refText = filter_input(INPUT_POST, 'refText'); $action = filter_input(INPUT_POST, 'bulkAction'); $licenseId = GetParm('licenseId', PARM_INTEGER); $removing = $action === 'remove'; $bulkId = $this->licenseDao->insertBulkLicense($userId, $groupId, $uploadTreeId, $licenseId, $removing, $refText); if ($bulkId <= 0) { throw new Exception('cannot insert bulk reference'); } $upload = $this->uploadDao->getUpload($uploadId); $uploadName = $upload->getFilename(); $job_pk = JobAddJob($userId, $groupId, $uploadName, $uploadId); /** @var DeciderJobAgentPlugin $deciderPlugin */ $deciderPlugin = plugin_find("agent_deciderjob"); $dependecies = array(array('name' => 'agent_monk_bulk', 'args' => $bulkId)); $conflictStrategyId = intval(filter_input(INPUT_POST, 'forceDecision')); $errorMsg = ''; $jqId = $deciderPlugin->AgentAdd($job_pk, $uploadId, $errorMsg, $dependecies, $conflictStrategyId); if (!empty($errorMsg)) { throw new Exception(str_replace('<br>', "\n", $errorMsg)); } return $jqId; }
public function Output() { $groupId = Auth::getGroupId(); $rootFolder = $this->folderDao->getRootFolder(Auth::getUserId()); $folderStructure = $this->folderDao->getFolderStructure($rootFolder->getId()); $V = ""; $folder_pk = GetParm('folder', PARM_INTEGER); if (empty($folder_pk)) { $folder_pk = $rootFolder->getId(); } $NewName = GetArrayVal("newname", $_POST); $NewDesc = GetArrayVal("newdesc", $_POST); $upload_pk = GetArrayVal("upload_pk", $_POST); if (empty($upload_pk)) { $upload_pk = GetParm('upload', PARM_INTEGER); } /* Check Upload permission */ if (!empty($upload_pk) && !$this->uploadDao->isEditable($upload_pk, $groupId)) { $text = _("Permission Denied"); return "<h2>{$text}</h2>"; } $rc = $this->UpdateUploadProperties($upload_pk, $NewName, $NewDesc); if ($rc == 0) { $text = _("Nothing to Change"); $this->vars['message'] = $text; } else { if ($rc == 1) { $text = _("Upload Properties successfully changed"); $this->vars['message'] = $text; } } $this->vars['folderStructure'] = $folderStructure; $this->vars['folderId'] = $folder_pk; $this->vars['baseUri'] = $Uri = Traceback_uri() . "?mod=" . $this->Name . "&folder="; $folderUploads = $this->folderDao->getFolderUploads($folder_pk, $groupId); $uploadsById = array(); /* @var $uploadProgress UploadProgress */ foreach ($folderUploads as $uploadProgress) { if ($uploadProgress->getGroupId() != $groupId) { continue; } if (!$this->uploadDao->isEditable($uploadProgress->getId(), $groupId)) { continue; } $display = $uploadProgress->getFilename() . _(" from ") . date("Y-m-d H:i", $uploadProgress->getTimestamp()); $uploadsById[$uploadProgress->getId()] = $display; } $this->vars['uploadList'] = $uploadsById; if (empty($upload_pk)) { reset($uploadsById); $upload_pk = key($uploadsById); } $this->vars['uploadId'] = $upload_pk; if ($upload_pk) { $upload = $this->uploadDao->getUpload($upload_pk); if (empty($upload)) { $this->vars['message'] = _("Missing upload."); return 0; } } else { $upload = null; } $baseFolderUri = $this->vars['baseUri'] . "{$folder_pk}&upload="; $this->vars['uploadAction'] = "onchange=\"js_url(this.value, '{$baseFolderUri}')\""; $this->vars['uploadFilename'] = $upload ? $upload->getFilename() : ''; $this->vars['uploadDesc'] = $upload ? $upload->getDescription() : ''; $this->vars['content'] = $V; return $this->render('admin_upload_edit.html.twig'); }