Files
luos/workflow/engine/templates/cases/showDebugFrame.php
2010-12-02 23:34:41 +00:00

261 lines
7.9 KiB
PHP

<?php
/**
* groups_Tree.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
/**
* New Debugger interface
*
* @author Erik A. O. <erik@colosa.com>
* @Date Wed Mar 17th. 2010
*/
G::LoadClass('case');
//variables
$oApp= new Cases();
$aFields = $oApp->loadCase($_SESSION['APPLICATION']);
$aStoredVarNames = array_keys($aFields['APP_DATA']);
$aVariables = Array();
for($i=0; $i<count($_SESSION['TRIGGER_DEBUG']['DATA']); $i++) {
$aVariables[$_SESSION['TRIGGER_DEBUG']['DATA'][$i]['key']] = $_SESSION['TRIGGER_DEBUG']['DATA'][$i]['value'];
}
$aVariables = array_merge($aFields['APP_DATA'], $aVariables);
ksort($aVariables);
//triggers
if( isset($_SESSION['TRIGGER_DEBUG']['info']) ) {
$aTriggers = $_SESSION['TRIGGER_DEBUG']['info'];
} else {
$aTriggers[0] = $_SESSION['TRIGGER_DEBUG'];
}
foreach($aTriggers as $aTrigger) {
$triggers_name = Array();
$triggers_code = Array();
$t_time = $aTrigger['TIME'];
if($aTrigger['NUM_TRIGGERS'] != 0) {
$triggers_onfly = $aTrigger['NUM_TRIGGERS']." trigger(s) was executed <font color='#641213'><b>".strtolower($aTrigger['TIME'])."</b></font><br/>";
$cnt = 0;
if(isset($aTrigger['TRIGGERS_NAMES'])) {
foreach($aTrigger['TRIGGERS_NAMES'] as $name) {
$t_code = $aTrigger['TRIGGERS_VALUES'][$cnt]['TRI_WEBBOT'];
//$t_code = str_replace('"', '\'',$t_code);
//$t_code = addslashes($t_code);
$t_code = Only1br($t_code);
$triggers_name[] = $name;
$triggers_code[] = $t_code;
$cnt++;
}
}
} else {
$triggers_onfly = " No triggers found <font color='#641213'><b>".strtolower($t_time)."</b></font>";
}
}
//errors
$DEBUG_POST = array_unique($_SESSION['TRIGGER_DEBUG']['ERRORS']);
/////
function Only1br($string) {
return preg_replace("/(\r\n)+|(\n|\r)+/", "<br />", $string);
}
?>
<style>
table.pmdebugger{
border: 1px solid #777;
padding: 0;
border-spacing: 0;
color: #000;
}
table.pmdebugger td{
border: 1px solid #777;
border-width: 0 0 1px 1px;
padding-left: 0px;
padding-right: 0px;
color: #000;
font: 8pt Tahoma,sans-serif,MiscFixed;
}
td.pmdebuggerHeader{
font-weight: bold;
color: #000;
padding-left: 3px;
padding-right: 3px;
background-color: #C3C3C3;
font: 8pt Tahoma,sans-serif,MiscFixed;
}
#debugger_vars{
padding: 3px;
overflow: auto;
}
#debugger_triggers{
padding: 3px;
overflow: auto;
}
#debugger_errors{
padding: 3px;
overflow: auto;
}
.data_view{
padding: 3px;
display:none;
background: #F6F3F3;
font-family: monospace;
}
</style>
<script>
function toggle(id){
var o = document.getElementById(id);
if( o.style.display != 'block'){
o.style.display = 'block';
newimg = new Image();
newimg.src = '/images/pin-dn-on.gif';
document.getElementById('img_'+id).src = newimg.src;
} else {
o.style.display = 'none';
newimg = new Image();
newimg.src = '/images/pin-up-on.gif';
document.getElementById('img_'+id).src = newimg.src;
}
}
</script>
<div class="ui-widget-header ui-corner-all" width="100%" align="center">Processmaker - Debugger</div>
<div class="ui-widget-header ui-corner-all" width="50%" align="center">Triggers</div>
<div id="debugger_triggers" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-all">
<table width='100%' cellspacing='0' cellpadding='0' border='1' style='border:0px;'>
<tr>
<td width='410px' class='treeNode' style='border:0px;background-color:transparent;'>
<font color='#0B58B6'><?=$triggers_onfly?></font><br/>
<?if( sizeof($triggers_name) > 0 ) {?>
<table class="pmdebugger" width="100%">
<tr>
<td width="5" class="pmdebuggerHeader">#</td><td class="pmdebuggerHeader">Name</td><td class="pmdebuggerHeader">&nbsp;</td>
</tr>
<?foreach($triggers_name as $k=>$trigger) {?>
<tr>
<td>&nbsp;<?=($k+1)?>&nbsp;</td>
<td>
&nbsp;<?=$trigger?>
<div id='trigger_<?=$k?>' class='ui-accordion-header ui-helper-reset ui-state-active ui-corner-all data_view'><?=$triggers_code[$k]?></div>
</td>
<td valign="top" width="5">
<a href='#' onclick="toggle('trigger_<?=$k?>'); return false;">
<img id='img_trigger_<?=$k?>' src='/images/pin-up-on.gif' border='0'>
</a>
</td>
</tr>
<?}?>
</table>
<?}?>
</td>
</tr>
</table>
</div>
<!---->
<div class="ui-widget-header ui-corner-all" width="50%" align="center">Variables</div>
<div id="debugger_vars" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-all">
<table class="pmdebugger" width="100%">
<tr>
<td class="pmdebuggerHeader">Name</td><td class="pmdebuggerHeader">Value</td>
</tr>
<?php foreach($aVariables as $sName=>$aVariable) {?>
<tr>
<?php if( is_array($aVariable) ) {?>
<td valign="top"><font color="blue">&nbsp;<?=$sName?></font></td>
<?} else {?>
<td>&nbsp;<?=$sName?></td>
<?}?>
<td><?php echo expandVarView($aVariable, $sName)?></td>
</tr>
<?}?>
</table>
</div>
<!---->
<?if( count($DEBUG_POST) > 0 ) {?>
<div class="ui-widget-header ui-corner-all" width="50%" align="center">Errors</div>
<div id="debugger_errors" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-all" align="left">
<? for($i=0; $i<count($DEBUG_POST); $i++) {
if(isset($DEBUG_POST[$i]['ERROR']) and $DEBUG_POST[$i]['ERROR'] != '') {?>
<span class='treeNode'>
<font color='red'>Error </font>
<font color='#0B58B6'><?=str_replace('<br />', '',$DEBUG_POST[$i]['ERROR'])?></font>
</span><br/>
<?}
}
for($i=0; $i<count($DEBUG_POST); $i++) { ?>
<?if(isset($DEBUG_POST[$i]['FATAL']) and $DEBUG_POST[$i]['FATAL'] != '') { ?>
<span class='treeNode'>
<font color='red'>Fatal error </font>
<font color='#0B58B6'> <?=str_replace('<br />', '',$DEBUG_POST[$i]['FATAL'])?></font>
</span><br/>
<?}
}
} else { ?>
<div class="ui-widget-header ui-corner-all" width="50%" align="center">No errors reported</div>
<?}?>
</div>
<!---->
<?if(isset($_POST['NextStep'])) {?>
<input type="button" value="Continue" class="module_app_button___gray" onclick="javascript:location.href='<?=$_POST['NextStep']?>'">
<?}?>
<?
function expandVarView($a, $name) {
if( is_array($a) ) {
echo "<a href='#' onclick=\"toggle('data_view_{$name}'); return false;\"><img id='img_data_view_{$name}' src='/images/pin-up-on.gif' border='0'></a><div id='data_view_{$name}' class='data_view'><table class='pmdebugger' width='100%'>";
foreach($a as $k=>$v) {
echo "<tr><td valign='top'>&nbsp;$k</td><td>";
expandVarView($v, "{$name}_{$k}");
echo "</td></tr>";
}
echo "</table><div>";
} else {
echo ($a=='')? '&nbsp;': "&nbsp;$a";
}
}
?>