3 // this function is the initial insertion point for the web calls, here we need to determine where we go
4 global $CALL_ME_FUNCTIONS;
6 // the home_page_provders bit is an array
7 global $HOME_PAGE_PROVIDERS;
9 $MENU_ITEMS["00home"]["text"] = "Home";
10 $MENU_ITEMS["00home"]["link"] = "$BASE_URL";
14 function gwvpmini_goWeb()
16 global $CALL_ME_FUNCTIONS, $force_ssl;
18 // first we determine if we have a valid setup and run the installer if not
19 /*if(!gwvpmini_issetup()) {
24 // next, we go thru the CALL_ME_FUNCTIONS - the purpose of call_me_functions is to determine if a function should be called based on
25 // the functions return (i.e. if function returns false, its not it, otherwise it returns a function name we have to call)
26 // this is important for our plugin structure later on - the key on the array serves an an ordering method
29 if(!isset($_SERVER['HTTPS'])) {
30 header("Location: https://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"], true);
36 ksort($CALL_ME_FUNCTIONS);
37 foreach($CALL_ME_FUNCTIONS as $key => $val) {
38 //// error_log("checking callmefunction $key as $val");
40 if($callme !== false) {
46 // we fell-thru to the main web page builder
47 gwvpmini_goMainPage();
50 function gwvpmini_SendMessage($messagetype, $message)
52 $_SESSION["messagetype"] = $messagetype;
53 $_SESSION["message"] = $message;
56 function gwvpmini_goMainPage($bodyFunction = null)
58 // the main page will look pretty simple, a title, a menu then a body
59 global $WEB_ROOT_FS, $BASE_URL;
61 // a simple web page layout that loads any css and js files that exist in the css and js directories
62 echo "<html><head><title>GWVP</title>";
65 if(file_exists("$WEB_ROOT_FS/css")) {
66 $dh = opendir("$WEB_ROOT_FS/css");
68 while(($file = readdir($dh))!==false) {
69 $mt = preg_match("/.*.css$/", $file);
71 // error_log("loading css $file");
72 echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$BASE_URL/css/$file\">";
73 //echo "required $basedir/$file\n";
80 if(file_exists("$WEB_ROOT_FS/js")) {
81 $dh = opendir("$WEB_ROOT_FS/js");
83 while(($file = readdir($dh))!==false) {
84 $mt = preg_match("/.*.js$/", $file);
86 // error_log("loading js $file");
87 echo "<script type=\"text/javascript\" src=\"$BASE_URL/js/$file\"></script>";
88 //echo "required $basedir/$file\n";
98 echo "<h1>Git over Web Via PHP</h1>";
101 echo "<table width=\"100%\">";
103 echo "<tr width=\"100%\" bgcolor=\"#ddddff\"><td colspan=\"2\" align=\"right\">";
104 gwvpmini_SearchBuilder();
107 $havemessage = false;
108 if(isset($_SESSION["message"])) $havemessage = true;
109 if(isset($_SESSION["id"])) if(gwvpmini_GetMessagesForId($_SESSION["id"]) !== 0) $havemessage = true;
112 echo "<tr width=\"100%\"><td colspan=\"2\">";
113 gwvpmini_MessageBuilder();
117 echo "<tr width=\"100%\" bgcolor=\"#ddffdd\"><td>";
118 gwvpmini_MenuBuilder();
119 echo "</td><td align=\"right\">";
120 gwvpmini_LoginBuilder();
125 echo "<tr width=\"100%\"><td colspan=\"3\">";
127 echo "<table width=\"100%\"><tr width=\"100%\" valign=\"top\"><td>";
128 if($bodyFunction == null) {
129 gwvpmini_BodyBuilder();
131 if(function_exists($bodyFunction)) {
134 // error_log("Got called with non-existant body function, $bodyFunction");
135 gwvpmini_BodyBuilder();
141 /* TODO: taking out chat for now
142 echo "<td align=\"right\">";
144 gwvpmini_ChatBuilder();
147 echo "</tr></table>";
\r
152 gwvpmini_TailBuilder();
153 echo "</td></tr></table></body></html>";
158 // builds the message builder if its needed
159 function gwvpmini_MessageBuilder()
162 error_log("begin message building?");
164 $messagetype = "info";
165 if(isset($_SESSION["message"])) $message = $_SESSION["message"];
166 if(isset($_SESSION["messagetype"])) $messagetype = $_SESSION["messagetype"];
167 if(isset($_SESSION["id"])) $dbmsgs = gwvpmini_GetMessagesForId($_SESSION["id"]);
169 error_log("dbmsgs was 0 - ".print_r($_SESSION,true));
172 foreach($dbmsgs as $mgkey => $mgval) {
173 $data = $mgval["data"];
174 switch($mgval["type"]) {
\r
176 echo "<table border=\"1\" width=\"100%\"><tr width=\"100%\"><td bgcolor=\"#AAFFAA\">$data</td></tr></table>";
\r
179 echo "<table border=\"1\" width=\"100%\"><tr width=\"100%\"><td bgcolor=\"#FFAAAA\">$data</td></tr></table>";
\r
182 gwvpmini_DeleteMessagesById($mgval["id"]);
186 switch($messagetype) {
188 echo "<table border=\"1\" width=\"100%\"><tr width=\"100%\"><td bgcolor=\"#AAFFAA\">$message</td></tr></table>";
191 echo "<table border=\"1\" width=\"100%\"><tr width=\"100%\"><td bgcolor=\"#FFAAAA\">$message</td></tr></table>";
194 unset($_SESSION["message"]);
195 if(isset($_SESSION["messagetype"])) unset($_SESSION["messagetype"]);
199 function gwvpmini_ChatBuilder()
201 gwvpmini_DisplayChat();
204 // builds the menu structure
205 function gwvpmini_MenuBuilder()
207 global $MENU_ITEMS, $BASE_URL;
211 echo "<table border=\"1\"><tr><td><b><i>Menu</i></b></td>";
212 foreach($MENU_ITEMS as $key => $val) {
213 $link = $val["link"];
214 $text = $val["text"];
216 // TODO: redo this bit with stristr to find urls - special case for home
218 if(isset($_REQUEST["q"])) {
219 $extlink = str_replace("$BASE_URL/", "", $link);
220 // error_log("trying to do replace of $BASE_URL in $link, got $extlink for ".$_REQUEST["q"]);
221 if(stristr($_REQUEST["q"], $extlink)!==false) {
222 $menucolor = " bgcolor=\"#ffdddd\"";
226 // special case for home
227 if($link == $BASE_URL) $menucolor = " bgcolor=\"#ffdddd\"";
233 if(isset($val["userlevel"])) {
234 if(gwvpmini_CheckAuthLevel($val["userlevel"])) {
235 echo "<td$menucolor><a href=\"$link\">$text</a></td>";
239 echo "<td$menucolor><a href=\"$link\">$text</a></td>";
242 echo "</tr></table>";
246 function gwvpmini_LoginBuilder()
248 global $WEB_ROOT_FS, $BASE_URL;
250 $login = gwvpmini_IsLoggedIn();
251 if($login === false) {
252 gwvpmini_SingleLineLoginForm();
254 echo "Hello <a href=\"$BASE_URL/user/".$_SESSION["username"]."\">".$_SESSION["fullname"]."</a> <a href=\"$BASE_URL/logout\">logout</a>";
258 // builds the body structure
259 function gwvpmini_BodyBuilder()
261 global $HOME_PAGE_PROVIDERS;
263 if(isset($HOME_PAGE_PROVIDERS)) {
264 ksort($HOME_PAGE_PROVIDERS);
265 foreach($HOME_PAGE_PROVIDERS as $provider) {
266 // error_log("Loading home_page_provider, $provider");
272 // builds the tail structure
273 function gwvpmini_TailBuilder()
275 echo "<br><br><hr><font size=\"-1\"><b><a href=\"http://github.com/takigama/GWVP\">GWVP</a></b> - <i>Copyright 2011, 2012 PJR - <a href=\"http://www.gnu.org/copyleft/gpl.html\">GPL</a></i></font>";
278 function gwvpmini_emailToUserLink($email)
282 $username = gwvpmini_GetUserNameFromEmail($email);
284 if($username !== false) {
285 return "<a href=\"$BASE_URL/user/$username\">$username</a>";
291 function gwvpmini_fourZeroThree()
293 // error_log("403 called");
294 header("HTTP/1.1 403 Permission Denied");
297 function gwvpmini_fourZeroFour()
299 // error_log("404 called");
300 header("HTTP/1.1 404 No Such Thing");
305 * Get either a Gravatar URL or complete image tag for a specified email address.
\r
307 * @param string $email The email address
\r
308 * @param string $s Size in pixels, defaults to 80px [ 1 - 2048 ]
\r
309 * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ]
\r
310 * @param string $r Maximum rating (inclusive) [ g | pg | r | x ]
\r
311 * @param boole $img True to return a complete IMG tag False for just the URL
\r
312 * @param array $atts Optional, additional key/value attributes to include in the IMG tag
\r
313 * @return String containing either just a URL or a complete image tag
\r
314 * @source http://gravatar.com/site/implement/images/php/
\r
316 function gwvpmini_HtmlGravatar($email, $size, $htmlappend="")
319 global $use_gravatar;
322 // error_log("call to gravatar with yes");
324 // error_log("call to gravatar with no");
327 if($use_gravatar == false) return "";
328 return get_gravatar( $email, $size, 'mm', 'g', true)."$htmlappend";
331 function get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
\r
332 $url = 'http://en.gravatar.com/avatar/';
\r
333 $url .= md5( strtolower( trim( $email ) ) );
\r
334 $url .= "?s=$s&d=$d&r=$r";
\r
336 $url = '<img src="' . $url . '"';
\r
337 foreach ( $atts as $key => $val )
\r
338 $url .= ' ' . $key . '="' . $val . '"';
\r