[Pkg-owncloud-commits] [owncloud] 08/11: Imported Upstream version 7.0.7~~rc1~dfsg

David Prévot taffit at moszumanska.debian.org
Thu Jul 2 17:36:42 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit a7e20de0a7bffa28281270bce1e697c7565ee4d1
Merge: 8fb2daa f29af9c
Author: David Prévot <taffit at debian.org>
Date:   Thu Jul 2 11:12:03 2015 -0400

    Imported Upstream version 7.0.7~~rc1~dfsg

 apps/activity/appinfo/preupdate.php                | 23 ++++++++++++++
 apps/activity/lib/parameterhelper.php              |  2 +-
 apps/activity/tests/parameterhelpertest.php        | 37 ++++++++++++++++++++++
 apps/contacts/lib/addressbookprovider.php          |  4 ++-
 apps/files_sharing/lib/cache.php                   |  8 ++++-
 config/config.sample.php                           |  2 +-
 .../configuration/config_sample_php_parameters.txt |  2 +-
 .../_sources/installation/installation_wizard.txt  | 29 ++++++++---------
 .../config_sample_php_parameters.html              |  2 +-
 .../release/installation/installation_wizard.html  | 27 ++++++++--------
 lib/private/app.php                                | 10 +++---
 lib/private/installer.php                          |  6 ++--
 lib/private/ocsclient.php                          | 18 ++++++++---
 settings/ajax/apps/ocs.php                         |  4 +--
 version.php                                        |  6 ++--
 15 files changed, 127 insertions(+), 53 deletions(-)

diff --cc apps/activity/appinfo/preupdate.php
index 0000000,0000000..0769cb3
new file mode 100644
--- /dev/null
+++ b/apps/activity/appinfo/preupdate.php
@@@ -1,0 -1,0 +1,23 @@@
++<?php
++
++$installedVersion=OCP\Config::getAppValue('activity', 'installed_version');
++if (version_compare($installedVersion, '1.1.1', '>=') && version_compare($installedVersion, '1.1.2', '<=')) {
++	$connection = OC_DB::getConnection();
++	$platform = $connection->getDatabasePlatform();
++	if ($platform->getName() === 'oracle') {
++		try {
++			$connection->beginTransaction();
++			$sql1 = 'ALTER TABLE `*PREFIX*activity` ADD `type_text` VARCHAR2(255) DEFAULT NULL';
++			\OC_DB::executeAudited($sql1, array());
++			$sql2 = 'UPDATE `*PREFIX*activity` SET `type_text` = to_char(`type`)';
++			\OC_DB::executeAudited($sql2, array());
++			$sql3 = 'ALTER TABLE `*PREFIX*activity` DROP COLUMN `type` cascade constraints';
++			\OC_DB::executeAudited($sql3, array());
++			$sql4 = 'ALTER TABLE `*PREFIX*activity` RENAME COLUMN `type_text` TO `type`';
++			\OC_DB::executeAudited($sql4, array());
++			$connection->commit();
++		} catch (\DatabaseException $e) {
++			\OCP\Util::writeLog('activity', "Oracle upgrade fixup failed: " . $e->getMessage(), \OCP\Util::WARN);
++		}
++	}
++}
diff --cc apps/activity/lib/parameterhelper.php
index 932e4e1,0000000..5f19661
mode 100644,000000..100644
--- a/apps/activity/lib/parameterhelper.php
+++ b/apps/activity/lib/parameterhelper.php
@@@ -1,292 -1,0 +1,292 @@@
 +<?php
 +
 +/**
 + * ownCloud - Activity App
 + *
 + * @author Joas Schilling
 + * @copyright 2014 Joas Schilling nickvergessen at owncloud.com
 + *
 + * This library is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 + * License as published by the Free Software Foundation; either
 + * version 3 of the License, or any later version.
 + *
 + * This library is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 + *
 + * You should have received a copy of the GNU Lesser General Public
 + * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 + *
 + */
 +
 +namespace OCA\Activity;
 +
 +use OCP\IConfig;
 +use \OCP\User;
 +use \OCP\Util;
 +use \OC\Files\View;
 +
 +class ParameterHelper
 +{
 +	/** @var \OC\Files\View */
 +	protected $rootView;
 +
 +	/** @var \OCP\IConfig */
 +	protected $config;
 +
 +	/** @var \OC_L10N */
 +	protected $l;
 +
 +	/**
 +	 * @param View $rootView
 +	 * @param IConfig $config
 +	 * @param \OC_L10N $l
 +	 */
 +	public function __construct(View $rootView, IConfig $config, \OC_L10N $l) {
 +		$this->rootView = $rootView;
 +		$this->config = $config;
 +		$this->l = $l;
 +	}
 +
 +	/**
 +	 * Prepares the parameters before we use them in the subject or message
 +	 * @param array $params
 +	 * @param array $paramTypes Type of parameters, if they need special handling
 +	 * @param bool $stripPath Shall we remove the path from the filename
 +	 * @param bool $highlightParams
 +	 * @return array
 +	 */
 +	public function prepareParameters($params, $paramTypes = array(), $stripPath = false, $highlightParams = false) {
 +		$preparedParams = array();
 +		foreach ($params as $i => $param) {
 +			if (is_array($param)) {
 +				$preparedParams[] = $this->prepareArrayParameter($param, $paramTypes[$i], $stripPath, $highlightParams);
 +			} else {
 +				$preparedParams[] = $this->prepareStringParameter($param, isset($paramTypes[$i]) ? $paramTypes[$i] : '', $stripPath, $highlightParams);
 +			}
 +		}
 +		return $preparedParams;
 +	}
 +
 +	/**
 +	 * Prepares a string parameter before we use it in the subject or message
 +	 *
 +	 * @param string $param
 +	 * @param string $paramType Type of parameter, if it needs special handling
 +	 * @param bool $stripPath Shall we remove the path from the filename
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	public function prepareStringParameter($param, $paramType, $stripPath, $highlightParams) {
 +		if ($paramType === 'file') {
 +			return $this->prepareFileParam($param, $stripPath, $highlightParams);
 +		} else if ($paramType === 'username') {
 +			return $this->prepareUserParam($param, $highlightParams);
 +		}
 +		return $this->prepareParam($param, $highlightParams);
 +	}
 +
 +	/**
 +	 * Prepares an array parameter before we use it in the subject or message
 +	 *
 +	 * @param array $params
 +	 * @param string $paramType Type of parameters, if it needs special handling
 +	 * @param bool $stripPath Shall we remove the path from the filename
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	public function prepareArrayParameter($params, $paramType, $stripPath, $highlightParams) {
 +		$parameterList = $plainParameterList = array();
 +		foreach ($params as $parameter) {
 +			if ($paramType === 'file') {
 +				$parameterList[] = $this->prepareFileParam($parameter, $stripPath, $highlightParams);
 +				$plainParameterList[] = $this->prepareFileParam($parameter, false, false);
 +			} else {
 +				$parameterList[] = $this->prepareParam($parameter, $highlightParams);
 +				$plainParameterList[] = $this->prepareParam($parameter, false);
 +			}
 +		}
 +		return $this->joinParameterList($parameterList, $plainParameterList, $highlightParams);
 +	}
 +
 +	/**
 +	 * Prepares a parameter for usage by adding highlights
 +	 *
 +	 * @param string $param
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	protected function prepareParam($param, $highlightParams) {
 +		if ($highlightParams) {
 +			return '<strong>' . Util::sanitizeHTML($param) . '</strong>';
 +		} else {
 +			return $param;
 +		}
 +	}
 +
 +	/**
 +	 * Prepares a user name parameter for usage
 +	 *
 +	 * Add an avatar to usernames
 +	 *
 +	 * @param string $param
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	protected function prepareUserParam($param, $highlightParams) {
 +		$displayName = User::getDisplayName($param);
 +		$param = Util::sanitizeHTML($param);
 +		$displayName = Util::sanitizeHTML($displayName);
 +
 +		if ($highlightParams) {
 +			$avatarPlaceHolder = '';
 +			if ($this->config->getSystemValue('enable_avatars', true)) {
 +				$avatarPlaceHolder = '<div class="avatar" data-user="' . $param . '"></div>';
 +			}
 +			return $avatarPlaceHolder . '<strong>' . $displayName . '</strong>';
 +		} else {
 +			return $displayName;
 +		}
 +	}
 +
 +	/**
 +	 * Prepares a file parameter for usage
 +	 *
 +	 * Removes the path from filenames and adds highlights
 +	 *
 +	 * @param string $param
 +	 * @param bool $stripPath Shall we remove the path from the filename
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	protected function prepareFileParam($param, $stripPath, $highlightParams) {
 +		$param = $this->fixLegacyFilename($param);
 +		$is_dir = $this->rootView->is_dir('/' . User::getUser() . '/files' . $param);
 +
 +		if ($is_dir) {
 +			$fileLink = Util::linkTo('files', 'index.php', array('dir' => $param));
 +		} else {
 +			$parentDir = (substr_count($param, '/') == 1) ? '/' : dirname($param);
 +			$fileName = basename($param);
 +			$fileLink = Util::linkTo('files', 'index.php', array(
 +				'dir' => $parentDir,
 +				'scrollto' => $fileName,
 +			));
 +		}
 +
 +		$param = trim($param, '/');
 +		list($path, $name) = $this->splitPathFromFilename($param);
 +		if (!$stripPath || $path === '') {
 +			if (!$highlightParams) {
 +				return $param;
 +			}
 +			return '<a class="filename" href="' . $fileLink . '">' . Util::sanitizeHTML($param) . '</a>';
 +		}
 +
 +		if (!$highlightParams) {
 +			return $name;
 +		}
 +
 +		$title = ' title="' . $this->l->t('in %s', array(Util::sanitizeHTML($path))) . '"';
 +		return '<a class="filename tooltip" href="' . $fileLink . '"' . $title . '>' . Util::sanitizeHTML($name) . '</a>';
 +	}
 +
 +	/**
 +	 * Prepend leading slash to filenames of legacy activities
 +	 * @param string $filename
 +	 * @return string
 +	 */
 +	protected function fixLegacyFilename($filename) {
 +		if (strpos($filename, '/') !== 0) {
 +			return '/' . $filename;
 +		}
 +		return $filename;
 +	}
 +
 +	/**
 +	 * Split the path from the filename string
 +	 *
 +	 * @param string $filename
 +	 * @return array Array with path and filename
 +	 */
 +	protected function splitPathFromFilename($filename) {
 +		if (strrpos($filename, '/') !== false) {
 +			return array(
 +				trim(substr($filename, 0, strrpos($filename, '/')), '/'),
 +				substr($filename, strrpos($filename, '/') + 1),
 +			);
 +		}
 +		return array('', $filename);
 +	}
 +
 +	/**
 +	 * Returns a list of grouped parameters
 +	 *
 +	 * 2 parameters are joined by "and":
 +	 * => A and B
 +	 * Up to 5 parameters are joined by "," and "and":
 +	 * => A, B, C, D and E
 +	 * More than 5 parameters are joined by "," and trimmed:
 +	 * => A, B, C and #n more
 +	 *
 +	 * @param array $parameterList
 +	 * @param array $plainParameterList
 +	 * @param bool $highlightParams
 +	 * @return string
 +	 */
 +	protected function joinParameterList($parameterList, $plainParameterList, $highlightParams) {
 +		if (empty($parameterList)) {
 +			return '';
 +		}
 +
 +		$count = sizeof($parameterList);
 +		$lastItem = array_pop($parameterList);
 +
 +		if ($count == 1)
 +		{
 +			return $lastItem;
 +		}
 +		else if ($count == 2)
 +		{
 +			$firstItem = array_pop($parameterList);
 +			return $this->l->t('%s and %s', array($firstItem, $lastItem));
 +		}
 +		else if ($count <= 5)
 +		{
 +			$list = implode($this->l->t(', '), $parameterList);
 +			return $this->l->t('%s and %s', array($list, $lastItem));
 +		}
 +
 +		$firstParams = array_slice($parameterList, 0, 3);
 +		$firstList = implode($this->l->t(', '), $firstParams);
 +		$trimmedParams = array_slice($plainParameterList, 3);
 +		$trimmedList = implode($this->l->t(', '), $trimmedParams);
 +		if ($highlightParams) {
 +			return $this->l->n(
 +				'%s and <strong class="tooltip" title="%s">%n more</strong>',
 +				'%s and <strong class="tooltip" title="%s">%n more</strong>',
 +				$count - 3,
- 				array($firstList, $trimmedList));
++				array($firstList, Util::sanitizeHTML($trimmedList)));
 +		}
 +		return $this->l->n('%s and %n more', '%s and %n more', $count - 3, array($firstList));
 +	}
 +
 +	/**
 +	 * List with special parameters for the message
 +	 *
 +	 * @param string $app
 +	 * @param string $text
 +	 * @return array
 +	 */
 +	public function getSpecialParameterList($app, $text) {
 +		if ($app === 'files' && $text === 'shared_group_self') {
 +			return array(0 => 'file');
 +		}
 +		else if ($app === 'files') {
 +			return array(0 => 'file', 1 => 'username');
 +		}
 +		return array();
 +	}
 +}
