diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index 81a78e1b74e05365a47065287860c0f3bb6c4c7e..f1978ff2f01c8200026a677930ff166d57f6862b 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -322,6 +322,7 @@ class tform_actions { } $this->onAfterDelete(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_after_delete',$this); } //header("Location: ".$liste["file"]."?PHPSESSID=".$_SESSION["s"]["id"]); diff --git a/interface/web/remote/monitor.php b/interface/web/remote/monitor.php index 230ace8076d8e51a63d1079a8b156e1689c8bda6..c7a69f61ed62ecbf23b168a0512636c91ff95b4c 100644 --- a/interface/web/remote/monitor.php +++ b/interface/web/remote/monitor.php @@ -55,6 +55,72 @@ if($token == '' or $secret == '' or $token != $secret) { } $out['type'] = $type; -echo json_encode($out); +function __json_encode($data) { + if( is_array($data) || is_object($data) ) { + $islist = is_array($data) && ( empty($data) || array_keys($data) === range(0,count($data)-1) ); + + if( $islist ) { + $json = '[' . implode(',', array_map('__json_encode', $data) ) . ']'; + } else { + $items = Array(); + foreach( $data as $key => $value ) { + $items[] = __json_encode("$key") . ':' . __json_encode($value); + } + $json = '{' . implode(',', $items) . '}'; + } + } elseif( is_string($data) ) { + # Escape non-printable or Non-ASCII characters. + # I also put the \\ character first, as suggested in comments on the 'addcslashes' page. + $string = '"' . addcslashes($data, "\\\"\n\r\t/" . chr(8) . chr(12)) . '"'; + $json = ''; + $len = strlen($string); + # Convert UTF-8 to Hexadecimal Codepoints. + for( $i = 0; $i < $len; $i++ ) { + + $char = $string[$i]; + $c1 = ord($char); + + # Single byte; + if( $c1 <128 ) { + $json .= ($c1 > 31) ? $char : sprintf("\\u%04x", $c1); + continue; + } + + # Double byte + $c2 = ord($string[++$i]); + if ( ($c1 & 32) === 0 ) { + $json .= sprintf("\\u%04x", ($c1 - 192) * 64 + $c2 - 128); + continue; + } + + # Triple + $c3 = ord($string[++$i]); + if( ($c1 & 16) === 0 ) { + $json .= sprintf("\\u%04x", (($c1 - 224) <<12) + (($c2 - 128) << 6) + ($c3 - 128)); + continue; + } + + # Quadruple + $c4 = ord($string[++$i]); + if( ($c1 & 8 ) === 0 ) { + $u = (($c1 & 15) << 2) + (($c2>>4) & 3) - 1; + + $w1 = (54<<10) + ($u<<6) + (($c2 & 15) << 2) + (($c3>>4) & 3); + $w2 = (55<<10) + (($c3 & 15)<<6) + ($c4-128); + $json .= sprintf("\\u%04x\\u%04x", $w1, $w2); + } + } + } else { + # int, floats, bools, null + $json = strtolower(var_export( $data, true )); + } + return $json; +} + +if(function_exists('json_encode')) { // PHP >= 5.2 + echo json_encode($out); +} else { // PHP < 5.2 + echo __json_encode($out); +} exit; ?> \ No newline at end of file