$revinfo = $viewsvn->svn->common->fetch_log($path, $viewsvn->paths->fetch_rev_num());
-$revinfo['message_clean'] = nl2br(htmlspecialchars($revinfo['message']));
+$revinfo['message_clean'] = $viewsvn->svn->format_log_message($revinfo['message']);
$listing = $viewsvn->svn->ls($repos, $relpath, $viewsvn->paths->fetch_rev_num());
$log = $viewsvn->svn->common->fetch_log($path, $high);
-$log['message_clean'] = nl2br(htmlspecialchars($log['message']));
+$log['message_clean'] = $viewsvn->svn->format_log_message($log['message']);
$files = $viewsvn->svn->common->construct_file_changes($log['files'], $repos, $high);
return $string;
}
+ /**
+ * Formats a SVN log message
+ *
+ * @access public
+ *
+ * @param string Unformatted log message
+ *
+ * @return string Output-ready log message
+ */
+ function format_log_message($message)
+ {
+ global $viewsvn;
+
+ $message = $viewsvn->entity_encode($message);
+
+ $message = preg_replace('#(^| )r([0-9]*)( |$)#e', '$viewsvn->paths->out("diff.php" . $viewsvn->paths->fetch_rev_str(true, \2, 0), $viewsvn->paths->fetch_repos())', $message);
+
+ $list = false;
+ $lines = explode("\n", $message);
+ $message = '';
+ foreach ($lines AS $line)
+ {
+ if (preg_match('#^\s*?(\*|\-)\s?(.*)#', $line, $matches))
+ {
+ if ($list)
+ {
+ $message .= '<li>' . $matches[2] . '</li>';
+ }
+ else
+ {
+ $message .= '<ul>';
+ $message .= '<li>' . $matches[2] . '</li>';
+ }
+ $list = true;
+ }
+ else
+ {
+ if ($list)
+ {
+ $message .= '</ul>';
+ $message .= $line;
+ }
+ else
+ {
+ $message .= $line;
+ $message .= '<br />';
+ }
+ $list = false;
+ }
+
+ $message .= "\n";
+ }
+
+ if ($list)
+ {
+ $message .= '</ul>';
+ }
+
+ $message = preg_replace('#(<br />)*$#', '', $message);
+
+ return $message;
+ }
+
/**
* Counts the spaces and replaces two or more ones
*
$link['diffprev'] = $viewsvn->paths->out('diff.php' . $viewsvn->paths->fetch_rev_str(true, $log['rev'], $prev), $path);
}
- $log['message_clean'] = nl2br(htmlspecialchars($log['message']));
+ $log['message_clean'] = $viewsvn->svn->format_log_message($log['message']);
eval('$nodes .= "' . $template->fetch('log_node') . '";');
}
$logmsg = $viewsvn->svn->common->fetch_log($path, $viewsvn->paths->fetch_rev_num());
unset($logmsg['files']);
-$logmsg['message_clean'] = nl2br(htmlspecialchars($logmsg['message']));
+$logmsg['message_clean'] = $viewsvn->svn->format_log_message($logmsg['message']);
$catdata = implode("\n", $viewsvn->svn->cat($repos, $relpath, $viewsvn->paths->fetch_rev_num()));