diff --cc apps/activity/tests/parameterhelpertest.php
index 046c532,0000000..9d47d73
mode 100644,000000..100644
--- a/apps/activity/tests/parameterhelpertest.php
+++ b/apps/activity/tests/parameterhelpertest.php
@@@ -1,178 -1,0 +1,215 @@@
 +<?php
 +
 +/**
 + * ownCloud - Activity App
 + *
 + * @author Joas Schilling
 + * @copyright 2014 Joas Schilling nickvergessen at owncloud.com
 + *
 + * This library is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 + * License as published by the Free Software Foundation; either
 + * version 3 of the License, or any later version.
 + *
 + * This library is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 + *
 + * You should have received a copy of the GNU Affero General Public
 + * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +namespace OCA\Activity\Tests;
 +
 +class ParameterHelperTest extends \PHPUnit_Framework_TestCase {
 +	/** @var string */
 +	protected $originalWEBROOT;
 +	/** @var \OCA\Activity\ParameterHelper */
 +	protected $parameterHelper;
 +	/** @var \OC\Files\View */
 +	protected $view;
 +	/** @var \PHPUnit_Framework_MockObject_MockObject */
 +	protected $config;
 +
 +	public function setUp() {
 +		parent::setUp();
 +		$this->originalWEBROOT =\OC::$WEBROOT;
 +		\OC::$WEBROOT = '';
 +		$l = \OCP\Util::getL10N('activity');
 +		$this->view = new \OC\Files\View('');
 +
 +		$this->config = $this->getMockBuilder('OCP\IConfig')
 +			->disableOriginalConstructor()
 +			->getMock();
 +		$this->parameterHelper = new \OCA\Activity\ParameterHelper(
 +			$this->view,
 +			$this->config,
 +			$l
 +		);
 +	}
 +
 +	public function tearDown() {
 +		\OC::$WEBROOT = $this->originalWEBROOT;
 +		parent::tearDown();
 +	}
 +
 +	public function prepareParametersData() {
 +		return array(
 +			array(array(), false, false, false, array()),
 +
 +			// No file position: no path strip
 +			array(array('/foo/bar.file'), array(), false, false, array('/foo/bar.file')),
 +			array(array('/foo/bar.file'), array(), true, false, array('/foo/bar.file')),
 +			array(array('/foo/bar.file'), array(), false, true, array('<strong>/foo/bar.file</strong>')),
 +			array(array('/foo/bar.file'), array(), true, true, array('<strong>/foo/bar.file</strong>')),
 +
 +			// Valid file position
 +			array(array('/foo/bar.file'), array(0 => 'file'), true, false, array('bar.file')),
 +			array(array('/folder/trailingslash/fromsharing/'), array(0 => 'file'), true, false, array('fromsharing')),
 +			array(array('/foo/bar.file'), array(0 => 'file'), false, false, array('foo/bar.file')),
 +			array(array('/folder/trailingslash/fromsharing/'), array(0 => 'file'), false, false, array('folder/trailingslash/fromsharing')),
 +			array(array('/foo/bar.file'), array(0 => 'file'), true, true, array(
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2Ffoo&scrollto=bar.file" title="in foo">bar.file</a>',
 +			)),
 +			array(array('/0/bar.file'), array(0 => 'file'), true, true, array(
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2F0&scrollto=bar.file" title="in 0">bar.file</a>',
 +			)),
 +			array(array('/foo/bar.file'), array(1 => 'file'), true, false, array('/foo/bar.file')),
 +			array(array('/foo/bar.file'), array(1 => 'file'), true, true, array('<strong>/foo/bar.file</strong>')),
 +
 +			// Legacy: stored without leading slash
 +			array(array('foo/bar.file'), array(0 => 'file'), false, false, array('foo/bar.file')),
 +			array(array('foo/bar.file'), array(0 => 'file'), false, true, array(
 +				'<a class="filename" href="/index.php/apps/files?dir=%2Ffoo&scrollto=bar.file">foo/bar.file</a>',
 +			)),
 +			array(array('foo/bar.file'), array(0 => 'file'), true, false, array('bar.file')),
 +			array(array('foo/bar.file'), array(0 => 'file'), true, true, array(
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2Ffoo&scrollto=bar.file" title="in foo">bar.file</a>',
 +			)),
 +
 +			// Valid file position
 +			array(array('UserA', '/foo/bar.file'), array(1 => 'file'), true, false, array('UserA', 'bar.file')),
 +			array(array('UserA', '/foo/bar.file'), array(1 => 'file'), true, true, array(
 +				'<strong>UserA</strong>',
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2Ffoo&scrollto=bar.file" title="in foo">bar.file</a>',
 +			)),
 +			array(array('UserA', '/foo/bar.file'), array(2 => 'file'), true, false, array('UserA', '/foo/bar.file')),
 +			array(array('UserA', '/foo/bar.file'), array(2 => 'file'), true, true, array(
 +				'<strong>UserA</strong>',
 +				'<strong>/foo/bar.file</strong>',
 +			)),
 +			array(array('UserA', '/foo/bar.file'), array(0 => 'username'), true, true, array(
 +				'<div class="avatar" data-user="UserA"></div><strong>UserA</strong>',
 +				'<strong>/foo/bar.file</strong>',
 +			)),
 +			array(array('U<ser>A', '/foo/bar.file'), array(0 => 'username'), true, true, array(
 +				'<div class="avatar" data-user="U<ser>A"></div><strong>U<ser>A</strong>',
 +				'<strong>/foo/bar.file</strong>',
 +			)),
 +
 +			array(array('UserA', '/foo/bar.file'), array(0 => 'username', 1 => 'file'), true, true, array(
 +				'<div class="avatar" data-user="UserA"></div><strong>UserA</strong>',
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2Ffoo&scrollto=bar.file" title="in foo">bar.file</a>',
 +			)),
 +			array(array('UserA', '/tmp/test'), array(0 => 'username', 1 => 'file'), true, true, array(
 +				'<div class="avatar" data-user="UserA"></div><strong>UserA</strong>',
 +				'<a class="filename tooltip" href="/index.php/apps/files?dir=%2Ftmp%2Ftest" title="in tmp">test</a>',
 +			), 'tmp/test/'),
 +
 +			array(array('UserA', '/foo/bar.file'), array(0 => 'username'), true, true, array(
 +				'<strong>UserA</strong>',
 +				'<strong>/foo/bar.file</strong>',
 +			), '', false),
 +		);
 +	}
 +
 +	/**
 +	 * @dataProvider prepareParametersData
 +	 */
 +	public function testPrepareParameters($params, $filePosition, $stripPath, $highlightParams, $expected, $createFolder = '', $enableAvatars = true) {
 +		if ($createFolder !== '') {
 +			$this->view->mkdir('/' . \OCP\User::getUser() . '/files/' . $createFolder);
 +		}
 +		$this->config->expects($this->any())
 +			->method('getSystemValue')
 +			->with('enable_avatars', true)
 +			->willReturn($enableAvatars);
 +		$this->assertEquals(
 +			$expected,
 +			$this->parameterHelper->prepareParameters($params, $filePosition, $stripPath, $highlightParams)
 +		);
 +	}
 +
 +	public function prepareArrayParametersData() {
++		$en = \OCP\Util::getL10N('activity', 'en');
 +		return array(
 +			array(array(), 'file', true, true, ''),
 +			array(array('A/B.txt', 'C/D.txt'), 'file', true, false, 'B.txt and D.txt'),
 +			array(array('A/B.txt', 'C/D.txt'), '', true, false, 'A/B.txt and C/D.txt'),
++			array(
++				array('A/B.txt', 'C/D.txt', 'E/F.txt', 'G/H.txt', 'I/J.txt', 'K/L.txt', 'M/N.txt'), 'file', true, false,
++				(string) $en->n('%s and %n more', '%s and %n more', 4, array(implode((string) $en->t(', '), array('B.txt', 'D.txt', 'F.txt'))))
++			),
++			array(
++				array('A/B.txt', 'C/D.txt', 'E/F.txt', 'G/H.txt', 'I/J.txt', 'K/L.txt', 'M/N.txt'), 'file', true, true,
++				(string) $en->n(
++					'%s and <strong class="tooltip" title="%s">%n more</strong>',
++					'%s and <strong class="tooltip" title="%s">%n more</strong>',
++					4,
++					array(
++						implode((string) $en->t(', '), array(
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FA&scrollto=B.txt" title="in A">B.txt</a>',
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FC&scrollto=D.txt" title="in C">D.txt</a>',
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FE&scrollto=F.txt" title="in E">F.txt</a>',
++						)),
++						'G/H.txt, I/J.txt, K/L.txt, M/N.txt',
++					)
++				),
++			),
++			array(
++				array('A"><h1>/B.txt"><h1>', 'C"><h1>/D.txt"><h1>', 'E"><h1>/F.txt"><h1>', 'G"><h1>/H.txt"><h1>', 'I"><h1>/J.txt"><h1>', 'K"><h1>/L.txt"><h1>', 'M"><h1>/N.txt"><h1>'), 'file', true, true,
++				(string) $en->n(
++					'%s and <strong class="tooltip" title="%s">%n more</strong>',
++					'%s and <strong class="tooltip" title="%s">%n more</strong>',
++					4,
++					array(
++						implode((string) $en->t(', '), array(
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FA%22%3E%3Ch1%3E&scrollto=B.txt%22%3E%3Ch1%3E" title="in A"><h1>">B.txt"><h1></a>',
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FC%22%3E%3Ch1%3E&scrollto=D.txt%22%3E%3Ch1%3E" title="in C"><h1>">D.txt"><h1></a>',
++							'<a class="filename tooltip" href="/index.php/apps/files?dir=%2FE%22%3E%3Ch1%3E&scrollto=F.txt%22%3E%3Ch1%3E" title="in E"><h1>">F.txt"><h1></a>',
++						)),
++						'G"><h1>/H.txt"><h1>, I"><h1>/J.txt"><h1>, K"><h1>/L.txt"><h1>, M"><h1>/N.txt"><h1>',
++					)
++				),
++			),
 +		);
 +	}
 +
 +	/**
 +	 * @dataProvider prepareArrayParametersData
 +	 */
 +	public function testPrepareArrayParameters($params, $paramType, $stripPath, $highlightParams, $expected) {
 +		$this->assertEquals(
 +			$expected,
 +			(string) $this->parameterHelper->prepareArrayParameter($params, $paramType, $stripPath, $highlightParams)
 +		);
 +	}
 +
 +	public function getSpecialParameterListData() {
 +		return array(
 +			array('files', 'shared_group_self', array(0 => 'file')),
 +			array('files', 'shared_group', array(0 => 'file', 1 => 'username')),
 +			array('files', '', array(0 => 'file', 1 => 'username')),
 +			array('calendar', 'shared_group', array()),
 +			array('calendar', '', array()),
 +		);
 +	}
 +
 +	/**
 +	 * @dataProvider getSpecialParameterListData
 +	 */
 +	public function testGetSpecialParameterList($app, $text, $expected) {
 +		$this->assertEquals($expected, $this->parameterHelper->getSpecialParameterList($app, $text));
 +	}
 +}
