44 include_once(__DIR__ .
"/version.php");
80 function __construct()
86 parent::__construct(README_AGENT_NAME, AGENT_VERSION, AGENT_REV);
88 $this->uploadDao = $this->container->get(
'dao.upload');
90 $this->agentSpecifLongOptions[] = self::UPLOAD_ADDS.
':';
103 $this->additionalUploadIds = array_key_exists(self::UPLOAD_ADDS,
$args) ? explode(
',',
$args[self::UPLOAD_ADDS]) : array();
105 array_unshift($uploadIds, $uploadId);
108 $licenseStmts = array();
109 $copyrightStmts = array();
110 $licenseStmtsMain = array();
111 $licenseAcknowledgements = array();
113 foreach ($uploadIds as $addUploadId) {
114 if (!$this->uploadDao->isAccessible($addUploadId,
$groupId)) {
117 $moreLicenses = $this->licenseClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"license",
false);
118 $licenseStmts = array_merge($licenseStmts, $moreLicenses[
'statements']);
119 $this->
heartbeat(count($moreLicenses[
'statements']));
120 $this->licenseClearedGetter->setOnlyAcknowledgements(
true);
121 $moreAcknowledgements = $this->licenseClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"license",
false);
122 $licenseAcknowledgements = array_merge($licenseAcknowledgements, $moreAcknowledgements[
'statements']);
123 $this->
heartbeat(count($moreAcknowledgements[
'statements']));
124 $moreCopyrights = $this->cpClearedGetter->getCleared($addUploadId, $this,
$groupId,
true,
"copyright",
false);
125 $copyrightStmts = array_merge($copyrightStmts, $moreCopyrights[
'statements']);
126 $this->
heartbeat(count($moreCopyrights[
'statements']));
127 $moreMainLicenses = $this->licenseMainGetter->getCleared($addUploadId, $this,
$groupId,
true,
null,
false);
128 $licenseStmtsMain = array_merge($licenseStmtsMain, $moreMainLicenses[
'statements']);
129 $this->
heartbeat(count($moreMainLicenses[
'statements']));
131 list($licenseStmtsMain, $licenseStmts) = $this->licenseClearedGetter->updateIdentifiedGlobalLicenses($licenseStmtsMain, $licenseStmts);
132 $contents = array(
'licensesMain'=>$licenseStmtsMain,
'licenses'=>$licenseStmts,
'copyrights'=>$copyrightStmts,
'licenseAcknowledgements' => $licenseAcknowledgements);
147 $packageName = $this->uploadDao->getUpload($uploadId)->getFilename();
149 $fileBase = $SysConf[
'FOSSOLOGY'][
'path'].
"/report/";
150 $fileName = $fileBase.
"ReadMe_OSS_".$packageName.
'_'.time().
".txt" ;
152 foreach ($this->additionalUploadIds as $addUploadId) {
153 $packageName .=
', ' . $this->uploadDao->getUpload($addUploadId)->getFilename();
156 if (!is_dir($fileBase)) {
157 mkdir($fileBase, 0777,
true);
162 file_put_contents($fileName, $message);
175 $this->
dbManager->insertTableRow(
'reportgen', array(
'upload_fk'=>$uploadId,
'job_fk'=>
$jobId,
'filepath'=>$filename), __METHOD__);
189 foreach ($dataForReadME as $statements) {
190 if ($extract ==
'text') {
191 $outData .= $statements[
"content"] . $break;
193 $outData .= str_replace(
"\n",
"\r\n", $statements[$extract]) . $break;
194 if (!empty($addSeparator)) {
195 $outData .= $addSeparator . $break;
198 return htmlspecialchars_decode($outData, ENT_DISALLOWED);
210 $separator1 = str_repeat(
"=", 120);
211 $separator2 = str_repeat(
"-", 120);
212 $break = str_repeat(
"\r\n", 2);
213 $output = $separator1 . $break . $packageName . $break . $separator2 . $break;
214 if (!empty($contents[
'licensesMain'])) {
215 $output .= $separator1 . $break .
" MAIN LICENSES " . $break . $separator2 . $break;
218 if (!empty($contents[
'licenses'])) {
219 $output .= $separator1 . $break .
" OTHER LICENSES " . $break . $separator2 . $break;
222 if (!empty($contents[
'licenseAcknowledgements'])) {
223 $output .= $separator1 . $break .
" ACKNOWLEDGEMENTS " . $break . $separator2 . $break;
224 $output .= $this->
createReadMeOSSFormat($separator2, $contents[
'licenseAcknowledgements'],
'text', $break);
227 if (empty($copyrights)) {
228 $output .=
"<Copyright notices>";
230 $output .=
"<notices>";
232 $output .=
"Copyright notices";
234 $output .= $copyrights;
241 $agent->scheduler_connect();
242 $agent->run_scheduler_event_loop();
243 $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.
generateReport($contents, $packageName)
Gather all the data.
const UPLOAD_ADDS
The HTTP GET parameter name.
processUploadId($uploadId)
Given an upload ID, process the items in it.
createReadMeOSSFormat($addSeparator, $dataForReadME, $extract, $break)
This function lists elements of array.
int jobId
The id of the job.
fo_dbManager * dbManager
fo_dbManager object