261 lines
7.9 KiB
PHP
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"> </td>
|
|
</tr>
|
|
<?foreach($triggers_name as $k=>$trigger) {?>
|
|
<tr>
|
|
<td> <?=($k+1)?> </td>
|
|
<td>
|
|
<?=$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"> <?=$sName?></font></td>
|
|
<?} else {?>
|
|
<td> <?=$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'> $k</td><td>";
|
|
expandVarView($v, "{$name}_{$k}");
|
|
echo "</td></tr>";
|
|
}
|
|
echo "</table><div>";
|
|
} else {
|
|
echo ($a=='')? ' ': " $a";
|
|
}
|
|
|
|
}
|
|
|
|
?>
|