diff --cc apps/contacts/lib/addressbookprovider.php
index 1822a4f,0000000..9e44710
mode 100644,000000..100644
--- a/apps/contacts/lib/addressbookprovider.php
+++ b/apps/contacts/lib/addressbookprovider.php
@@@ -1,309 -1,0 +1,311 @@@
 +<?php
 +/**
 + * ownCloud - AddressbookProvider
 + *
 + * @author Thomas Tanghus
 + * @copyright 2012-2014 Thomas Tanghus (thomas at tanghus.net)
 + *
 + * This library is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 + * License as published by the Free Software Foundation; either
 + * version 3 of the License, or any later version.
 + *
 + * This library is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 + *
 + * You should have received a copy of the GNU Affero General Public
 + * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 + *
 + */
 +
 +namespace OCA\Contacts;
 +use OCA\Contacts\Utils\JSONSerializer;
 +use OCA\Contacts\Utils\Properties;
 +use OCA\Contacts\Utils\TemporaryPhoto;
 +use OCA\Contacts\VObject\VCard;
 +
 +/**
 + * This class manages our addressbooks.
 + * TODO: Port this to use the new backend
 + */
 +class AddressbookProvider implements \OCP\IAddressBook {
 +
 +	const CONTACT_TABLE = '*PREFIX*contacts_cards';
 +	const PROPERTY_TABLE = '*PREFIX*contacts_cards_properties';
 +	const ADDRESSBOOK_TABLE = '*PREFIX*contacts_addressbooks';
 +
 +	/**
 +	 * Addressbook id
 +	 * @var integer
 +	 */
 +	public $id;
 +	
 +	/**
 +	 * Addressbook info array
 +	 * @var AddressBook
 +	 */
 +	public $addressBook;
 +
 +	/**
 +	 * Constructor
 +	 * @param AddressBook $addressBook
 +	 */
 +	public function __construct($addressBook) {
 +		$this->addressBook = $addressBook;
 +		$this->app = new App();
 +	}
 +	
 +	public function getAddressbook() {
 +		return $this->addressBook;
 +	}
 +	
 +	/**
 +	* @return string defining the technical unique key
 +	*/
 +	public function getKey() {
 +		$metaData = $this->addressBook->getMetaData();
 +		return $metaData['backend'].':'.$metaData['id'];
 +	}
 +
 +	/**
 +	* In comparison to getKey() this function returns a human readable (maybe translated) name
 +	* @return mixed
 +	*/
 +	public function getDisplayName() {
 +		return $this->addressBook->getDisplayName();
 +	}
 +
 +	/**
 +	* @return mixed
 +	*/
 +	public function getPermissions() {
 +		return $this->addressBook->getPermissions();
 +	}
 +
 +	/**
 +	* @param $pattern
 +	* @param $searchProperties
 +	* @param $options
 +	* @return array|false
 +	*/
 +	public function search($pattern, $searchProperties, $options) {
 +		$propTable = self::PROPERTY_TABLE;
 +		$contTable = self::CONTACT_TABLE;
 +		$addrTable = self::ADDRESSBOOK_TABLE;
 +		$results = array();
 +
 +		/**
 +		 * This query will fetch all contacts which match the $searchProperties
 +		 * It will look up the addressbookid of the contact and the user id of the owner of the contact app
 +		 */
 +		$query = <<<SQL
 +			SELECT
 +				DISTINCT
 +				`$propTable`.`contactid`,
 +				`$contTable`.`addressbookid`,
 +				`$addrTable`.`userid`
 +
 +			FROM
 +				`$propTable`
 +			INNER JOIN
 +				`$contTable`
 +			ON `$contTable`.`id` = `$propTable`.`contactid`
 +  				INNER JOIN `$addrTable`
 +			ON `$addrTable`.id = `$contTable`.addressbookid
 +			WHERE
- 			(
++				`$contTable`.addressbookid = ? AND
++				(
 +SQL;
 +
 +		$params = array();
++		$params[] = $this->addressBook->getMetaData()['id'];
 +		foreach ($searchProperties as $property) {
 +			$params[] = $property;
 +			$params[] = '%' . $pattern . '%';
 +			$query .= '(`name` = ? AND `value` LIKE ?) OR ';
 +		}
 +		$query = substr($query, 0, strlen($query) - 4);
 +		$query .= ')';
 +
 +		$stmt = \OCP\DB::prepare($query);
 +		$result = $stmt->execute($params);
 +		if (\OCP\DB::isError($result)) {
 +			\OCP\Util::writeLog('contacts', __METHOD__ . 'DB error: ' . \OC_DB::getErrorMessage($result),
 +				\OCP\Util::ERROR);
 +			return false;
 +		}
 +		while ($row = $result->fetchRow()) {
 +			$id = $row['contactid'];
 +			$addressbookKey = $row['addressbookid'];
 +			// Check if we are the owner of the contact
 +			if ($row['userid'] !== \OCP\User::getUser()) {
 +				// we aren't the owner of the contact
 +				try {
 +					// it is possible that the contact is shared with us
 +					// if so, $contact will be an object
 +					// if not getContact will throw an Exception
 +					$contact = $this->app->getContact('shared', $addressbookKey, $id);
 +				} catch (\Exception $e){
 +					// the contact isn't shared with us
 +					$contact = null;
 +				}
 +			} else {
 +				// We are the owner of the contact
 +				// thus we can easily fetch it
 +				$contact = $this->app->getContact('local', $addressbookKey, $id);
 +			}
 +			if ($contact !== null) {
 +				$j = JSONSerializer::serializeContact($contact);
 +				$j['data']['id'] = $id;
 +				if (isset($contact->PHOTO)) {
 +					$url = \OCP\Util::linkToRoute('contacts_contact_photo',
 +						array(
 +							'backend' => $contact->getBackend()->name,
 +							'addressBookId' => $addressbookKey,
 +							'contactId' => $contact->getId()
 +						));
 +					$url = \OC_Helper::makeURLAbsolute($url);
 +					$j['data']['PHOTO'] = "VALUE=uri:$url";
 +				}
 +				$results[] = $this->convertToSearchResult($j);
 +			}
 +		}
 +		return $results;
 +	}
 +
 +	/**
 +	* @param $properties
 +	* @return mixed
 +	*/
 +	public function createOrUpdate($properties) {
 +		$id = null;
 +
 +		/**
 +		 * @var \OCA\Contacts\VObject\VCard
 +		 */
 +		$vcard = null;
 +		if(array_key_exists('id', $properties)) {
 +			// TODO: test if $id belongs to this addressbook
 +			$id = $properties['id'];
 +			// TODO: Test $vcard
 +			$vcard = $this->addressBook->getChild($properties['id']);
 +			foreach(array_keys($properties) as $name) {
 +				if(isset($vcard->{$name})) {
 +					unset($vcard->{$name});
 +				}
 +			}
 +		} else {
 +			$vcard = \Sabre\VObject\Component::create('VCARD');
 +			$uid = substr(md5(rand().time()), 0, 10);
 +			$vcard->add('UID', $uid);
 +			try {
 +				$id = $this->addressBook->addChild($vcard);
 +			} catch(\Exception $e) {
 +				\OCP\Util::writeLog('contacts', __METHOD__ . ' ' . $e->getMessage(), \OCP\Util::ERROR);
 +				return false;
 +			}
 +		}
 +
 +		foreach($properties as $name => $value) {
 +			switch($name) {
 +				case 'ADR':
 +				case 'N':
 +					if(is_array($value)) {
 +						$property = \Sabre\VObject\Property::create($name);
 +						$property->setParts($value);
 +						$vcard->add($property);
 +					} else {
 +						$vcard->{$name} = $value;
 +					}
 +					break;
 +				case 'BDAY':
 +					// TODO: try/catch
 +					$date = New \DateTime($value);
 +					$vcard->BDAY = $date->format('Y-m-d');
 +					$vcard->BDAY->VALUE = 'DATE';
 +					break;
 +				case 'EMAIL':
 +				case 'TEL':
 +				case 'IMPP': // NOTE: We don't know if it's GTalk, Jabber etc. only the protocol
 +				case 'URL':
 +					if(is_array($value)) {
 +						foreach($value as $val) {
 +							$vcard->add($name, strip_tags($val));
 +						}
 +					} else {
 +						$vcard->add($name, strip_tags($value));
 +					}
 +				default:
 +					$vcard->{$name} = $value;
 +					break;
 +			}
 +		}
 +
 +		try {
 +			VCard::edit($id, $vcard);
 +		} catch(\Exception $e) {
 +			\OCP\Util::writeLog('contacts', __METHOD__ . ' ' . $e->getMessage(), \OCP\Util::ERROR);
 +			return false;
 +		}
 +		
 +		$asarray = VCard::structureContact($vcard);
 +		$asarray['id'] = $id;
 +		return $asarray;
 +	}
 +
 +	/**
 +	* @param $id
 +	* @return mixed
 +	*/
 +	public function delete($id) {
 +		try {
 +			$query = 'SELECT COUNT(*) as `count` FROM `*PREFIX*contacts_cards` WHERE `id` = ? AND `addressbookid` = ?';
 +			$stmt = \OCP\DB::prepare($query);
 +			$result = $stmt->execute(array($id, $this->id));
 +			if (\OCP\DB::isError($result)) {
 +				\OCP\Util::writeLog('contacts', __METHOD__ . 'DB error: ' . \OC_DB::getErrorMessage($result),
 +					\OCP\Util::ERROR);
 +				return false;
 +			}
 +			if((int)$result['count'] === 0) {
 +				\OCP\Util::writeLog('contacts', __METHOD__
 +					. 'Contact with id ' . $id . 'doesn\'t belong to addressbook with id ' . $this->id, 
 +					\OCP\Util::ERROR);
 +				return false;
 +			}
 +		} catch(\Exception $e) {
 +			\OCP\Util::writeLog('contacts', __METHOD__ . ', exception: ' . $e->getMessage(), 
 +				\OCP\Util::ERROR);
 +			return false;
 +		}
 +		return VCard::delete($id);
 +	}
 +
 +	/**
 +	 * @param $j
 +	 * @return array
 +	 */
 +	private function convertToSearchResult($j) {
 +		$data = $j['data'];
 +		$result = array();
 +		foreach( $data as $key => $d) {
 +			$d = $data[$key];
 +			if (in_array($key, Properties::$multiProperties)) {
 +				$result[$key] = array_map(function($v){
 +					return $v['value'];
 +				}, $d);
 +			} else {
 +				if (is_array($d)) {
 +					$result[$key] = $d[0]['value'];
 +				} else {
 +					$result[$key] = $d;
 +				}
 +			}
 +		}
 +
 +		return $result;
 +	}
 +
 +}
diff --cc core/doc/admin/release/_sources/configuration/config_sample_php_parameters.txt
index e0f7c4e,0000000..2d6ce6c
mode 100644,000000..100644
--- a/core/doc/admin/release/_sources/configuration/config_sample_php_parameters.txt
+++ b/core/doc/admin/release/_sources/configuration/config_sample_php_parameters.txt
@@@ -1,1054 -1,0 +1,1054 @@@
 +Config.php Parameters
 +=====================
 +ownCloud uses the ``config/config.php`` file to control server operations.
 +``config/config.sample.php`` lists all the configurable parameters within
 +ownCloud. This document provides a more detailed reference. Many options are
 +configurable on your Admin page, so it is usually not necessary to edit
 +``config/config.php``.
 +
 +.. Generated content below. Don't change this.
 +.. DEFAULT_SECTION_START
 +
 +
 +Default Parameters
 +------------------
 +
 +These parameters are configured by the ownCloud installer, and are required
 +for your ownCloud server to operate.
 +
 +
 +::
 +
 +	'instanceid' => '',
 +
 +This is a unique identifier for your ownCloud installation, created
 +automatically by the installer. This example is for documentation only,
 +and you should never use it because it will not work. A valid ``instanceid``
 +is created when you install ownCloud.
 +
 +'instanceid' => 'd3c944a9a',
 +
 +::
 +
 +	'passwordsalt' => '',
 +
 +The salt used to hash all passwords, auto-generated by the ownCloud
 +installer. (There are also per-user salts.) If you lose this salt you lose
 +all your passwords. This example is for documentation only,
 +and you should never use it.
 +
 +'passwordsalt' => 'd3c944a9af095aa08f',
 +
 +::
 +
 +	'trusted_domains' =>
 +	  array (
 +	    'demo.example.org',
 +	    'otherdomain.example.org',
 +	  ),
 +
 +Your list of trusted domains that users can log into. Specifying trusted
 +domains prevents host header poisoning. Do not remove this, as it performs
 +necessary security checks.
 +
 +::
 +
 +	'datadirectory' => '/var/www/owncloud/data',
 +
 +Where user files are stored; this defaults to ``data/`` in the ownCloud
 +directory. The SQLite database is also stored here, when you use SQLite. (SQLite is
 +available only in ownCloud Community Edition)
 +
 +::
 +
 +	'version' => '',
 +
 +The current version number of your ownCloud installation. This is set up
 +during installation and update, so you shouldn't need to change it.
 +
 +::
 +
 +	'dbtype' => 'sqlite',
 +
 +Identifies the database used with this installation. See also config option
 +``supportedDatabases``
 +
 +Available:
 +	- sqlite (SQLite3 - Community Edition Only)
 +	- mysql (MySQL/MariaDB)
 +	- pgsql (PostgreSQL)
 +	- oci (Oracle - Enterprise Edition Only)
 +	- mssql (Microsoft SQL Server - Enterprise Edition Only)
 +
 +::
 +
 +	'dbhost' => '',
 +
 +Your host server name, for example ``localhost``, ``hostname``,
 +``hostname.example.com``, or the IP address. To specify a port use
 +``hostname:####``; to specify a Unix socket use
 +``localhost:/path/to/socket``.
 +
 +::
 +
 +	'dbname' => 'owncloud',
 +
 +The name of the ownCloud database, which is set during installation. You
 +should not need to change this.
 +
 +::
 +
 +	'dbuser' => '',
 +
 +The user that ownCloud uses to write to the database. This must be unique
 +across ownCloud instances using the same SQL database. This is set up during
 +installation, so you shouldn't need to change it.
 +
 +::
 +
 +	'dbpassword' => '',
 +
 +The password for the database user. This is set up during installation, so
 +you shouldn't need to change it.
 +
 +::
 +
 +	'dbtableprefix' => '',
 +
 +Prefix for the ownCloud tables in the database.
 +
 +::
 +
 +	'dbdriveroptions' => array(
 +		PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
 +	),
 +
 +Additional driver options for the database connection, eg. to enable SSL
 +encryption in MySQL.
 +
 +::
 +
 +	'installed' => false,
 +
 +Indicates whether the ownCloud instance was installed successfully; ``true``
 +indicates a successful installation, and ``false`` indicates an unsuccessful
 +installation.
 +.. DEFAULT_SECTION_END
 +.. Generated content above. Don't change this.
 +
 +Default config.php Examples
 +---------------------------
 +When you use SQLite as your ownCloud database, your ``config.php`` looks like
 +this after installation. The SQLite database is stored in your ownCloud
 +``data/`` directory. SQLite is a simple, lightweight embedded database that
 +is good for testing and for simple installations, but for production ownCloud
 +systems you should use MySQL, MariaDB, or PosgreSQL.
 +
 +::
 +
 +  <?php
 +  $CONFIG = array (
 +    'instanceid' => 'occ6f7365735',
 +    'passwordsalt' => '2c5778476346786306303',
 +    'trusted_domains' =>
 +    array (
 +      0 => 'localhost',
 +      1 => 'studio',
 +    ),
 +    'datadirectory' => '/var/www/owncloud/data',
 +    'dbtype' => 'sqlite3',
 +    'version' => '7.0.2.1',
 +    'installed' => true,
 +  );
 +
 +This example is from a new ownCloud installation using MariaDB::
 +
 +
 +  <?php
 +  $CONFIG = array (
 +    'instanceid' => 'oc8c0fd71e03',
 +    'passwordsalt' => '515a13302a6b3950a9d0fdb970191a',
 +    'trusted_domains' =>
 +    array (
 +      0 => 'localhost',
 +      1 => 'studio',
 +      2 => '192.168.10.155'
 +    ),
 +    'datadirectory' => '/var/www/owncloud/data',
 +    'dbtype' => 'mysql',
 +     'version' => '7.0.2.1',
 +    'dbname' => 'owncloud',
 +    'dbhost' => 'localhost',
 +    'dbtableprefix' => 'oc_',
 +    'dbuser' => 'oc_carla',
 +    'dbpassword' => '67336bcdf7630dd80b2b81a413d07',
 +    'installed' => true,
 +  );
 +
 +.. Generated content below. Don't change this.
 +.. ALL_OTHER_SECTIONS_START
 +
 +
 +User Experience
 +---------------
 +
 +These optional parameters control some aspects of the user interface. Default
 +values, where present, are shown.
 +
 +
 +::
 +
 +	'default_language' => 'en',
 +
 +This sets the default language on your ownCloud server, using ISO_639-1
 +language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
 +French. It overrides automatic language detection on public pages like login
 +or shared items. User's language preferences configured under "personal ->
 +language" override this setting after they have logged in.
 +
 +::
 +
 +	'defaultapp' => 'files',
 +
 +Set the default app to open on login. Use the app names as they appear in the
 +URL after clicking them in the Apps menu, such as documents, calendar, and
 +gallery. You can use a comma-separated list of app names, so if the first
 +app is not enabled for a user then ownCloud will try the second one, and so
 +on. If no enabled apps are found it defaults to the Files app.
 +
 +::
 +
 +	'knowledgebaseenabled' => true,
 +
 +``true`` enables the Help menu item in the user menu (top right of the
 +ownCloud Web interface). ``false`` removes the Help item.
 +
 +::
 +
 +	'enable_avatars' => true,
 +
 +``true`` enables avatars, or user profile photos. These appear on the User
 +page, on user's Personal pages and are used by some apps (contacts, mail,
 +etc). ``false`` disables them.
 +
 +::
 +
 +	'allow_user_to_change_display_name' => true,
 +
 +``true`` allows users to change their display names (on their Personal
 +pages), and ``false`` prevents them from changing their display names.
 +
 +::
 +
 +	'remember_login_cookie_lifetime' => 60*60*24*15,
 +
 +Lifetime of the remember login cookie, which is set when the user clicks the
 +``remember`` checkbox on the login screen. The default is 15 days, expressed
 +in seconds.
 +
 +::
 +
 +	'session_lifetime' => 60 * 60 * 24,
 +
 +The lifetime of a session after inactivity; the default is 24 hours,
 +expressed in seconds.
 +
 +::
 +
 +	'session_keepalive' => true,
 +
 +Enable or disable session keep-alive when a user is logged in to the Web UI.
 +
 +Enabling this sends a "heartbeat" to the server to keep it from timing out.
 +
 +::
 +
- 	'skeletondirectory' => '',
++	'skeletondirectory' => '/path/to/owncloud/core/skeleton',
 +
 +The directory where the skeleton files are located. These files will be
 +copied to the data directory of new users. Leave empty to not copy any
 +skeleton files.
 +
 +::
 +
 +	'user_backends' => array(
 +		array(
 +			'class' => 'OC_User_IMAP',
 +			'arguments' => array('{imap.gmail.com:993/imap/ssl}INBOX')
 +		)
 +	),
 +
 +The ``user_backends`` app (which needs to be enabled first) allows you to
 +configure alternate authentication backends. Supported backends are:
 +IMAP (OC_User_IMAP), SMB (OC_User_SMB), and FTP (OC_User_FTP).
 +
 +Mail Parameters
 +---------------
 +
 +These configure the email settings for ownCloud notifications and password
 +resets.
 +
 +
 +::
 +
 +	'mail_domain' => 'example.com',
 +
 +The return address that you want to appear on emails sent by the ownCloud
 +server, for example ``oc-admin at example.com``, substituting your own domain,
 +of course.
 +
 +::
 +
 +	'mail_from_address' => 'owncloud',
 +
 +FROM address that overrides the built-in ``sharing-noreply`` and
 +``lostpassword-noreply`` FROM addresses.
 +
 +::
 +
 +	'mail_smtpdebug' => false,
 +
 +Enable SMTP class debugging.
 +
 +::
 +
 +	'mail_smtpmode' => 'sendmail',
 +
 +Which mode to use for sending mail: ``sendmail``, ``smtp``, ``qmail`` or
 +``php``.
 +
 +If you are using local or remote SMTP, set this to ``smtp``.
 +
 +If you are using PHP mail you must have an installed and working email system
 +on the server. The program used to send email is defined in the ``php.ini``
 +file.
 +
 +For the ``sendmail`` option you need an installed and working email system on
 +the server, with ``/usr/sbin/sendmail`` installed on your Unix system.
 +
 +For ``qmail`` the binary is /var/qmail/bin/sendmail, and it must be installed
 +on your Unix system.
 +
 +::
 +
 +	'mail_smtphost' => '127.0.0.1',
 +
 +This depends on ``mail_smtpmode``. Specified the IP address of your mail
 +server host. This may contain multiple hosts separated by a semi-colon. If
 +you need to specify the port number append it to the IP address separated by
 +a colon, like this: ``127.0.0.1:24``.
 +
 +::
 +
 +	'mail_smtpport' => 25,
 +
 +This depends on ``mail_smtpmode``. Specify the port for sending mail.
 +
 +::
 +
 +	'mail_smtptimeout' => 10,
 +
 +This depends on ``mail_smtpmode``. This set an SMTP server timeout, in
 +seconds. You may need to increase this if you are running an anti-malware or
 +spam scanner.
 +
 +::
 +
 +	'mail_smtpsecure' => '',
 +
 +This depends on ``mail_smtpmode``. Specify when you are using ``ssl`` or
 +``tls``, or leave empty for no encryption.
 +
 +::
 +
 +	'mail_smtpauth' => false,
 +
 +This depends on ``mail_smtpmode``. Change this to ``true`` if your mail
 +server requires authentication.
 +
 +::
 +
 +	'mail_smtpauthtype' => 'LOGIN',
 +
 +This depends on ``mail_smtpmode``. If SMTP authentication is required, choose
 +the authentication type as ``LOGIN`` (default) or ``PLAIN``.
 +
 +::
 +
 +	'mail_smtpname' => '',
 +
 +This depends on ``mail_smtpauth``. Specify the username for authenticating to
 +the SMTP server.
 +
 +::
 +
 +	'mail_smtppassword' => '',
 +
 +This depends on ``mail_smtpauth``. Specify the password for authenticating to
 +the SMTP server.
 +
 +Proxy Configurations
 +--------------------
 +
 +
 +::
 +
 +	'overwritehost' => '',
 +
 +The automatic hostname detection of ownCloud can fail in certain reverse
 +proxy and CLI/cron situations. This option allows you to manually override
 +the automatic detection; for example ``www.example.com``, or specify the port
 +``www.example.com:8080``.
 +
 +::
 +
 +	'overwriteprotocol' => '',
 +
 +When generating URLs, ownCloud attempts to detect whether the server is
 +accessed via ``https`` or ``http``. However, if ownCloud is behind a proxy
 +and the proxy handles the ``https`` calls, ownCloud would not know that
 +``ssl`` is in use, which would result in incorrect URLs being generated.
 +
 +Valid values are ``http`` and ``https``.
 +
 +::
 +
 +	'overwritewebroot' => '',
 +
 +ownCloud attempts to detect the webroot for generating URLs automatically.
 +
 +For example, if ``www.example.com/owncloud`` is the URL pointing to the
 +ownCloud instance, the webroot is ``/owncloud``. When proxies are in use, it
 +may be difficult for ownCloud to detect this parameter, resulting in invalid
 +URLs.
 +
 +::
 +
 +	'overwritecondaddr' => '',
 +
 +This option allows you to define a manual override condition as a regular
 +expression for the remote IP address. For example, defining a range of IP
 +addresses starting with ``10.0.0.`` and ending with 1 to 3:
 +``^10\.0\.0\.[1-3]$``
 +
 +::
 +
 +	'overwrite.cli.url' => '',
 +
 +Use this configuration parameter to specify the base url for any urls which
 +are generated within ownCloud using any kind of command line tools (cron or
 +occ). The value should contain the full base URL:
 +``https://www.example.com/owncloud``
 +
 +::
 +
 +	'proxy' => '',
 +
 +The URL of your proxy server, for example ``proxy.example.com:8081``.
 +
 +::
 +
 +	'proxyuserpwd' => '',
 +
 +The optional authentication for the proxy to use to connect to the internet.
 +
 +The format is: ``username:password``.
 +
 +Deleted Items (trash bin)
 +-------------------------
 +
 +These parameters control the Deleted files app.
 +
 +
 +::
 +
 +	'trashbin_retention_obligation' => 30,
 +
 +When the trash bin app is enabled (default), this is the number of days a
 +file will be kept in the trash bin. Default is 30 days.
 +
 +::
 +
 +	'trashbin_auto_expire' => true,
 +
 +Disable or enable auto-expiration for the trash bin. By default
 +auto-expiration is enabled.
 +
 +ownCloud Verifications
 +----------------------
 +
 +ownCloud performs several verification checks. There are two options,
 +``true`` and ``false``.
 +
 +
 +::
 +
 +	'appcodechecker' => true,
 +
 +Check 3rd party apps to make sure they are using the private API and not the
 +public API. If the app uses the private API it cannot be installed.
 +
 +::
 +
 +	'updatechecker' => true,
 +
 +Check if ownCloud is up-to-date and shows a notification if a new version is
 +available.
 +
 +::
 +
 +	'has_internet_connection' => true,
 +
 +Is ownCloud connected to the Internet or running in a closed network?
 +
 +::
 +
 +	'check_for_working_webdav' => true,
 +
 +Allows ownCloud to verify a working WebDAV connection. This is done by
 +attempting to make a WebDAV request from PHP.
 +
 +::
 +
 +	'check_for_working_htaccess' => true,
 +
 +This is a crucial security check on Apache servers that should always be set
 +to ``true``. This verifies that the ``.htaccess`` file is writable and works.
 +
 +If it is not, then any options controlled by ``.htaccess``, such as large
 +file uploads, will not work. It also runs checks on the ``data/`` directory,
 +which verifies that it can't be accessed directly through the web server.
 +
 +::
 +
 +	'config_is_read_only' => false,
 +
 +In certain environments it is desired to have a read-only config file.
 +
 +When this switch is set to ``true`` ownCloud will not verify whether the
 +configuration is writable. However, it will not be possible to configure
 +all options via the web-interface. Furthermore, when updating ownCloud
 +it is required to make the config file writable again for the update
 +process.
 +
 +Logging
 +-------
 +
 +
 +::
 +
 +	'log_type' => 'owncloud',
 +
 +By default the ownCloud logs are sent to the ``owncloud.log`` file in the
 +default ownCloud data directory. If syslogging is desired, set this parameter
 +to ``syslog``.
 +
 +::
 +
 +	'logfile' => 'owncloud.log',
 +
 +Change the ownCloud logfile name from ``owncloud.log`` to something else.
 +
 +::
 +
 +	'loglevel' => 2,
 +
 +Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 =
 +Warning, 3 = Error. The default value is Warning.
 +
 +::
 +
 +	'logdateformat' => 'F d, Y H:i:s',
 +
 +This uses PHP.date formatting; see http://php.net/manual/en/function.date.php
 +
 +::
 +
 +	'logtimezone' => 'Europe/Berlin',
 +
 +The default timezone for logfiles is UTC. You may change this; see
 +http://php.net/manual/en/timezones.php
 +
 +::
 +
 +	'log_query' => false,
 +
 +Append all database queries and parameters to the log file. Use this only for
 +debugging, as your logfile will become huge.
 +
 +::
 +
 +	'cron_log' => true,
 +
 +Log successful cron runs.
 +
 +::
 +
 +	'log_rotate_size' => false,
 +
 +Enables log rotation and limits the total size of logfiles. The default is 0,
 +or no rotation. Specify a size in bytes, for example 104857600 (100 megabytes
 += 100 * 1024 * 1024 bytes). A new logfile is created with a new name when the
 +old logfile reaches your limit. The total size of all logfiles is double the
 +``log_rotate_sizerotation`` value.
 +
 +Alternate Code Locations
 +------------------------
 +
 +Some of the ownCloud code may be stored in alternate locations.
 +
 +
 +::
 +
 +	'3rdpartyroot' => '',
 +
 +ownCloud uses some 3rd party PHP components to provide certain functionality.
 +
 +These components are shipped as part of the software package and reside in
 +``owncloud/3rdparty``. Use this option to configure a different location.
 +
 +::
 +
 +	'3rdpartyurl' => '',
 +
 +If you have an alternate ``3rdpartyroot``, you must also configure the URL as
 +seen by a Web browser.
 +
 +::
 +
 +	'customclient_desktop' =>
 +		'http://owncloud.org/sync-clients/',
 +	'customclient_android' =>
 +		'https://play.google.com/store/apps/details?id=com.owncloud.android',
 +	'customclient_ios' =>
 +		'https://itunes.apple.com/us/app/owncloud/id543672169?mt=8',
 +
 +This section is for configuring the download links for ownCloud clients, as
 +seen in the first-run wizard and on Personal pages.
 +
 +Apps
 +----
 +
 +Options for the Apps folder, Apps store, and App code checker.
 +
 +
 +::
 +
 +	'appstoreenabled' => true,
 +
 +When enabled, admins may install apps from the ownCloud app store.
 +
 +The app store is disabled by default for ownCloud Enterprise Edition
 +
 +::
 +
 +	'appstoreurl' => 'https://api.owncloud.com/v1',
 +
 +The URL of the appstore to use.
 +
 +::
 +
 +	'apps_paths' => array(
 +		array(
 +			'path'=> '/var/www/owncloud/apps',
 +			'url' => '/apps',
 +			'writable' => true,
 +		),
 +	),
 +
 +Use the ``apps_paths`` parameter to set the location of the Apps directory,
 +which should be scanned for available apps, and where user-specific apps
 +should be installed from the Apps store. The ``path`` defines the absolute
 +file system path to the app folder. The key ``url`` defines the HTTP web path
 +to that folder, starting from the ownCloud web root. The key ``writable``
 +indicates if a web server can write files to that folder.
 +
 +::
 +
 +	'appcodechecker' => true,
 +
 +Check 3rd party apps to make sure they are using the private API and not the
 +public API. If the app uses the private API it cannot be installed.
 +
 +
 +
 +
 +
 +Previews
 +--------
 +
 +ownCloud supports previews of image files, the covers of MP3 files, and text
 +files. These options control enabling and disabling previews, and thumbnail
 +size.
 +
 +
 +::
 +
 +	'enable_previews' => true,
 +
 +By default, ownCloud can generate previews for the following filetypes:
 +
 +- Images files
 +- Covers of MP3 files
 +- Text documents
 +
 +Valid values are ``true``, to enable previews, or
 +``false``, to disable previews
 +
 +::
 +
 +	'preview_max_x' => null,
 +
 +The maximum width, in pixels, of a preview. A value of ``null`` means there
 +is no limit.
 +
 +::
 +
 +	'preview_max_y' => null,
 +
 +The maximum height, in pixels, of a preview. A value of ``null`` means there
 +is no limit.
 +
 +::
 +
 +	'preview_max_scale_factor' => 10,
 +
 +If a lot of small pictures are stored on the ownCloud instance and the
 +preview system generates blurry previews, you might want to consider setting
 +a maximum scale factor. By default, pictures are upscaled to 10 times the
 +original size. A value of ``1`` or ``null`` disables scaling.
 +
 +::
 +
 +	'preview_max_filesize_image' => 50,
 +
 +max file size for generating image previews with imagegd (default behaviour)
 +If the image is bigger, it'll try other preview generators,
 +but will most likely show the default mimetype icon
 +
 +Value represents the maximum filesize in megabytes
 +Default is 50
 +Set to -1 for no limit
 +
 +::
 +
 +	'preview_libreoffice_path' => '/usr/bin/libreoffice',
 +
 +custom path for LibreOffice/OpenOffice binary
 +
 +::
 +
 +	'preview_office_cl_parameters' =>
 +		' --headless --nologo --nofirststartwizard --invisible --norestore '.
 +		'-convert-to pdf -outdir ',
 +
 +Use this if LibreOffice/OpenOffice requires additional arguments.
 +
 +::
 +
 +	'enabledPreviewProviders' => array(
 +		'OC\Preview\Image',
 +		'OC\Preview\MP3',
 +		'OC\Preview\TXT',
 +		'OC\Preview\MarkDown'
 +	),
 +
 +Only register providers that have been explicitly enabled
 +
 +The following providers are enabled by default:
 +
 + - OC\\Preview\\Image
 + - OC\\Preview\\MarkDown
 + - OC\\Preview\\MP3
 + - OC\\Preview\\TXT
 +
 +The following providers are disabled by default due to performance or privacy
 +concerns:
 +
 + - OC\\Preview\\Movie
 + - OC\\Preview\\MSOffice2003
 + - OC\\Preview\\MSOffice2007
 + - OC\\Preview\\MSOfficeDoc
 + - OC\\Preview\\OpenDocument
 + - OC\\Preview\\PDF
 + - OC\\Preview\\StarOffice
 + - OC\\Preview\\SVG
 +
 +.. note:: Troubleshooting steps for the MS Word previews are available
 +   at the :doc:`collaborative_documents_configuration` section
 +   of the Administrators Manual.
 +
 +The following providers are not available in Microsoft Windows:
 +
 + - OC\\Preview\\Movie
 + - OC\\Preview\\MSOfficeDoc
 + - OC\\Preview\\MSOffice2003
 + - OC\\Preview\\MSOffice2007
 + - OC\\Preview\\OpenDocument
 + - OC\\Preview\\StarOffice
 +
 +LDAP
 +----
 +
 +Global settings used by LDAP User and Group Backend
 +
 +
 +::
 +
 +	'ldapUserCleanupInterval' => 51,
 +
 +defines the interval in minutes for the background job that checks user
 +existance and marks them as ready to be cleaned up. The number is always
 +minutes. Setting it to 0 disables the feature.
 +
 +See command line (occ) methods ldap:show-remnants and user:delete
 +
 +Maintenance
 +-----------
 +
 +These options are for halting user activity when you are performing server
 +maintenance.
 +
 +
 +::
 +
 +	'maintenance' => false,
 +
 +Enable maintenance mode to disable ownCloud
 +
 +If you want to prevent users to login to ownCloud before you start doing some
 +maintenance work, you need to set the value of the maintenance parameter to
 +true. Please keep in mind that users who are already logged-in are kicked out
 +of ownCloud instantly.
 +
 +::
 +
 +	'singleuser' => false,
 +
 +When set to ``true``, the ownCloud instance will be unavailable for all users
 +who are not in the ``admin`` group.
 +
 +SSL
 +---
 +
 +
 +::
 +
 +	'forcessl' => false,
 +
 +Change this to ``true`` to require HTTPS for all connections, and to reject
 +HTTP requests.
 +
 +::
 +
 +	'openssl' => array(
 +		'config' => '/absolute/location/of/openssl.cnf',
 +	),
 +
 +Extra SSL options to be used for configuration.
 +
 +Miscellaneous
 +-------------
 +
 +
 +::
 +
 +	'blacklisted_files' => array('.htaccess'),
 +
 +Blacklist a specific file or files and disallow the upload of files
 +with this name. ``.htaccess`` is blocked by default.
 +
 +WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING.
 +
 +::
 +
 +	'share_folder' => '/',
 +
 +Define a default folder for shared files and folders other than root.
 +
 +::
 +
 +	'theme' => '',
 +
 +If you are applying a theme to ownCloud, enter the name of the theme here.
 +
 +The default location for themes is ``owncloud/themes/``.
 +
 +::
 +
 +	'xframe_restriction' => true,
 +
 +X-Frame-Restriction is a header which prevents browsers from showing the site
 +inside an iframe. This is be used to prevent clickjacking. It is risky to
 +disable this, so leave it set at ``true``.
 +
 +::
 +
 +	'cipher' => 'AES-256-CFB',
 +
 +The default cipher for encrypting files. Currently AES-128-CFB and
 +AES-256-CFB are supported.
 +
 +::
 +
 +	'memcached_servers' => array(
 +		// hostname, port and optional weight. Also see:
 +		// http://www.php.net/manual/en/memcached.addservers.php
 +		// http://www.php.net/manual/en/memcached.addserver.php
 +		array('localhost', 11211),
 +		//array('other.host.local', 11211),
 +	),
 +
 +Server details for one or more memcached servers to use for memory caching.
 +
 +Memcache is only used if other memory cache options (xcache, apc, apcu) are
 +not available.
 +
 +::
 +
 +	'cache_path' => '',
 +
 +Location of the cache folder, defaults to ``data/$user/cache`` where
 +``$user`` is the current user. When specified, the format will change to
 +``$cache_path/$user`` where ``$cache_path`` is the configured cache directory
 +and ``$user`` is the user.
 +
 +::
 +
 +	'quota_include_external_storage' => false,
 +
 +EXPERIMENTAL: option whether to include external storage in quota
 +calculation, defaults to false.
 +
 +::
 +
 +	'filesystem_check_changes' => 1,
 +
 +Specifies how often the filesystem is checked for changes made outside
 +ownCloud.
 +
 +0 -> Never check the filesystem for outside changes, provides a performance
 +increase when it's certain that no changes are made directly to the
 +filesystem
 +
 +1 -> Check each file or folder at most once per request, recommended for
 +general use if outside changes might happen.
 +
 +2 -> Check every time the filesystem is used, causes a performance hit when
 +using external storages, not recommended for regular use.
 +
 +::
 +
 +	'asset-pipeline.enabled' => false,
 +
 +All css and js files will be served by the web server statically in one js
 +file and one css file if this is set to ``true``.
 +
 +.. note:: Test this thoroughly on production systems as it should work reliably
 +   with core apps, but you may encounter problems with community/third-party apps.
 +
 +::
 +
 +	'mount_file' => 'data/mount.json',
 +
 +Where ``mount.json`` file should be stored, defaults to ``data/mount.json``
 +
 +::
 +
 +	'filesystem_cache_readonly' => false,
 +
 +When ``true``, prevent ownCloud from changing the cache due to changes in the
 +filesystem for all storage.
 +
 +::
 +
 +	'objectstore' => array(
 +		'class' => 'OC\\Files\\ObjectStore\\Swift',
 +		'arguments' => array(
 +			// trystack will user your facebook id as the user name
 +			'username' => 'facebook100000123456789',
 +			// in the trystack dashboard go to user -> settings -> API Password to
 +			// generate a password
 +			'password' => 'Secr3tPaSSWoRdt7',
 +			// must already exist in the objectstore, name can be different
 +			'container' => 'owncloud',
 +			// create the container if it does not exist. default is false
 +			'autocreate' => true,
 +			// required, dev-/trystack defaults to 'RegionOne'
 +			'region' => 'RegionOne',
 +			// The Identity / Keystone endpoint
 +			'url' => 'http://8.21.28.222:5000/v2.0',
 +			// required on dev-/trystack
 +			'tenantName' => 'facebook100000123456789',
 +			// dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
 +			// if omitted
 +			'serviceName' => 'swift',
 +		),
 +	),
 +
 +The example below shows how to configure ownCloud to store all files in a
 +swift object storage.
 +
 +It is important to note that ownCloud in object store mode will expect
 +exclusive access to the object store container because it only stores the
 +binary data for each file. The metadata is currently kept in the local
 +database for performance reasons.
 +
 +WARNING: The current implementation is incompatible with any app that uses
 +direct file IO and circumvents our virtual filesystem. That includes
 +Encryption and Gallery. Gallery will store thumbnails directly in the
 +filesystem and encryption will cause severe overhead because key files need
 +to be fetched in addition to any requested file.
 +
 +One way to test is applying for a trystack account at http://trystack.org/
 +
 +::
 +
 +	'supportedDatabases' => array(
 +		'sqlite',
 +		'mysql',
 +		'pgsql',
 +		'oci',
 +		'mssql'
 +	),
 +
 +Database types that are supported for installation.
 +
 +Available:
 +	- sqlite (SQLite3 - Community Edition Only)
 +	- mysql (MySQL)
 +	- pgsql (PostgreSQL)
 +	- oci (Oracle - Enterprise Edition Only)
 +	- mssql (Microsoft SQL Server - Enterprise Edition Only)
 +
 +::
 +
 +	'custom_csp_policy' =>
 +		"default-src 'self'; script-src 'self' 'unsafe-eval'; ".
 +		"style-src 'self' 'unsafe-inline'; frame-src *; img-src *; ".
 +		"font-src 'self' data:; media-src *",
 +
 +Custom CSP policy, changing this will overwrite the standard policy
 +
 +::
 +
 +	'secret' => 'ICertainlyShouldHaveChangedTheDefaultSecret',
 +
 +Secret used by ownCloud for various purposes, e.g. to encrypt data. If you
 +lose this string there will be data corruption.
 +
 +.. ALL_OTHER_SECTIONS_END
 +.. Generated content above. Don't change this.
 +
 +App config options
 +------------------
 +
 +Retention for activities of the activity app:
 +
 +
 +::
 +
 +	'activity_expire_days' => 365,
 +
 +Every day a cron job is ran, which deletes all activities for all users
 +which are older then the number of days that is set for ``activity_expire_days``
diff --cc core/doc/admin/release/_sources/installation/installation_wizard.txt
index 876f519,0000000..a114bf2
mode 100644,000000..100644
--- a/core/doc/admin/release/_sources/installation/installation_wizard.txt
+++ b/core/doc/admin/release/_sources/installation/installation_wizard.txt
@@@ -1,189 -1,0 +1,188 @@@
 +Installation Wizard
 +===================
 +
 +When ownCloud prerequisites are fulfilled and all ownCloud files are installed
 +on the server, the last step to complete the installation is
 +running the Installation Wizard. Open your Web browser to your new ownCloud 
 +installation.
 +
 +  * If you are installing ownCloud on the same machine as you are accessing the
 +    install wizard from, the URL will be ``http://localhost/owncloud``, or ``https://localhost/owncloud`` if you have enabled SSL.
 +  * If you are installing ownCloud on a different machine, you'll have to access
 +    it by its hostname or IP address, e.g. ``http://example.com/owncloud``.
 +  * If you are using a self-signed certificate, you will be presented with a
 +    security warning about the issuer of the certificate not being trusted which
 +    you can ignore.
 +
 +* You will be presented with the setup screen:
 +
 +.. image:: images/install-wizard.png
 +   :scale: 75%
 +
 +Required Settings
 +~~~~~~~~~~~~~~~~~
 +
 +Under ``create an admin account`` you must enter a username and
 +password for the administrative user account. You may choose any username and
 +password that you want.
 +
 +Storage & Database
 +~~~~~~~~~~~~~~~~~~
 +
 +* Click ``Storage & Database`` to see all of your database options, and to 
 +  optionally change the default data storage directory.
 +* The database you want to use must already be installed, and you must have a 
 +  database admin user and password.
 +* Enter any arbitrary name for the Database name. This must be a database that 
 +  does not already exist.
 +* If you are not using Apache as the web server, it is highly
 +  recommended to configure the data directory to a location outside of
 +  the document root. Otherwise all user data is potentially publicly
 +  visible!
 +
 +.. image:: images/install-wizard-advanced.png
 +   :scale: 75%
 +
 +Database Choice
 +~~~~~~~~~~~~~~~
 +
 +* For a guideline on which database system to choose, and on pointers how to
 +  set them up for being available for PHP/ownCloud, see
 +  :doc:`../configuration/database_configuration`
 +
 +* Note that you will only be able to choose among the PHP database connectors
 +  which are actually installed on the system.
 +
 +* It is not easily possible to migrate to another database system once you have
 +  set up your ownCloud to use a specific one. So make sure to carefully
 +  consider which database system to use.
 +
 +* When using MySQL/MariaDB or PostgreSQL you have two options regarding the database
 +  name and user account you specify:
 +
 +  * You can specify either an admin or the root user, and the name of a database
 +    which does not yet exist. This lets ownCloud create its own database; it
 +    will also create a database user account with restricted rights (with the
 +    same username as you specified for the administrative user, plus an
 +    ``oc_`` prefix) and will use that for all subsequent database access.
 +
 +  * There are restrictions as to what characters a database name may or may 
 +    not contain; see the
 +    `MySQL Schema Object Names documentation`_ for details);
 +
 +Finish Installation
 +~~~~~~~~~~~~~~~~~~~
 +
 +* Once you've entered all settings, click "Finish Setup"
 +* ownCloud will set up your cloud according to the given settings
 +* When it's finished, it will log you in as administrative user and present the
 +  "Welcome to ownCloud" screen.
 +  
 +Setting Strong Directory Permissions
 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 +
 +For hardened security we recommend setting the permissions on your ownCloud 
 +directory as strictly as possible. This should be done immediately after the 
 +initial installation. Your HTTP user must own the ``config/``, ``data/`` and 
 +``apps/`` directories in your ownCloud directory so that you can configure 
 +ownCloud, create, modify and delete your data files, and install apps via the 
 +ownCloud Web interface. 
 +
 +You can find your HTTP user in your HTTP server configuration files. Or you can 
 +create a PHP page to find it for you. To do this, create a plain text file with 
 +a single line in it:
 +
 +      ``<?php echo exec('whoami'); ?>``
 +   
 +Name it ``whoami.php`` and place it in your ``/var/www/html`` directory, and 
 +then open it in a Web browser, for example ``http://localhost/whoami.php``. You 
 +should see a single line in your browser page with the HTTP user name.
 +
 +* The HTTP user and group in Debian/Ubuntu is ``www-data``.
 +* The HTTP user and group in Fedora/CentOS is ``apache``.
 +* The HTTP user and group in Arch Linux is ``http``.
 +* The HTTP user in openSUSE is ``wwwrun``, and the HTTP group is ``www``.
 +
 +.. note:: When using an NFS mount for the data directory, do not change its 
 +   ownership from the default. The simple act of mounting the drive will set 
 +   proper permissions for ownCloud to write to the directory. Changing 
 +   ownership as above could result in some issues if the NFS mount is 
 +   lost.
 +
