コード例 #1
0
ファイル: diff.php プロジェクト: netovs/Core
/**
 * Undo patched changes to a string.
 *
 * @param string $text
 * @param array|string $diff
 * @return string
 */
function phorum_api_diff_unpatch_color($text, $diff)
{
    $text = str_replace(array("\r\n", "\r"), "\n", $text);
    if (!is_array($diff)) {
        $n = 0;
        for ($i = 0; $i < strlen($diff); $i++) {
            $c = substr($diff, $i, 1);
            if ($c == "-") {
                $n = substr($diff, 0, $i);
                $pre = substr($text, 0, $n);
                $post = substr($text, $n);
                return $pre . "[phorum removal]" . substr($diff, $i + 1) . "[/phorum removal]" . $post;
            } elseif ($c == "+") {
                $n = substr($diff, 0, $i);
                $pre = substr($text, 0, $n);
                $post = substr($text, $n);
                $colored_text = substr($diff, $i + 1);
                return $pre . "[phorum addition]" . $colored_text . "[/phorum addition]" . substr($post, strlen($diff) - $i - 1);
            }
        }
        return $text;
    }
    foreach (array_reverse($diff) as $d) {
        $text = phorum_api_diff_unpatch_color($text, $d);
    }
    return $text;
}
コード例 #2
0
ファイル: changes.php プロジェクト: netovs/Core
        $colored_body = str_replace(array("[phorum addition]", "[phorum removal]", "[/phorum addition]", "[/phorum removal]"), array("<span class=\"addition\">", "<span class=\"removal\">", "</span>", "</span>"), $colored_body);
        $colored_body = nl2br($colored_body);
        $this_version["colored_body"] = $colored_body;
    } elseif (!isset($diff_info['diff_body'])) {
        $this_version['colored_body'] = nl2br($prev_body);
    } else {
        $this_version["colored_body"] = nl2br($prev_body);
    }
    $this_version['colored_body'] = phorum_api_format_censor($this_version['colored_body']);
    // only happens in first loop
    if ($prev_subject == -1) {
        $prev_subject = $message["subject"];
    }
    // subject diffs
    if (isset($diff_info['diff_subject']) && !empty($diff_info['diff_subject'])) {
        $colored_subject = phorum_api_diff_unpatch_color($prev_subject, $diff_info['diff_subject']);
        $prev_subject = phorum_api_diff_unpatch($prev_subject, $diff_info['diff_subject']);
        $colored_subject = htmlspecialchars($colored_subject, ENT_COMPAT, $PHORUM["DATA"]["HCHARSET"]);
        $colored_subject = str_replace(array("[phorum addition]", "[phorum removal]", "[/phorum addition]", "[/phorum removal]"), array("<span class=\"addition\">", "<span class=\"removal\">", "</span>", "</span>"), $colored_subject);
        $colored_subject = nl2br($colored_subject);
        $this_version["colored_subject"] = $colored_subject;
    } elseif (!isset($diff_info['diff_subject'])) {
        $this_version['colored_subject'] = nl2br($prev_subject);
    } else {
        $this_version["colored_subject"] = nl2br($prev_subject);
    }
    $this_version['colored_subject'] = phorum_api_format_censor($this_version['colored_subject']);
    // no nl2br for subject
    //$this_version["colored_subject"] = nl2br($this_version["colored_subject"]);
    $message_hist[] = $this_version;
}