46 include_once(__DIR__ .
"/version.php");
87 function __construct()
94 parent::__construct(README_AGENT_NAME, AGENT_VERSION, AGENT_REV);
96 $this->uploadDao = $this->container->get(
'dao.upload');
98 $this->agentSpecifLongOptions[] = self::UPLOAD_ADDS.
':';
111 $this->additionalUploadIds = array_key_exists(self::UPLOAD_ADDS,
$args) ? explode(
',',
$args[self::UPLOAD_ADDS]) : array();
113 array_unshift($uploadIds, $uploadId);
116 $licenseStmts = array();
117 $copyrightStmts = array();
118 $licenseStmtsMain = array();
119 $licenseAcknowledgements = array();
121 foreach ($uploadIds as $addUploadId) {
122 if (!$this->uploadDao->isAccessible($addUploadId,
$groupId)) {
125 $moreLicenses = $this->licenseClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"license",
false);
126 $licenseStmts = array_merge($licenseStmts, $moreLicenses[
'statements']);
127 $this->
heartbeat(count($moreLicenses[
'statements']));
128 $this->licenseClearedGetter->setOnlyAcknowledgements(
true);
129 $moreAcknowledgements = $this->licenseClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"license",
false);
130 $licenseAcknowledgements = array_merge($licenseAcknowledgements, $moreAcknowledgements[
'statements']);
131 $this->
heartbeat(count($moreAcknowledgements[
'statements']));
132 $moreCopyrights = $this->cpClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"copyright",
false);
133 $copyrightStmts = array_merge($copyrightStmts, $moreCopyrights[
'statements']);
134 $this->
heartbeat(count($moreCopyrights[
'statements']));
135 $moreMainLicenses = $this->licenseMainGetter->getCleared($addUploadId, $this,
$groupId,
true,
null,
false);
136 $licenseStmtsMain = array_merge($licenseStmtsMain, $moreMainLicenses[
'statements']);
137 $this->
heartbeat(count($moreMainLicenses[
'statements']));
139 list($licenseStmtsMain, $licenseStmts) = $this->licenseClearedGetter->updateIdentifiedGlobalLicenses($licenseStmtsMain, $licenseStmts);
140 $contents = array(
'licensesMain'=>$licenseStmtsMain,
'licenses'=>$licenseStmts,
'copyrights'=>$copyrightStmts,
'licenseAcknowledgements' => $licenseAcknowledgements);
155 $packageName = $this->uploadDao->getUpload($uploadId)->getFilename();
157 $fileBase = $SysConf[
'FOSSOLOGY'][
'path'].
"/report/";
158 $fileName = $fileBase.
"ReadMe_OSS_".$packageName.
".txt" ;
160 foreach ($this->additionalUploadIds as $addUploadId) {
161 $packageName .=
', ' . $this->uploadDao->getUpload($addUploadId)->getFilename();
164 if (!is_dir($fileBase)) {
165 mkdir($fileBase, 0777,
true);
168 $message = $this->
generateReport($contents, $packageName, $uploadId);
170 file_put_contents($fileName, $message);
183 $this->reportutils->updateOrInsertReportgenEntry($uploadId,
$jobId, $filename);
197 $row = $this->uploadDao->getReportInfo($uploadId);
199 if (!empty($row[
'ri_spdx_selection'])) {
200 $selections = explode(
',', $row[
'ri_spdx_selection']);
203 isset($selections[2]) &&
204 trim($selections[2]) ===
'checked'
206 foreach ($dataForReadME as $statements) {
207 if ($extract ==
'text') {
208 $licenseLine = $statements[
"content"];
209 if ($osselotEnabled) {
210 $licenseLine = str_replace(LicenseRef::SPDXREF_PREFIX_FOSSOLOGY,
"", $licenseLine);
211 $licenseLine = str_replace(LicenseRef::SPDXREF_PREFIX,
"", $licenseLine);
213 $outData .= $licenseLine . $break;
215 $outData .= str_replace(
"\n",
"\r\n", $statements[$extract]) . $break;
216 if (!empty($addSeparator)) {
217 $outData .= $addSeparator . $break;
220 return htmlspecialchars_decode($outData, ENT_DISALLOWED);
232 $separator1 = str_repeat(
"=", 120);
233 $separator2 = str_repeat(
"-", 120);
234 $break = str_repeat(
"\r\n", 2);
235 $output = $separator1 . $break . $packageName . $break . $separator2 . $break;
236 if (!empty($contents[
'licensesMain'])) {
237 $output .= $separator1 . $break .
" MAIN LICENSES " . $break . $separator2 . $break;
238 $output .= $this->
createReadMeOSSFormat($separator2, $contents[
'licensesMain'],
'text', $break, $uploadId);
240 if (!empty($contents[
'licenses'])) {
241 $output .= $separator1 . $break .
" OTHER LICENSES " . $break . $separator2 . $break;
242 $output .= $this->
createReadMeOSSFormat($separator2, $contents[
'licenses'],
'text', $break, $uploadId);
244 if (!empty($contents[
'licenseAcknowledgements'])) {
245 $output .= $separator1 . $break .
" ACKNOWLEDGEMENTS " . $break . $separator2 . $break;
246 $output .= $this->
createReadMeOSSFormat($separator2, $contents[
'licenseAcknowledgements'],
'text', $break, $uploadId);
248 $copyrights = $this->
createReadMeOSSFormat(
"", $contents[
'copyrights'],
'content',
"\r\n", $uploadId);
249 if (empty($copyrights)) {
250 $output .=
"<Copyright notices>";
252 $output .=
"<notices>";
254 $output .=
"Copyright notices";
256 $output .= $copyrights;
263 $agent->scheduler_connect();
264 $agent->run_scheduler_event_loop();
265 $agent->scheduler_disconnect(0);
Structure of an Agent with all required parameters.
heartbeat($newProcessed)
Send hear beat to the scheduler.
Readme_OSS agent generates list of licenses and copyrights found in an upload.
updateReportTable($uploadId, $jobId, $filename)
Update the report path.
writeReport($contents, $uploadId)
Write data to text file.
const UPLOAD_ADDS
The HTTP GET parameter name.
processUploadId($uploadId)
Given an upload ID, process the items in it.
createReadMeOSSFormat($addSeparator, $dataForReadME, $extract, $break, $uploadId)
This function lists elements of array.
generateReport($contents, $packageName, $uploadId)
Gather all the data.
char * trim(char *ptext)
Trimming whitespace.
int jobId
The id of the job.