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);
235 $licListUri =
Traceback_uri().
"?mod=license_list_files&item=$uploadTreeId";
237 $licListUri .=
"&tag=$tagId";
240 $licListUri .=
"&agentId=$agentId";
244 list($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount)
247 $uniqueLicenseCount = count($tableData);
248 $scannerUniqueLicenseCount = count( $licenseHistogram );
249 $editedUniqueLicenseCount = count($editedLicensesHist);
250 $noScannerLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $licenseHistogram)
251 ? $licenseHistogram[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
252 $editedNoLicenseFoundCount = array_key_exists(LicenseDao::NO_LICENSE_FOUND, $editedLicensesHist)
253 ? $editedLicensesHist[LicenseDao::NO_LICENSE_FOUND][
'count'] : 0;
255 return array(
'tableDataJson'=>json_encode($tableData),
256 'uniqueLicenseCount'=>$uniqueLicenseCount,
257 'fileCount'=>$fileCount,
258 'scannerUniqueLicenseCount'=>$scannerUniqueLicenseCount,
259 'editedUniqueLicenseCount'=>$editedUniqueLicenseCount,
260 'scannerLicenseCount'=> $totalScannerLicenseCount,
261 'editedLicenseCount'=> $editedTotalLicenseCount-$editedNoLicenseFoundCount,
262 'noScannerLicenseFoundCount'=>$noScannerLicenseFoundCount,
263 'editedNoLicenseFoundCount'=>$editedNoLicenseFoundCount,
264 'scannerLicenses'=>$licenseHistogram,
265 'editedLicenses'=>$editedLicensesHist
278 $allScannerLicenseNames = array_keys($scannerLics);
279 $allEditedLicenseNames = array_keys($editedLics);
281 $allLicNames = array_unique(array_merge($allScannerLicenseNames, $allEditedLicenseNames));
282 $realLicNames = array_diff($allLicNames, array(LicenseDao::NO_LICENSE_FOUND));
284 $totalScannerLicenseCount = 0;
285 $editedTotalLicenseCount = 0;
287 $tableData = array();
288 foreach ($realLicNames as $licenseShortName) {
290 if (array_key_exists($licenseShortName, $scannerLics)) {
291 $count = $scannerLics[$licenseShortName][
'unique'];
292 $rfId = $scannerLics[$licenseShortName][
'rf_pk'];
294 $rfId = $editedLics[$licenseShortName][
'rf_pk'];
296 $editedCount = array_key_exists($licenseShortName, $editedLics) ? $editedLics[$licenseShortName][
'count'] : 0;
298 $totalScannerLicenseCount += $count;
299 $editedTotalLicenseCount += $editedCount;
301 $scannerCountLink = ($count > 0) ?
"<a href='$licListUri&lic=" .
302 urlencode($licenseShortName) .
"'>$count</a>":
"0";
303 $editedLink = ($editedCount > 0) ? $editedCount :
"0";
305 $tableData[] = array($scannerCountLink, $editedLink, array($licenseShortName,$rfId));
308 return array($tableData, $totalScannerLicenseCount, $editedTotalLicenseCount);
318 return $this->renderer->load($templateName)->render($vars);
332 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)
showUploadHist(ItemTreeBounds $itemTreeBounds)
Given an $Uploadtree_pk, display:
createLicenseHistogramJSarray($scannerLics, $editedLics, $licListUri)
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).