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