MTrackWeb/Events.php
authorAlan Knowles <alan@akbkhome.com>
Thu, 24 Mar 2011 15:30:00 +0000 (23:30 +0800)
committerAlan Knowles <alan@akbkhome.com>
Thu, 24 Mar 2011 15:30:00 +0000 (23:30 +0800)
MTrackWeb/Events.php

index 849d53a..6483776 100644 (file)
@@ -381,5 +381,46 @@ class MTrackWeb_Events extends MTrackWeb_Ticket
                 
     }
     
+    
+    function collapse_diff($diff)
+    {
+      static $idnum = 1;
+      require_once 'MTrackWeb/Changeset.php';
+      $cs = new MTrackWeb_Changeset();
+      $id = 'diff_' . $idnum++;
+      return "<br>" .
+        "<button onclick='\$(&quot;#$id&quot;).toggle(); return false;'>Toggle diff</button>".
+        "<div id='$id' style='display:none'>" .
+            $cs->diff($diff) . "</div>";
+    }
+    
+    function diff_strings($before, $now)
+    {
+         
+        $tempdir = sys_get_temp_dir();
+        $afile = tempnam($tempdir, "mtrack");
+        $bfile = tempnam($tempdir, "mtrack");
+        file_put_contents($afile, $before);
+        file_put_contents($bfile, $now);
+        static $diff = false;
+        if (!$diff) {
+            require_once 'System.php';
+            $diff= System::which('diff');
+        }
+        if (PHP_OS == 'SunOS') {
+            // TODO: make an option to allow use of gnu diff on solaris
+           $diff = shell_exec("$diff -u $afile $bfile");
+           $diff = str_replace($afile, 'before', $diff);
+           $diff = str_replace($bfile, 'now', $diff);
+         } else {
+            $diff = shell_exec("$diff --label before --label now -u $afile $bfile");
+         }
+        unlink($afile);
+        unlink($bfile);
+        $diff = htmlentities($diff, ENT_COMPAT, 'utf-8');
+        return $diff;
+    }
+     
+    
       
 }
\ No newline at end of file