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 return new RedirectResponse(
"?mod=view-license" .
Traceback_parm_keep(array(
"upload",
"item")));
199 $vars[
'licenseUri'] =
Traceback_uri() .
"?mod=popup-license&rf=";
202 return array_merge($vars, $dirVars);
211 $isFlat = isset($_GET[
'flatten']);
212 $vars[
'isFlat'] = $isFlat;
213 $vars[
'iTotalRecords'] = $this->uploadDao->countNonArtifactDescendants($itemTreeBounds, $isFlat);
214 $uri =
Traceback_uri().
'?mod='.$this->Name.Traceback_parm_keep(array(
'upload',
'folder',
'show',
'item'));
215 $vars[
'fileSwitch'] = $isFlat ? $uri : $uri.
"&flatten=yes";
230 $fileCount = $this->uploadDao->countPlainFiles($itemTreeBounds);
231 $licenseHistogram = $this->licenseDao->getLicenseHistogram($itemTreeBounds, $agentIds);
232 $editedLicensesHist = $this->clearingDao->getClearedLicenseIdAndMultiplicities($itemTreeBounds, $groupId);
233 $mainLicenseIds = $this->clearingDao->getMainLicenseIds($itemTreeBounds->
getUploadId(), $groupId);
236 $licListUri =
Traceback_uri().
"?mod=license_list_files&item=$uploadTreeId";
238 $licListUri .=
"&tag=$tagId";
241 $licListUri .=
"&agentId=$agentId";
245 list($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount)
248 $uniqueLicenseCount = count($tableData);
249 $scannerUniqueLicenseCount = count( $licenseHistogram );
250 $editedUniqueLicenseCount = count($editedLicensesHist);
251 $noScannerLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $licenseHistogram)
252 ? $licenseHistogram[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
253 $editedNoLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $editedLicensesHist)
254 ? $editedLicensesHist[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
256 return array(
'tableDataJson'=>json_encode($tableData),
257 'uniqueLicenseCount'=>$uniqueLicenseCount,
258 'fileCount'=>$fileCount,
259 'scannerUniqueLicenseCount'=>$scannerUniqueLicenseCount,
260 'editedUniqueLicenseCount'=>$editedUniqueLicenseCount,
261 'scannerLicenseCount'=> $totalScannerLicenseCount,
262 'editedLicenseCount'=> $editedTotalLicenseCount-$editedNoLicenseFoundCount,
263 'noScannerLicenseFoundCount'=>$noScannerLicenseFoundCount,
264 'editedNoLicenseFoundCount'=>$editedNoLicenseFoundCount,
265 'scannerLicenses'=>$licenseHistogram,
266 'editedLicenses'=>$editedLicensesHist
279 $allScannerLicenseNames = array_keys($scannerLics);
280 $allEditedLicenseNames = array_keys($editedLics);
282 $allLicNames = array_unique(array_merge($allScannerLicenseNames, $allEditedLicenseNames));
283 $realLicNames = array_diff($allLicNames, array(LicenseDao::NO_LICENSE_FOUND));
285 $totalScannerLicenseCount = 0;
286 $editedTotalLicenseCount = 0;
288 $tableData = array();
289 foreach ($realLicNames as $licenseShortName) {
291 if (array_key_exists($licenseShortName, $scannerLics)) {
292 $count = $scannerLics[$licenseShortName][
'unique'];
293 $rfId = $scannerLics[$licenseShortName][
'rf_pk'];
295 $rfId = $editedLics[$licenseShortName][
'rf_pk'];
297 $editedCount = array_key_exists($licenseShortName, $editedLics) ? $editedLics[$licenseShortName][
'count'] : 0;
299 $totalScannerLicenseCount += $count;
300 $editedTotalLicenseCount += $editedCount;
302 $scannerCountLink = ($count > 0) ?
"<a href='$licListUri&lic=" .
303 urlencode($licenseShortName) .
"'>$count</a>":
"0";
304 $editedLink = ($editedCount > 0) ? $editedCount :
"0";
306 $isMain = in_array($rfId, $mainLicenseIds);
307 $tableData[] = array($scannerCountLink, $editedLink, array($licenseShortName,$rfId,$isMain));
310 return array($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount);
320 return $this->renderer->load($templateName)->render($vars);
334 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).