- The easy way to set the correct permissions is to copy and run this 
- script. Replace the ``ocpath`` variable with the path to your ownCloud 
- directory, and replace the ``htuser`` variable with your own HTTP user::
++The easy way to set the correct permissions is to copy and run this script. Replace the ``ocpath`` variable with the path to your ownCloud directory, and replace the ``htuser`` and ``htgroup`` variables with your HTTP user and group::
 +
 + #!/bin/bash
 + ocpath='/var/www/owncloud'
 + htuser='www-data'
++ htgroup='www-data'
 +
 + find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
 + find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 +
 + chown -R root:${htuser} ${ocpath}/
-  chown -R ${htuser}:${htuser} ${ocpath}/apps/
-  chown -R ${htuser}:${htuser} ${ocpath}/config/
-  chown -R ${htuser}:${htuser} ${ocpath}/data/
-  chown -R ${htuser}:${htuser} ${ocpath}/themes/
++ chown -R ${htuser}:${htgroup} ${ocpath}/apps/
++ chown -R ${htuser}:${htgroup} ${ocpath}/config/
++ chown -R ${htuser}:${htgroup} ${ocpath}/data/
++ chown -R ${htuser}:${htgroup} ${ocpath}/themes/
 +
 + chown root:${htuser} ${ocpath}/.htaccess
 + chown root:${htuser} ${ocpath}/data/.htaccess
-  
++
 + chmod 0644 ${ocpath}/.htaccess
 + chmod 0644 ${ocpath}/data/.htaccess
 + 
 +If you have customized your ownCloud installation and your filepaths are 
 +different than the standard installation, then modify this script accordingly. 
 +
 +This lists the recommended modes and ownership for your ownCloud directories 
 +and files:
 +
 +* All files should be read-write for the file owner, read-only for the 
 +  group owner, and zero for the world
 +* All directories should be executable (because directories always need the 
 +  executable bit set), read-write for the directory owner, and read-only for 
 +  the group owner
