[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