Skip to content
Snippets Groups Projects
Commit f53ec457 authored by hahn's avatar hahn
Browse files

update valuestore browser

parent cad6297f
No related branches found
No related tags found
No related merge requests found
......@@ -292,3 +292,9 @@ span.replace{background:#fea; font-weight: bold;}
div.logs{ margin-top: 1em; padding: 0.5em 0;
text-align: left;
}
/* ----- valuestore browser ----- */
#tbldata th{background: #ace; border: none; float: none;}
#tbldata tr:hover{background: #fec;}
#tbldata td{border: none; padding: 0.2em; margin: none; float: none;}
\ No newline at end of file
<?php
/**
*
* VERSION HANDLER API
*
* Syntax des Aufrufs (als GET Schreibweise; ein POST soll (später) auch gehen):
* http://dev.ci.iml.unibe.ch:8002/versions/?action=update&project=ci&phase=preview&host=ci.preview.iml.unibe.ch&variable=version&value=007
*
* Parameter:
*
* action=update (get-Funktionen muss ich später noch bauen)
* project=[Projekt-ID (=Name des Package, das installiert wird)]
* phase=(preview|stage|live)
* host=[FQDN]
* variable=version (andere noch nicht unterstützt/ vorgesehen)
* value=[Versionsdaten]
*
* 2017-04-07 hahn first lines
*/
// ----------------------------------------------------------------------
// functions
// ----------------------------------------------------------------------
/**
* show an error message and quit with http status code 400 (Bad request)
* @param string $sMessage message to show
* @return boolean
*/
function quit($sMessage) {
$sProtocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header("$sProtocol 400: Bad request");
die("<h1>Bad request</h1>" . $sMessage);
return false;
}
/**
* get a request param from GET and POST scope (POST has priority) and
* verify it with execution of a cleanup array
* @param string $sKey key to search for in GET or POST
* @param string $sRegex4Cleanup regex for filtering
* @return type
*/
function getParam($sKey, $sRegex4Cleanup = false) {
$sValue=false;
if (array_key_exists($sKey, $_GET)) {
$sValue=$_GET[$sKey];
}
if (array_key_exists($sKey, $_POST)) {
$sValue=$_POST[$sKey];
}
if(!$sValue){
return false;
}
$sReturn = $sRegex4Cleanup ? preg_replace($sRegex4Cleanup, '', $sValue) : $sValue;
if ($sReturn !== $sValue) {
quit("ERROR: the parameter value in [$sKey = ...] has a wrong format.");
}
return $sReturn;
}
// ----------------------------------------------------------------------
// check required params
// ----------------------------------------------------------------------
/*
if (!$_GET || !count($_GET)) {
quit("no parameter was found.");
}
foreach (array("action", "project") as $sKey) {
if (!array_key_exists($sKey, $_GET)) {
quit("value required: $sKey=");
}
}
*/
// ----------------------------------------------------------------------
// get vars
// ----------------------------------------------------------------------
$sAction = getParam('action', '/[^a-z]/');
$sProject = getParam('project', '/[^a-z\-0-9]/');
$sPhase = getParam('phase', '/[^a-z]/');
$sPlace = getParam('place', '/[^a-z]/');
$sHost = getParam('host', '/[^a-z\.\-0-9]/');
if ($sHost && !$sPlace) {
$sPlace = 'installed';
}
$sVarname = getParam('variable', '/[^a-z]/');
$sValue = getParam('value', '');
// ----------------------------------------------------------------------
// init class
// ----------------------------------------------------------------------
$sOut='';
$sHeader='';
$sOut.='<h1>data browser</h1>';
require './classes/valuestore.class.php';
$oVersion = new valuestore();
$aData=$oVersion->dumpdb();
$sTable='';
$sTableHead='';
if(is_array($aData) && count($aData)){
// echo '<pre>' . print_r($aData, 1);
foreach ($aData as $aRow){
$sItemUrl='index.php?action=show&project='.$aRow['project'].'&package='.$aRow['package'].'&phase='.$aRow['phase'].'&host='.$aRow['host'].'&variable='.$aRow['variable'].'';
$sTable.='<tr onclick="location.href=\''.$sItemUrl.'\'">';
// $sTable.='<tr>';
foreach ($aRow as $sKey=>$sValue){
// $sTable.='<td class="'.$sKey.'"><a href="'.$sUrl.'">'.$sValue.'</a></td>';
$sTable.='<td class="'.$sKey.'">'.htmlentities($sValue).'</td>';
}
$sTable.='<td>'
// . '<button onclick="location.href=\''.$sItemUrl.'&action=get\'">View</button>'
. '<form method="POST" action="'.$sItemUrl.'">'
. '<input type="hidden" name="action" value="delete">'
. '<button>Delete</button>'
. '</form>'
. '</td>'
. '</tr>';
}
foreach (array_keys($aRow) as $sKey){
$sTableHead.='<th class="'.$sKey.'">'.$sKey.'</th>';
}
$sOut.=''
. '<form method="POST" action="index.php">'
. '<input type="hidden" name="action" value="cleanup">'
. '<button>Cleanup (older 1d)</button>'
. '</form><hr>'
. '<table id="tbldata"><thead>'
. '<tr>'.$sTableHead. '</tr>'
. '</thead>'
. '<tbody>'.$sTable.'</tbody></table>';
} else {
$sOut.='no data yet.';
}
// $sOut.='<script>addFilterToTable("tbldata"); filterTable();</script>';
require_once("../deployment/classes/page.class.php");
$oPage = new Page();
$oPage->addResponseHeader("Pragma: no-cache");
$oPage->setOutputtype('html');
$oPage->setHeader($sHeader);
$oPage->addJsOnReady('addFilterToTable(); filterTable();');
$oPage->setContent($sOut);
echo $oPage->render();
<?php
/**
*
* VERSION HANDLER API
*
* Syntax des Aufrufs (als GET Schreibweise; ein POST soll (später) auch gehen):
* http://dev.ci.iml.unibe.ch:8002/versions/?action=update&project=ci&phase=preview&host=ci.preview.iml.unibe.ch&variable=version&value=007
*
* Parameter:
*
* action=update (get-Funktionen muss ich später noch bauen)
* project=[Projekt-ID (=Name des Package, das installiert wird)]
* phase=(preview|stage|live)
* host=[FQDN]
* variable=version (andere noch nicht unterstützt/ vorgesehen)
* value=[Versionsdaten]
*
* 2017-04-07 hahn first lines
*/
// ----------------------------------------------------------------------
// functions
// ----------------------------------------------------------------------
/**
* show an error message and quit with http status code 400 (Bad request)
* @param string $sMessage message to show
* @return boolean
*/
function quit($sMessage) {
$sProtocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header("$sProtocol 400: Bad request");
die("<h1>Bad request</h1>" . $sMessage);
return false;
}
/**
* get a request param from GET and POST scope (POST has priority) and
* verify it with execution of a cleanup array
* @param string $sKey key to search for in GET or POST
* @param string $sRegex4Cleanup regex for filtering
* @return type
*/
function getParam($sKey, $sRegex4Cleanup = false) {
$sValue=false;
if (array_key_exists($sKey, $_GET)) {
$sValue=$_GET[$sKey];
}
if (array_key_exists($sKey, $_POST)) {
$sValue=$_POST[$sKey];
}
if(!$sValue){
return false;
}
$sReturn = $sRegex4Cleanup ? preg_replace($sRegex4Cleanup, '', $sValue) : $sValue;
if ($sReturn !== $sValue) {
quit("ERROR: the parameter value in [$sKey = ...] has a wrong format.");
}
return $sReturn;
}
// ----------------------------------------------------------------------
// check required params
// ----------------------------------------------------------------------
/*
if (!$_GET || !count($_GET)) {
quit("no parameter was found.");
}
foreach (array("action", "project") as $sKey) {
if (!array_key_exists($sKey, $_GET)) {
quit("value required: $sKey=");
}
}
*/
// ----------------------------------------------------------------------
// get vars
// ----------------------------------------------------------------------
$sAction = getParam('action', '/[^a-z]/');
$sProject = getParam('project', '/[^a-z\-0-9]/');
$sPhase = getParam('phase', '/[^a-z]/');
$sPlace = getParam('place', '/[^a-z]/');
$sHost = getParam('host', '/[^a-z\.\-0-9]/');
if ($sHost && !$sPlace) {
$sPlace = 'installed';
}
$sVarname = getParam('variable', '/[^a-z]/');
$sValue = getParam('value', '');
// ----------------------------------------------------------------------
// init class
// ----------------------------------------------------------------------
$sOut='';
$sHeader='';
$sOut.='<h1>data browser</h1>';
require './classes/valuestore.class.php';
$oVersion = new valuestore();
$aData=$oVersion->dumpdb();
$sTable='';
$sTableHead='';
if(is_array($aData) && count($aData)){
// echo '<pre>' . print_r($aData, 1);
foreach ($aData as $aRow){
$sItemUrl='index.php?action=show&project='.$aRow['project'].'&package='.$aRow['package'].'&phase='.$aRow['phase'].'&host='.$aRow['host'].'&variable='.$aRow['variable'].'';
$sTable.='<tr ondblclick="location.href=\''.$sItemUrl.'\'">';
// $sTable.='<tr>';
foreach ($aRow as $sKey=>$sValue){
// $sTable.='<td class="'.$sKey.'"><a href="'.$sUrl.'">'.$sValue.'</a></td>';
$sOnclick=strstr($sValue, '"')
? ''
: 'onclick="$(\'#eFilter\').val(\''.$sValue.'\');filterTable();" title="click to filter by ['.$sValue.']"'
;
$sTable.='<td class="'.$sKey.'" '.$sOnclick.'>'.htmlentities($sValue).'</td>'."\n";
}
$sTable.='<td>'
// . '<button onclick="location.href=\''.$sItemUrl.'&action=get\'">View</button>'
. '<form method="POST" action="'.$sItemUrl.'">'
. '<input type="hidden" name="action" value="delete">'
. '<button>Delete</button>'
. '</form>'
. '</td>'
. '</tr>'."\n";
}
foreach (array_keys($aRow) as $sKey){
$sTableHead.='<th class="'.$sKey.'">'.$sKey.'</th>';
}
$sOut.=''
. '<form method="POST" action="index.php">'
. '<input type="hidden" name="action" value="cleanup">'
. '<button>Cleanup (older 1d)</button>'
. '</form><hr>'
. '<table id="tbldata"><thead>'
. '<tr>'.$sTableHead. '<th>action</th></tr>'
. '</thead>'
. '<tbody>'.$sTable.'</tbody></table>';
} else {
$sOut.='no data yet.';
}
// $sOut.='<script>addFilterToTable("tbldata"); filterTable();</script>';
require_once("../deployment/classes/page.class.php");
$oPage = new Page();
$oPage->addResponseHeader("Pragma: no-cache");
$oPage->setOutputtype('html');
$oPage->setHeader($sHeader);
$oPage->addJsOnReady('addFilterToTable(); filterTable();');
$oPage->setContent($sOut);
echo $oPage->render();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment