MTrack/SCM/Git/Repo.php
[web.mtrack] / MTrack / DataObjects / Event.php
1  <?php
2   
3     
4     function collapse_diff($diff)
5     {
6       static $idnum = 1;
7       require_once 'MTrackWeb/Changeset.php';
8       $cs = new MTrackWeb_Changeset();
9       $id = 'diff_' . $idnum++;
10       return "<br>" .
11         "<button onclick='\$(&quot;#$id&quot;).toggle(); return false;'>Toggle diff</button>".
12         "<div id='$id' style='display:none'>" .
13             $cs->diff($diff) . "</div>";
14     }
15     
16     function diff_strings($before, $now)
17     {
18          
19         $tempdir = sys_get_temp_dir();
20         $afile = tempnam($tempdir, "mtrack");
21         $bfile = tempnam($tempdir, "mtrack");
22         file_put_contents($afile, $before);
23         file_put_contents($bfile, $now);
24         static $diff = false;
25         if (!$diff) {
26             require_once 'System.php';
27             $diff= System::which('diff');
28         }
29         if (PHP_OS == 'SunOS') {
30             // TODO: make an option to allow use of gnu diff on solaris
31            $diff = shell_exec("$diff -u $afile $bfile");
32            $diff = str_replace($afile, 'before', $diff);
33            $diff = str_replace($bfile, 'now', $diff);
34          } else {
35             $diff = shell_exec("$diff --label before --label now -u $afile $bfile");
36          }
37         unlink($afile);
38         unlink($bfile);
39         $diff = htmlentities($diff, ENT_COMPAT, 'utf-8');
40         return $diff;
41     }
42      
43     
44 }