- * The :file:`/` directory should be owned by ``root:[HTTP user]``
- * The :file:`apps/` directory should be owned by ``[HTTP user]:[HTTP user]``
- * The :file:`config/` directory should be owned by ``[HTTP user]:[HTTP user]``
- * The :file:`themes/` directory should be owned by ``[HTTP user]:[HTTP user]``
- * The :file:`data/` directory should be owned by ``[HTTP user]:[HTTP user]``
- * The :file:`[ocpath]/.htaccess` file should be owned by ``root:[HTTP user]``
- * The :file:`data/.htaccess` file should be owned by ``root:[HTTP user]``
++* The :file:`/` directory should be owned by ``root:[HTTP group]``
++* The :file:`apps/` directory should be owned by ``[HTTP user]:[HTTP group]``
++* The :file:`config/` directory should be owned by ``[HTTP user]:[HTTP group]``
++* The :file:`themes/` directory should be owned by ``[HTTP user]:[HTTP group]``
++* The :file:`data/` directory should be owned by ``[HTTP user]:[HTTP group]``
++* The :file:`[ocpath]/.htaccess` file should be owned by ``root:[HTTP group]``
++* The :file:`data/.htaccess` file should be owned by ``root:[HTTP group]``
 +* Both :file:`.htaccess` files are read-write file owner, read-only group and 
 +  world
 +
 +Trusted Domains
 +~~~~~~~~~~~~~~~
 +
 +ownCloud will take the URL used to access the Installation Wizard and insert
 +that into the ``config.php`` file for the ``trusted_domains`` setting.
 +All needed domain names of the ownCloud server go into the
 +``trusted_domains`` setting. Users will only be able to log into ownCloud when they point their browsers to a domain name listed in the ``trusted_domains`` setting. An IPv4 address can be
 +specified instead of a domain name. A typical configuration looks like this::
 +
 + 'trusted_domains' => 
 +   array (
 +    0 => 'localhost', 
 +    1 => 'server1', 
 +    2 => '192.168.1.50',
 + ),
 +
 +In the event that a load balancer is in place there will be no issues as long
 +as it sends the correct X-Forwarded-Host header.
 +
 +The loopback address, ``127.0.0.1``, is whitelisted and
 +therefore users on the ownCloud server who access ownCloud with the loopback
 +interface will be able to successfully login.
 +In the event that an improper URL is used, the
 +following error will appear:
 +
 +.. image:: images/untrusted-domain.png
 +   :scale: 75%
 +   
 +For configuration examples, refer to the :file:`config/config.sample.php`
 +document.
 +
 +
 +
 +.. _MySQL Schema Object Names documentation: http://dev.mysql.com/doc/refman/5.5/en/identifiers.html
diff --cc core/doc/admin/release/configuration/config_sample_php_parameters.html
index 7e71d73,0000000..9f2839d
mode 100644,000000..100644
--- a/core/doc/admin/release/configuration/config_sample_php_parameters.html
+++ b/core/doc/admin/release/configuration/config_sample_php_parameters.html
@@@ -1,918 -1,0 +1,918 @@@
 +
 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 +  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 +
 +
 +<html xmlns="http://www.w3.org/1999/xhtml">
 +  <head>
 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 +    
 +    <title>Config.php Parameters — ownCloud Administrators Manual 7.0 documentation</title>
 +    
 +    <link rel="stylesheet" href="../_static/style.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/style.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
 +    
 +    <script type="text/javascript">
 +      var DOCUMENTATION_OPTIONS = {
 +        URL_ROOT:    '../',
 +        VERSION:     '7.0',
 +        COLLAPSE_INDEX: false,
 +        FILE_SUFFIX: '.html',
 +        HAS_SOURCE:  true
 +      };
 +    </script>
 +    <script type="text/javascript" src="../_static/jquery.js"></script>
 +    <script type="text/javascript" src="../_static/underscore.js"></script>
 +    <script type="text/javascript" src="../_static/doctools.js"></script>
 +    <script type="text/javascript" src="../_static/bootstrap.js"></script>
 +    <link rel="top" title="ownCloud Administrators Manual 7.0 documentation" href="../index.html" />
 +    <link rel="up" title="Configuration" href="index.html" />
 +    <link rel="next" title="Custom Client Configuration" href="custom_client_configuration.html" />
 +    <link rel="prev" title="Configuring the Collaborative Documents App" href="collaborative_documents_configuration.html" />
 +<script type="text/javascript">
 +(function () {
 +  /**
 +   * Patch TOC list.
 +   *
 +   * Will mutate the underlying span to have a correct ul for nav.
 +   *
 +   * @param $span: Span containing nested UL's to mutate.
 +   * @param minLevel: Starting level for nested lists. (1: global, 2: local).
 +   */
 +  var patchToc = function ($ul, minLevel) {
 +    var findA;
 +
 +    // Find all a "internal" tags, traversing recursively.
 +    findA = function ($elem, level) {
 +      var level = level || 0,
 +        $items = $elem.find("> li > a.internal, > ul, > li > ul");
 +
 +      // Iterate everything in order.
 +      $items.each(function (index, item) {
 +        var $item = $(item),
 +          tag = item.tagName.toLowerCase(),
 +          pad = 15 + ((level - minLevel) * 10);
 +
 +        if (tag === 'a' && level >= minLevel) {
 +          // Add to existing padding.
 +          $item.css('padding-left', pad + "px");
 +          console.log(level, $item, 'padding-left', pad + "px");
 +        } else if (tag === 'ul') {
 +          // Recurse.
 +          findA($item, level + 1);
 +        }
 +      });
 +    };
 +
 +    console.log("HERE");
 +    findA($ul);
 +  };
 +
 +  $(document).ready(function () {
 +    // Add styling, structure to TOC's.
 +    $(".dropdown-menu").each(function () {
 +      $(this).find("ul").each(function (index, item){
 +        var $item = $(item);
 +        $item.addClass('unstyled');
 +      });
 +      $(this).find("li").each(function () {
 +        $(this).parent().append(this);
 +      });
 +    });
 +
 +    // Patch in level.
 +    patchToc($("ul.globaltoc"), 2);
 +    patchToc($("ul.localtoc"), 2);
 +
 +    // Enable dropdown.
 +    $('.dropdown-toggle').dropdown();
 +  });
 +}());
 +</script>
 +
 +  </head>
 +  <body>
 +  
 +
 +<div class="container">
 +  <div class="content">
 +    <div class="page-header">
 +      <h1><a href="../contents.html">ownCloud Administrators Manual</a></h1>
 +
 +    </div>
 +    
 +			<div class="row">
 +				<div class="span3">
 +					<div class="sidebar">
 +						<div class="well">
 +							<div class="menu-support-container">
 +								<ul id="menu-support" class="menu">
 +									<ul>
 +										<li><a href="../contents.html">Table of Contents</a></li>
 +									</ul>
 +                  <ul>
 +<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
 +</ul>
 +<ul class="current">
 +<li class="toctree-l1"><a class="reference internal" href="../videos.html">ownCloud Videos</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../whats_new_admin.html">What’s New for Admins in ownCloud 7</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../release_notes.html">ownCloud 7.0 Release Notes</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
 +<li class="toctree-l1 current"><a class="reference internal" href="index.html">Configuration</a><ul class="current">
 +<li class="toctree-l2"><a class="reference internal" href="activity_configuration.html">Configuring the Activity App</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="antivirus_configuration.html">Configuring the ClamAV Antivirus Scanner</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="automatic_configuration.html">Automatic Configuration Setup</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="background_jobs_configuration.html">Defining Background Jobs</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files > 512MB (as set by default)</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="collaborative_documents_configuration.html">Configuring the Collaborative Documents App</a></li>
 +<li class="toctree-l2 current"><a class="current reference internal" href="">Config.php Parameters</a><ul>
 +<li class="toctree-l3"><a class="reference internal" href="#default-parameters">Default Parameters</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#default-config-php-examples">Default config.php Examples</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#user-experience">User Experience</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#mail-parameters">Mail Parameters</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#proxy-configurations">Proxy Configurations</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#deleted-items-trash-bin">Deleted Items (trash bin)</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#owncloud-verifications">ownCloud Verifications</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#logging">Logging</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#alternate-code-locations">Alternate Code Locations</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#apps">Apps</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#previews">Previews</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#ldap">LDAP</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#maintenance">Maintenance</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#ssl">SSL</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#miscellaneous">Miscellaneous</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#app-config-options">App config options</a></li>
 +</ul>
 +</li>
 +<li class="toctree-l2"><a class="reference internal" href="custom_client_configuration.html">Custom Client Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="database_configuration.html">Database Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="email_configuration.html">Email Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration.html">Configuring External Storage (Configuration File)</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="external_sites.html">Linking External Sites</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="files_locking_enabling.html">Files Locking App Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="harden_server.html">Hardening and Security Guidance</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="js_css_asset_management_configuration.html">JavaScript and CSS Asset Management</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="knowledgebase_configuration.html">Knowledge Base Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="language_configuration.html">Language Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="logging_configuration.html">Logging Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="occ_command.html">Using the occ Command</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="performance_tips.html">Performance Tips</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="reverse_proxy_configuration.html">Reverse Proxy Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="search_configuration.html">Enabling Full-Text Search</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="server_to_server_configuration.html">Configuring Server-to-Server Sharing</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="serving_static_files_configuration.html">Serving Static Files for Better Performance</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="thirdparty_php_configuration.html">Using Third Party PHP Components</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="user_auth_ftp_smb_imap.html">User Authentication with IMAP, SMB, and FTP</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="user_auth_ldap.html">User Authentication with LDAP</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="user_auth_ldap_cleanup.html">LDAP User Cleanup</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="user_configuration.html">User Management</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="reset_admin_password.html">Resetting a Lost Admin Password</a></li>
 +</ul>
 +</li>
 +<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and Troubleshooting</a></li>
 +</ul>
 +
 +								</ul>
 +							</div>
 +						</div>
 +					</div>
 +				</div>
 +        
 +
 +				<div class="span9">
 +					<div class="page-content">
 +						
 +  <div class="section" id="config-php-parameters">
 +<h1>Config.php Parameters<a class="headerlink" href="#config-php-parameters" title="Permalink to this headline">¶</a></h1>
 +<p>ownCloud uses the <tt class="docutils literal"><span class="pre">config/config.php</span></tt> file to control server operations.
 +<tt class="docutils literal"><span class="pre">config/config.sample.php</span></tt> lists all the configurable parameters within
 +ownCloud. This document provides a more detailed reference. Many options are
 +configurable on your Admin page, so it is usually not necessary to edit
 +<tt class="docutils literal"><span class="pre">config/config.php</span></tt>.</p>
 +<div class="section" id="default-parameters">
 +<h2>Default Parameters<a class="headerlink" href="#default-parameters" title="Permalink to this headline">¶</a></h2>
 +<p>These parameters are configured by the ownCloud installer, and are required
 +for your ownCloud server to operate.</p>
 +<div class="highlight-python"><pre>'instanceid' => '',</pre>
 +</div>
 +<p>This is a unique identifier for your ownCloud installation, created
 +automatically by the installer. This example is for documentation only,
 +and you should never use it because it will not work. A valid <tt class="docutils literal"><span class="pre">instanceid</span></tt>
 +is created when you install ownCloud.</p>
 +<p>‘instanceid’ => ‘d3c944a9a’,</p>
 +<div class="highlight-python"><pre>'passwordsalt' => '',</pre>
 +</div>
 +<p>The salt used to hash all passwords, auto-generated by the ownCloud
 +installer. (There are also per-user salts.) If you lose this salt you lose
 +all your passwords. This example is for documentation only,
 +and you should never use it.</p>
 +<p>‘passwordsalt’ => ‘d3c944a9af095aa08f’,</p>
 +<div class="highlight-python"><pre>'trusted_domains' =>
 +  array (
 +    'demo.example.org',
 +    'otherdomain.example.org',
 +  ),</pre>
 +</div>
 +<p>Your list of trusted domains that users can log into. Specifying trusted
 +domains prevents host header poisoning. Do not remove this, as it performs
 +necessary security checks.</p>
 +<div class="highlight-python"><pre>'datadirectory' => '/var/www/owncloud/data',</pre>
 +</div>
 +<p>Where user files are stored; this defaults to <tt class="docutils literal"><span class="pre">data/</span></tt> in the ownCloud
 +directory. The SQLite database is also stored here, when you use SQLite. (SQLite is
 +available only in ownCloud Community Edition)</p>
 +<div class="highlight-python"><pre>'version' => '',</pre>
 +</div>
 +<p>The current version number of your ownCloud installation. This is set up
 +during installation and update, so you shouldn’t need to change it.</p>
 +<div class="highlight-python"><pre>'dbtype' => 'sqlite',</pre>
 +</div>
 +<p>Identifies the database used with this installation. See also config option
 +<tt class="docutils literal"><span class="pre">supportedDatabases</span></tt></p>
 +<dl class="docutils">
 +<dt>Available:</dt>
 +<dd><ul class="first last simple">
 +<li>sqlite (SQLite3 - Community Edition Only)</li>
 +<li>mysql (MySQL/MariaDB)</li>
 +<li>pgsql (PostgreSQL)</li>
 +<li>oci (Oracle - Enterprise Edition Only)</li>
 +<li>mssql (Microsoft SQL Server - Enterprise Edition Only)</li>
 +</ul>
 +</dd>
 +</dl>
 +<div class="highlight-python"><pre>'dbhost' => '',</pre>
 +</div>
 +<p>Your host server name, for example <tt class="docutils literal"><span class="pre">localhost</span></tt>, <tt class="docutils literal"><span class="pre">hostname</span></tt>,
 +<tt class="docutils literal"><span class="pre">hostname.example.com</span></tt>, or the IP address. To specify a port use
 +<tt class="docutils literal"><span class="pre">hostname:####</span></tt>; to specify a Unix socket use
 +<tt class="docutils literal"><span class="pre">localhost:/path/to/socket</span></tt>.</p>
 +<div class="highlight-python"><pre>'dbname' => 'owncloud',</pre>
 +</div>
 +<p>The name of the ownCloud database, which is set during installation. You
 +should not need to change this.</p>
 +<div class="highlight-python"><pre>'dbuser' => '',</pre>
 +</div>
 +<p>The user that ownCloud uses to write to the database. This must be unique
 +across ownCloud instances using the same SQL database. This is set up during
 +installation, so you shouldn’t need to change it.</p>
 +<div class="highlight-python"><pre>'dbpassword' => '',</pre>
 +</div>
 +<p>The password for the database user. This is set up during installation, so
 +you shouldn’t need to change it.</p>
 +<div class="highlight-python"><pre>'dbtableprefix' => '',</pre>
 +</div>
 +<p>Prefix for the ownCloud tables in the database.</p>
 +<div class="highlight-python"><pre>'dbdriveroptions' => array(
 +        PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
 +),</pre>
 +</div>
 +<p>Additional driver options for the database connection, eg. to enable SSL
 +encryption in MySQL.</p>
 +<div class="highlight-python"><pre>'installed' => false,</pre>
 +</div>
 +<p>Indicates whether the ownCloud instance was installed successfully; <tt class="docutils literal"><span class="pre">true</span></tt>
 +indicates a successful installation, and <tt class="docutils literal"><span class="pre">false</span></tt> indicates an unsuccessful
 +installation.
 +.. DEFAULT_SECTION_END
 +.. Generated content above. Don’t change this.</p>
 +</div>
 +<div class="section" id="default-config-php-examples">
 +<h2>Default config.php Examples<a class="headerlink" href="#default-config-php-examples" title="Permalink to this headline">¶</a></h2>
 +<p>When you use SQLite as your ownCloud database, your <tt class="docutils literal"><span class="pre">config.php</span></tt> looks like
 +this after installation. The SQLite database is stored in your ownCloud
 +<tt class="docutils literal"><span class="pre">data/</span></tt> directory. SQLite is a simple, lightweight embedded database that
 +is good for testing and for simple installations, but for production ownCloud
 +systems you should use MySQL, MariaDB, or PosgreSQL.</p>
 +<div class="highlight-python"><pre><?php
 +$CONFIG = array (
 +  'instanceid' => 'occ6f7365735',
 +  'passwordsalt' => '2c5778476346786306303',
 +  'trusted_domains' =>
 +  array (
 +    0 => 'localhost',
 +    1 => 'studio',
 +  ),
 +  'datadirectory' => '/var/www/owncloud/data',
 +  'dbtype' => 'sqlite3',
 +  'version' => '7.0.2.1',
 +  'installed' => true,
 +);</pre>
 +</div>
 +<p>This example is from a new ownCloud installation using MariaDB:</p>
 +<div class="highlight-python"><pre><?php
 +$CONFIG = array (
 +  'instanceid' => 'oc8c0fd71e03',
 +  'passwordsalt' => '515a13302a6b3950a9d0fdb970191a',
 +  'trusted_domains' =>
 +  array (
 +    0 => 'localhost',
 +    1 => 'studio',
 +    2 => '192.168.10.155'
 +  ),
 +  'datadirectory' => '/var/www/owncloud/data',
 +  'dbtype' => 'mysql',
 +   'version' => '7.0.2.1',
 +  'dbname' => 'owncloud',
 +  'dbhost' => 'localhost',
 +  'dbtableprefix' => 'oc_',
 +  'dbuser' => 'oc_carla',
 +  'dbpassword' => '67336bcdf7630dd80b2b81a413d07',
 +  'installed' => true,
 +);</pre>
 +</div>
 +</div>
 +<div class="section" id="user-experience">
 +<h2>User Experience<a class="headerlink" href="#user-experience" title="Permalink to this headline">¶</a></h2>
 +<p>These optional parameters control some aspects of the user interface. Default
 +values, where present, are shown.</p>
 +<div class="highlight-python"><pre>'default_language' => 'en',</pre>
 +</div>
 +<p>This sets the default language on your ownCloud server, using ISO_639-1
 +language codes such as <tt class="docutils literal"><span class="pre">en</span></tt> for English, <tt class="docutils literal"><span class="pre">de</span></tt> for German, and <tt class="docutils literal"><span class="pre">fr</span></tt> for
 +French. It overrides automatic language detection on public pages like login
 +or shared items. User’s language preferences configured under “personal ->
 +language” override this setting after they have logged in.</p>
 +<div class="highlight-python"><pre>'defaultapp' => 'files',</pre>
 +</div>
 +<p>Set the default app to open on login. Use the app names as they appear in the
 +URL after clicking them in the Apps menu, such as documents, calendar, and
 +gallery. You can use a comma-separated list of app names, so if the first
 +app is not enabled for a user then ownCloud will try the second one, and so
 +on. If no enabled apps are found it defaults to the Files app.</p>
 +<div class="highlight-python"><pre>'knowledgebaseenabled' => true,</pre>
 +</div>
 +<p><tt class="docutils literal"><span class="pre">true</span></tt> enables the Help menu item in the user menu (top right of the
 +ownCloud Web interface). <tt class="docutils literal"><span class="pre">false</span></tt> removes the Help item.</p>
 +<div class="highlight-python"><pre>'enable_avatars' => true,</pre>
 +</div>
 +<p><tt class="docutils literal"><span class="pre">true</span></tt> enables avatars, or user profile photos. These appear on the User
 +page, on user’s Personal pages and are used by some apps (contacts, mail,
 +etc). <tt class="docutils literal"><span class="pre">false</span></tt> disables them.</p>
 +<div class="highlight-python"><pre>'allow_user_to_change_display_name' => true,</pre>
 +</div>
 +<p><tt class="docutils literal"><span class="pre">true</span></tt> allows users to change their display names (on their Personal
 +pages), and <tt class="docutils literal"><span class="pre">false</span></tt> prevents them from changing their display names.</p>
 +<div class="highlight-python"><pre>'remember_login_cookie_lifetime' => 60*60*24*15,</pre>
 +</div>
 +<p>Lifetime of the remember login cookie, which is set when the user clicks the
 +<tt class="docutils literal"><span class="pre">remember</span></tt> checkbox on the login screen. The default is 15 days, expressed
 +in seconds.</p>
 +<div class="highlight-python"><pre>'session_lifetime' => 60 * 60 * 24,</pre>
 +</div>
 +<p>The lifetime of a session after inactivity; the default is 24 hours,
 +expressed in seconds.</p>
 +<div class="highlight-python"><pre>'session_keepalive' => true,</pre>
 +</div>
 +<p>Enable or disable session keep-alive when a user is logged in to the Web UI.</p>
 +<p>Enabling this sends a “heartbeat” to the server to keep it from timing out.</p>
