From 11201c5e3b31d35e23b03f40e3d242014f15ce49 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Wed, 13 Apr 2011 09:45:40 -0400
Subject: [PATCH] - Added on_after_delete event handler in tform_actions.inc.php - Improved monitor.php file.

---
 interface/lib/classes/tform_actions.inc.php |    1 
 interface/web/remote/monitor.php            |   68 +++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index 81a78e1..f1978ff 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -322,6 +322,7 @@
                         }
 						
 						$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 230ace8..c7a69f6 100644
--- a/interface/web/remote/monitor.php
+++ b/interface/web/remote/monitor.php
@@ -55,6 +55,72 @@
 }
 $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

--
Gitblit v1.9.1