This class renders diffs in the Wiki-style "inline" format. Copyright 2004-2016 Horde LLC (http://www.horde.org/) See the enclosed file COPYING for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.
Author: Ciprian Popovici
Inheritance: extends Horde_Text_Diff_Renderer
Exemple #1
0
 public static function generate($fromText, $toText)
 {
     if (!is_array($fromText)) {
         $fromText = preg_split('/\\v/', $fromText);
     }
     if (!is_array($toText)) {
         $toText = preg_split('/\\v/', $toText);
     }
     $diff = new \Horde_Text_Diff('auto', [$fromText, $toText]);
     $renderer = new \Horde_Text_Diff_Renderer_Inline();
     $result = $renderer->render($diff);
     return nl2br(trim($result));
 }
Exemple #2
0
 public function __construct()
 {
     global $database;
     if (!isset($_GET["id"]) || is_null($_GET["id"])) {
         return;
     }
     $id = intval($_GET["id"]);
     $result = $database->query("SELECT `url`, `latency`, `last_sha1`, `current_sha1`, `last_header`, `current_header`, `last_body`, `current_body` FROM `sites` WHERE `id`=" . $id . ";");
     echo "[" . json_encode($result);
     if (count($result) != 1) {
         echo "]";
         return;
     }
     $sb1 = explode('\\n', $result[0]["last_sha1"] . '\\n\\n' . $result[0]["last_header"] . '\\n\\n' . $result[0]["last_body"]);
     $sb2 = explode('\\n', $result[0]["current_sha1"] . '\\n\\n' . $result[0]["current_header"] . '\\n\\n' . $result[0]["current_body"]);
     $diff = new Horde_Text_Diff('auto', array($sb1, $sb2));
     $renderer = new Horde_Text_Diff_Renderer_Inline();
     $string = $renderer->render($diff);
     $string = str_replace('&', '&', $string);
     $string = str_replace(array("\r", "\n"), '<br>', $string);
     echo ",[{\"data\":" . json_encode($string) . "}]]";
     //echo($string);
 }
Exemple #3
0
 $template2 = $db->fetch_array($query);
 if ($mybb->input['sid2'] == -2) {
     $sub_tabs['full_edit'] = array('title' => $lang->full_edit, 'link' => "index.php?module=style-templates&action=edit_template&title=" . urlencode($template1['title']) . "&sid=" . $mybb->get_input('sid1', MyBB::INPUT_INT) . "&amp;from=diff_report");
 }
 if ($template1['template'] == $template2['template']) {
     flash_message($lang->templates_the_same, 'error');
     admin_redirect("index.php?module=style-templates&sid=" . $mybb->get_input('sid2', MyBB::INPUT_INT) . $expand_str);
 }
 $template1['template'] = explode("\n", $template1['template']);
 $template2['template'] = explode("\n", $template2['template']);
 $plugins->run_hooks("admin_style_templates_diff_report_run");
 require_once MYBB_ROOT . "inc/3rdparty/diff/Diff.php";
 require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer.php";
 require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer/Inline.php";
 $diff = new Horde_Text_Diff('auto', array($template1['template'], $template2['template']));
 $renderer = new Horde_Text_Diff_Renderer_Inline();
 if ($sid) {
     $page->add_breadcrumb_item($template_sets[$sid], "index.php?module=style-templates&amp;sid={$sid}{$expand_str}");
 }
 if ($mybb->input['sid2'] == -2) {
     $page->add_breadcrumb_item($lang->find_updated, "index.php?module=style-templates&amp;action=find_updated");
 }
 $page->add_breadcrumb_item($lang->diff_report . ": " . htmlspecialchars_uni($template1['title']), "index.php?module=style-templates&amp;action=diff_report&amp;title=" . $db->escape_string($mybb->input['title']) . "&amp;from=" . htmlspecialchars_uni($mybb->input['from']) . "&amp;sid1=" . $mybb->get_input('sid1', MyBB::INPUT_INT) . "&amp;sid2=" . $mybb->get_input('sid2', MyBB::INPUT_INT));
 $page->output_header($lang->template_sets);
 $page->output_nav_tabs($sub_tabs, 'diff_report');
 $table = new Table();
 if ($mybb->input['from']) {
     $table->construct_header("<ins>" . $lang->master_updated_ins . "</ins><br /><del>" . $lang->master_updated_del . "</del>");
 } else {
     $table->construct_header("<ins>" . $lang->master_updated_del . "</ins><br /><del>" . $lang->master_updated_ins . "</del>");
 }
    if (!$editlog['eid']) {
        error($lang->error_no_log);
    }
    if ($editlog['pid'] != $pid) {
        error($lang->error_cannot_compare_other_posts);
    }
    $lang->edit_history = $lang->sprintf($lang->edit_history, $post['subject']);
    $dateline = my_date('relative', $editlog['dateline']);
    $lang->edit_as_of = $lang->sprintf($lang->edit_as_of, $dateline);
    require_once MYBB_ROOT . "inc/3rdparty/diff/Diff.php";
    require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer.php";
    require_once MYBB_ROOT . "inc/3rdparty/diff/Diff/Renderer/Inline.php";
    $message1 = explode("\n", $editlog['originaltext']);
    $message2 = explode("\n", $post['message']);
    $diff = new Horde_Text_Diff('auto', array($message1, $message2));
    $renderer = new Horde_Text_Diff_Renderer_Inline();
    if ($editlog['originaltext'] == $post['message']) {
        $comparison = $lang->post_same;
    } else {
        $comparison = $renderer->render($diff);
    }
    eval("\$postcomparison = \"" . $templates->get("edithistory_comparison") . "\";");
    output_page($postcomparison);
}
// Viewing full text
if ($mybb->input['action'] == "view") {
    add_breadcrumb($lang->view_original_text, "edithistory.php?action=view&pid={$pid}");
    $query = $db->query("\r\n\t\tSELECT e.*, u.username\r\n\t\tFROM " . TABLE_PREFIX . "edithistory e\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (e.uid=u.uid)\r\n\t\tWHERE e.eid='" . $mybb->get_input('eid', MyBB::INPUT_INT) . "'\r\n\t");
    $edit = $db->fetch_array($query);
    if (!$edit['eid']) {
        error($lang->error_no_log);
Exemple #5
0
    public function testGithubPullRequest86()
    {
        $a = <<<EOA
One
Two
EOA;
        $b = <<<EOB
Ones
Twos
EOB;
        $patch = <<<EOPATCH
One<ins>s</ins>
Two<ins>s</ins>

EOPATCH;
        $diff = new Horde_Text_Diff('Native', array(explode("\n", $a), explode("\n", $b)));
        $renderer = new Horde_Text_Diff_Renderer_Inline(array('split_characters' => true));
        $this->assertEquals($patch, $renderer->render($diff));
    }