9 namespace Fossology\UI\Page;
24 use Symfony\Component\HttpFoundation\RedirectResponse;
25 use Symfony\Component\HttpFoundation\Request;
26 use Symfony\Component\HttpFoundation\Response;
35 const NAME =
"license";
37 private $uploadtree_tablename =
"";
47 private $clearingFilter;
49 private $licenseProjector;
51 protected $agentNames = AgentRef::AGENT_LIST;
53 public function __construct()
55 parent::__construct(self::NAME, array(
56 self::TITLE => _(
"License Browser"),
57 self::DEPENDENCIES => array(
"browse",
"view"),
59 self::REQUIRES_LOGIN =>
false
63 $this->uploadDao = $container->get(
'dao.upload');
64 $this->licenseDao = $container->get(
'dao.license');
65 $this->clearingDao = $container->get(
'dao.clearing');
66 $this->agentDao = $container->get(
'dao.agent');
67 $this->clearingFilter = $container->get(
'businessrules.clearing_decision_filter');
80 if (empty($Item) || empty($Upload)) {
83 $viewLicenseURI = $this->NAME .
Traceback_parm_keep(array(
"show",
"format",
"page",
"upload",
"item"));
84 $menuName = $this->Title;
86 $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($Upload);
87 $itemBounds = $this->uploadDao->getItemTreeBounds($Item, $uploadTreeTable);
88 if (! $itemBounds->containsFiles()) {
93 $treeDao = $container->get(
'dao.tree');
94 $parent = $treeDao->getParentOfItem($itemBounds);
96 "format",
"page",
"upload")) .
"&item=$parent";
103 $text = _(
"license histogram");
105 menu_insert(
"View::$menuName", 99, $viewLicenseURI, $text);
106 menu_insert(
"View-Meta::$menuName", 99, $viewLicenseURI, $text);
114 protected function handle(Request $request)
116 $upload = intval($request->get(
"upload"));
118 if (!$this->uploadDao->isAccessible($upload, $groupId)) {
119 return $this->flushContent(_(
"Permission Denied"));
122 $item = intval($request->get(
"item"));
125 $left = $itemTreeBounds->getLeft();
127 return $this->flushContent(_(
"Job unpack/adj2nest hasn't completed."));
131 $vars[
'uploadId'] = $upload;
132 if ($request->get(
'show')==
'quick') {
135 $vars[
'itemId'] = $item;
137 $vars[
'micromenu'] =
Dir2Browse($this->Name, $item, NULL, $showBox = 0,
"Browse",
139 $vars[
'licenseArray'] = $this->licenseDao->getLicenseArray();
142 if (is_a($histVars,
'Symfony\\Component\\HttpFoundation\\RedirectResponse')) {
145 $vars = array_merge($vars, $histVars);
147 $vars[
'content'] =
js_url();
149 return $this->
render(
"browse.html.twig",$this->mergeWithDefault($vars));
165 $scannerAgents = array_keys($this->agentNames);
166 $scanJobProxy =
new ScanJobProxy($this->agentDao, $uploadId);
167 $scannerVars = $scanJobProxy->createAgentStatus($scannerAgents);
168 $agentMap = $scanJobProxy->getAgentMap();
172 'agentMap' => $agentMap,
173 'scanners'=>$scannerVars);
175 $selectedAgentIds = empty($selectedAgentId) ? $scanJobProxy->getLatestSuccessfulAgentIds() : $selectedAgentId;
177 if (!empty($agentMap)) {
179 $tag_pk, $itemTreeBounds, $selectedAgentIds, $groupId);
180 $vars = array_merge($vars, $licVars);
183 $this->licenseProjector =
new LicenseMap($this->
getObject(
'db.manager'),$groupId,LicenseMap::CONCLUSION,
true);
185 $childCount = $dirVars[
'iTotalRecords'];
195 if ($childCount == 0) {
196 $itemEntry = $this->uploadDao->getUploadEntry($itemTreeBounds->
getItemId(), $this->uploadtree_tablename);
197 if ($itemEntry && !
Isdir($itemEntry[
'ufile_mode'])) {
198 return new RedirectResponse(
"?mod=view-license" .
Traceback_parm_keep(array(
"upload",
"item")));
202 $vars[
'licenseUri'] =
Traceback_uri() .
"?mod=popup-license&rf=";
205 return array_merge($vars, $dirVars);
214 $isFlat = isset($_GET[
'flatten']);
215 $vars[
'isFlat'] = $isFlat;
216 $vars[
'iTotalRecords'] = $this->uploadDao->countNonArtifactDescendants($itemTreeBounds, $isFlat);
217 $uri =
Traceback_uri().
'?mod='.$this->Name.Traceback_parm_keep(array(
'upload',
'folder',
'show',
'item'));
218 $vars[
'fileSwitch'] = $isFlat ? $uri : $uri.
"&flatten=yes";
233 $fileCount = $this->uploadDao->countPlainFiles($itemTreeBounds);
234 $licenseHistogram = $this->licenseDao->getLicenseHistogram($itemTreeBounds, $agentIds);
235 $editedLicensesHist = $this->clearingDao->getClearedLicenseIdAndMultiplicities($itemTreeBounds, $groupId);
236 $mainLicenseIds = $this->clearingDao->getMainLicenseIds($itemTreeBounds->
getUploadId(), $groupId);
239 $licListUri =
Traceback_uri().
"?mod=license_list_files&item=$uploadTreeId";
241 $licListUri .=
"&tag=$tagId";
244 $licListUri .=
"&agentId=$agentId";
248 list($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount)
251 $uniqueLicenseCount = count($tableData);
252 $scannerUniqueLicenseCount = count( $licenseHistogram );
253 $editedUniqueLicenseCount = count($editedLicensesHist);
254 $noScannerLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $licenseHistogram)
255 ? $licenseHistogram[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
256 $editedNoLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $editedLicensesHist)
257 ? $editedLicensesHist[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
259 return array(
'tableDataJson'=>json_encode($tableData),
260 'uniqueLicenseCount'=>$uniqueLicenseCount,
261 'fileCount'=>$fileCount,
262 'scannerUniqueLicenseCount'=>$scannerUniqueLicenseCount,
263 'editedUniqueLicenseCount'=>$editedUniqueLicenseCount,
264 'scannerLicenseCount'=> $totalScannerLicenseCount,
265 'editedLicenseCount'=> $editedTotalLicenseCount-$editedNoLicenseFoundCount,
266 'noScannerLicenseFoundCount'=>$noScannerLicenseFoundCount,
267 'editedNoLicenseFoundCount'=>$editedNoLicenseFoundCount,
268 'scannerLicenses'=>$licenseHistogram,
269 'editedLicenses'=>$editedLicensesHist
282 $allScannerLicenseNames = array_keys($scannerLics);
283 $allEditedLicenseNames = array_keys($editedLics);
285 $allLicNames = array_unique(array_merge($allScannerLicenseNames, $allEditedLicenseNames));
286 $realLicNames = array_diff($allLicNames, array(LicenseDao::NO_LICENSE_FOUND));
288 $totalScannerLicenseCount = 0;
289 $editedTotalLicenseCount = 0;
291 $tableData = array();
292 foreach ($realLicNames as $licenseShortName) {
294 if (array_key_exists($licenseShortName, $scannerLics)) {
295 $count = $scannerLics[$licenseShortName][
'unique'];
296 $rfId = $scannerLics[$licenseShortName][
'rf_pk'];
298 $rfId = $editedLics[$licenseShortName][
'rf_pk'];
300 $editedCount = array_key_exists($licenseShortName, $editedLics) ? $editedLics[$licenseShortName][
'count'] : 0;
302 $totalScannerLicenseCount += $count;
303 $editedTotalLicenseCount += $editedCount;
305 $scannerCountLink = ($count > 0) ?
"<a href='$licListUri&lic=" .
306 urlencode($licenseShortName) .
"'>$count</a>":
"0";
307 $editedLink = ($editedCount > 0) ? $editedCount :
"0";
309 $isMain = in_array($rfId, $mainLicenseIds);
310 $tableData[] = array($scannerCountLink, $editedLink, array($licenseShortName,$rfId,$isMain));
313 return array($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount);
323 return $this->renderer->load($templateName)->render($vars);
337 register_plugin(
new BrowseLicense());
char * uploadtree_tablename
upload.uploadtree_tablename
Contains the constants and helpers for authentication of user.
static getGroupId()
Get the current user's group id.
Various utility functions to filter ClearingDecision.
Wrapper class for license map.
RegisterMenus()
Customize submenus.
render($templateName, $vars=null, $headers=null)
getUploadHist($itemTreeBounds)
countFileListing(ItemTreeBounds $itemTreeBounds)
createLicenseHistogram($uploadTreeId, $tagId, ItemTreeBounds $itemTreeBounds, $agentIds, $groupId)
createLicenseHistogramJSarray($scannerLics, $editedLics, $licListUri, $mainLicenseIds)
showUploadHist(ItemTreeBounds $itemTreeBounds)
Given an $Uploadtree_pk, display:
renderString($templateName, $vars)
Dir2Browse($Mod, $UploadtreePk, $LinkLast=NULL, $ShowBox=1, $ShowMicro=NULL, $Enumerate=-1, $PreText='', $PostText='', $uploadtree_tablename="uploadtree")
Get an html linked string of a file browse path.
Traceback_uri()
Get the URI without query to this location.
Traceback_parm($ShowMod=1)
Get the URI query to this location.
GetParm($parameterName, $parameterType)
This function will retrieve the variables and check data types.
Traceback_parm_keep($List)
Create a new URI, keeping only these items.
list_t type structure used to keep various lists. (e.g. there are multiple lists).