コード例 #1
0
ファイル: ODiff.php プロジェクト: jbzdak/wikidot
 public function patchString($string, $patch, $reverse = false)
 {
     if (!ereg("\n\$", $string)) {
         $string .= "\n";
     }
     if (!ereg("\n\$", $patch)) {
         $patch .= "\n";
     }
     if ($reverse == false) {
         return xdiff_string_patch($string, $patch);
     } else {
         return xdiff_string_patch($string, $patch, XDIFF_PATCH_REVERSE);
     }
 }
コード例 #2
0
function devices_view_history($id, $ts)
{
    global $db;
    /* Device information */
    $r = $db->get_row("SELECT devicename,description,filename,password FROM devices WHERE id='{$id}'");
    ?>
<p><a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
">&laquo; List Devices</a>
<a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
?action=view&id=<?php 
    echo $id;
    ?>
">&laquo; Configuration</a>
<a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
?action=patches&id=<?php 
    echo $id;
    ?>
">&laquo; History</a>
<p><strong>Device Name:</strong>  <?php 
    echo $r['devicename'];
    ?>
<br><strong>File Name:</strong>  <?php 
    echo $r['filename'];
    ?>
<p><strong>Historic Configuration:</strong>
<p>
<?php 
    /* Get current config */
    $r = $db->get_row("SELECT content FROM configurations WHERE device='{$id}'");
    $config = $r['content'];
    echo "-&gt; retrieving current configuration<br>\n";
    /* Apply patches */
    $rows = $db->get_rows("SELECT ts,content FROM patches WHERE device='{$id}' ORDER BY ts ASC");
    $rev = count($rows) - 1;
    for ($rev; $rev >= 0; $rev--) {
        $row = $rows[$rev];
        /* Only apply patches that are newer then the requested date */
        if ($row['ts'] >= $ts) {
            echo "-&gt; applying patch revision " . $rev . ", date " . devices_ts_to_date($row['ts']) . "<br>\n";
            $config = xdiff_string_patch($config, $row['content']);
        }
    }
    ?>
<pre>
<?php 
    echo $config;
    ?>
</pre>
<p><a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
">&laquo; List Devices</a>
<a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
?action=view&id=<?php 
    echo $id;
    ?>
">&laquo; Configuration</a>
<a href="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
?action=patches&id=<?php 
    echo $id;
    ?>
">&laquo; History</a>
<?php 
}
コード例 #3
0
ファイル: Wikidot_Util_Diff.php プロジェクト: jbzdak/wikidot
 /**
  * Patches (or reverse-patches) string with a diff.
  *
  * @param string $string
  * @param string $patch
  * @param bool $reverse
  * @return string
  */
 public static function patchString($string, $patch, $reverse = false)
 {
     // fix "no new line at the end" problem.
     $string = Wikidot_Util_String::addTrailingNewline($string);
     $patch = Wikidot_Util_String::addTrailingNewline($patch);
     if ($reverse == false) {
         $flags = XDIFF_PATCH_NORMAL;
     } else {
         $flags = XDIFF_PATCH_REVERSE;
     }
     $errors = array();
     $r = xdiff_string_patch($string, $patch, $flags, &$errors);
     if (count($errors) > 0) {
         throw new Wikidot_Exception("Error while applying the patch.");
     }
     return $r;
 }