From 2637831d9056862f7c3db718702116ef4652629a Mon Sep 17 00:00:00 2001
From: Friendika <info@friendika.com>
Date: Mon, 1 Aug 2011 21:02:25 -0700
Subject: [PATCH] some more zot changes migrating back to f9a mainline

---
 addon/facebook/facebook.php |  2 +-
 boot.php                    | 32 ++++++++++++++++++++++++++++++--
 include/auth.php            | 12 ++++++------
 include/hostxrd.php         |  5 ++---
 mod/dfrn_confirm.php        |  2 +-
 mod/dfrn_poll.php           |  8 ++++----
 mod/dfrn_request.php        |  6 +++---
 mod/friendika.php           |  4 ++--
 mod/lostpass.php            |  8 ++++----
 mod/notifications.php       |  4 ++--
 mod/openid.php              | 10 +++++-----
 mod/redir.php               |  4 ++--
 mod/register.php            |  6 +++---
 mod/removeme.php            |  2 +-
 view/xrd_host.tpl           |  2 +-
 15 files changed, 67 insertions(+), 40 deletions(-)

diff --git a/addon/facebook/facebook.php b/addon/facebook/facebook.php
index 73518afb2..10db7652a 100644
--- a/addon/facebook/facebook.php
+++ b/addon/facebook/facebook.php
@@ -564,7 +564,7 @@ function facebook_post_hook(&$a,&$b) {
 
 				$msg = preg_replace("/\[img\](.*?)\[\/img\]/is", t('Image: ') . '$1', $msg);
 
-				if((strpos($link,$a->get_baseurl()) !== false) && (! $image))
+				if((strpos($link,z_root()) !== false) && (! $image))
 					$image = $a->get_baseurl() . '/images/friendika-64.jpg';
 
 				$msg = trim(strip_tags(bbcode($msg)));
diff --git a/boot.php b/boot.php
index 35cb15239..fd5de0e94 100644
--- a/boot.php
+++ b/boot.php
@@ -325,7 +325,7 @@ class App {
 
 		if($this->cmd === '.well-known/host-meta') {
 			require_once('include/hostxrd.php');
-			hostxrd($this->get_baseurl());
+			hostxrd();
 			// NOTREACHED
 		}
 
@@ -402,7 +402,7 @@ class App {
 		$this->page['title'] = $this->config['sitename'];
 		$tpl = file_get_contents('view/head.tpl');
 		$this->page['htmlhead'] = replace_macros($tpl,array(
-			'$baseurl' => $this->get_baseurl(),
+			'$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!!
 			'$generator' => 'Friendika' . ' ' . FRIENDIKA_VERSION,
 			'$delitem' => t('Delete this item?'),
 			'$comment' => t('Comment')
@@ -475,6 +475,34 @@ function system_unavailable() {
 }}
 
 
+
+function clean_urls() {
+	global $a;
+//	if($a->config['system']['clean_urls'])
+		return true;
+//	return false;
+}
+
+function z_path() {
+	global $a;
+	$base = $a->get_baseurl();
+	if(! clean_urls())
+		$base .= '/?q=';
+	return $base;
+}
+
+function z_root() {
+	global $a;
+	return $a->get_baseurl();
+}
+
+function absurl($path) {
+	if(strpos($path,'/') === 0)
+		return z_path() . $path;
+	return $path;
+}
+
+
 // Primarily involved with database upgrade, but also sets the 
 // base url for use in cmdline programs which don't have
 // $_SERVER variables, and synchronising the state of installed plugins.
diff --git a/include/auth.php b/include/auth.php
index d1eb9d131..768af626f 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -25,7 +25,7 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
 
 		nuke_session();
 		info( t('Logged out.') . EOL);
-		goaway($a->get_baseurl());
+		goaway(z_root());
 	}
 
 	if(x($_SESSION,'visitor_id') && (! x($_SESSION,'uid'))) {
@@ -45,7 +45,7 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
 		// extra paranoia - if the IP changed, log them out
 		if($check && ($_SESSION['addr'] != $_SERVER['REMOTE_ADDR'])) {
 			nuke_session();
-			goaway($a->get_baseurl());
+			goaway(z_root());
 		}
 
 		$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
@@ -54,7 +54,7 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
 
 		if(! count($r)) {
 			nuke_session();
-			goaway($a->get_baseurl());
+			goaway(z_root());
 		}
 
 		// initialise user environment
@@ -118,7 +118,7 @@ else {
 			if(($noid) || (strpos($temp_string,'@')) || (! validate_url($temp_string))) {
 				$a = get_app();
 				notice( t('Login failed.') . EOL);
-				goaway($a->get_baseurl());
+				goaway(z_root());
 				// NOTREACHED
 			}
 
@@ -143,7 +143,7 @@ else {
 				if($a->config['register_policy'] == REGISTER_CLOSED) {
 					$a = get_app();
 					notice( t('Login failed.') . EOL);
-					goaway($a->get_baseurl());
+					goaway(z_root());
 					// NOTREACHED
 				}
 				// new account
@@ -196,7 +196,7 @@ else {
 		if((! $record) || (! count($record))) {
 			logger('authenticate: failed login attempt: ' . trim($_POST['openid_url'])); 
 			notice( t('Login failed.') . EOL );
-			goaway($a->get_baseurl());
+			goaway(z_root());
   		}
 
 		$_SESSION['uid'] = $record['uid'];
diff --git a/include/hostxrd.php b/include/hostxrd.php
index 7040f927d..18c3e4b1e 100644
--- a/include/hostxrd.php
+++ b/include/hostxrd.php
@@ -1,11 +1,10 @@
 <?php
 
-function hostxrd($baseurl) {
-
+function hostxrd() {
 	header('Access-Control-Allow-Origin: *');
 	header("Content-type: text/xml");
 	$tpl = file_get_contents('view/xrd_host.tpl');
-	echo str_replace('$domain',$baseurl,$tpl);
+	echo str_replace(array('$zroot','$domain'),array(z_root(),z_path()),$tpl);
 	session_write_close();
 	exit();
 
diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php
index e2094b1f3..91333284b 100644
--- a/mod/dfrn_confirm.php
+++ b/mod/dfrn_confirm.php
@@ -672,7 +672,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
 
 	// somebody arrived here by mistake or they are fishing. Send them to the homepage.
 
-	goaway($a->get_baseurl());
+	goaway(z_root());
 	// NOTREACHED
 
 }
diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php
index 76803ef1b..09f198b81 100644
--- a/mod/dfrn_poll.php
+++ b/mod/dfrn_poll.php
@@ -61,7 +61,7 @@ function dfrn_poll_init(&$a) {
 				$my_id = '0:' . $dfrn_id;
 				break;
 			default:
-				goaway($a->get_baseurl());
+				goaway(z_root());
 				break; // NOTREACHED
 		}
 
@@ -100,7 +100,7 @@ function dfrn_poll_init(&$a) {
 			$profile = $r[0]['nickname'];
 			goaway((strlen($destination_url)) ? $destination_url : $a->get_baseurl() . '/profile/' . $profile);
 		}
-		goaway($a->get_baseurl());
+		goaway(z_root());
 
 	}
 
@@ -297,7 +297,7 @@ function dfrn_poll_post(&$a) {
 			$my_id = '0:' . $dfrn_id;
 			break;
 		default:
-			goaway($a->get_baseurl());
+			goaway(z_root());
 			break; // NOTREACHED
 	}
 
@@ -420,7 +420,7 @@ function dfrn_poll_content(&$a) {
 				$my_id = '0:' . $dfrn_id;
 				break;
 			default:
-				goaway($a->get_baseurl());
+				goaway(z_root());
 				break; // NOTREACHED
 		}
 
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index c9811fa60..6b9558b86 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -48,7 +48,7 @@ function dfrn_request_post(&$a) {
 
 
 	if($_POST['cancel']) {
-		goaway($a->get_baseurl());
+		goaway(z_root());
 	} 
 
 
@@ -190,7 +190,7 @@ function dfrn_request_post(&$a) {
  		// invalid/bogus request
 
 		notice( t('Unrecoverable protocol error.') . EOL );
-		goaway($a->get_baseurl());
+		goaway(z_root());
 		return; // NOTREACHED
 	}
 
@@ -602,7 +602,7 @@ function dfrn_request_content(&$a) {
 				$myaddr = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
 			}
 			else {
-				$myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3 );
+				$myaddr = $a->user['nickname'] . '@' . substr(z_root(), strpos(z_root(),'://') + 3 );
 			}
 		}
 		elseif(x($_GET,'addr')) {
diff --git a/mod/friendika.php b/mod/friendika.php
index 753a9f478..d0e709c75 100644
--- a/mod/friendika.php
+++ b/mod/friendika.php
@@ -16,7 +16,7 @@ function friendika_init(&$a) {
 
 		$data = Array(
 			'version' => FRIENDIKA_VERSION,
-			'url' => $a->get_baseurl(),
+			'url' => z_root(),
 			'plugins' => $a->plugins,
 			'register_policy' =>  $register_policy[$a->config['register_policy']],
 			'admin' => $admin,
@@ -40,7 +40,7 @@ function friendika_content(&$a) {
 	$o .= '<p></p><p>';
 
 	$o .= t('This is Friendika version') . ' ' . FRIENDIKA_VERSION . ' ';
-	$o .= t('running at web location') . ' ' . $a->get_baseurl() . '</p><p>';
+	$o .= t('running at web location') . ' ' . z_root() . '</p><p>';
 
 	$o .= t('Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>') . '</p><p>';
 
diff --git a/mod/lostpass.php b/mod/lostpass.php
index 3453a0db4..b71398fa4 100644
--- a/mod/lostpass.php
+++ b/mod/lostpass.php
@@ -5,7 +5,7 @@ function lostpass_post(&$a) {
 
 	$email = notags(trim($_POST['login-name']));
 	if(! $email)
-		goaway($a->get_baseurl());
+		goaway(z_root());
 
 	$r = q("SELECT * FROM `user` WHERE ( `email` = '%s' OR `nickname` = '%s' ) AND `verified` = 1 AND `blocked` = 0 LIMIT 1",
 		dbesc($email),
@@ -14,7 +14,7 @@ function lostpass_post(&$a) {
 
 	if(! count($r)) {
 		notice( t('No valid account found.') . EOL);
-		goaway($a->get_baseurl());
+		goaway(z_root());
 	}
 
 	$uid = $r[0]['uid'];
@@ -46,7 +46,7 @@ function lostpass_post(&$a) {
 			. 'Content-transfer-encoding: 8bit' );
 
 
-	goaway($a->get_baseurl());
+	goaway(z_root());
 }
 
 
@@ -62,7 +62,7 @@ function lostpass_content(&$a) {
 		);
 		if(! count($r)) {
 			notice( t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.") . EOL);
-			goaway($a->get_baseurl());
+			goaway(z_root());
 			return;
 		}
 		$uid = $r[0]['uid'];
diff --git a/mod/notifications.php b/mod/notifications.php
index c6f073058..244563adc 100644
--- a/mod/notifications.php
+++ b/mod/notifications.php
@@ -3,7 +3,7 @@
 function notifications_post(&$a) {
 
 	if(! local_user()) {
-		goaway($a->get_baseurl());
+		goaway(z_root());
 	}
 	
 	$request_id = (($a->argc > 1) ? $a->argv[1] : 0);
@@ -60,7 +60,7 @@ function notifications_content(&$a) {
 
 	if(! local_user()) {
 		notice( t('Permission denied.') . EOL);
-		goaway($a->get_baseurl());
+		return;
 	}
 
 	$o = '';
diff --git a/mod/openid.php b/mod/openid.php
index 537d84ce3..6fbd013b8 100644
--- a/mod/openid.php
+++ b/mod/openid.php
@@ -8,7 +8,7 @@ function openid_content(&$a) {
 
 	$noid = get_config('system','no_openid');
 	if($noid)
-		goaway($a->get_baseurl());
+		goaway(z_root());
 
 	if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) {
 		$openid = new LightOpenID;
@@ -49,7 +49,7 @@ function openid_content(&$a) {
 				if($a->config['register_policy'] != REGISTER_CLOSED)
 					goaway($a->get_baseurl() . '/register' . $args);
 				else
-					goaway($a->get_baseurl());
+					goaway(z_root());
 
 				// NOTREACHED
 			} 
@@ -60,7 +60,7 @@ function openid_content(&$a) {
 			);
 			if(! count($r)) {
 				notice( t('Login failed.') . EOL );
-				goaway($a->get_baseurl());
+				goaway(z_root());
   			}
 			unset($_SESSION['openid']);
 
@@ -116,10 +116,10 @@ function openid_content(&$a) {
 			if(($a->module !== 'home') && isset($_SESSION['return_url']))
 				goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
 			else
-				goaway($a->get_baseurl());
+				goaway(z_root());
 		}
 	}
 	notice( t('Login failed.') . EOL);
-	goaway($a->get_baseurl());
+	goaway(z_root());
 	// NOTREACHED
 }
diff --git a/mod/redir.php b/mod/redir.php
index 8d0c8f4b3..eb9702b04 100644
--- a/mod/redir.php
+++ b/mod/redir.php
@@ -3,7 +3,7 @@
 function redir_init(&$a) {
 
 	if((! local_user()) || (! ($a->argc == 2)) || (! intval($a->argv[1])))
-		goaway($a->get_baseurl());
+		goaway(z_root());
 	$cid = $a->argv[1];
 	$url = ((x($_GET,'url')) ? $_GET['url'] : '');
 
@@ -13,7 +13,7 @@ function redir_init(&$a) {
 	);
 
 	if((! count($r)) || ($r[0]['network'] !== 'dfrn'))
-		goaway($a->get_baseurl());
+		goaway(z_root());
 
 	$dfrn_id = $orig_id = (($r[0]['issued-id']) ? $r[0]['issued-id'] : $r[0]['dfrn-id']);
 
diff --git a/mod/register.php b/mod/register.php
index 0906395d2..a8d81f1f6 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -373,7 +373,7 @@ function register_post(&$a) {
 
 		if($res) {
 			info( t('Registration successful. Please check your email for further instructions.') . EOL ) ;
-			goaway($a->get_baseurl());
+			goaway(z_root());
 		}
 		else {
 			notice( t('Failed to send email message. Here is the message that failed.') . $email_tpl . EOL );
@@ -382,7 +382,7 @@ function register_post(&$a) {
 	elseif($a->config['register_policy'] == REGISTER_APPROVE) {
 		if(! strlen($a->config['admin_email'])) {
 			notice( t('Your registration can not be processed.') . EOL);
-			goaway($a->get_baseurl());
+			goaway(z_root());
 		}
 
 		$hash = random_string();
@@ -428,7 +428,7 @@ function register_post(&$a) {
 
 		if($res) {
 			info( t('Your registration is pending approval by the site owner.') . EOL ) ;
-			goaway($a->get_baseurl());
+			goaway(z_root());
 		}
 
 	}
diff --git a/mod/removeme.php b/mod/removeme.php
index 6a56963b6..c181ee6ea 100644
--- a/mod/removeme.php
+++ b/mod/removeme.php
@@ -29,7 +29,7 @@ function removeme_post(&$a) {
 function removeme_content(&$a) {
 
 	if(! local_user())
-		goaway($a->get_baseurl());
+		goaway(z_root());
 
 	$hash = random_string();
 
diff --git a/view/xrd_host.tpl b/view/xrd_host.tpl
index c6184e306..f1d9707d5 100644
--- a/view/xrd_host.tpl
+++ b/view/xrd_host.tpl
@@ -2,7 +2,7 @@
 <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
      xmlns:hm='http://host-meta.net/xrd/1.0'>
  
-    <hm:Host>$domain</hm:Host>
+    <hm:Host>$zroot</hm:Host>
  
     <Link rel='lrdd' template='$domain/xrd/?uri={uri}' />
     <Link rel='acct-mgmt' href='$domain/amcd' />