示例#1
0
 /**
  * @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);
     }
 }
示例#2
0
 /**
  * @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);
     }
 }
示例#4
0
 /**
  * @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);
 }
示例#5
0
 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);
 }
示例#6
0
 /**
  * @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);
 }
示例#7
0
 /**
  * 
  * @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;
 }
示例#9
0
 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');
 }