/** * \brief Generate output for this plug-in. */ function Output() { if ($this->State != PLUGIN_STATE_READY) { return; } global $SysConf; global $Plugins; $html = "<table width='100%' border=0 cellpadding=0>\n <tr>\n"; $Uri = Traceback_dir(); if (@$SysConf['SYSCONFIG']['LogoImage'] and @$SysConf['SYSCONFIG']['LogoLink']) { $LogoLink = $SysConf['SYSCONFIG']['LogoLink']; $LogoImg = $SysConf['SYSCONFIG']['LogoImage']; } else { $LogoLink = 'http://fossology.org'; $LogoImg = Traceback_uri . 'images/fossology-logo.gif'; } $html .= " <td width='15%'>"; $html .= "<a href='{$LogoLink}' target='_top'><img src='{$LogoImg}' align=absmiddle border=0></a>"; $html .= "</td>\n"; $html .= " <td valign='top'>"; $Menu =& $Plugins[plugin_find_id("menus")]; $Menu->OutputSet($this->OutputType, 0); $html .= $Menu->Output(); $html .= " </td>\n"; $html .= " </tr>\n"; $html .= "</table>\n"; return $html; }
/** * \brief Generate output for this plug-in. */ function Output() { global $Plugins; global $SysConf; if ($this->State != PLUGIN_STATE_READY) { return; } $V = ""; switch ($this->OutputType) { case "XML": break; case "HTML": $Uri = Traceback_dir(); $V .= "<table width='100%' border=0 cellpadding=0>\n"; $V .= " <tr>\n"; /* custom or default logo? */ if (@$SysConf['SYSCONFIG']['LogoImage'] and @$SysConf['SYSCONFIG']['LogoLink']) { $LogoLink = $SysConf['SYSCONFIG']['LogoLink']; $LogoImg = $SysConf['SYSCONFIG']['LogoImage']; } else { $LogoLink = 'http://fossology.org'; $LogoImg = Traceback_uri . 'images/fossology-logo.gif'; } $V .= " <td width='15%'>"; $V .= "<a href='{$LogoLink}' target='_top'><img src='{$LogoImg}' align=absmiddle border=0></a>"; $V .= "</td>\n"; $V .= " <td valign='top'>"; $Menu =& $Plugins[plugin_find_id("menus")]; $Menu->OutputSet($this->OutputType, 0); $V .= $Menu->Output(); $Menu->OutputUnSet(); $V .= " </td>\n"; $V .= " </tr>\n"; $V .= "</table>\n"; break; case "Text": break; default: break; } if (!$this->OutputToStdout) { return $V; } print "{$V}"; return; }
/** * \brief test for Traceback_dir() */ function test_Traceback_dir() { print "test function Traceback_dir()\n"; $source = "http://fossology.org/repo/testdir?mod=test&parm=abc"; $_SERVER['REQUEST_URI'] = $source; $expected = "http://fossology.org/repo/"; $result = Traceback_dir(); $this->assertEquals($expected, $result); print "Ending unit test for common-parm.php\n"; }
/** * @brief Output(): * Requires:\n filter: optional filter to apply\n item1: uploadtree_pk of the column 1 tree\n item2: uploadtree_pk of the column 2 tree\n freeze: column number (1 or 2) to freeze */ function Output() { if ($this->State != PLUGIN_STATE_READY) { return 0; } $uTime = microtime(true); $V = ""; /**/ $UpdCache = GetParm("updcache", PARM_INTEGER); /* Remove "updcache" from the GET args and set $this->UpdCache * This way all the url's based on the input args won't be * polluted with updcache * Use Traceback_parm_keep to ensure that all parameters are in order */ $CacheKey = "?mod=" . $this->Name . Traceback_parm_keep(array("item1", "item2", "filter", "col", "freeze", "itemf")); if ($UpdCache) { $UpdCache = $_GET['updcache']; $_SERVER['REQUEST_URI'] = preg_replace("/&updcache=[0-9]*/", "", $_SERVER['REQUEST_URI']); unset($_GET['updcache']); $V = ReportCachePurgeByKey($CacheKey); } else { $V = ReportCacheGet($CacheKey); } /**/ if (empty($V)) { $filter = GetParm("filter", PARM_STRING); if (empty($filter)) { $filter = "none"; } $FreezeCol = GetParm("freeze", PARM_INTEGER); // which column to freeze? 1 or 2 or null $ClickedCol = GetParm("col", PARM_INTEGER); // which column was clicked on? 1 or 2 or null $ItemFrozen = GetParm("itemf", PARM_INTEGER); // frozen item or null $in_uploadtree_pk1 = GetParm("item1", PARM_INTEGER); $in_uploadtree_pk2 = GetParm("item2", PARM_INTEGER); if (empty($in_uploadtree_pk1) || empty($in_uploadtree_pk2)) { Fatal("Bad input parameters. Both item1 and item2 must be specified.", __FILE__, __LINE__); } /* If you click on a item in a frozen column, then you are a dope so ignore $ItemFrozen */ if ($FreezeCol == $ClickedCol) { $ItemFrozen = 0; $FreezeCol = 0; } /* Check item1 upload permission */ $Item1Row = GetSingleRec("uploadtree", "WHERE uploadtree_pk = {$in_uploadtree_pk1}"); $UploadPerm = GetUploadPerm($Item1Row['upload_fk']); if ($UploadPerm < PERM_READ) { $text = _("Permission Denied"); echo "<h2>{$text} item 1<h2>"; return; } /* Check item2 upload permission */ $Item2Row = GetSingleRec("uploadtree", "WHERE uploadtree_pk = {$in_uploadtree_pk2}"); $UploadPerm = GetUploadPerm($Item2Row['upload_fk']); if ($UploadPerm < PERM_READ) { $text = _("Permission Denied"); echo "<h2>{$text} item 2<h2>"; return; } $uploadtree_pk1 = $in_uploadtree_pk1; $uploadtree_pk2 = $in_uploadtree_pk2; if ($FreezeCol == 1) { $uploadtree_pk1 = $ItemFrozen; } else { if ($FreezeCol == 2) { $uploadtree_pk2 = $ItemFrozen; } } $newURL = Traceback_dir() . "?mod=" . $this->Name . "&item1={$uploadtree_pk1}&item2={$uploadtree_pk2}"; if (!empty($filter)) { $newURL .= "&filter={$filter}"; } // rewrite page with new uploadtree_pks */ if ($uploadtree_pk1 != $in_uploadtree_pk1 || $uploadtree_pk2 != $in_uploadtree_pk2) { print <<<JSOUT <script type="text/javascript"> window.location.assign('{$newURL}'); </script> JSOUT; } $TreeInfo1 = $this->GetTreeInfo($uploadtree_pk1); $TreeInfo2 = $this->GetTreeInfo($uploadtree_pk2); $ErrText = _("No license data for tree %d. Use Jobs > Agents to schedule a license scan."); $ErrMsg = ''; if ($TreeInfo1['agent_pk'] == 0) { $ErrMsg = sprintf($ErrText, 1); } else { if ($TreeInfo2['agent_pk'] == 0) { $ErrMsg = sprintf($ErrText, 2); } else { $BucketDefArray = initBucketDefArray($TreeInfo1['bucketpool_pk']); /* Get list of children */ $Children1 = GetNonArtifactChildren($uploadtree_pk1); $Children2 = GetNonArtifactChildren($uploadtree_pk2); /* Add fuzzyname to children */ FuzzyName($Children1); // add fuzzyname to children FuzzyName($Children2); // add fuzzyname to children /* add element licstr to children */ $this->AddBucketStr($TreeInfo1, $Children1, $BucketDefArray); $this->AddBucketStr($TreeInfo2, $Children2, $BucketDefArray); /* Master array of children, aligned. */ $Master = MakeMaster($Children1, $Children2); /* add linkurl to children */ FileList($Master, $TreeInfo1['agent_pk'], $TreeInfo2['agent_pk'], $filter, $this, $uploadtree_pk1, $uploadtree_pk2); /* Apply filter */ $this->FilterChildren($filter, $Master, $BucketDefArray); } } switch ($this->OutputType) { case "XML": break; case "HTML": if ($ErrMsg) { $V .= $ErrMsg; } else { $V .= $this->HTMLout($Master, $uploadtree_pk1, $uploadtree_pk2, $in_uploadtree_pk1, $in_uploadtree_pk2, $filter, $TreeInfo1, $TreeInfo2, $BucketDefArray); } break; case "Text": break; default: } $Cached = false; } else { $Cached = true; } if (!$this->OutputToStdout) { return $V; } print "{$V}"; $Time = microtime(true) - $uTime; // convert usecs to secs $text = _("Elapsed time: %.2f seconds"); printf("<small>{$text}</small>", $Time); /**/ if ($Cached) { $text = _("cached"); $text1 = _("Update"); echo " <i>{$text}</i> <a href=\"{$_SERVER['REQUEST_URI']}&updcache=1\"> {$text1} </a>"; } else { // Cache Report if this took longer than 1/2 second if ($Time > 0.5) { ReportCachePut($CacheKey, $V); } } /**/ return; }
function menu_to_1html($Menu, $ShowRefresh = 1, $ShowTraceback = 0, $ShowAll = 1) { $V = ""; $Std = ""; global $menu_to_1html_counter; if ($ShowTraceback) { global $Plugins; $Refresh =& $Plugins[plugin_find_id("refresh")]; if (!empty($Refresh)) { $text = _("Traceback"); $URL = Traceback_dir() . "?" . $Refresh->GetRefresh(); $Std .= "<a href='{$URL}' target='_top'>{$text}</a>"; } } if ($ShowRefresh) { if (!empty($Std)) { $Std .= " | "; } $text = _("Refresh"); $Std .= "<a href='" . Traceback() . "'>{$text}</a>"; } $First = 1; if (!empty($Menu)) { foreach ($Menu as $Val) { if ($Val->Name == "[BREAK]") { if (!$First) { $V .= " • "; } $First = 1; } else { if (!empty($Val->HTML)) { $V .= $Val->HTML; $First = 0; } else { if (!empty($Val->URI)) { if (!$First) { $V .= " | "; } $V .= "<a href='" . Traceback_uri() . "?mod=" . $Val->URI . "'"; if (!empty($Val->Title)) { $V .= " title='" . htmlentities($Val->Title, ENT_QUOTES) . "'"; } $V .= ">"; if (@$_SESSION['fullmenudebug'] == 1) { $V .= $Val->FullName . "(" . $Val->Order . ")"; } else { $V .= $Val->Name; } $V .= "</a>"; $First = 0; } else { if ($ShowAll) { if (!$First) { $V .= " | "; } if (@$_SESSION['fullmenudebug'] == 1) { $V .= $Val->FullName . "(" . $Val->Order . ")"; } else { $V .= $Val->Name; } $First = 0; } } } } } } if (!empty($Std)) { if (!$First) { $V .= " • "; } $V .= $Std; $Std = NULL; } $menu_to_1html_counter++; return "<div id='menu1html-{$menu_to_1html_counter}' align='right' style='padding:0px 5px 0px 5px'><small>{$V}</small></div>"; }
public function htmlContent() { $filter = GetParm("filter", PARM_STRING); if (empty($filter)) { $filter = "none"; } $FreezeCol = GetParm("freeze", PARM_INTEGER); // which column to freeze? 1 or 2 or null $ClickedCol = GetParm("col", PARM_INTEGER); // which column was clicked on? 1 or 2 or null $ItemFrozen = GetParm("itemf", PARM_INTEGER); // frozen item or null $in_uploadtree_pk1 = GetParm("item1", PARM_INTEGER); $in_uploadtree_pk2 = GetParm("item2", PARM_INTEGER); if (empty($in_uploadtree_pk1) || empty($in_uploadtree_pk2)) { Fatal("Bad input parameters. Both item1 and item2 must be specified.", __FILE__, __LINE__); } /* If you click on a item in a frozen column, then you are a dope so ignore $ItemFrozen */ if ($FreezeCol == $ClickedCol) { $ItemFrozen = 0; $FreezeCol = 0; } /* @var $uploadDao UploadDao */ $uploadDao = $GLOBALS['container']->get('dao.upload'); /* Check item1 upload permission */ $Item1Row = $uploadDao->getUploadEntry($in_uploadtree_pk1); if (!$uploadDao->isAccessible($Item1Row['upload_fk'], Auth::getGroupId())) { $text = _("Permission Denied"); return "<h2>{$text} item 1</h2>"; } /* Check item2 upload permission */ $Item2Row = $uploadDao->getUploadEntry($in_uploadtree_pk2); if (!$uploadDao->isAccessible($Item2Row['upload_fk'], Auth::getGroupId())) { $text = _("Permission Denied"); return "<h2>{$text} item 2</h2>"; } $uploadtree_pk1 = $in_uploadtree_pk1; $uploadtree_pk2 = $in_uploadtree_pk2; if ($FreezeCol == 1) { $uploadtree_pk1 = $ItemFrozen; } else { if ($FreezeCol == 2) { $uploadtree_pk2 = $ItemFrozen; } } $newURL = Traceback_dir() . "?mod=" . $this->Name . "&item1={$uploadtree_pk1}&item2={$uploadtree_pk2}"; if (!empty($filter)) { $newURL .= "&filter={$filter}"; } // rewrite page with new uploadtree_pks */ if ($uploadtree_pk1 != $in_uploadtree_pk1 || $uploadtree_pk2 != $in_uploadtree_pk2) { print <<<JSOUT <script type="text/javascript"> window.location.assign('{$newURL}'); </script> JSOUT; } $TreeInfo1 = $this->GetTreeInfo($uploadtree_pk1); $TreeInfo2 = $this->GetTreeInfo($uploadtree_pk2); $ErrText = _("No license data for tree %d. Use Jobs > Agents to schedule a license scan."); $ErrMsg = ''; if ($TreeInfo1['agent_pk'] == 0) { $ErrMsg = sprintf($ErrText, 1); } else { if ($TreeInfo2['agent_pk'] == 0) { $ErrMsg = sprintf($ErrText, 2); } else { $BucketDefArray1 = initBucketDefArray($TreeInfo1['bucketpool_pk']); $BucketDefArray2 = initBucketDefArray($TreeInfo2['bucketpool_pk']); $BucketDefArray = $BucketDefArray1 + $BucketDefArray2; /* Get list of children */ $Children1 = GetNonArtifactChildren($uploadtree_pk1); $Children2 = GetNonArtifactChildren($uploadtree_pk2); /* Add fuzzyname to children */ FuzzyName($Children1); // add fuzzyname to children FuzzyName($Children2); // add fuzzyname to children /* add element licstr to children */ $this->AddBucketStr($TreeInfo1, $Children1, $BucketDefArray); $this->AddBucketStr($TreeInfo2, $Children2, $BucketDefArray); /* Master array of children, aligned. */ $Master = MakeMaster($Children1, $Children2); /* add linkurl to children */ FileList($Master, $TreeInfo1['agent_pk'], $TreeInfo2['agent_pk'], $filter, $this, $uploadtree_pk1, $uploadtree_pk2); /* Apply filter */ $this->FilterChildren($filter, $Master, $BucketDefArray); } } if ($this->OutputType == 'HTML') { if ($ErrMsg) { $V .= $ErrMsg; } else { $V .= $this->HTMLout($Master, $uploadtree_pk1, $uploadtree_pk2, $in_uploadtree_pk1, $in_uploadtree_pk2, $filter, $TreeInfo1, $TreeInfo2, $BucketDefArray); } } return $V; }