]>
src.bluestatic.org Git - viewsvn.git/blob - includes/functions.php
2 /*=====================================================================*\
3 || ###################################################################
4 || # ViewSVN [#]version[#]
5 || # Copyright ©2002-[#]year[#] Blue Static
7 || # This program is free software; you can redistribute it and/or modify
8 || # it under the terms of the GNU General Public License as published by
9 || # the Free Software Foundation; version [#]gpl[#] of the License.
11 || # This program is distributed in the hope that it will be useful, but
12 || # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 || # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 || # You should have received a copy of the GNU General Public License along
17 || # with this program; if not, write to the Free Software Foundation, Inc.,
18 || # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
19 || ###################################################################
20 \*=====================================================================*/
22 // ###################################################################
24 * Constructs the navbar from the given path elememnts. The current
25 * element is never selectable
27 * @return string Compiled HTML navigation bar
29 function ConstructNavbar()
31 $path = preg_split('#/#', BSRegister
::Get('input')->in
['path'], -1, PREG_SPLIT_NO_EMPTY
);
32 $input =& BSRegister
::Get('input');
34 $html = '[<a href="' . ConstructLink('browse', $input->in
['repos'], null, $input->in
['rev']) . '">' . $input->in
['repos'] . '</a>]: ';
38 return $html . '<strong>/</strong>';
42 foreach ($path AS $index => $part)
44 $build .= '/' . $part;
45 if (sizeof($path) - 1 == $index)
47 $html .= '/ <strong>' . $part . '</strong>';
51 $html .= '/ <a href="' . ConstructLink('browse', $input->in
['repos'], $build, $input->in
['rev']) . '"><strong>' . $part . '</strong></a> ';
58 // ###################################################################
60 * Formats an array of properties into a compiled HTML template
62 * @param array Array of properties
64 * @return string Compiled HTML property list
66 function FormatPropList($props)
68 if (sizeof($props) < 0)
72 foreach ($props AS $propname => $propval)
74 $data = sprintf(_('Property <strong>%1$s</strong> set to <em>%2$s</em>'), $propname, $propval);
75 eval('$proplist .= "' . BSRegister
::Get('template')->fetch('property') . '";');
80 // ###################################################################
82 * Formats a SVN log message
84 * @param string Unformatted log message
86 * @return string Output-ready log message
88 function FormatLogMessage($message)
92 $message = BSRegister
::Get('input')->entityEncode($message);
94 // TODO - fix the revision links
95 // $message = preg_replace('#r([0-9]+)#e', '"<a href=\"" . $viewsvn->maincontrol->href_struct("diff.php" . Paths::fetch_rev_str(true, "\1", 0), "/") . "\">r\1</a>"', $message);
98 $lines = explode("\n", $message);
100 foreach ($lines AS $line)
102 if (preg_match('#^\s*?(\*|\-)\s?(.*)#', $line, $matches))
106 $message .= '<li>' . $matches[2] . '</li>';
110 $message .= '<ul class="list">';
111 $message .= '<li>' . $matches[2] . '</li>';
125 $message .= '<br />';
138 $message = preg_replace('#(<br />)*$#', '', $message);
143 // ###################################################################
145 * Parses a date from SVN into something more human-friendly
147 * @param string Date string
149 * @return string Formatted and readable date string
151 function FormatSvnDate($string)
153 // 2005-01-23T20:42:53.703057Z
154 return preg_replace('#(....)\-(..)\-(..)T(..):(..):(..).(.*)Z#e', 'gmdate("r", mktime(\4, \5, \6, \2, \3, \1))', $string);
157 // ###################################################################
159 * Generates an absolute-pathed link if you just pass it the four
162 * @param string Action/script
163 * @param string Repository name
164 * @param string Subpath in repository
165 * @param integer Revision
167 * @return string Link (not wrapped in <a>)
169 function ConstructLink($action, $repos, $path, $rev)
171 return BSRegister
::Get('webpath') . '/' . $action . '/' . $repos . ':' . $path . ($rev > 0 ? '@' . $rev : '');
174 // ###################################################################
176 * Prepares data for output
178 * @param string Standard data
180 * @return string Output-ready data
182 function FormatCode($string)
185 $string = htmlspecialchars($string);
188 $string = str_replace("\t", ' ', $string);
193 $string = preg_replace('#( +)#e', '_FormatSpaces("\1")', $string);
198 $string = str_replace(' ', ' ', $string);
201 // convert advanced diff
202 $string = str_replace(array('{@+' . '+}', '{@-' . '-}'), array('<span class="diff_add_bit">', '<span class="diff_del_bit">'), $string);
203 $string = str_replace(array('{/@+' . '+}', '{/@-' . '-}'), '</span>', $string);
206 $string = nl2br($string);
211 // ###################################################################
213 * Counts the spaces and replaces two or more ones
215 * @param string Spaced string
217 * @return string 'd string
219 function _FormatSpaces($thestring)
221 if (strlen($thestring) >= 2)
223 $thestring = str_replace(' ', ' ', $thestring);
229 // ###################################################################
231 * Takes in an array of files with a path and an action and constructs
232 * the HTML block describing them
234 * @param array List of file changes
235 * @param string The repository
236 * @param integer Current revision
238 * @return string Processed HTML
240 function ConstructFileChanges($changes, $repos, $revision)
244 foreach ($changes AS $file)
246 switch ($file['action'])
250 $tooltip = _('Added');
253 $class = 'file_delete';
254 $tooltip = _('Deleted');
257 $class = 'file_modify';
258 $tooltip = _('Modified');
261 $class = 'file_replace';
262 $tooltip = _('Replaced');
266 $show['from'] = (bool)$file['from'];
270 $class = 'file_move';
271 $tooltip = _('Moved/Copied');
272 preg_match('#(.*):([0-9]+)#', $file['from'], $matches);
273 $link['from'] = ConstructLink('view', $repos, $matches[1], $revision);
276 $link['file'] = ConstructLink('view', $repos, $file['value'], $revision);
278 eval('$files .= "' . BSRegister
::Get('template')->fetch('file_change') . '";');
284 /*=====================================================================*\
285 || ###################################################################
288 || ###################################################################
289 \*=====================================================================*/