- <div class="highlight-python"><pre>'skeletondirectory' => '',</pre>
++<div class="highlight-python"><pre>'skeletondirectory' => '/path/to/owncloud/core/skeleton',</pre>
 +</div>
 +<p>The directory where the skeleton files are located. These files will be
 +copied to the data directory of new users. Leave empty to not copy any
 +skeleton files.</p>
 +<div class="highlight-python"><pre>'user_backends' => array(
 +        array(
 +                'class' => 'OC_User_IMAP',
 +                'arguments' => array('{imap.gmail.com:993/imap/ssl}INBOX')
 +        )
 +),</pre>
 +</div>
 +<p>The <tt class="docutils literal"><span class="pre">user_backends</span></tt> app (which needs to be enabled first) allows you to
 +configure alternate authentication backends. Supported backends are:
 +IMAP (OC_User_IMAP), SMB (OC_User_SMB), and FTP (OC_User_FTP).</p>
 +</div>
 +<div class="section" id="mail-parameters">
 +<h2>Mail Parameters<a class="headerlink" href="#mail-parameters" title="Permalink to this headline">¶</a></h2>
 +<p>These configure the email settings for ownCloud notifications and password
 +resets.</p>
 +<div class="highlight-python"><pre>'mail_domain' => 'example.com',</pre>
 +</div>
 +<p>The return address that you want to appear on emails sent by the ownCloud
 +server, for example <tt class="docutils literal"><span class="pre">oc-admin@example.com</span></tt>, substituting your own domain,
 +of course.</p>
 +<div class="highlight-python"><pre>'mail_from_address' => 'owncloud',</pre>
 +</div>
 +<p>FROM address that overrides the built-in <tt class="docutils literal"><span class="pre">sharing-noreply</span></tt> and
 +<tt class="docutils literal"><span class="pre">lostpassword-noreply</span></tt> FROM addresses.</p>
 +<div class="highlight-python"><pre>'mail_smtpdebug' => false,</pre>
 +</div>
 +<p>Enable SMTP class debugging.</p>
 +<div class="highlight-python"><pre>'mail_smtpmode' => 'sendmail',</pre>
 +</div>
 +<p>Which mode to use for sending mail: <tt class="docutils literal"><span class="pre">sendmail</span></tt>, <tt class="docutils literal"><span class="pre">smtp</span></tt>, <tt class="docutils literal"><span class="pre">qmail</span></tt> or
 +<tt class="docutils literal"><span class="pre">php</span></tt>.</p>
 +<p>If you are using local or remote SMTP, set this to <tt class="docutils literal"><span class="pre">smtp</span></tt>.</p>
 +<p>If you are using PHP mail you must have an installed and working email system
 +on the server. The program used to send email is defined in the <tt class="docutils literal"><span class="pre">php.ini</span></tt>
 +file.</p>
 +<p>For the <tt class="docutils literal"><span class="pre">sendmail</span></tt> option you need an installed and working email system on
 +the server, with <tt class="docutils literal"><span class="pre">/usr/sbin/sendmail</span></tt> installed on your Unix system.</p>
 +<p>For <tt class="docutils literal"><span class="pre">qmail</span></tt> the binary is /var/qmail/bin/sendmail, and it must be installed
 +on your Unix system.</p>
 +<div class="highlight-python"><pre>'mail_smtphost' => '127.0.0.1',</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. Specified the IP address of your mail
 +server host. This may contain multiple hosts separated by a semi-colon. If
 +you need to specify the port number append it to the IP address separated by
 +a colon, like this: <tt class="docutils literal"><span class="pre">127.0.0.1:24</span></tt>.</p>
 +<div class="highlight-python"><pre>'mail_smtpport' => 25,</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. Specify the port for sending mail.</p>
 +<div class="highlight-python"><pre>'mail_smtptimeout' => 10,</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. This set an SMTP server timeout, in
 +seconds. You may need to increase this if you are running an anti-malware or
 +spam scanner.</p>
 +<div class="highlight-python"><pre>'mail_smtpsecure' => '',</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. Specify when you are using <tt class="docutils literal"><span class="pre">ssl</span></tt> or
 +<tt class="docutils literal"><span class="pre">tls</span></tt>, or leave empty for no encryption.</p>
 +<div class="highlight-python"><pre>'mail_smtpauth' => false,</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. Change this to <tt class="docutils literal"><span class="pre">true</span></tt> if your mail
 +server requires authentication.</p>
 +<div class="highlight-python"><pre>'mail_smtpauthtype' => 'LOGIN',</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpmode</span></tt>. If SMTP authentication is required, choose
 +the authentication type as <tt class="docutils literal"><span class="pre">LOGIN</span></tt> (default) or <tt class="docutils literal"><span class="pre">PLAIN</span></tt>.</p>
 +<div class="highlight-python"><pre>'mail_smtpname' => '',</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpauth</span></tt>. Specify the username for authenticating to
 +the SMTP server.</p>
 +<div class="highlight-python"><pre>'mail_smtppassword' => '',</pre>
 +</div>
 +<p>This depends on <tt class="docutils literal"><span class="pre">mail_smtpauth</span></tt>. Specify the password for authenticating to
 +the SMTP server.</p>
 +</div>
 +<div class="section" id="proxy-configurations">
 +<h2>Proxy Configurations<a class="headerlink" href="#proxy-configurations" title="Permalink to this headline">¶</a></h2>
 +<div class="highlight-python"><pre>'overwritehost' => '',</pre>
 +</div>
 +<p>The automatic hostname detection of ownCloud can fail in certain reverse
 +proxy and CLI/cron situations. This option allows you to manually override
 +the automatic detection; for example <tt class="docutils literal"><span class="pre">www.example.com</span></tt>, or specify the port
 +<tt class="docutils literal"><span class="pre">www.example.com:8080</span></tt>.</p>
 +<div class="highlight-python"><pre>'overwriteprotocol' => '',</pre>
 +</div>
 +<p>When generating URLs, ownCloud attempts to detect whether the server is
 +accessed via <tt class="docutils literal"><span class="pre">https</span></tt> or <tt class="docutils literal"><span class="pre">http</span></tt>. However, if ownCloud is behind a proxy
 +and the proxy handles the <tt class="docutils literal"><span class="pre">https</span></tt> calls, ownCloud would not know that
 +<tt class="docutils literal"><span class="pre">ssl</span></tt> is in use, which would result in incorrect URLs being generated.</p>
 +<p>Valid values are <tt class="docutils literal"><span class="pre">http</span></tt> and <tt class="docutils literal"><span class="pre">https</span></tt>.</p>
 +<div class="highlight-python"><pre>'overwritewebroot' => '',</pre>
 +</div>
 +<p>ownCloud attempts to detect the webroot for generating URLs automatically.</p>
 +<p>For example, if <tt class="docutils literal"><span class="pre">www.example.com/owncloud</span></tt> is the URL pointing to the
 +ownCloud instance, the webroot is <tt class="docutils literal"><span class="pre">/owncloud</span></tt>. When proxies are in use, it
 +may be difficult for ownCloud to detect this parameter, resulting in invalid
 +URLs.</p>
 +<div class="highlight-python"><pre>'overwritecondaddr' => '',</pre>
 +</div>
 +<p>This option allows you to define a manual override condition as a regular
 +expression for the remote IP address. For example, defining a range of IP
 +addresses starting with <tt class="docutils literal"><span class="pre">10.0.0.</span></tt> and ending with 1 to 3:
 +<tt class="docutils literal"><span class="pre">^10\.0\.0\.[1-3]$</span></tt></p>
 +<div class="highlight-python"><pre>'overwrite.cli.url' => '',</pre>
 +</div>
 +<p>Use this configuration parameter to specify the base url for any urls which
 +are generated within ownCloud using any kind of command line tools (cron or
 +occ). The value should contain the full base URL:
 +<tt class="docutils literal"><span class="pre">https://www.example.com/owncloud</span></tt></p>
 +<div class="highlight-python"><pre>'proxy' => '',</pre>
 +</div>
 +<p>The URL of your proxy server, for example <tt class="docutils literal"><span class="pre">proxy.example.com:8081</span></tt>.</p>
 +<div class="highlight-python"><pre>'proxyuserpwd' => '',</pre>
 +</div>
 +<p>The optional authentication for the proxy to use to connect to the internet.</p>
 +<p>The format is: <tt class="docutils literal"><span class="pre">username:password</span></tt>.</p>
 +</div>
 +<div class="section" id="deleted-items-trash-bin">
 +<h2>Deleted Items (trash bin)<a class="headerlink" href="#deleted-items-trash-bin" title="Permalink to this headline">¶</a></h2>
 +<p>These parameters control the Deleted files app.</p>
 +<div class="highlight-python"><pre>'trashbin_retention_obligation' => 30,</pre>
 +</div>
 +<p>When the trash bin app is enabled (default), this is the number of days a
 +file will be kept in the trash bin. Default is 30 days.</p>
 +<div class="highlight-python"><pre>'trashbin_auto_expire' => true,</pre>
 +</div>
 +<p>Disable or enable auto-expiration for the trash bin. By default
 +auto-expiration is enabled.</p>
 +</div>
 +<div class="section" id="owncloud-verifications">
 +<h2>ownCloud Verifications<a class="headerlink" href="#owncloud-verifications" title="Permalink to this headline">¶</a></h2>
 +<p>ownCloud performs several verification checks. There are two options,
 +<tt class="docutils literal"><span class="pre">true</span></tt> and <tt class="docutils literal"><span class="pre">false</span></tt>.</p>
 +<div class="highlight-python"><pre>'appcodechecker' => true,</pre>
 +</div>
 +<p>Check 3rd party apps to make sure they are using the private API and not the
 +public API. If the app uses the private API it cannot be installed.</p>
 +<div class="highlight-python"><pre>'updatechecker' => true,</pre>
 +</div>
 +<p>Check if ownCloud is up-to-date and shows a notification if a new version is
 +available.</p>
 +<div class="highlight-python"><pre>'has_internet_connection' => true,</pre>
 +</div>
 +<p>Is ownCloud connected to the Internet or running in a closed network?</p>
 +<div class="highlight-python"><pre>'check_for_working_webdav' => true,</pre>
 +</div>
 +<p>Allows ownCloud to verify a working WebDAV connection. This is done by
 +attempting to make a WebDAV request from PHP.</p>
 +<div class="highlight-python"><pre>'check_for_working_htaccess' => true,</pre>
 +</div>
 +<p>This is a crucial security check on Apache servers that should always be set
 +to <tt class="docutils literal"><span class="pre">true</span></tt>. This verifies that the <tt class="docutils literal"><span class="pre">.htaccess</span></tt> file is writable and works.</p>
 +<p>If it is not, then any options controlled by <tt class="docutils literal"><span class="pre">.htaccess</span></tt>, such as large
 +file uploads, will not work. It also runs checks on the <tt class="docutils literal"><span class="pre">data/</span></tt> directory,
 +which verifies that it can’t be accessed directly through the web server.</p>
 +<div class="highlight-python"><pre>'config_is_read_only' => false,</pre>
 +</div>
 +<p>In certain environments it is desired to have a read-only config file.</p>
 +<p>When this switch is set to <tt class="docutils literal"><span class="pre">true</span></tt> ownCloud will not verify whether the
 +configuration is writable. However, it will not be possible to configure
 +all options via the web-interface. Furthermore, when updating ownCloud
 +it is required to make the config file writable again for the update
 +process.</p>
 +</div>
 +<div class="section" id="logging">
 +<h2>Logging<a class="headerlink" href="#logging" title="Permalink to this headline">¶</a></h2>
 +<div class="highlight-python"><pre>'log_type' => 'owncloud',</pre>
 +</div>
 +<p>By default the ownCloud logs are sent to the <tt class="docutils literal"><span class="pre">owncloud.log</span></tt> file in the
 +default ownCloud data directory. If syslogging is desired, set this parameter
 +to <tt class="docutils literal"><span class="pre">syslog</span></tt>.</p>
 +<div class="highlight-python"><pre>'logfile' => 'owncloud.log',</pre>
 +</div>
 +<p>Change the ownCloud logfile name from <tt class="docutils literal"><span class="pre">owncloud.log</span></tt> to something else.</p>
 +<div class="highlight-python"><pre>'loglevel' => 2,</pre>
 +</div>
 +<p>Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 =
 +Warning, 3 = Error. The default value is Warning.</p>
 +<div class="highlight-python"><pre>'logdateformat' => 'F d, Y H:i:s',</pre>
 +</div>
 +<p>This uses PHP.date formatting; see <a class="reference external" href="http://php.net/manual/en/function.date.php">http://php.net/manual/en/function.date.php</a></p>
 +<div class="highlight-python"><pre>'logtimezone' => 'Europe/Berlin',</pre>
 +</div>
 +<p>The default timezone for logfiles is UTC. You may change this; see
 +<a class="reference external" href="http://php.net/manual/en/timezones.php">http://php.net/manual/en/timezones.php</a></p>
 +<div class="highlight-python"><pre>'log_query' => false,</pre>
 +</div>
 +<p>Append all database queries and parameters to the log file. Use this only for
 +debugging, as your logfile will become huge.</p>
 +<div class="highlight-python"><pre>'cron_log' => true,</pre>
 +</div>
 +<p>Log successful cron runs.</p>
 +<div class="highlight-python"><pre>'log_rotate_size' => false,</pre>
 +</div>
 +<p>Enables log rotation and limits the total size of logfiles. The default is 0,
 +or no rotation. Specify a size in bytes, for example 104857600 (100 megabytes
 += 100 * 1024 * 1024 bytes). A new logfile is created with a new name when the
 +old logfile reaches your limit. The total size of all logfiles is double the
 +<tt class="docutils literal"><span class="pre">log_rotate_sizerotation</span></tt> value.</p>
 +</div>
 +<div class="section" id="alternate-code-locations">
 +<h2>Alternate Code Locations<a class="headerlink" href="#alternate-code-locations" title="Permalink to this headline">¶</a></h2>
 +<p>Some of the ownCloud code may be stored in alternate locations.</p>
 +<div class="highlight-python"><pre>'3rdpartyroot' => '',</pre>
 +</div>
 +<p>ownCloud uses some 3rd party PHP components to provide certain functionality.</p>
 +<p>These components are shipped as part of the software package and reside in
 +<tt class="docutils literal"><span class="pre">owncloud/3rdparty</span></tt>. Use this option to configure a different location.</p>
 +<div class="highlight-python"><pre>'3rdpartyurl' => '',</pre>
 +</div>
 +<p>If you have an alternate <tt class="docutils literal"><span class="pre">3rdpartyroot</span></tt>, you must also configure the URL as
 +seen by a Web browser.</p>
 +<div class="highlight-python"><pre>'customclient_desktop' =>
 +        'http://owncloud.org/sync-clients/',
 +'customclient_android' =>
 +        'https://play.google.com/store/apps/details?id=com.owncloud.android',
 +'customclient_ios' =>
 +        'https://itunes.apple.com/us/app/owncloud/id543672169?mt=8',</pre>
 +</div>
 +<p>This section is for configuring the download links for ownCloud clients, as
 +seen in the first-run wizard and on Personal pages.</p>
 +</div>
 +<div class="section" id="apps">
 +<h2>Apps<a class="headerlink" href="#apps" title="Permalink to this headline">¶</a></h2>
 +<p>Options for the Apps folder, Apps store, and App code checker.</p>
 +<div class="highlight-python"><pre>'appstoreenabled' => true,</pre>
 +</div>
 +<p>When enabled, admins may install apps from the ownCloud app store.</p>
 +<p>The app store is disabled by default for ownCloud Enterprise Edition</p>
 +<div class="highlight-python"><pre>'appstoreurl' => 'https://api.owncloud.com/v1',</pre>
 +</div>
 +<p>The URL of the appstore to use.</p>
 +<div class="highlight-python"><pre>'apps_paths' => array(
 +        array(
 +                'path'=> '/var/www/owncloud/apps',
 +                'url' => '/apps',
 +                'writable' => true,
 +        ),
 +),</pre>
 +</div>
 +<p>Use the <tt class="docutils literal"><span class="pre">apps_paths</span></tt> parameter to set the location of the Apps directory,
 +which should be scanned for available apps, and where user-specific apps
 +should be installed from the Apps store. The <tt class="docutils literal"><span class="pre">path</span></tt> defines the absolute
 +file system path to the app folder. The key <tt class="docutils literal"><span class="pre">url</span></tt> defines the HTTP web path
 +to that folder, starting from the ownCloud web root. The key <tt class="docutils literal"><span class="pre">writable</span></tt>
 +indicates if a web server can write files to that folder.</p>
 +<div class="highlight-python"><pre>'appcodechecker' => true,</pre>
 +</div>
 +<p>Check 3rd party apps to make sure they are using the private API and not the
 +public API. If the app uses the private API it cannot be installed.</p>
 +</div>
 +<div class="section" id="previews">
 +<h2>Previews<a class="headerlink" href="#previews" title="Permalink to this headline">¶</a></h2>
 +<p>ownCloud supports previews of image files, the covers of MP3 files, and text
 +files. These options control enabling and disabling previews, and thumbnail
 +size.</p>
 +<div class="highlight-python"><pre>'enable_previews' => true,</pre>
 +</div>
 +<p>By default, ownCloud can generate previews for the following filetypes:</p>
 +<ul class="simple">
 +<li>Images files</li>
 +<li>Covers of MP3 files</li>
 +<li>Text documents</li>
 +</ul>
 +<p>Valid values are <tt class="docutils literal"><span class="pre">true</span></tt>, to enable previews, or
 +<tt class="docutils literal"><span class="pre">false</span></tt>, to disable previews</p>
 +<div class="highlight-python"><pre>'preview_max_x' => null,</pre>
 +</div>
 +<p>The maximum width, in pixels, of a preview. A value of <tt class="docutils literal"><span class="pre">null</span></tt> means there
 +is no limit.</p>
 +<div class="highlight-python"><pre>'preview_max_y' => null,</pre>
 +</div>
 +<p>The maximum height, in pixels, of a preview. A value of <tt class="docutils literal"><span class="pre">null</span></tt> means there
 +is no limit.</p>
 +<div class="highlight-python"><pre>'preview_max_scale_factor' => 10,</pre>
 +</div>
 +<p>If a lot of small pictures are stored on the ownCloud instance and the
 +preview system generates blurry previews, you might want to consider setting
 +a maximum scale factor. By default, pictures are upscaled to 10 times the
 +original size. A value of <tt class="docutils literal"><span class="pre">1</span></tt> or <tt class="docutils literal"><span class="pre">null</span></tt> disables scaling.</p>
 +<div class="highlight-python"><pre>'preview_max_filesize_image' => 50,</pre>
 +</div>
 +<p>max file size for generating image previews with imagegd (default behaviour)
 +If the image is bigger, it’ll try other preview generators,
 +but will most likely show the default mimetype icon</p>
 +<p>Value represents the maximum filesize in megabytes
 +Default is 50
 +Set to -1 for no limit</p>
 +<div class="highlight-python"><pre>'preview_libreoffice_path' => '/usr/bin/libreoffice',</pre>
 +</div>
 +<p>custom path for LibreOffice/OpenOffice binary</p>
 +<div class="highlight-python"><pre>'preview_office_cl_parameters' =>
 +        ' --headless --nologo --nofirststartwizard --invisible --norestore '.
 +        '-convert-to pdf -outdir ',</pre>
 +</div>
 +<p>Use this if LibreOffice/OpenOffice requires additional arguments.</p>
 +<div class="highlight-python"><pre>'enabledPreviewProviders' => array(
 +        'OC\Preview\Image',
 +        'OC\Preview\MP3',
 +        'OC\Preview\TXT',
 +        'OC\Preview\MarkDown'
 +),</pre>
 +</div>
 +<p>Only register providers that have been explicitly enabled</p>
 +<p>The following providers are enabled by default:</p>
 +<blockquote>
 +<div><ul class="simple">
 +<li>OC\Preview\Image</li>
 +<li>OC\Preview\MarkDown</li>
 +<li>OC\Preview\MP3</li>
 +<li>OC\Preview\TXT</li>
 +</ul>
 +</div></blockquote>
 +<p>The following providers are disabled by default due to performance or privacy
 +concerns:</p>
 +<blockquote>
 +<div><ul class="simple">
 +<li>OC\Preview\Movie</li>
 +<li>OC\Preview\MSOffice2003</li>
 +<li>OC\Preview\MSOffice2007</li>
 +<li>OC\Preview\MSOfficeDoc</li>
 +<li>OC\Preview\OpenDocument</li>
 +<li>OC\Preview\PDF</li>
 +<li>OC\Preview\StarOffice</li>
 +<li>OC\Preview\SVG</li>
 +</ul>
 +</div></blockquote>
 +<div class="admonition note">
 +<p class="first admonition-title">Note</p>
 +<p class="last">Troubleshooting steps for the MS Word previews are available
 +at the <a class="reference internal" href="collaborative_documents_configuration.html"><em>Configuring the Collaborative Documents App</em></a> section
 +of the Administrators Manual.</p>
 +</div>
 +<p>The following providers are not available in Microsoft Windows:</p>
 +<blockquote>
 +<div><ul class="simple">
 +<li>OC\Preview\Movie</li>
 +<li>OC\Preview\MSOfficeDoc</li>
 +<li>OC\Preview\MSOffice2003</li>
 +<li>OC\Preview\MSOffice2007</li>
 +<li>OC\Preview\OpenDocument</li>
 +<li>OC\Preview\StarOffice</li>
 +</ul>
 +</div></blockquote>
 +</div>
 +<div class="section" id="ldap">
 +<h2>LDAP<a class="headerlink" href="#ldap" title="Permalink to this headline">¶</a></h2>
 +<p>Global settings used by LDAP User and Group Backend</p>
 +<div class="highlight-python"><pre>'ldapUserCleanupInterval' => 51,</pre>
 +</div>
 +<p>defines the interval in minutes for the background job that checks user
 +existance and marks them as ready to be cleaned up. The number is always
 +minutes. Setting it to 0 disables the feature.</p>
 +<p>See command line (occ) methods <a class="reference external" href="ldap:show-remnants">ldap:show-remnants</a> and user:delete</p>
 +</div>
 +<div class="section" id="maintenance">
 +<h2>Maintenance<a class="headerlink" href="#maintenance" title="Permalink to this headline">¶</a></h2>
 +<p>These options are for halting user activity when you are performing server
 +maintenance.</p>
 +<div class="highlight-python"><pre>'maintenance' => false,</pre>
 +</div>
 +<p>Enable maintenance mode to disable ownCloud</p>
 +<p>If you want to prevent users to login to ownCloud before you start doing some
 +maintenance work, you need to set the value of the maintenance parameter to
 +true. Please keep in mind that users who are already logged-in are kicked out
 +of ownCloud instantly.</p>
 +<div class="highlight-python"><pre>'singleuser' => false,</pre>
 +</div>
 +<p>When set to <tt class="docutils literal"><span class="pre">true</span></tt>, the ownCloud instance will be unavailable for all users
 +who are not in the <tt class="docutils literal"><span class="pre">admin</span></tt> group.</p>
 +</div>
 +<div class="section" id="ssl">
 +<h2>SSL<a class="headerlink" href="#ssl" title="Permalink to this headline">¶</a></h2>
 +<div class="highlight-python"><pre>'forcessl' => false,</pre>
 +</div>
 +<p>Change this to <tt class="docutils literal"><span class="pre">true</span></tt> to require HTTPS for all connections, and to reject
 +HTTP requests.</p>
 +<div class="highlight-python"><pre>'openssl' => array(
 +        'config' => '/absolute/location/of/openssl.cnf',
 +),</pre>
 +</div>
 +<p>Extra SSL options to be used for configuration.</p>
 +</div>
 +<div class="section" id="miscellaneous">
 +<h2>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this headline">¶</a></h2>
 +<div class="highlight-python"><pre>'blacklisted_files' => array('.htaccess'),</pre>
 +</div>
 +<p>Blacklist a specific file or files and disallow the upload of files
 +with this name. <tt class="docutils literal"><span class="pre">.htaccess</span></tt> is blocked by default.</p>
 +<p>WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING.</p>
 +<div class="highlight-python"><pre>'share_folder' => '/',</pre>
 +</div>
 +<p>Define a default folder for shared files and folders other than root.</p>
 +<div class="highlight-python"><pre>'theme' => '',</pre>
 +</div>
 +<p>If you are applying a theme to ownCloud, enter the name of the theme here.</p>
 +<p>The default location for themes is <tt class="docutils literal"><span class="pre">owncloud/themes/</span></tt>.</p>
 +<div class="highlight-python"><pre>'xframe_restriction' => true,</pre>
 +</div>
 +<p>X-Frame-Restriction is a header which prevents browsers from showing the site
 +inside an iframe. This is be used to prevent clickjacking. It is risky to
 +disable this, so leave it set at <tt class="docutils literal"><span class="pre">true</span></tt>.</p>
 +<div class="highlight-python"><pre>'cipher' => 'AES-256-CFB',</pre>
 +</div>
 +<p>The default cipher for encrypting files. Currently AES-128-CFB and
 +AES-256-CFB are supported.</p>
 +<div class="highlight-python"><pre>'memcached_servers' => array(
 +        // hostname, port and optional weight. Also see:
 +        // http://www.php.net/manual/en/memcached.addservers.php
 +        // http://www.php.net/manual/en/memcached.addserver.php
 +        array('localhost', 11211),
 +        //array('other.host.local', 11211),
 +),</pre>
 +</div>
 +<p>Server details for one or more memcached servers to use for memory caching.</p>
 +<p>Memcache is only used if other memory cache options (xcache, apc, apcu) are
 +not available.</p>
 +<div class="highlight-python"><pre>'cache_path' => '',</pre>
 +</div>
 +<p>Location of the cache folder, defaults to <tt class="docutils literal"><span class="pre">data/$user/cache</span></tt> where
 +<tt class="docutils literal"><span class="pre">$user</span></tt> is the current user. When specified, the format will change to
 +<tt class="docutils literal"><span class="pre">$cache_path/$user</span></tt> where <tt class="docutils literal"><span class="pre">$cache_path</span></tt> is the configured cache directory
 +and <tt class="docutils literal"><span class="pre">$user</span></tt> is the user.</p>
 +<div class="highlight-python"><pre>'quota_include_external_storage' => false,</pre>
 +</div>
 +<p>EXPERIMENTAL: option whether to include external storage in quota
 +calculation, defaults to false.</p>
 +<div class="highlight-python"><pre>'filesystem_check_changes' => 1,</pre>
 +</div>
 +<p>Specifies how often the filesystem is checked for changes made outside
 +ownCloud.</p>
 +<p>0 -> Never check the filesystem for outside changes, provides a performance
 +increase when it’s certain that no changes are made directly to the
 +filesystem</p>
 +<p>1 -> Check each file or folder at most once per request, recommended for
 +general use if outside changes might happen.</p>
 +<p>2 -> Check every time the filesystem is used, causes a performance hit when
 +using external storages, not recommended for regular use.</p>
 +<div class="highlight-python"><pre>'asset-pipeline.enabled' => false,</pre>
 +</div>
 +<p>All css and js files will be served by the web server statically in one js
 +file and one css file if this is set to <tt class="docutils literal"><span class="pre">true</span></tt>.</p>
 +<div class="admonition note">
 +<p class="first admonition-title">Note</p>
 +<p class="last">Test this thoroughly on production systems as it should work reliably
 +with core apps, but you may encounter problems with community/third-party apps.</p>
 +</div>
 +<div class="highlight-python"><pre>'mount_file' => 'data/mount.json',</pre>
 +</div>
 +<p>Where <tt class="docutils literal"><span class="pre">mount.json</span></tt> file should be stored, defaults to <tt class="docutils literal"><span class="pre">data/mount.json</span></tt></p>
 +<div class="highlight-python"><pre>'filesystem_cache_readonly' => false,</pre>
 +</div>
 +<p>When <tt class="docutils literal"><span class="pre">true</span></tt>, prevent ownCloud from changing the cache due to changes in the
 +filesystem for all storage.</p>
 +<div class="highlight-python"><pre>'objectstore' => array(
 +        'class' => 'OC\\Files\\ObjectStore\\Swift',
 +        'arguments' => array(
 +                // trystack will user your facebook id as the user name
 +                'username' => 'facebook100000123456789',
 +                // in the trystack dashboard go to user -> settings -> API Password to
 +                // generate a password
 +                'password' => 'Secr3tPaSSWoRdt7',
 +                // must already exist in the objectstore, name can be different
 +                'container' => 'owncloud',
 +                // create the container if it does not exist. default is false
 +                'autocreate' => true,
 +                // required, dev-/trystack defaults to 'RegionOne'
 +                'region' => 'RegionOne',
 +                // The Identity / Keystone endpoint
 +                'url' => 'http://8.21.28.222:5000/v2.0',
 +                // required on dev-/trystack
 +                'tenantName' => 'facebook100000123456789',
 +                // dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
 +                // if omitted
 +                'serviceName' => 'swift',
 +        ),
 +),</pre>
 +</div>
 +<p>The example below shows how to configure ownCloud to store all files in a
 +swift object storage.</p>
 +<p>It is important to note that ownCloud in object store mode will expect
 +exclusive access to the object store container because it only stores the
 +binary data for each file. The metadata is currently kept in the local
 +database for performance reasons.</p>
 +<p>WARNING: The current implementation is incompatible with any app that uses
 +direct file IO and circumvents our virtual filesystem. That includes
 +Encryption and Gallery. Gallery will store thumbnails directly in the
 +filesystem and encryption will cause severe overhead because key files need
 +to be fetched in addition to any requested file.</p>
 +<p>One way to test is applying for a trystack account at <a class="reference external" href="http://trystack.org/">http://trystack.org/</a></p>
 +<div class="highlight-python"><pre>'supportedDatabases' => array(
 +        'sqlite',
 +        'mysql',
 +        'pgsql',
 +        'oci',
 +        'mssql'
 +),</pre>
 +</div>
 +<p>Database types that are supported for installation.</p>
 +<dl class="docutils">
 +<dt>Available:</dt>
 +<dd><ul class="first last simple">
 +<li>sqlite (SQLite3 - Community Edition Only)</li>
 +<li>mysql (MySQL)</li>
 +<li>pgsql (PostgreSQL)</li>
 +<li>oci (Oracle - Enterprise Edition Only)</li>
 +<li>mssql (Microsoft SQL Server - Enterprise Edition Only)</li>
 +</ul>
 +</dd>
 +</dl>
 +<div class="highlight-python"><pre>'custom_csp_policy' =>
 +        "default-src 'self'; script-src 'self' 'unsafe-eval'; ".
 +        "style-src 'self' 'unsafe-inline'; frame-src *; img-src *; ".
 +        "font-src 'self' data:; media-src *",</pre>
 +</div>
 +<p>Custom CSP policy, changing this will overwrite the standard policy</p>
 +<div class="highlight-python"><pre>'secret' => 'ICertainlyShouldHaveChangedTheDefaultSecret',</pre>
 +</div>
 +<p>Secret used by ownCloud for various purposes, e.g. to encrypt data. If you
 +lose this string there will be data corruption.</p>
 +</div>
 +<div class="section" id="app-config-options">
 +<h2>App config options<a class="headerlink" href="#app-config-options" title="Permalink to this headline">¶</a></h2>
 +<p>Retention for activities of the activity app:</p>
 +<div class="highlight-python"><pre>'activity_expire_days' => 365,</pre>
 +</div>
 +<p>Every day a cron job is ran, which deletes all activities for all users
 +which are older then the number of days that is set for <tt class="docutils literal"><span class="pre">activity_expire_days</span></tt></p>
 +</div>
 +</div>
 +
 +
 +					</div>
 +				</div>
 +			</div>
 +    
 +  </div>
 +</div>
 +  </body>
 +</html>
