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);
99 "format",
"page",
"upload")) .
"&item=$parent";
106 $text = _(
"license histogram");
108 menu_insert(
"View::$menuName", 99, $viewLicenseURI, $text);
109 menu_insert(
"View-Meta::$menuName", 99, $viewLicenseURI, $text);
117 protected function handle(Request $request)
119 $upload = intval($request->get(
"upload"));
121 if (!$this->uploadDao->isAccessible($upload, $groupId)) {
122 return $this->flushContent(_(
"Permission Denied"));
125 $item = intval($request->get(
"item"));
128 $left = $itemTreeBounds->getLeft();
130 return $this->flushContent(_(
"Job unpack/adj2nest hasn't completed."));
134 $vars[
'uploadId'] = $upload;
135 if ($request->get(
'show')==
'quick') {
138 $vars[
'itemId'] = $item;
140 $vars[
'micromenu'] =
Dir2Browse($this->Name, $item, NULL, $showBox = 0,
"Browse",
142 $vars[
'licenseArray'] = $this->licenseDao->getLicenseArray();
145 if (is_a($histVars,
'Symfony\\Component\\HttpFoundation\\RedirectResponse')) {
148 $vars = array_merge($vars, $histVars);
150 $vars[
'content'] =
js_url();
152 return $this->
render(
"browse.html.twig",$this->mergeWithDefault($vars));
168 $scannerAgents = array_keys($this->agentNames);
169 $scanJobProxy =
new ScanJobProxy($this->agentDao, $uploadId);
170 $scannerVars = $scanJobProxy->createAgentStatus($scannerAgents);
171 $agentMap = $scanJobProxy->getAgentMap();
175 'agentMap' => $agentMap,
176 'scanners'=>$scannerVars);
178 $selectedAgentIds = empty($selectedAgentId) ? $scanJobProxy->getLatestSuccessfulAgentIds() : $selectedAgentId;
180 if (!empty($agentMap)) {
182 $tag_pk, $itemTreeBounds, $selectedAgentIds, $groupId);
183 $vars = array_merge($vars, $licVars);
186 $this->licenseProjector =
new LicenseMap($this->
getObject(
'db.manager'),$groupId,LicenseMap::CONCLUSION,
true);
188 $childCount = $dirVars[
'iTotalRecords'];
198 if ($childCount == 0) {
199 $itemEntry = $this->uploadDao->getUploadEntry($itemTreeBounds->
getItemId(), $this->uploadtree_tablename);
200 if ($itemEntry && !
Isdir($itemEntry[
'ufile_mode'])) {
201 return new RedirectResponse(
"?mod=view-license" .
Traceback_parm_keep(array(
"upload",
"item")));
205 $vars[
'licenseUri'] =
Traceback_uri() .
"?mod=popup-license&rf=";
208 return array_merge($vars, $dirVars);
217 $isFlat = isset($_GET[
'flatten']);
218 $vars[
'isFlat'] = $isFlat;
219 $vars[
'iTotalRecords'] = $this->uploadDao->countNonArtifactDescendants($itemTreeBounds, $isFlat);
220 $uri =
Traceback_uri().
'?mod='.$this->Name.Traceback_parm_keep(array(
'upload',
'folder',
'show',
'item'));
221 $vars[
'fileSwitch'] = $isFlat ? $uri : $uri.
"&flatten=yes";
236 $fileCount = $this->uploadDao->countPlainFiles($itemTreeBounds);
237 $licenseHistogram = $this->licenseDao->getLicenseHistogram($itemTreeBounds, $agentIds);
238 $editedLicensesHist = $this->clearingDao->getClearedLicenseIdAndMultiplicities($itemTreeBounds, $groupId);
239 $mainLicenseIds = $this->clearingDao->getMainLicenseIds($itemTreeBounds->
getUploadId(), $groupId);
242 $licListUri =
Traceback_uri().
"?mod=license_list_files&item=$uploadTreeId";
244 $licListUri .=
"&tag=$tagId";
247 $licListUri .=
"&agentId=$agentId";
251 list($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount)
254 $uniqueLicenseCount = count($tableData);
255 $scannerUniqueLicenseCount = count( $licenseHistogram );
256 $editedUniqueLicenseCount = count($editedLicensesHist);
257 $noScannerLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $licenseHistogram)
258 ? $licenseHistogram[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
259 $editedNoLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $editedLicensesHist)
260 ? $editedLicensesHist[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
262 return array(
'tableDataJson'=>json_encode($tableData),
263 'uniqueLicenseCount'=>$uniqueLicenseCount,
264 'fileCount'=>$fileCount,
265 'scannerUniqueLicenseCount'=>$scannerUniqueLicenseCount,
266 'editedUniqueLicenseCount'=>$editedUniqueLicenseCount,
267 'scannerLicenseCount'=> $totalScannerLicenseCount,
268 'editedLicenseCount'=> $editedTotalLicenseCount-$editedNoLicenseFoundCount,
269 'noScannerLicenseFoundCount'=>$noScannerLicenseFoundCount,
270 'editedNoLicenseFoundCount'=>$editedNoLicenseFoundCount,
271 'scannerLicenses'=>$licenseHistogram,
272 'editedLicenses'=>$editedLicensesHist
285 $allScannerLicenseNames = array_keys($scannerLics);
286 $allEditedLicenseNames = array_keys($editedLics);
288 $allLicNames = array_unique(array_merge($allScannerLicenseNames, $allEditedLicenseNames));
289 $realLicNames = array_diff($allLicNames, array(LicenseDao::NO_LICENSE_FOUND));
291 $totalScannerLicenseCount = 0;
292 $editedTotalLicenseCount = 0;
294 $tableData = array();
295 foreach ($realLicNames as $licenseShortName) {
297 if (array_key_exists($licenseShortName, $scannerLics)) {
298 $count = $scannerLics[$licenseShortName][
'unique'];
299 $rfId = $scannerLics[$licenseShortName][
'rf_pk'];
301 $rfId = $editedLics[$licenseShortName][
'rf_pk'];
303 $editedCount = array_key_exists($licenseShortName, $editedLics) ? $editedLics[$licenseShortName][
'count'] : 0;
305 $totalScannerLicenseCount += $count;
306 $editedTotalLicenseCount += $editedCount;
308 $scannerCountLink = ($count > 0) ?
"<a href='$licListUri&lic=" .
309 urlencode($licenseShortName) .
"'>$count</a>":
"0";
310 $editedLink = ($editedCount > 0) ? $editedCount :
"0";
312 $isMain = in_array($rfId, $mainLicenseIds);
313 $tableData[] = array($scannerCountLink, $editedLink, array($licenseShortName,$rfId,$isMain));
316 return array($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount);
326 return $this->renderer->load($templateName)->render($vars);
340 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).