diff --git a/src/readmeoss/agent/readmeoss.php b/src/readmeoss/agent/readmeoss.php index 846501cb..a9815891 100644 --- a/src/readmeoss/agent/readmeoss.php +++ b/src/readmeoss/agent/readmeoss.php @@ -1,151 +1,151 @@ cpClearedGetter = new XpClearedGetter("copyright", "statement", false, "content ilike 'Copyright%'"); + $this->cpClearedGetter = new XpClearedGetter("copyright", "statement", false); $this->licenseClearedGetter = new LicenseClearedGetter(); parent::__construct(README_AGENT_NAME, AGENT_VERSION, AGENT_REV); $this->uploadDao = $this->container->get('dao.upload'); $this->agentSpecifLongOptions[] = self::UPLOAD_ADDS.':'; } /** * @todo without wrapper */ function processUploadId($uploadId) { $groupId = $this->groupId; $args = $this->args; $this->additionalUploadIds = array_key_exists(self::UPLOAD_ADDS,$args) ? explode(',',$args[self::UPLOAD_ADDS]) : array(); $uploadIds = $this->additionalUploadIds; array_unshift($uploadIds, $uploadId); $this->heartbeat(0); $licenseStmts = array(); $copyrightStmts = array(); foreach($uploadIds as $addUploadId) { if (!$this->uploadDao->isAccessible($addUploadId, $groupId)) { continue; } $moreLicenses = $this->licenseClearedGetter->getCleared($addUploadId, $groupId); $licenseStmts = array_merge($licenseStmts, $moreLicenses['statements']); $this->heartbeat(count($moreLicenses['statements'])); $moreCopyrights = $this->cpClearedGetter->getCleared($addUploadId, $groupId); $copyrightStmts = array_merge($copyrightStmts, $moreCopyrights['statements']); $this->heartbeat(count($moreCopyrights['statements'])); } $contents = array('licenses'=>$licenseStmts, 'copyrights'=>$copyrightStmts ); $this->writeReport($contents, $uploadId); return true; } 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); } private function updateReportTable($uploadId, $jobId, $filename){ $this->dbManager->insertTableRow('reportgen', array('upload_fk'=>$uploadId, 'job_fk'=>$jobId, 'filepath'=>$filename), __METHOD__); } private function generateReport($contents, $packageName) { $separator1 = "======================================================================================================================="; $separator2 = "-----------------------------------------------------------------------------------------------------------------------"; $break = "\r\n\r\n"; $output = $separator1 . $break . $packageName . $break; foreach($contents['licenses'] as $licenseStatement){ $output .= $licenseStatement['text'] . $break; $output .= $separator2 . $break; } $copyrights = ""; foreach($contents['copyrights'] as $copyrightStatement){ $copyrights .= $copyrightStatement['content']."\r\n"; } if(empty($copyrights)){ $output .= ""; $output .= $break; $output .= ""; }else{ $output .= "Copyright notices"; $output .= $break; $output .= $copyrights; } return $output; } } $agent = new ReadmeOssAgent(); $agent->scheduler_connect(); $agent->run_scheduler_event_loop(); $agent->scheduler_disconnect(0);