diff --cc core/doc/admin/release/installation/installation_wizard.html
index 8ee59fc,0000000..4d3c781
mode 100644,000000..100644
--- a/core/doc/admin/release/installation/installation_wizard.html
+++ b/core/doc/admin/release/installation/installation_wizard.html
@@@ -1,347 -1,0 +1,346 @@@
 +
 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 +  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 +
 +
 +<html xmlns="http://www.w3.org/1999/xhtml">
 +  <head>
 +    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 +    
 +    <title>Installation Wizard — ownCloud Administrators Manual 7.0 documentation</title>
 +    
 +    <link rel="stylesheet" href="../_static/style.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/style.css" type="text/css" />
 +    <link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
 +    
 +    <script type="text/javascript">
 +      var DOCUMENTATION_OPTIONS = {
 +        URL_ROOT:    '../',
 +        VERSION:     '7.0',
 +        COLLAPSE_INDEX: false,
 +        FILE_SUFFIX: '.html',
 +        HAS_SOURCE:  true
 +      };
 +    </script>
 +    <script type="text/javascript" src="../_static/jquery.js"></script>
 +    <script type="text/javascript" src="../_static/underscore.js"></script>
 +    <script type="text/javascript" src="../_static/doctools.js"></script>
 +    <script type="text/javascript" src="../_static/bootstrap.js"></script>
 +    <link rel="top" title="ownCloud Administrators Manual 7.0 documentation" href="../index.html" />
 +    <link rel="up" title="Installation" href="index.html" />
 +    <link rel="next" title="Lighttpd Configuration" href="lighttpd_configuration.html" />
 +    <link rel="prev" title="Hiawatha Configuration" href="hiawatha_configuration.html" />
 +<script type="text/javascript">
 +(function () {
 +  /**
 +   * Patch TOC list.
 +   *
 +   * Will mutate the underlying span to have a correct ul for nav.
 +   *
 +   * @param $span: Span containing nested UL's to mutate.
 +   * @param minLevel: Starting level for nested lists. (1: global, 2: local).
 +   */
 +  var patchToc = function ($ul, minLevel) {
 +    var findA;
 +
 +    // Find all a "internal" tags, traversing recursively.
 +    findA = function ($elem, level) {
 +      var level = level || 0,
 +        $items = $elem.find("> li > a.internal, > ul, > li > ul");
 +
 +      // Iterate everything in order.
 +      $items.each(function (index, item) {
 +        var $item = $(item),
 +          tag = item.tagName.toLowerCase(),
 +          pad = 15 + ((level - minLevel) * 10);
 +
 +        if (tag === 'a' && level >= minLevel) {
 +          // Add to existing padding.
 +          $item.css('padding-left', pad + "px");
 +          console.log(level, $item, 'padding-left', pad + "px");
 +        } else if (tag === 'ul') {
 +          // Recurse.
 +          findA($item, level + 1);
 +        }
 +      });
 +    };
 +
 +    console.log("HERE");
 +    findA($ul);
 +  };
 +
 +  $(document).ready(function () {
 +    // Add styling, structure to TOC's.
 +    $(".dropdown-menu").each(function () {
 +      $(this).find("ul").each(function (index, item){
 +        var $item = $(item);
 +        $item.addClass('unstyled');
 +      });
 +      $(this).find("li").each(function () {
 +        $(this).parent().append(this);
 +      });
 +    });
 +
 +    // Patch in level.
 +    patchToc($("ul.globaltoc"), 2);
 +    patchToc($("ul.localtoc"), 2);
 +
 +    // Enable dropdown.
 +    $('.dropdown-toggle').dropdown();
 +  });
 +}());
 +</script>
 +
 +  </head>
 +  <body>
 +  
 +
 +<div class="container">
 +  <div class="content">
 +    <div class="page-header">
 +      <h1><a href="../contents.html">ownCloud Administrators Manual</a></h1>
 +
 +    </div>
 +    
 +			<div class="row">
 +				<div class="span3">
 +					<div class="sidebar">
 +						<div class="well">
 +							<div class="menu-support-container">
 +								<ul id="menu-support" class="menu">
 +									<ul>
 +										<li><a href="../contents.html">Table of Contents</a></li>
 +									</ul>
 +                  <ul>
 +<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
 +</ul>
 +<ul class="current">
 +<li class="toctree-l1"><a class="reference internal" href="../videos.html">ownCloud Videos</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../whats_new_admin.html">What’s New for Admins in ownCloud 7</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../release_notes.html">ownCloud 7.0 Release Notes</a></li>
 +<li class="toctree-l1 current"><a class="reference internal" href="index.html">Installation</a><ul class="current">
 +<li class="toctree-l2"><a class="reference internal" href="linux_installation.html">Preferred Linux Installation Method</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="appliance_installation.html">ownCloud Appliances</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="apps_management_installation.html">Installing and Managing Apps</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="hiawatha_configuration.html">Hiawatha Configuration</a></li>
 +<li class="toctree-l2 current"><a class="current reference internal" href="">Installation Wizard</a><ul>
 +<li class="toctree-l3"><a class="reference internal" href="#required-settings">Required Settings</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#storage-database">Storage & Database</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#database-choice">Database Choice</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#finish-installation">Finish Installation</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#setting-strong-directory-permissions">Setting Strong Directory Permissions</a></li>
 +<li class="toctree-l3"><a class="reference internal" href="#trusted-domains">Trusted Domains</a></li>
 +</ul>
 +</li>
 +<li class="toctree-l2"><a class="reference internal" href="lighttpd_configuration.html">Lighttpd Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="macos_installation.html">Mac OS X</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="nginx_configuration.html">Nginx Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="others_installation.html">Other Installation Methods</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="source_installation.html">Manual Installation on Linux</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="ucs_installation.html">Univention Corporate Server</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="windows_installation.html">Windows 7 and Windows Server 2008</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="yaws_configuration.html">Yaws Configuration</a></li>
 +<li class="toctree-l2"><a class="reference internal" href="selinux_configuration.html">SELinux Configuration</a></li>
 +</ul>
 +</li>
 +<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuration</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
 +<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and Troubleshooting</a></li>
 +</ul>
 +
 +								</ul>
 +							</div>
 +						</div>
 +					</div>
 +				</div>
 +        
 +
 +				<div class="span9">
 +					<div class="page-content">
 +						
 +  <div class="section" id="installation-wizard">
 +<h1>Installation Wizard<a class="headerlink" href="#installation-wizard" title="Permalink to this headline">¶</a></h1>
 +<p>When ownCloud prerequisites are fulfilled and all ownCloud files are installed
 +on the server, the last step to complete the installation is
 +running the Installation Wizard. Open your Web browser to your new ownCloud
 +installation.</p>
 +<blockquote>
 +<div><ul class="simple">
 +<li>If you are installing ownCloud on the same machine as you are accessing the
 +install wizard from, the URL will be <tt class="docutils literal"><span class="pre">http://localhost/owncloud</span></tt>, or <tt class="docutils literal"><span class="pre">https://localhost/owncloud</span></tt> if you have enabled SSL.</li>
 +<li>If you are installing ownCloud on a different machine, you’ll have to access
 +it by its hostname or IP address, e.g. <tt class="docutils literal"><span class="pre">http://example.com/owncloud</span></tt>.</li>
 +<li>If you are using a self-signed certificate, you will be presented with a
 +security warning about the issuer of the certificate not being trusted which
 +you can ignore.</li>
 +</ul>
 +</div></blockquote>
 +<ul class="simple">
 +<li>You will be presented with the setup screen:</li>
 +</ul>
 +<a class="reference internal image-reference" href="../_images/install-wizard.png"><img alt="../_images/install-wizard.png" src="../_images/install-wizard.png" style="width: 261.75px; height: 418.5px;" /></a>
 +<div class="section" id="required-settings">
 +<h2>Required Settings<a class="headerlink" href="#required-settings" title="Permalink to this headline">¶</a></h2>
 +<p>Under <tt class="docutils literal"><span class="pre">create</span> <span class="pre">an</span> <span class="pre">admin</span> <span class="pre">account</span></tt> you must enter a username and
 +password for the administrative user account. You may choose any username and
 +password that you want.</p>
 +</div>
 +<div class="section" id="storage-database">
 +<h2>Storage & Database<a class="headerlink" href="#storage-database" title="Permalink to this headline">¶</a></h2>
 +<ul class="simple">
 +<li>Click <tt class="docutils literal"><span class="pre">Storage</span> <span class="pre">&</span> <span class="pre">Database</span></tt> to see all of your database options, and to
 +optionally change the default data storage directory.</li>
 +<li>The database you want to use must already be installed, and you must have a
 +database admin user and password.</li>
 +<li>Enter any arbitrary name for the Database name. This must be a database that
 +does not already exist.</li>
 +<li>If you are not using Apache as the web server, it is highly
 +recommended to configure the data directory to a location outside of
 +the document root. Otherwise all user data is potentially publicly
 +visible!</li>
 +</ul>
 +<a class="reference internal image-reference" href="../_images/install-wizard-advanced.png"><img alt="../_images/install-wizard-advanced.png" src="../_images/install-wizard-advanced.png" style="width: 329.25px; height: 541.5px;" /></a>
 +</div>
 +<div class="section" id="database-choice">
 +<h2>Database Choice<a class="headerlink" href="#database-choice" title="Permalink to this headline">¶</a></h2>
 +<ul class="simple">
 +<li>For a guideline on which database system to choose, and on pointers how to
 +set them up for being available for PHP/ownCloud, see
 +<a class="reference internal" href="../configuration/database_configuration.html"><em>Database Configuration</em></a></li>
 +<li>Note that you will only be able to choose among the PHP database connectors
 +which are actually installed on the system.</li>
 +<li>It is not easily possible to migrate to another database system once you have
 +set up your ownCloud to use a specific one. So make sure to carefully
 +consider which database system to use.</li>
 +<li>When using MySQL/MariaDB or PostgreSQL you have two options regarding the database
 +name and user account you specify:<ul>
 +<li>You can specify either an admin or the root user, and the name of a database
 +which does not yet exist. This lets ownCloud create its own database; it
 +will also create a database user account with restricted rights (with the
 +same username as you specified for the administrative user, plus an
 +<tt class="docutils literal"><span class="pre">oc_</span></tt> prefix) and will use that for all subsequent database access.</li>
 +<li>There are restrictions as to what characters a database name may or may
 +not contain; see the
 +<a class="reference external" href="http://dev.mysql.com/doc/refman/5.5/en/identifiers.html">MySQL Schema Object Names documentation</a> for details);</li>
 +</ul>
 +</li>
 +</ul>
 +</div>
 +<div class="section" id="finish-installation">
 +<h2>Finish Installation<a class="headerlink" href="#finish-installation" title="Permalink to this headline">¶</a></h2>
 +<ul class="simple">
 +<li>Once you’ve entered all settings, click “Finish Setup”</li>
 +<li>ownCloud will set up your cloud according to the given settings</li>
 +<li>When it’s finished, it will log you in as administrative user and present the
 +“Welcome to ownCloud” screen.</li>
 +</ul>
 +</div>
 +<div class="section" id="setting-strong-directory-permissions">
 +<h2>Setting Strong Directory Permissions<a class="headerlink" href="#setting-strong-directory-permissions" title="Permalink to this headline">¶</a></h2>
 +<p>For hardened security we recommend setting the permissions on your ownCloud
 +directory as strictly as possible. This should be done immediately after the
 +initial installation. Your HTTP user must own the <tt class="docutils literal"><span class="pre">config/</span></tt>, <tt class="docutils literal"><span class="pre">data/</span></tt> and
 +<tt class="docutils literal"><span class="pre">apps/</span></tt> directories in your ownCloud directory so that you can configure
 +ownCloud, create, modify and delete your data files, and install apps via the
 +ownCloud Web interface.</p>
 +<p>You can find your HTTP user in your HTTP server configuration files. Or you can
 +create a PHP page to find it for you. To do this, create a plain text file with
 +a single line in it:</p>
 +<blockquote>
 +<div><tt class="docutils literal"><span class="pre"><?php</span> <span class="pre">echo</span> <span class="pre">exec('whoami');</span> <span class="pre">?></span></tt></div></blockquote>
 +<p>Name it <tt class="docutils literal"><span class="pre">whoami.php</span></tt> and place it in your <tt class="docutils literal"><span class="pre">/var/www/html</span></tt> directory, and
 +then open it in a Web browser, for example <tt class="docutils literal"><span class="pre">http://localhost/whoami.php</span></tt>. You
 +should see a single line in your browser page with the HTTP user name.</p>
 +<ul class="simple">
 +<li>The HTTP user and group in Debian/Ubuntu is <tt class="docutils literal"><span class="pre">www-data</span></tt>.</li>
 +<li>The HTTP user and group in Fedora/CentOS is <tt class="docutils literal"><span class="pre">apache</span></tt>.</li>
 +<li>The HTTP user and group in Arch Linux is <tt class="docutils literal"><span class="pre">http</span></tt>.</li>
 +<li>The HTTP user in openSUSE is <tt class="docutils literal"><span class="pre">wwwrun</span></tt>, and the HTTP group is <tt class="docutils literal"><span class="pre">www</span></tt>.</li>
 +</ul>
 +<div class="admonition note">
 +<p class="first admonition-title">Note</p>
 +<p class="last">When using an NFS mount for the data directory, do not change its
 +ownership from the default. The simple act of mounting the drive will set
 +proper permissions for ownCloud to write to the directory. Changing
 +ownership as above could result in some issues if the NFS mount is
 +lost.</p>
 +</div>
