Clean up ConstructNavbar() so we don't have to make repeated calls to BSRegister...
[viewsvn.git] / includes / functions.php
1 <?php
2 /*=====================================================================*\
3 || ###################################################################
4 || # ViewSVN [#]version[#]
5 || # Copyright ©2002-[#]year[#] Blue Static
6 || #
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.
10 || #
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
14 || # more details.
15 || #
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 \*=====================================================================*/
21
22 // ###################################################################
23 /**
24 * Constructs the navbar from the given path elememnts. The current
25 * element is never selectable
26 *
27 * @return string Compiled HTML navigation bar
28 */
29 function ConstructNavbar()
30 {
31 $path = preg_split('#/#', BSRegister::Get('input')->in['path'], -1, PREG_SPLIT_NO_EMPTY);
32 $input =& BSRegister::Get('input');
33
34 $html = '[<a href="' . BSRegister::Get('webpath') . '/browse/' . $input->in['repos'] . ':">' . $input->in['repos'] . '</a>]: ';
35
36 if (empty($path))
37 {
38 return $html . '<strong>/</strong>';
39 }
40
41 $build = '';
42 foreach ($path AS $part)
43 {
44 $build .= '/' . $part;
45 $html .= '/ <a href="' . BSRegister::Get('webpath') . '/browse/' . $input->in['repos'] . ':' . $build . '"><strong>' . $part . '</strong></a> ';
46 }
47
48 return $html;
49 }
50
51 // ###################################################################
52 /**
53 * Formats an array of properties into a compiled HTML template
54 *
55 * @param array Array of properties
56 *
57 * @return string Compiled HTML property list
58 */
59 function FormatPropList($props)
60 {
61 if (sizeof($props) < 0)
62 {
63 return '';
64 }
65 foreach ($props AS $propname => $propval)
66 {
67 $data = sprintf(_('Property <strong>%1$s</strong> set to <em>%2$s</em>'), $propname, $propval);
68 eval('$proplist .= "' . BSRegister::Get('template')->fetch('property') . '";');
69 }
70 return $proplist;
71 }
72
73 // ###################################################################
74 /**
75 * Formats a SVN log message
76 *
77 * @param string Unformatted log message
78 *
79 * @return string Output-ready log message
80 */
81 function FormatLogMessage($message)
82 {
83 global $viewsvn;
84
85 $message = BSRegister::Get('input')->entityEncode($message);
86
87 // TODO - fix the revision links
88 // $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);
89
90 $list = false;
91 $lines = explode("\n", $message);
92 $message = '';
93 foreach ($lines AS $line)
94 {
95 if (preg_match('#^\s*?(\*|\-)\s?(.*)#', $line, $matches))
96 {
97 if ($list)
98 {
99 $message .= '<li>' . $matches[2] . '</li>';
100 }
101 else
102 {
103 $message .= '<ul class="list">';
104 $message .= '<li>' . $matches[2] . '</li>';
105 }
106 $list = true;
107 }
108 else
109 {
110 if ($list)
111 {
112 $message .= '</ul>';
113 $message .= $line;
114 }
115 else
116 {
117 $message .= $line;
118 $message .= '<br />';
119 }
120 $list = false;
121 }
122
123 $message .= "\n";
124 }
125
126 if ($list)
127 {
128 $message .= '</ul>';
129 }
130
131 $message = preg_replace('#(<br />)*$#', '', $message);
132
133 return $message;
134 }
135
136 // ###################################################################
137 /**
138 * Parses a date from SVN into something more human-friendly
139 *
140 * @param string Date string
141 *
142 * @return string Formatted and readable date string
143 */
144 function FormatSvnDate($string)
145 {
146 // 2005-01-23T20:42:53.703057Z
147 return preg_replace('#(....)\-(..)\-(..)T(..):(..):(..).(.*)Z#e', 'gmdate("r", mktime(\4, \5, \6, \2, \3, \1))', $string);
148 }
149
150 /*=====================================================================*\
151 || ###################################################################
152 || # $HeadURL$
153 || # $Id$
154 || ###################################################################
155 \*=====================================================================*/
156 ?>