| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Friendika | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * bootstrap the application | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once('boot.php'); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | $a = new App; | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Load the configuration file which contains our DB credentials. | 
					
						
							|  |  |  |  * Ignore errors. If the file doesn't exist, we are running in installation mode. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | $install = ((file_exists('.htconfig.php')) ? false : true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @include(".htconfig.php"); | 
					
						
							| 
									
										
										
										
											2010-10-07 00:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Get the language setting directly from system variables, bypassing get_config() | 
					
						
							|  |  |  |  * as database may not yet be configured. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-12-08 02:13:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | $lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en'); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | load_translation_table($lang); | 
					
						
							| 
									
										
										
										
											2010-10-07 00:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Try to open the database; | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | require_once("dba.php"); | 
					
						
							|  |  |  | $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); | 
					
						
							| 
									
										
										
										
											2010-11-06 12:07:10 +00:00
										 |  |  |         unset($db_host, $db_user, $db_pass, $db_data); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Important stuff we always need to do. | 
					
						
							|  |  |  |  * Initialise authentication and  date and time.  | 
					
						
							|  |  |  |  * Create the HTML head for the page, even if we may not use it (xml, etc.) | 
					
						
							|  |  |  |  * The order of these may be important so use caution if you think they're all | 
					
						
							|  |  |  |  * intertwingled with no logical order and decide to sort it out. Some of the | 
					
						
							|  |  |  |  * dependencies have changed, but at least at one time in the recent past - the  | 
					
						
							|  |  |  |  * order was critical to everything working properly | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-16 04:49:29 +00:00
										 |  |  | if(! $install) | 
					
						
							|  |  |  | 	require_once("session.php"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | require_once("datetime.php"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | date_default_timezone_set(($default_timezone) ? $default_timezone : 'UTC'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $a->init_pagehead(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | session_start(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * For Mozilla auth manager - still needs sorting, and this might conflict with LRDD header. | 
					
						
							|  |  |  |  * Apache/PHP lumps the Link: headers into one - and other services might not be able to parse it | 
					
						
							|  |  |  |  * this way. There's a PHP flag to link the headers because by default this will over-write any other  | 
					
						
							|  |  |  |  * link header.  | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * What we really need to do is output the raw headers ourselves so we can keep them separate. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  |   | 
					
						
							| 
									
										
										
										
											2010-11-11 22:53:39 +00:00
										 |  |  | // header('Link: <' . $a->get_baseurl() . '/amcd>; rel="acct-mgmt";');
 | 
					
						
							| 
									
										
										
										
											2010-08-16 12:23:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 10:49:28 +00:00
										 |  |  | if((x($_SESSION,'authenticated')) || (x($_POST,'auth-params')) || ($a->module === 'login')) | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 	require("auth.php"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 10:49:28 +00:00
										 |  |  | if(! x($_SESSION,'authenticated')) | 
					
						
							|  |  |  | 	header('X-Account-Management-Status: none'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-31 23:38:22 +00:00
										 |  |  | if(! x($_SESSION,'sysmsg')) | 
					
						
							|  |  |  | 	$_SESSION['sysmsg'] = ''; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /* | 
					
						
							|  |  |  |  * check_config() is responible for running update scripts. These automatically  | 
					
						
							|  |  |  |  * update the DB schema whenever  we push a new one out.  | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | if($install) | 
					
						
							|  |  |  | 	$a->module = 'install'; | 
					
						
							| 
									
										
										
										
											2010-08-15 01:11:36 +00:00
										 |  |  | else | 
					
						
							|  |  |  | 	check_config($a); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * We have already parsed the server path into $->argc and $a->argv | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * $a->argv[0] is our module name. We will load the file mod/{$a->argv[0]}.php | 
					
						
							|  |  |  |  * and use it for handling our URL request. | 
					
						
							|  |  |  |  * The module file contains a few functions that we call in various circumstances | 
					
						
							|  |  |  |  * and in the following order: | 
					
						
							|  |  |  |  *  | 
					
						
							|  |  |  |  * "module"_init | 
					
						
							|  |  |  |  * "module"_post (only if there are $_POST variables) | 
					
						
							|  |  |  |  * "module"_afterpost | 
					
						
							|  |  |  |  * "module"_content - the string return of this function contains our page body | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-12-13 01:40:23 +00:00
										 |  |  |  * Modules which emit other serialisations besides HTML (XML,JSON, etc.) should do  | 
					
						
							|  |  |  |  * so within the module init and/or post functions and then invoke killme() to terminate | 
					
						
							|  |  |  |  * further processing. | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | if(strlen($a->module)) { | 
					
						
							|  |  |  | 	if(file_exists("mod/{$a->module}.php")) { | 
					
						
							|  |  |  | 		include("mod/{$a->module}.php"); | 
					
						
							|  |  |  | 		$a->module_loaded = true; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							| 
									
										
										
										
											2010-08-09 04:03:08 +00:00
										 |  |  | 		header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); | 
					
						
							| 
									
										
										
										
											2010-09-09 03:14:17 +00:00
										 |  |  | 		notice( t('Page not found.' ) . EOL); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if($a->module_loaded) { | 
					
						
							|  |  |  | 	$a->page['page_title'] = $a->module; | 
					
						
							|  |  |  | 	if(function_exists($a->module . '_init')) { | 
					
						
							|  |  |  | 		$func = $a->module . '_init'; | 
					
						
							|  |  |  | 		$func($a); | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-27 00:24:20 +00:00
										 |  |  | 	if(($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error) | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 		&& (function_exists($a->module . '_post')) | 
					
						
							|  |  |  | 		&& (! x($_POST,'auth-params'))) { | 
					
						
							|  |  |  | 		$func = $a->module . '_post'; | 
					
						
							|  |  |  | 		$func($a); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if((! $a->error) && (function_exists($a->module . '_afterpost'))) { | 
					
						
							|  |  |  | 		$func = $a->module . '_afterpost'; | 
					
						
							|  |  |  | 		$func($a); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if((! $a->error) && (function_exists($a->module . '_content'))) { | 
					
						
							|  |  |  | 		$func = $a->module . '_content'; | 
					
						
							| 
									
										
										
										
											2010-10-31 23:38:22 +00:00
										 |  |  | 		if(! x($a->page,'content')) | 
					
						
							|  |  |  | 			$a->page['content'] = ''; | 
					
						
							|  |  |  | 		$a->page['content'] .= $func($a); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-09 03:14:17 +00:00
										 |  |  | if(stristr($_SESSION['sysmsg'], t('Permission denied'))) { | 
					
						
							|  |  |  | 	header($_SERVER["SERVER_PROTOCOL"] . ' 403 ' . t('Permission denied.')); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Report anything which needs to be communicated in the notification area (before the main body) | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | if(x($_SESSION,'sysmsg')) { | 
					
						
							| 
									
										
										
										
											2010-08-04 02:34:33 +00:00
										 |  |  | 	$a->page['content'] = "<div id=\"sysmsg\" class=\"error-message\">{$_SESSION['sysmsg']}</div>\r\n" | 
					
						
							| 
									
										
										
										
											2010-11-07 23:46:49 +00:00
										 |  |  | 		. ((x($a->page,'content')) ? $a->page['content'] : ''); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 	unset($_SESSION['sysmsg']); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Add a place for the pause/resume Ajax indicator | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | $a->page['content'] .=  '<div id="pause"></div>'; | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-21 02:34:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Add the navigation (menu) template | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-16 04:49:29 +00:00
										 |  |  | if($a->module != 'install') | 
					
						
							| 
									
										
										
										
											2010-12-13 01:40:23 +00:00
										 |  |  | 	require_once('nav.php'); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-09 07:08:59 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Build the page - now that we have all the components | 
					
						
							|  |  |  |  * Make sure the desired theme exists, though if the default theme doesn't exist we're stuffed. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-11-04 07:37:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-08 02:13:51 +00:00
										 |  |  | if((x($_SESSION,'theme')) && (! file_exists('view/theme/' . $_SESSION['theme'] . '/style.css'))) | 
					
						
							| 
									
										
										
										
											2010-11-04 07:37:29 +00:00
										 |  |  | 	unset($_SESSION['theme']); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-16 12:23:26 +00:00
										 |  |  | $a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array( | 
					
						
							|  |  |  | 	'$stylesheet' => $a->get_baseurl() . '/view/theme/' | 
					
						
							|  |  |  | 		. ((x($_SESSION,'theme')) ? $_SESSION['theme'] : 'default') | 
					
						
							|  |  |  | 		. '/style.css' | 
					
						
							|  |  |  | 	)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | $page    = $a->page; | 
					
						
							|  |  |  | $profile = $a->profile; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | header("Content-type: text/html; charset=utf-8"); | 
					
						
							| 
									
										
										
										
											2010-08-16 12:23:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-16 07:27:12 +00:00
										 |  |  | $template = 'view/' . $lang . '/'  | 
					
						
							|  |  |  | 	. ((x($a->page,'template')) ? $a->page['template'] : 'default' ) . '.php'; | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-16 07:27:12 +00:00
										 |  |  | if(file_exists($template)) | 
					
						
							|  |  |  | 	require_once($template); | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | 	require_once(str_replace($lang . '/', '', $template)); | 
					
						
							| 
									
										
										
										
											2010-07-01 23:48:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | session_write_close(); | 
					
						
							|  |  |  | exit; |