- <p>The easy way to set the correct permissions is to copy and run this
- script. Replace the <tt class="docutils literal"><span class="pre">ocpath</span></tt> variable with the path to your ownCloud
- directory, and replace the <tt class="docutils literal"><span class="pre">htuser</span></tt> variable with your own HTTP user:</p>
++<p>The easy way to set the correct permissions is to copy and run this script. Replace the <tt class="docutils literal"><span class="pre">ocpath</span></tt> variable with the path to your ownCloud directory, and replace the <tt class="docutils literal"><span class="pre">htuser</span></tt> and <tt class="docutils literal"><span class="pre">htgroup</span></tt> variables with your HTTP user and group:</p>
 +<div class="highlight-python"><pre>#!/bin/bash
 +ocpath='/var/www/owncloud'
 +htuser='www-data'
++htgroup='www-data'
 +
 +find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
 +find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 +
 +chown -R root:${htuser} ${ocpath}/
- chown -R ${htuser}:${htuser} ${ocpath}/apps/
- chown -R ${htuser}:${htuser} ${ocpath}/config/
- chown -R ${htuser}:${htuser} ${ocpath}/data/
- chown -R ${htuser}:${htuser} ${ocpath}/themes/
++chown -R ${htuser}:${htgroup} ${ocpath}/apps/
++chown -R ${htuser}:${htgroup} ${ocpath}/config/
++chown -R ${htuser}:${htgroup} ${ocpath}/data/
++chown -R ${htuser}:${htgroup} ${ocpath}/themes/
 +
 +chown root:${htuser} ${ocpath}/.htaccess
 +chown root:${htuser} ${ocpath}/data/.htaccess
 +
 +chmod 0644 ${ocpath}/.htaccess
 +chmod 0644 ${ocpath}/data/.htaccess</pre>
 +</div>
 +<p>If you have customized your ownCloud installation and your filepaths are
 +different than the standard installation, then modify this script accordingly.</p>
 +<p>This lists the recommended modes and ownership for your ownCloud directories
 +and files:</p>
 +<ul class="simple">
 +<li>All files should be read-write for the file owner, read-only for the
 +group owner, and zero for the world</li>
 +<li>All directories should be executable (because directories always need the
 +executable bit set), read-write for the directory owner, and read-only for
 +the group owner</li>
- <li>The <tt class="file docutils literal"><span class="pre">/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">apps/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">config/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">themes/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">data/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">[ocpath]/.htaccess</span></tt> file should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">user]</span></tt></li>
- <li>The <tt class="file docutils literal"><span class="pre">data/.htaccess</span></tt> file should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">user]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">apps/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">config/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">themes/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">data/</span></tt> directory should be owned by <tt class="docutils literal"><span class="pre">[HTTP</span> <span class="pre">user]:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">[ocpath]/.htaccess</span></tt> file should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">group]</span></tt></li>
++<li>The <tt class="file docutils literal"><span class="pre">data/.htaccess</span></tt> file should be owned by <tt class="docutils literal"><span class="pre">root:[HTTP</span> <span class="pre">group]</span></tt></li>
 +<li>Both <tt class="file docutils literal"><span class="pre">.htaccess</span></tt> files are read-write file owner, read-only group and
 +world</li>
 +</ul>
 +</div>
 +<div class="section" id="trusted-domains">
 +<h2>Trusted Domains<a class="headerlink" href="#trusted-domains" title="Permalink to this headline">¶</a></h2>
 +<p>ownCloud will take the URL used to access the Installation Wizard and insert
 +that into the <tt class="docutils literal"><span class="pre">config.php</span></tt> file for the <tt class="docutils literal"><span class="pre">trusted_domains</span></tt> setting.
 +All needed domain names of the ownCloud server go into the
 +<tt class="docutils literal"><span class="pre">trusted_domains</span></tt> setting. Users will only be able to log into ownCloud when they point their browsers to a domain name listed in the <tt class="docutils literal"><span class="pre">trusted_domains</span></tt> setting. An IPv4 address can be
 +specified instead of a domain name. A typical configuration looks like this:</p>
 +<div class="highlight-python"><pre>'trusted_domains' =>
 +  array (
 +   0 => 'localhost',
 +   1 => 'server1',
 +   2 => '192.168.1.50',
 +),</pre>
 +</div>
 +<p>In the event that a load balancer is in place there will be no issues as long
 +as it sends the correct X-Forwarded-Host header.</p>
 +<p>The loopback address, <tt class="docutils literal"><span class="pre">127.0.0.1</span></tt>, is whitelisted and
 +therefore users on the ownCloud server who access ownCloud with the loopback
 +interface will be able to successfully login.
 +In the event that an improper URL is used, the
 +following error will appear:</p>
 +<a class="reference internal image-reference" href="../_images/untrusted-domain.png"><img alt="../_images/untrusted-domain.png" src="../_images/untrusted-domain.png" style="width: 725.25px; height: 272.25px;" /></a>
 +<p>For configuration examples, refer to the <tt class="file docutils literal"><span class="pre">config/config.sample.php</span></tt>
 +document.</p>
 +</div>
 +</div>
 +
 +
 +					</div>
 +				</div>
 +			</div>
 +    
 +  </div>
 +</div>
 +  </body>
 +</html>
diff --cc version.php
index 416d4d3,10b7c2b..b4e8f62
--- a/version.php
+++ b/version.php
@@@ -1,6 -1,19 +1,6 @@@
 -<?php
 -
 -// We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades
 -// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
 -// when updating major/minor version number.
 -$OC_Version=array(7, 0, 7, 1);
 -
 -// The human readable string
 -$OC_VersionString='7.0.7RC1';
 -
 -// The ownCloud edition
 -$OC_Edition='';
 -
 -// The ownCloud channel
 -$OC_Channel='git';
 -
 -// The build number
 -$OC_Build='';
 -
 +<?php 
- $OC_Version = array(7,0,7,0);
- $OC_VersionString = '7.0.7beta';
++$OC_Version = array(7,0,7,1);
++$OC_VersionString = '7.0.7RC1';
 +$OC_Edition = '';
 +$OC_Channel = 'testing';
- $OC_Build = '2015-06-23T18:03:53+00:00 e5237a2cfe6c7b0deaf629c13ce3c3b29b69fdc7';
++$OC_Build = '2015-06-30T22:57:17+00:00 f29af9c23b34edf4f54007b472c24ca6ee0d502d';

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list