From 64d64610d25658de4af0062e208881583ef86f4f Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Mon, 18 Aug 2014 09:40:42 +0200
Subject: [PATCH] Add a note about overwritewebroot when using system cron

If the current webroot is non-empty but the webroot from the config is,
and system cron is used, the URL generator fails to build valid URLs.
So we notify the admin to set it up correctly.

Fix #9995
---
 settings/admin.php           | 15 +++++++++------
 settings/templates/admin.php | 19 ++++++++++++++++++-
 2 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/settings/admin.php b/settings/admin.php
index 9d631bbf98..cf37726189 100755
--- a/settings/admin.php
+++ b/settings/admin.php
@@ -19,6 +19,7 @@ $htaccessworking=OC_Util::isHtaccessWorking();
 
 $entries=OC_Log_Owncloud::getEntries(3);
 $entriesremain = count(OC_Log_Owncloud::getEntries(4)) > 3;
+$config = \OC::$server->getConfig();
 
 // Should we display sendmail as an option?
 $tmpl->assign('sendmail_is_available', (bool) findBinaryPath('sendmail'));
@@ -71,14 +72,16 @@ $tmpl->assign('groups', $groups);
 
 
 // Check if connected using HTTPS
-if (OC_Request::serverProtocol() === 'https') {
-	$connectedHTTPS = true;
-} else {
-	$connectedHTTPS = false;
-}
-$tmpl->assign('isConnectedViaHTTPS', $connectedHTTPS);
+$tmpl->assign('isConnectedViaHTTPS', OC_Request::serverProtocol() === 'https');
 $tmpl->assign('enforceHTTPSEnabled', OC_Config::getValue( "forcessl", false));
 
+// If the current webroot is non-empty but the webroot from the config is,
+// and system cron is used, the URL generator fails to build valid URLs.
+$shouldSuggestOverwriteWebroot = $config->getAppValue('core', 'backgroundjobs_mode', 'ajax') === 'cron' &&
+	\OC::$WEBROOT && \OC::$WEBROOT !== '/' &&
+	!$config->getSystemValue('overwritewebroot', '');
+$tmpl->assign('suggestedOverwriteWebroot', ($shouldSuggestOverwriteWebroot) ? \OC::$WEBROOT : '');
+
 $tmpl->assign('allowLinks', OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes'));
 $tmpl->assign('enforceLinkPassword', \OCP\Util::isPublicLinkPasswordRequired());
 $tmpl->assign('allowPublicUpload', OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes'));
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index 773f337eaf..1f3701778a 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -1,8 +1,12 @@
-<?php /**
+<?php
+/**
  * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
  * This file is licensed under the Affero General Public License version 3 or later.
  * See the COPYING-README file.
  */
+/**
+ * @var array $_
+ */
 $levels = array('Debug', 'Info', 'Warning', 'Error', 'Fatal');
 $levelLabels = array(
 	$l->t( 'Everything (fatal issues, errors, warnings, info, debug)' ),
@@ -192,6 +196,19 @@ if (!$_['internetconnectionworking']) {
 	</div>
 <?php
 }
+
+if ($_['suggestedOverwriteWebroot']) {
+	?>
+	<div class="section">
+		<h2><?php p($l->t('URL generation in notification emails'));?></h2>
+
+		<span class="connectionwarning">
+		<?php p($l->t('If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the "overwritewebroot" option in your config.php file to the webroot path of your installation (Suggested: "%s")', $_['suggestedOverwriteWebroot'])); ?>
+	</span>
+
+	</div>
+<?php
+}
 ?>
 
 <?php foreach ($_['forms'] as $form) {
-- 
GitLab