aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/MDB2/Driver/sqlite3.php4
-rw-r--r--lib/base.php30
-rw-r--r--lib/config.php24
-rw-r--r--lib/db.php2
-rw-r--r--lib/files/cache/cache.php4
-rw-r--r--lib/files/cache/legacy.php22
-rw-r--r--lib/files/cache/upgrade.php4
-rw-r--r--lib/files/filesystem.php19
-rw-r--r--lib/files/mount.php3
-rw-r--r--lib/files/storage/common.php24
-rw-r--r--lib/files/storage/local.php3
-rw-r--r--lib/files/view.php39
-rw-r--r--lib/helper.php2
-rw-r--r--lib/json.php2
-rw-r--r--lib/l10n.php6
-rw-r--r--lib/l10n/ar.php1
-rw-r--r--lib/l10n/bg_BG.php1
-rw-r--r--lib/l10n/ca.php1
-rw-r--r--lib/l10n/cs_CZ.php1
-rw-r--r--lib/l10n/cy_GB.php55
-rw-r--r--lib/l10n/da.php1
-rw-r--r--lib/l10n/de.php3
-rw-r--r--lib/l10n/de_DE.php3
-rw-r--r--lib/l10n/el.php5
-rw-r--r--lib/l10n/es.php1
-rw-r--r--lib/l10n/es_AR.php1
-rw-r--r--lib/l10n/et_EE.php20
-rw-r--r--lib/l10n/eu.php1
-rw-r--r--lib/l10n/fa.php3
-rw-r--r--lib/l10n/fi_FI.php3
-rw-r--r--lib/l10n/fr.php1
-rw-r--r--lib/l10n/gl.php1
-rw-r--r--lib/l10n/hu_HU.php1
-rw-r--r--lib/l10n/id.php59
-rw-r--r--lib/l10n/it.php1
-rw-r--r--lib/l10n/ja_JP.php3
-rw-r--r--lib/l10n/ka_GE.php37
-rw-r--r--lib/l10n/lv.php1
-rw-r--r--lib/l10n/nl.php1
-rw-r--r--lib/l10n/pl.php1
-rw-r--r--lib/l10n/pt_BR.php1
-rw-r--r--lib/l10n/pt_PT.php1
-rw-r--r--lib/l10n/ru.php1
-rw-r--r--lib/l10n/sk_SK.php1
-rw-r--r--lib/l10n/sl.php1
-rw-r--r--lib/l10n/sq.php20
-rw-r--r--lib/l10n/sr.php2
-rw-r--r--lib/l10n/tr.php10
-rw-r--r--lib/l10n/uk.php1
-rw-r--r--lib/l10n/zh_CN.GB2312.php3
-rw-r--r--lib/l10n/zh_CN.php1
-rw-r--r--lib/l10n/zh_TW.php32
-rw-r--r--lib/log/owncloud.php3
-rw-r--r--lib/mimetypes.list.php6
-rw-r--r--lib/public/share.php3
-rw-r--r--lib/setup.php9
-rw-r--r--lib/template.php12
-rw-r--r--lib/templatelayout.php10
-rw-r--r--lib/user.php6
-rw-r--r--lib/user/database.php4
-rwxr-xr-xlib/util.php30
-rw-r--r--lib/vobject/stringproperty.php80
62 files changed, 492 insertions, 139 deletions
diff --git a/lib/MDB2/Driver/sqlite3.php b/lib/MDB2/Driver/sqlite3.php
index 8f057cfb6e8..aef0eab9bf1 100644
--- a/lib/MDB2/Driver/sqlite3.php
+++ b/lib/MDB2/Driver/sqlite3.php
@@ -892,10 +892,10 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
$connection = $this->getConnection();
if (PEAR::isError($connection)) {
return $connection;
- }
+ }
$statement =$this->connection->prepare($query);
if (!$statement) {
- return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+ return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
'unable to prepare statement: '.$query);
}
diff --git a/lib/base.php b/lib/base.php
index 76ad0654ed0..3b421486daf 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -97,8 +97,15 @@ class OC {
$path = 'public/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php');
} elseif (strpos($className, 'OCA\\') === 0) {
foreach (self::$APPSROOTS as $appDir) {
- $path = $appDir['path'] . '/' . strtolower(str_replace('\\', '/', substr($className, 3)) . '.php');
- $fullPath = stream_resolve_include_path($path);
+ $path = strtolower(str_replace('\\', '/', substr($className, 4)) . '.php');
+ $fullPath = stream_resolve_include_path($appDir['path'] . '/' . $path);
+ if (file_exists($fullPath)) {
+ require_once $fullPath;
+ return false;
+ }
+ // If not found in the root of the app directory, insert '/lib' after app id and try again.
+ $libpath = substr($path, 0, strpos($path, '/')) . '/lib' . substr($path, strpos($path, '/'));
+ $fullPath = stream_resolve_include_path($appDir['path'] . '/' . $libpath);
if (file_exists($fullPath)) {
require_once $fullPath;
return false;
@@ -278,7 +285,7 @@ class OC {
OC_Config::setValue('maintenance', true);
OC_Log::write('core',
'starting upgrade from ' . $installedVersion . ' to ' . $currentVersion,
- OC_Log::DEBUG);
+ OC_Log::WARN);
$minimizerCSS = new OC_Minimizer_CSS();
$minimizerCSS->clearCache();
$minimizerJS = new OC_Minimizer_JS();
@@ -323,6 +330,10 @@ class OC {
// prevents javascript from accessing php session cookies
ini_set('session.cookie_httponly', '1;');
+ // set the cookie path to the ownCloud directory
+ $cookie_path = OC::$WEBROOT ?: '/';
+ ini_set('session.cookie_path', $cookie_path);
+
// set the session name to the instance id - which is unique
session_name(OC_Util::getInstanceId());
@@ -354,7 +365,7 @@ class OC {
// session timeout
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 60*60*24)) {
if (isset($_COOKIE[session_name()])) {
- setcookie(session_name(), '', time() - 42000, '/');
+ setcookie(session_name(), '', time() - 42000, $cookie_path);
}
session_unset();
session_destroy();
@@ -463,11 +474,11 @@ class OC {
stream_wrapper_register('close', 'OC\Files\Stream\Close');
stream_wrapper_register('oc', 'OC\Files\Stream\OC');
+ self::initTemplateEngine();
self::checkConfig();
self::checkInstalled();
self::checkSSL();
self::initSession();
- self::initTemplateEngine();
$errors = OC_Util::checkServer();
if (count($errors) > 0) {
@@ -627,8 +638,13 @@ class OC {
// Handle redirect URL for logged in users
if (isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) {
$location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url']));
- header('Location: ' . $location);
- return;
+
+ // Deny the redirect if the URL contains a @
+ // This prevents unvalidated redirects like ?redirect_url=:user@domain.com
+ if (strpos($location, '@') === FALSE) {
+ header('Location: ' . $location);
+ return;
+ }
}
// Handle WebDAV
if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') {
diff --git a/lib/config.php b/lib/config.php
index c94eb278159..9b87d4ce4e5 100644
--- a/lib/config.php
+++ b/lib/config.php
@@ -130,14 +130,24 @@ class OC_Config{
return true;
}
- if( !file_exists( OC::$SERVERROOT."/config/config.php" )) {
- return false;
- }
+ // read all file in config dir ending by config.php
+ $config_files = glob( OC::$SERVERROOT."/config/*.config.php");
+
+ //Filter only regular files
+ $config_files = array_filter($config_files, 'is_file');
+
+ //Sort array naturally :
+ natsort($config_files);
+
+ // Add default config
+ array_unshift($config_files,OC::$SERVERROOT."/config/config.php");
- // Include the file, save the data from $CONFIG
- include OC::$SERVERROOT."/config/config.php";
- if( isset( $CONFIG ) && is_array( $CONFIG )) {
- self::$cache = $CONFIG;
+ //Include file and merge config
+ foreach($config_files as $file){
+ include $file;
+ if( isset( $CONFIG ) && is_array( $CONFIG )) {
+ self::$cache = array_merge(self::$cache, $CONFIG);
+ }
}
// We cached everything
diff --git a/lib/db.php b/lib/db.php
index f28ed24df41..8f6f50bda6e 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -1077,7 +1077,7 @@ class PDOStatementWrapper{
public function numRows() {
$regex = '/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/i';
if (preg_match($regex, $this->statement->queryString, $output) > 0) {
- $query = OC_DB::prepare("SELECT COUNT(*) FROM {$output[1]}", PDO::FETCH_NUM);
+ $query = OC_DB::prepare("SELECT COUNT(*) FROM {$output[1]}");
return $query->execute($this->lastArguments)->fetchColumn();
}else{
return $this->statement->rowCount();
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 91bcb73a55d..71b70abe3fe 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -343,9 +343,9 @@ class Cache {
$query->execute(array($targetPath, md5($targetPath), $child['fileid']));
}
- $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ?, `parent` =?'
+ $query = \OC_DB::prepare('UPDATE `*PREFIX*filecache` SET `path` = ?, `path_hash` = ?, `name` = ?, `parent` =?'
. ' WHERE `fileid` = ?');
- $query->execute(array($target, md5($target), $newParentId, $sourceId));
+ $query->execute(array($target, md5($target), basename($target), $newParentId, $sourceId));
}
/**
diff --git a/lib/files/cache/legacy.php b/lib/files/cache/legacy.php
index 9556a2639a3..b8e2548639b 100644
--- a/lib/files/cache/legacy.php
+++ b/lib/files/cache/legacy.php
@@ -80,7 +80,7 @@ class Legacy {
}
$result = $query->execute(array($path));
$data = $result->fetchRow();
- $data['etag'] = $this->getEtag($data['path']);
+ $data['etag'] = $this->getEtag($data['path'], $data['user']);
return $data;
}
@@ -90,12 +90,24 @@ class Legacy {
* @param type $path
* @return string
*/
- function getEtag($path) {
+ function getEtag($path, $user = null) {
static $query = null;
- list(, $user, , $relativePath) = explode('/', $path, 4);
- if (is_null($relativePath)) {
+
+ $pathDetails = explode('/', $path, 4);
+ if((!$user) && !isset($pathDetails[1])) {
+ //no user!? Too odd, return empty string.
+ return '';
+ } else if(!$user) {
+ //guess user from path, if no user passed.
+ $user = $pathDetails[1];
+ }
+
+ if(!isset($pathDetails[3]) || is_null($pathDetails[3])) {
$relativePath = '';
+ } else {
+ $relativePath = $pathDetails[3];
}
+
if(is_null($query)){
$query = \OC_DB::prepare('SELECT `propertyvalue` FROM `*PREFIX*properties` WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = \'{DAV:}getetag\'');
}
@@ -118,7 +130,7 @@ class Legacy {
$result = $query->execute(array($id));
$data = $result->fetchAll();
foreach ($data as $i => $item) {
- $data[$i]['etag'] = $this->getEtag($item['path']);
+ $data[$i]['etag'] = $this->getEtag($item['path'], $item['user']);
}
return $data;
}
diff --git a/lib/files/cache/upgrade.php b/lib/files/cache/upgrade.php
index 797f4e6ba8c..ca044ba81de 100644
--- a/lib/files/cache/upgrade.php
+++ b/lib/files/cache/upgrade.php
@@ -127,6 +127,10 @@ class Upgrade {
* @return array
*/
function getNewData($data) {
+ //Make sure there is a path, otherwise we can do nothing.
+ if(!isset($data['path'])) {
+ return false;
+ }
$newData = $data;
/**
* @var \OC\Files\Storage\Storage $storage
diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php
index 1580dfaf637..09732e67ac6 100644
--- a/lib/files/filesystem.php
+++ b/lib/files/filesystem.php
@@ -23,6 +23,7 @@
* post_rename(oldpath,newpath)
* copy(oldpath,newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emitted in that order)
* post_rename(oldpath,newpath)
+ * post_initMountPoints(user, user_dir)
*
* the &run parameter can be set to false to prevent the operation from occurring
*/
@@ -280,12 +281,15 @@ class Filesystem {
}
}
}
+
+ // Chance to mount for other storages
+ \OC_Hook::emit('OC_Filesystem', 'post_initMountPoints', array('user' => $user, 'user_dir' => $root));
}
/**
- * fill in the correct values for $user, and $password placeholders
+ * fill in the correct values for $user
*
- * @param string $input
+ * @param string $user
* @param string $input
* @return string
*/
@@ -307,6 +311,7 @@ class Filesystem {
*/
static public function tearDown() {
self::clearMounts();
+ self::$defaultInstance = null;
}
/**
@@ -621,10 +626,11 @@ class Filesystem {
* get the content of a directory
*
* @param string $directory path under datadirectory
+ * @param string $mimetype_filter limit returned content to this mimetype or mimepart
* @return array
*/
- public static function getDirectoryContent($directory) {
- return self::$defaultInstance->getDirectoryContent($directory);
+ public static function getDirectoryContent($directory, $mimetype_filter = '') {
+ return self::$defaultInstance->getDirectoryContent($directory, $mimetype_filter);
}
/**
@@ -660,9 +666,4 @@ class Filesystem {
}
}
-\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook');
-\OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook');
-\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
-\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');
-
\OC_Util::setupFS();
diff --git a/lib/files/mount.php b/lib/files/mount.php
index 59c98e9dcc8..0030d0ee7a6 100644
--- a/lib/files/mount.php
+++ b/lib/files/mount.php
@@ -136,6 +136,7 @@ class Mount {
* @return Mount
*/
public static function find($path) {
+ \OC_Util::setupFS();
$path = self::formatPath($path);
if (isset(self::$mounts[$path])) {
return self::$mounts[$path];
@@ -163,6 +164,7 @@ class Mount {
* @return Mount[]
*/
public static function findIn($path) {
+ \OC_Util::setupFS();
$path = self::formatPath($path);
$result = array();
$pathLength = strlen($path);
@@ -186,6 +188,7 @@ class Mount {
* @return Mount[]
*/
public static function findByStorageId($id) {
+ \OC_Util::setupFS();
if (strlen($id) > 64) {
$id = md5($id);
}
diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php
index 8aa227ec0b7..38fe5e546f6 100644
--- a/lib/files/storage/common.php
+++ b/lib/files/storage/common.php
@@ -21,6 +21,10 @@ namespace OC\Files\Storage;
*/
abstract class Common implements \OC\Files\Storage\Storage {
+ private $cache;
+ private $scanner;
+ private $permissioncache;
+ private $watcher;
public function __construct($parameters) {
}
@@ -269,19 +273,31 @@ abstract class Common implements \OC\Files\Storage\Storage {
}
public function getCache($path = '') {
- return new \OC\Files\Cache\Cache($this);
+ if (!isset($this->cache)) {
+ $this->cache = new \OC\Files\Cache\Cache($this);
+ }
+ return $this->cache;
}
public function getScanner($path = '') {
- return new \OC\Files\Cache\Scanner($this);
+ if (!isset($this->scanner)) {
+ $this->scanner = new \OC\Files\Cache\Scanner($this);
+ }
+ return $this->scanner;
}
public function getPermissionsCache($path = '') {
- return new \OC\Files\Cache\Permissions($this);
+ if (!isset($this->permissioncache)) {
+ $this->permissioncache = new \OC\Files\Cache\Permissions($this);
+ }
+ return $this->permissioncache;
}
public function getWatcher($path = '') {
- return new \OC\Files\Cache\Watcher($this);
+ if (!isset($this->watcher)) {
+ $this->watcher = new \OC\Files\Cache\Watcher($this);
+ }
+ return $this->watcher;
}
/**
diff --git a/lib/files/storage/local.php b/lib/files/storage/local.php
index 7b637a97059..81e32587fca 100644
--- a/lib/files/storage/local.php
+++ b/lib/files/storage/local.php
@@ -95,6 +95,9 @@ class Local extends \OC\Files\Storage\Common{
// sets the modification time of the file to the given value.
// If mtime is nil the current time is set.
// note that the access time of the file always changes to the current time.
+ if($this->file_exists($path) and !$this->isUpdatable($path)) {
+ return false;
+ }
if(!is_null($mtime)) {
$result=touch( $this->datadir.$path, $mtime );
}else{
diff --git a/lib/files/view.php b/lib/files/view.php
index e811fb093cc..0da104c107e 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -245,13 +245,13 @@ class View {
if (!is_null($mtime) and !is_numeric($mtime)) {
$mtime = strtotime($mtime);
}
-
+
$hooks = array('touch');
-
+
if (!$this->file_exists($path)) {
$hooks[] = 'write';
}
-
+
return $this->basicOperation('touch', $path, $hooks, $mtime);
}
@@ -263,11 +263,12 @@ class View {
if (is_resource($data)) { //not having to deal with streams in file_put_contents makes life easier
$absolutePath = Filesystem::normalizePath($this->getAbsolutePath($path));
if (\OC_FileProxy::runPreProxies('file_put_contents', $absolutePath, $data)
- && Filesystem::isValidPath($path)) {
+ && Filesystem::isValidPath($path)
+ ) {
$path = $this->getRelativePath($absolutePath);
$exists = $this->file_exists($path);
$run = true;
- if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) ) {
+ if ($this->fakeRoot == Filesystem::getRoot() && !Cache\Scanner::isIgnoredFile($path)) {
if (!$exists) {
\OC_Hook::emit(
Filesystem::CLASSNAME,
@@ -295,7 +296,7 @@ class View {
list ($count, $result) = \OC_Helper::streamCopy($data, $target);
fclose($target);
fclose($data);
- if ($this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) ) {
+ if ($this->fakeRoot == Filesystem::getRoot() && !Cache\Scanner::isIgnoredFile($path)) {
if (!$exists) {
\OC_Hook::emit(
Filesystem::CLASSNAME,
@@ -335,8 +336,11 @@ class View {
$postFix2 = (substr($path2, -1, 1) === '/') ? '/' : '';
$absolutePath1 = Filesystem::normalizePath($this->getAbsolutePath($path1));
$absolutePath2 = Filesystem::normalizePath($this->getAbsolutePath($path2));
- if (\OC_FileProxy::runPreProxies('rename', $absolutePath1, $absolutePath2)
- and Filesystem::isValidPath($path2)) {
+ if (
+ \OC_FileProxy::runPreProxies('rename', $absolutePath1, $absolutePath2)
+ and Filesystem::isValidPath($path2)
+ and Filesystem::isValidPath($path1)
+ ) {
$path1 = $this->getRelativePath($absolutePath1);
$path2 = $this->getRelativePath($absolutePath2);
@@ -396,7 +400,11 @@ class View {
$postFix2 = (substr($path2, -1, 1) === '/') ? '/' : '';
$absolutePath1 = Filesystem::normalizePath($this->getAbsolutePath($path1));
$absolutePath2 = Filesystem::normalizePath($this->getAbsolutePath($path2));
- if (\OC_FileProxy::runPreProxies('copy', $absolutePath1, $absolutePath2) and Filesystem::isValidPath($path2)) {
+ if (
+ \OC_FileProxy::runPreProxies('copy', $absolutePath1, $absolutePath2)
+ and Filesystem::isValidPath($path2)
+ and Filesystem::isValidPath($path1)
+ ) {
$path1 = $this->getRelativePath($absolutePath1);
$path2 = $this->getRelativePath($absolutePath2);
@@ -627,7 +635,7 @@ class View {
private function runHooks($hooks, $path, $post = false) {
$prefix = ($post) ? 'post_' : '';
$run = true;
- if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot() && ! Cache\Scanner::isIgnoredFile($path) ) {
+ if (Filesystem::$loaded and $this->fakeRoot == Filesystem::getRoot() && !Cache\Scanner::isIgnoredFile($path)) {
foreach ($hooks as $hook) {
if ($hook != 'read') {
\OC_Hook::emit(
@@ -731,6 +739,7 @@ class View {
* get the content of a directory
*
* @param string $directory path under datadirectory
+ * @param string $mimetype_filter limit returned content to this mimetype or mimepart
* @return array
*/
public function getDirectoryContent($directory, $mimetype_filter = '') {
@@ -930,11 +939,11 @@ class View {
}
/**
- * Get the owner for a file or folder
- *
- * @param string $path
- * @return string
- */
+ * Get the owner for a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
public function getOwner($path) {
return $this->basicOperation('getOwner', $path);
}
diff --git a/lib/helper.php b/lib/helper.php
index 73484ad913f..2ba70294f4b 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -159,7 +159,7 @@ class OC_Helper {
*/
public static function imagePath( $app, $image ) {
// Read the selected theme from the config file
- $theme=OC_Config::getValue( "theme" );
+ $theme = OC_Util::getTheme();
// Check if the app is in the app folder
if( file_exists( OC::$SERVERROOT."/themes/$theme/apps/$app/img/$image" )) {
diff --git a/lib/json.php b/lib/json.php
index f929e958957..6ba0b13806b 100644
--- a/lib/json.php
+++ b/lib/json.php
@@ -14,7 +14,7 @@ class OC_JSON{
public static function setContentTypeHeader($type='application/json') {
if (!self::$send_content_type_header) {
// We send json data
- header( 'Content-Type: '.$type );
+ header( 'Content-Type: '.$type . '; charset=utf-8');
self::$send_content_type_header = true;
}
}
diff --git a/lib/l10n.php b/lib/l10n.php
index 1e07a9b9557..315e326b292 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -298,10 +298,16 @@ class OC_L10N{
$temp = explode(';', $i);
$temp[0] = str_replace('-', '_', $temp[0]);
if( ($key = array_search($temp[0], $available)) !== false) {
+ if (is_null($app)) {
+ self::$language = $available[$key];
+ }
return $available[$key];
}
foreach($available as $l) {
if ( $temp[0] == substr($l, 0, 2) ) {
+ if (is_null($app)) {
+ self::$language = $l;
+ }
return $l;
}
}
diff --git a/lib/l10n/ar.php b/lib/l10n/ar.php
index 8b7324f3ff4..ae8233f80da 100644
--- a/lib/l10n/ar.php
+++ b/lib/l10n/ar.php
@@ -18,7 +18,6 @@
"Images" => "صور",
"Set an admin username." => "اعداد اسم مستخدم للمدير",
"Set an admin password." => "اعداد كلمة مرور للمدير",
-"Specify a data folder." => "تحديد مجلد ",
"%s enter the database username." => "%s ادخل اسم المستخدم الخاص بقاعدة البيانات.",
"%s enter the database name." => "%s ادخل اسم فاعدة البيانات",
"%s you may not use dots in the database name" => "%s لا يسمح لك باستخدام نقطه (.) في اسم قاعدة البيانات",
diff --git a/lib/l10n/bg_BG.php b/lib/l10n/bg_BG.php
index d32e2aadfc5..2d4775a89f3 100644
--- a/lib/l10n/bg_BG.php
+++ b/lib/l10n/bg_BG.php
@@ -18,7 +18,6 @@
"Images" => "Снимки",
"Set an admin username." => "Въведете потребителско име за администратор.",
"Set an admin password." => "Въведете парола за администратор.",
-"Specify a data folder." => "Укажете папка за данни",
"%s enter the database username." => "%s въведете потребителско име за базата с данни.",
"%s enter the database name." => "%s въведете име на базата с данни.",
"%s you may not use dots in the database name" => "%s, не можете да ползвате точки в името на базата от данни",
diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php
index 108bb5c09be..16dc74f40c4 100644
--- a/lib/l10n/ca.php
+++ b/lib/l10n/ca.php
@@ -18,7 +18,6 @@
"Images" => "Imatges",
"Set an admin username." => "Establiu un nom d'usuari per l'administrador.",
"Set an admin password." => "Establiu una contrasenya per l'administrador.",
-"Specify a data folder." => "Especifiqueu una carpeta de dades.",
"%s enter the database username." => "%s escriviu el nom d'usuari de la base de dades.",
"%s enter the database name." => "%s escriviu el nom de la base de dades.",
"%s you may not use dots in the database name" => "%s no podeu usar punts en el nom de la base de dades",
diff --git a/lib/l10n/cs_CZ.php b/lib/l10n/cs_CZ.php
index d9ec3d82cf7..79161c74e8e 100644
--- a/lib/l10n/cs_CZ.php
+++ b/lib/l10n/cs_CZ.php
@@ -18,7 +18,6 @@
"Images" => "Obrázky",
"Set an admin username." => "Zadejte uživatelské jméno správce.",
"Set an admin password." => "Zadejte heslo správce.",
-"Specify a data folder." => "Určete složku dat.",
"%s enter the database username." => "Zadejte uživatelské jméno %s databáze.",
"%s enter the database name." => "Zadejte název databáze pro %s databáze.",
"%s you may not use dots in the database name" => "V názvu databáze %s nesmíte používat tečky.",
diff --git a/lib/l10n/cy_GB.php b/lib/l10n/cy_GB.php
new file mode 100644
index 00000000000..6cf88c15ccc
--- /dev/null
+++ b/lib/l10n/cy_GB.php
@@ -0,0 +1,55 @@
+<?php $TRANSLATIONS = array(
+"Help" => "Cymorth",
+"Personal" => "Personol",
+"Settings" => "Gosodiadau",
+"Users" => "Defnyddwyr",
+"Apps" => "Pecynnau",
+"Admin" => "Gweinyddu",
+"ZIP download is turned off." => "Mae llwytho ZIP wedi ei ddiffodd.",
+"Files need to be downloaded one by one." => "Mae angen llwytho ffeiliau i lawr fesul un.",
+"Back to Files" => "Nôl i Ffeiliau",
+"Selected files too large to generate zip file." => "Mae'r ffeiliau ddewiswyd yn rhy fawr i gynhyrchu ffeil zip.",
+"couldn't be determined" => "methwyd pennu",
+"Application is not enabled" => "Nid yw'r pecyn wedi'i alluogi",
+"Authentication error" => "Gwall dilysu",
+"Token expired. Please reload page." => "Tocyn wedi dod i ben. Ail-lwythwch y dudalen.",
+"Files" => "Ffeiliau",
+"Text" => "Testun",
+"Images" => "Delweddau",
+"Set an admin username." => "Creu enw defnyddiwr i'r gweinyddwr.",
+"Set an admin password." => "Gosod cyfrinair y gweinyddwr.",
+"%s enter the database username." => "%s rhowch enw defnyddiwr y gronfa ddata.",
+"%s enter the database name." => "%s rhowch enw'r gronfa ddata.",
+"%s you may not use dots in the database name" => "%s does dim hawl defnyddio dot yn enw'r gronfa ddata",
+"%s set the database host." => "%s gosod gwesteiwr y gronfa ddata.",
+"PostgreSQL username and/or password not valid" => "Enw a/neu gyfrinair PostgreSQL annilys",
+"You need to enter either an existing account or the administrator." => "Rhaid i chi naill ai gyflwyno cyfrif presennol neu'r gweinyddwr.",
+"Oracle username and/or password not valid" => "Enw a/neu gyfrinair Oracle annilys",
+"MySQL username and/or password not valid" => "Enw a/neu gyfrinair MySQL annilys",
+"DB Error: \"%s\"" => "Gwall DB: \"%s\"",
+"Offending command was: \"%s\"" => "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "Defnyddiwr MySQL '%s'@'localhost' yn bodoli eisoes.",
+"Drop this user from MySQL" => "Gollwng y defnyddiwr hwn o MySQL",
+"MySQL user '%s'@'%%' already exists" => "Defnyddiwr MySQL '%s'@'%%' eisoes yn bodoli",
+"Drop this user from MySQL." => "Gollwng y defnyddiwr hwn o MySQL.",
+"Offending command was: \"%s\", name: %s, password: %s" => "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\", enw: %s, cyfrinair: %s",
+"MS SQL username and/or password not valid: %s" => "Enw a/neu gyfrinair MS SQL annilys: %s",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Nid yw eich gweinydd wedi'i gyflunio eto i ganiatáu cydweddu ffeiliau oherwydd bod y rhyngwyneb WebDAV wedi torri.",
+"Please double check the <a href='%s'>installation guides</a>." => "Gwiriwch y <a href='%s'>canllawiau gosod</a> eto.",
+"seconds ago" => "eiliad yn ôl",
+"1 minute ago" => "1 munud yn ôl",
+"%d minutes ago" => "%d munud yn ôl",
+"1 hour ago" => "1 awr yn ôl",
+"%d hours ago" => "%d awr yn ôl",
+"today" => "heddiw",
+"yesterday" => "ddoe",
+"%d days ago" => "%d diwrnod yn ôl",
+"last month" => "mis diwethaf",
+"%d months ago" => "%d mis yn ôl",
+"last year" => "y llynedd",
+"years ago" => "blwyddyn yn ôl",
+"%s is available. Get <a href=\"%s\">more information</a>" => "%s ar gael. <a href=\"%s\">Mwy o wybodaeth</a>",
+"up to date" => "cyfredol",
+"updates check is disabled" => "gwirio am ddiweddariadau wedi'i analluogi",
+"Could not find category \"%s\"" => "Methu canfod categori \"%s\""
+);
diff --git a/lib/l10n/da.php b/lib/l10n/da.php
index 38ccbbe8e21..4850d0be19a 100644
--- a/lib/l10n/da.php
+++ b/lib/l10n/da.php
@@ -18,7 +18,6 @@
"Images" => "Billeder",
"Set an admin username." => "Angiv et admin brugernavn.",
"Set an admin password." => "Angiv et admin kodeord.",
-"Specify a data folder." => "Specificer en data mappe.",
"%s enter the database username." => "%s indtast database brugernavnet.",
"%s enter the database name." => "%s indtast database navnet.",
"%s you may not use dots in the database name" => "%s du må ikke bruge punktummer i databasenavnet.",
diff --git a/lib/l10n/de.php b/lib/l10n/de.php
index 3c2069d4637..7a680574bfa 100644
--- a/lib/l10n/de.php
+++ b/lib/l10n/de.php
@@ -18,7 +18,6 @@
"Images" => "Bilder",
"Set an admin username." => "Setze Administrator Benutzername.",
"Set an admin password." => "Setze Administrator Passwort",
-"Specify a data folder." => "Datei-Verzeichnis angeben.",
"%s enter the database username." => "%s gib den Datenbank-Benutzernamen an.",
"%s enter the database name." => "%s gib den Datenbank-Namen an.",
"%s you may not use dots in the database name" => "%s Der Datenbank-Name darf keine Punkte enthalten",
@@ -36,7 +35,7 @@
"Offending command was: \"%s\", name: %s, password: %s" => "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s",
"MS SQL username and/or password not valid: %s" => "MS SQL Benutzername und/oder Password ungültig: %s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Dein Web-Server ist noch nicht für Datei-Synchronisation bereit, weil die WebDAV-Schnittstelle vermutlich defekt ist.",
-"Please double check the <a href='%s'>installation guides</a>." => "Bitte prüfe die <a href='%s'>Instalationsanleitungen</a>.",
+"Please double check the <a href='%s'>installation guides</a>." => "Bitte prüfe die <a href='%s'>Installationsanleitungen</a>.",
"seconds ago" => "Gerade eben",
"1 minute ago" => "Vor einer Minute",
"%d minutes ago" => "Vor %d Minuten",
diff --git a/lib/l10n/de_DE.php b/lib/l10n/de_DE.php
index 9978cdf8b31..eb002c97be2 100644
--- a/lib/l10n/de_DE.php
+++ b/lib/l10n/de_DE.php
@@ -18,7 +18,6 @@
"Images" => "Bilder",
"Set an admin username." => "Setze Administrator Benutzername.",
"Set an admin password." => "Setze Administrator Passwort",
-"Specify a data folder." => "Datei-Verzeichnis angeben",
"%s enter the database username." => "%s geben Sie den Datenbank-Benutzernamen an.",
"%s enter the database name." => "%s geben Sie den Datenbank-Namen an.",
"%s you may not use dots in the database name" => "%s Der Datenbank-Name darf keine Punkte enthalten",
@@ -36,7 +35,7 @@
"Offending command was: \"%s\", name: %s, password: %s" => "Fehlerhafter Befehl war: \"%s\", Name: %s, Passwort: %s",
"MS SQL username and/or password not valid: %s" => "MS SQL Benutzername und/oder Passwort ungültig: %s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ihr Web-Server ist noch nicht für Datei-Synchronisation bereit, weil die WebDAV-Schnittstelle vermutlich defekt ist.",
-"Please double check the <a href='%s'>installation guides</a>." => "Bitte prüfen Sie die <a href='%s'>Instalationsanleitungen</a>.",
+"Please double check the <a href='%s'>installation guides</a>." => "Bitte prüfen Sie die <a href='%s'>Installationsanleitungen</a>.",
"seconds ago" => "Gerade eben",
"1 minute ago" => "Vor einer Minute",
"%d minutes ago" => "Vor %d Minuten",
diff --git a/lib/l10n/el.php b/lib/l10n/el.php
index c17a33dfee1..63f5d8eb836 100644
--- a/lib/l10n/el.php
+++ b/lib/l10n/el.php
@@ -18,19 +18,22 @@
"Images" => "Εικόνες",
"Set an admin username." => "Εισάγετε όνομα χρήστη διαχειριστή.",
"Set an admin password." => "Εισάγετε συνθηματικό διαχειριστή.",
-"Specify a data folder." => "Καθορίστε τον φάκελο δεδομένων.",
"%s enter the database username." => "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." => "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" => "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
+"%s set the database host." => "%s ρυθμίση του κεντρικόυ υπολογιστή βάσης δεδομένων. ",
"PostgreSQL username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL",
"You need to enter either an existing account or the administrator." => "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
"Oracle username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle",
"MySQL username and/or password not valid" => "Μη έγκυρος χρήστης και/ή συνθηματικό της MySQL",
"DB Error: \"%s\"" => "Σφάλμα Βάσης Δεδομένων: \"%s\"",
+"Offending command was: \"%s\"" => "Η εντολη παραβατικοτητας ηταν: \"%s\"",
"MySQL user '%s'@'localhost' exists already." => "Υπάρχει ήδη ο χρήστης '%s'@'localhost' της MySQL.",
"Drop this user from MySQL" => "Απόρριψη αυτού του χρήστη από την MySQL",
"MySQL user '%s'@'%%' already exists" => "Ο χρήστης '%s'@'%%' της MySQL υπάρχει ήδη",
"Drop this user from MySQL." => "Απόρριψη αυτού του χρήστη από την MySQL",
+"Offending command was: \"%s\", name: %s, password: %s" => "Η εντολη παραβατικοτητας ηταν: \"%s\", ονομα: %s, κωδικος: %s",
+"MS SQL username and/or password not valid: %s" => "Το όνομα χρήστη και/ή ο κωδικός της MS SQL δεν είναι έγκυρα: %s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ο διακομιστής σας δεν έχει ρυθμιστεί κατάλληλα ώστε να επιτρέπει τον συγχρονισμό αρχείων γιατί η διεπαφή WebDAV πιθανόν να είναι κατεστραμμένη.",
"Please double check the <a href='%s'>installation guides</a>." => "Ελέγξτε ξανά τις <a href='%s'>οδηγίες εγκατάστασης</a>.",
"seconds ago" => "δευτερόλεπτα πριν",
diff --git a/lib/l10n/es.php b/lib/l10n/es.php
index 37b15a375c4..5b868e2d451 100644
--- a/lib/l10n/es.php
+++ b/lib/l10n/es.php
@@ -18,7 +18,6 @@
"Images" => "Imágenes",
"Set an admin username." => "Configurar un nombre de usuario del administrador",
"Set an admin password." => "Configurar la contraseña del administrador.",
-"Specify a data folder." => "Especificar la carpeta de datos.",
"%s enter the database username." => "%s ingresar el usuario de la base de datos.",
"%s enter the database name." => "%s ingresar el nombre de la base de datos",
"%s you may not use dots in the database name" => "%s no se puede utilizar puntos en el nombre de la base de datos",
diff --git a/lib/l10n/es_AR.php b/lib/l10n/es_AR.php
index ff3d47285fc..fc25cd6b1d8 100644
--- a/lib/l10n/es_AR.php
+++ b/lib/l10n/es_AR.php
@@ -18,7 +18,6 @@
"Images" => "Imágenes",
"Set an admin username." => "Configurar un nombre de administrador",
"Set an admin password." => "Configurar una palabra clave de administrador",
-"Specify a data folder." => "Especificar un directorio de datos",
"%s enter the database username." => "%s Entre el Usuario de la Base de Datos",
"%s enter the database name." => "%s Entre el Nombre de la Base de Datos",
"%s you may not use dots in the database name" => "%s no puede usar puntos en el nombre de la Base de Datos",
diff --git a/lib/l10n/et_EE.php b/lib/l10n/et_EE.php
index cdcf762d9a6..25909e1555e 100644
--- a/lib/l10n/et_EE.php
+++ b/lib/l10n/et_EE.php
@@ -9,6 +9,7 @@
"Files need to be downloaded one by one." => "Failid tuleb alla laadida ükshaaval.",
"Back to Files" => "Tagasi failide juurde",
"Selected files too large to generate zip file." => "Valitud failid on ZIP-faili loomiseks liiga suured.",
+"couldn't be determined" => "Ei suuda tuvastada",
"Application is not enabled" => "Rakendus pole sisse lülitatud",
"Authentication error" => "Autentimise viga",
"Token expired. Please reload page." => "Kontrollkood aegus. Paelun lae leht uuesti.",
@@ -17,10 +18,24 @@
"Images" => "Pildid",
"Set an admin username." => "Määra admin kasutajanimi.",
"Set an admin password." => "Määra admini parool.",
-"Specify a data folder." => "Määra andmete kaust.",
+"%s enter the database username." => "%s sisesta andmebaasi kasutajatunnus",
+"%s enter the database name." => "%s sisesta andmebaasi nimi.",
+"%s you may not use dots in the database name" => "%s punktide kasutamine andmebaasi nimes pole lubatud",
+"%s set the database host." => "%s määra andmebaasi server.",
+"PostgreSQL username and/or password not valid" => "PostgreSQL kasutajatunnus ja/või parool pole õiged",
+"You need to enter either an existing account or the administrator." => "Sisesta kas juba olemasolev konto või administrator.",
+"Oracle username and/or password not valid" => "Oracle kasutajatunnus ja/või parool pole õiged",
+"MySQL username and/or password not valid" => "MySQL kasutajatunnus ja/või parool pole õiged",
"DB Error: \"%s\"" => "Andmebaasi viga: \"%s\"",
+"Offending command was: \"%s\"" => "Tõrkuv käsk oli: \"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "MySQL kasutaja '%s'@'localhost' on juba olemas.",
"Drop this user from MySQL" => "Kustuta see kasutaja MySQL-ist",
+"MySQL user '%s'@'%%' already exists" => "MySQL kasutaja '%s'@'%%' on juba olemas",
"Drop this user from MySQL." => "Kustuta see kasutaja MySQL-ist.",
+"Offending command was: \"%s\", name: %s, password: %s" => "Tõrkuv käsk oli: \"%s\", nimi: %s, parool: %s",
+"MS SQL username and/or password not valid: %s" => "MS SQL kasutajatunnus ja/või parool pole õiged: %s",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Veebiserveri ei ole veel korralikult seadistatud võimaldamaks failide sünkroniseerimist, kuna WebDAV liides näib olevat mittetoimiv.",
+"Please double check the <a href='%s'>installation guides</a>." => "Palun tutvu veelkord <a href='%s'>paigalduse juhenditega</a>.",
"seconds ago" => "sekundit tagasi",
"1 minute ago" => "1 minut tagasi",
"%d minutes ago" => "%d minutit tagasi",
@@ -35,5 +50,6 @@
"years ago" => "aastat tagasi",
"%s is available. Get <a href=\"%s\">more information</a>" => "%s on saadaval. Vaata <a href=\"%s\">lisainfot</a>",
"up to date" => "ajakohane",
-"updates check is disabled" => "uuenduste kontrollimine on välja lülitatud"
+"updates check is disabled" => "uuenduste kontrollimine on välja lülitatud",
+"Could not find category \"%s\"" => "Ei leia kategooriat \"%s\""
);
diff --git a/lib/l10n/eu.php b/lib/l10n/eu.php
index 36eb397e425..fde65572d8a 100644
--- a/lib/l10n/eu.php
+++ b/lib/l10n/eu.php
@@ -18,7 +18,6 @@
"Images" => "Irudiak",
"Set an admin username." => "Ezarri administraziorako erabiltzaile izena.",
"Set an admin password." => "Ezarri administraziorako pasahitza.",
-"Specify a data folder." => "Zehaztu data karpeta.",
"%s enter the database username." => "%s sartu datu basearen erabiltzaile izena.",
"%s enter the database name." => "%s sartu datu basearen izena.",
"%s you may not use dots in the database name" => "%s ezin duzu punturik erabili datu basearen izenean.",
diff --git a/lib/l10n/fa.php b/lib/l10n/fa.php
index 282a8a56cdc..b0d423421df 100644
--- a/lib/l10n/fa.php
+++ b/lib/l10n/fa.php
@@ -14,7 +14,8 @@
"Files" => "پرونده‌ها",
"Text" => "متن",
"Images" => "تصاویر",
-"Specify a data folder." => "پوشه ای برای داده ها مشخص کنید.",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "احتمالاً وب سرور شما طوری تنظیم نشده است که اجازه ی همگام سازی فایلها را بدهد زیرا به نظر میرسد رابط WebDAV از کار افتاده است.",
+"Please double check the <a href='%s'>installation guides</a>." => "لطفاً دوباره <a href='%s'>راهنمای نصب</a>را بررسی کنید.",
"seconds ago" => "ثانیه‌ها پیش",
"1 minute ago" => "1 دقیقه پیش",
"%d minutes ago" => "%d دقیقه پیش",
diff --git a/lib/l10n/fi_FI.php b/lib/l10n/fi_FI.php
index 89a584d389d..201cae19536 100644
--- a/lib/l10n/fi_FI.php
+++ b/lib/l10n/fi_FI.php
@@ -18,7 +18,6 @@
"Images" => "Kuvat",
"Set an admin username." => "Aseta ylläpitäjän käyttäjätunnus.",
"Set an admin password." => "Aseta ylläpitäjän salasana.",
-"Specify a data folder." => "Määritä datakansio.",
"%s enter the database username." => "%s anna tietokannan käyttäjätunnus.",
"%s enter the database name." => "%s anna tietokannan nimi.",
"%s you may not use dots in the database name" => "%s et voi käyttää pisteitä tietokannan nimessä",
@@ -27,7 +26,9 @@
"MySQL username and/or password not valid" => "MySQL:n käyttäjätunnus ja/tai salasana on väärin",
"DB Error: \"%s\"" => "Tietokantavirhe: \"%s\"",
"MySQL user '%s'@'localhost' exists already." => "MySQL-käyttäjä '%s'@'localhost' on jo olemassa.",
+"Drop this user from MySQL" => "Pudota tämä käyttäjä MySQL:stä",
"MySQL user '%s'@'%%' already exists" => "MySQL-käyttäjä '%s'@'%%' on jo olemassa",
+"Drop this user from MySQL." => "Pudota tämä käyttäjä MySQL:stä.",
"MS SQL username and/or password not valid: %s" => "MS SQL -käyttäjätunnus ja/tai -salasana on väärin: %s",
"Please double check the <a href='%s'>installation guides</a>." => "Lue tarkasti <a href='%s'>asennusohjeet</a>.",
"seconds ago" => "sekuntia sitten",
diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php
index 9448502df6a..ffc29450461 100644
--- a/lib/l10n/fr.php
+++ b/lib/l10n/fr.php
@@ -18,7 +18,6 @@
"Images" => "Images",
"Set an admin username." => "Spécifiez un nom d'utilisateur pour l'administrateur.",
"Set an admin password." => "Spécifiez un mot de passe administrateur.",
-"Specify a data folder." => "Spécifiez un répertoire pour les données.",
"%s enter the database username." => "%s entrez le nom d'utilisateur de la base de données.",
"%s enter the database name." => "%s entrez le nom de la base de données.",
"%s you may not use dots in the database name" => "%s vous nez pouvez pas utiliser de points dans le nom de la base de données",
diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php
index a11724fef43..d38bf8329d1 100644
--- a/lib/l10n/gl.php
+++ b/lib/l10n/gl.php
@@ -18,7 +18,6 @@
"Images" => "Imaxes",
"Set an admin username." => "Estabeleza un nome de usuario administrador",
"Set an admin password." => "Estabeleza un contrasinal de administrador",
-"Specify a data folder." => "Especifique un cartafol de datos.",
"%s enter the database username." => "%s introduza o nome de usuario da base de datos",
"%s enter the database name." => "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" => "%s non se poden empregar puntos na base de datos",
diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php
index 537066c6fea..4621c5074b8 100644
--- a/lib/l10n/hu_HU.php
+++ b/lib/l10n/hu_HU.php
@@ -18,7 +18,6 @@
"Images" => "Képek",
"Set an admin username." => "Állítson be egy felhasználói nevet az adminisztrációhoz.",
"Set an admin password." => "Állítson be egy jelszót az adminisztrációhoz.",
-"Specify a data folder." => "Adja meg az adatokat tartalmazó könyvtár nevét.",
"%s enter the database username." => "%s adja meg az adatbázist elérő felhasználó login nevét.",
"%s enter the database name." => "%s adja meg az adatbázis nevét.",
"%s you may not use dots in the database name" => "%s az adatbázis neve nem tartalmazhat pontot",
diff --git a/lib/l10n/id.php b/lib/l10n/id.php
index 32ab5a63dd3..7eb26c5eb86 100644
--- a/lib/l10n/id.php
+++ b/lib/l10n/id.php
@@ -1,36 +1,55 @@
<?php $TRANSLATIONS = array(
-"Help" => "bantu",
-"Personal" => "perseorangan",
-"Settings" => "pengaturan",
-"Users" => "pengguna",
-"Apps" => "aplikasi",
-"Admin" => "admin",
-"ZIP download is turned off." => "download ZIP sedang dimatikan",
-"Files need to be downloaded one by one." => "file harus di unduh satu persatu",
-"Back to Files" => "kembali ke daftar file",
-"Selected files too large to generate zip file." => "file yang dipilih terlalu besar untuk membuat file zip",
-"Application is not enabled" => "aplikasi tidak diaktifkan",
-"Authentication error" => "autentikasi bermasalah",
-"Token expired. Please reload page." => "token kadaluarsa.mohon perbaharui laman.",
+"Help" => "Bantuan",
+"Personal" => "Pribadi",
+"Settings" => "Setelan",
+"Users" => "Pengguna",
+"Apps" => "Aplikasi",
+"Admin" => "Admin",
+"ZIP download is turned off." => "Pengunduhan ZIP dimatikan.",
+"Files need to be downloaded one by one." => "Berkas harus diunduh satu persatu.",
+"Back to Files" => "Kembali ke Daftar Berkas",
+"Selected files too large to generate zip file." => "Berkas yang dipilih terlalu besar untuk dibuat berkas zip-nya.",
+"couldn't be determined" => "tidak dapat ditentukan",
+"Application is not enabled" => "Aplikasi tidak diaktifkan",
+"Authentication error" => "Galat saat autentikasi",
+"Token expired. Please reload page." => "Token kedaluwarsa. Silakan muat ulang halaman.",
"Files" => "Berkas",
-"Text" => "teks",
+"Text" => "Teks",
"Images" => "Gambar",
-"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Web server anda belum terkonfigurasi untuk mengijinkan sinkronisasi berkas karena sepertinya antarmuka WebDAV rusak.",
+"Set an admin username." => "Setel nama pengguna admin.",
+"Set an admin password." => "Setel sandi admin.",
+"%s enter the database username." => "%s masukkan nama pengguna basis data.",
+"%s enter the database name." => "%s masukkan nama basis data.",
+"%s you may not use dots in the database name" => "%sAnda tidak boleh menggunakan karakter titik pada nama basis data",
+"%s set the database host." => "%s setel host basis data.",
+"PostgreSQL username and/or password not valid" => "Nama pengguna dan/atau sandi PostgreSQL tidak valid",
+"You need to enter either an existing account or the administrator." => "Anda harus memasukkan akun yang sudah ada atau administrator.",
+"Oracle username and/or password not valid" => "Nama pengguna dan/atau sandi Oracle tidak valid",
+"MySQL username and/or password not valid" => "Nama pengguna dan/atau sandi MySQL tidak valid",
+"DB Error: \"%s\"" => "Galat Basis Data: \"%s\"",
+"Offending command was: \"%s\"" => "Perintah yang bermasalah: \"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "Pengguna MySQL '%s'@'localhost' sudah ada.",
+"Drop this user from MySQL" => "Hapus pengguna ini dari MySQL",
+"MySQL user '%s'@'%%' already exists" => "Pengguna MySQL '%s'@'%%' sudah ada.",
+"Drop this user from MySQL." => "Hapus pengguna ini dari MySQL.",
+"Offending command was: \"%s\", name: %s, password: %s" => "Perintah yang bermasalah: \"%s\", nama pengguna: %s, sandi: %s",
+"MS SQL username and/or password not valid: %s" => "Nama pengguna dan/atau sandi MySQL tidak valid: %s",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Web server Anda belum dikonfigurasikan dengan baik untuk mengizinkan sinkronisasi berkas karena tampaknya antarmuka WebDAV rusak.",
"Please double check the <a href='%s'>installation guides</a>." => "Silakan periksa ulang <a href='%s'>panduan instalasi</a>.",
"seconds ago" => "beberapa detik yang lalu",
-"1 minute ago" => "1 menit lalu",
-"%d minutes ago" => "%d menit lalu",
+"1 minute ago" => "1 menit yang lalu",
+"%d minutes ago" => "%d menit yang lalu",
"1 hour ago" => "1 jam yang lalu",
"%d hours ago" => "%d jam yang lalu",
"today" => "hari ini",
"yesterday" => "kemarin",
-"%d days ago" => "%d hari lalu",
+"%d days ago" => "%d hari yang lalu",
"last month" => "bulan kemarin",
"%d months ago" => "%d bulan yang lalu",
"last year" => "tahun kemarin",
"years ago" => "beberapa tahun lalu",
-"%s is available. Get <a href=\"%s\">more information</a>" => "%s tersedia. dapatkan <a href=\"%s\"> info lebih lanjut</a>",
+"%s is available. Get <a href=\"%s\">more information</a>" => "%s tersedia. Dapatkan <a href=\"%s\">info lebih lanjut</a>",
"up to date" => "terbaru",
-"updates check is disabled" => "pengecekan pembaharuan sedang non-aktifkan",
+"updates check is disabled" => "Pemeriksaan pembaruan dinonaktifkan.",
"Could not find category \"%s\"" => "Tidak dapat menemukan kategori \"%s\""
);
diff --git a/lib/l10n/it.php b/lib/l10n/it.php
index 297f1efde05..847f767fa76 100644
--- a/lib/l10n/it.php
+++ b/lib/l10n/it.php
@@ -18,7 +18,6 @@
"Images" => "Immagini",
"Set an admin username." => "Imposta un nome utente di amministrazione.",
"Set an admin password." => "Imposta una password di amministrazione.",
-"Specify a data folder." => "Specifica una cartella dei dati.",
"%s enter the database username." => "%s digita il nome utente del database.",
"%s enter the database name." => "%s digita il nome del database.",
"%s you may not use dots in the database name" => "%s non dovresti utilizzare punti nel nome del database",
diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php
index 529eec3ac52..18d0833792d 100644
--- a/lib/l10n/ja_JP.php
+++ b/lib/l10n/ja_JP.php
@@ -18,7 +18,6 @@
"Images" => "画像",
"Set an admin username." => "管理者のユーザ名を設定。",
"Set an admin password." => "管理者のパスワードを設定。",
-"Specify a data folder." => "データフォルダを指定。",
"%s enter the database username." => "%s のデータベースのユーザ名を入力してください。",
"%s enter the database name." => "%s のデータベース名を入力してください。",
"%s you may not use dots in the database name" => "%s ではデータベース名にドットを利用できないかもしれません。",
@@ -37,7 +36,7 @@
"MS SQL username and/or password not valid: %s" => "MS SQL サーバーのユーザー名/パスワードが正しくありません: %s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "WebDAVインタフェースが動作していないと考えられるため、あなたのWEBサーバはまだファイルの同期を許可するように適切な設定がされていません。",
"Please double check the <a href='%s'>installation guides</a>." => "<a href='%s'>インストールガイド</a>をよく確認してください。",
-"seconds ago" => "秒前",
+"seconds ago" => "数秒前",
"1 minute ago" => "1分前",
"%d minutes ago" => "%d 分前",
"1 hour ago" => "1 時間前",
diff --git a/lib/l10n/ka_GE.php b/lib/l10n/ka_GE.php
index ff623827216..ffdf549f480 100644
--- a/lib/l10n/ka_GE.php
+++ b/lib/l10n/ka_GE.php
@@ -5,16 +5,51 @@
"Users" => "მომხმარებელი",
"Apps" => "აპლიკაციები",
"Admin" => "ადმინისტრატორი",
+"ZIP download is turned off." => "ZIP download–ი გათიშულია",
+"Files need to be downloaded one by one." => "ფაილები უნდა გადმოიტვირთოს სათითაოდ.",
+"Back to Files" => "უკან ფაილებში",
+"Selected files too large to generate zip file." => "არჩეული ფაილები ძალიან დიდია zip ფაილის გენერაციისთვის.",
+"couldn't be determined" => "ვერ განისაზღვრა",
+"Application is not enabled" => "აპლიკაცია არ არის აქტიური",
"Authentication error" => "ავთენტიფიკაციის შეცდომა",
+"Token expired. Please reload page." => "Token–ს ვადა გაუვიდა. გთხოვთ განაახლოთ გვერდი.",
"Files" => "ფაილები",
"Text" => "ტექსტი",
+"Images" => "სურათები",
+"Set an admin username." => "დააყენეთ ადმინისტრატორის სახელი.",
+"Set an admin password." => "დააყენეთ ადმინისტრატორის პაროლი.",
+"%s enter the database username." => "%s შეიყვანეთ ბაზის იუზერნეიმი.",
+"%s enter the database name." => "%s შეიყვანეთ ბაზის სახელი.",
+"%s you may not use dots in the database name" => "%s არ მიუთითოთ წერტილი ბაზის სახელში",
+"%s set the database host." => "%s მიუთითეთ ბაზის ჰოსტი.",
+"PostgreSQL username and/or password not valid" => "PostgreSQL იუზერნეიმი და/ან პაროლი არ არის სწორი",
+"You need to enter either an existing account or the administrator." => "თქვენ უნდა შეიყვანოთ არსებული მომხმარებელის სახელი ან ადმინისტრატორი.",
+"Oracle username and/or password not valid" => "Oracle იუზერნეიმი და/ან პაროლი არ არის სწორი",
+"MySQL username and/or password not valid" => "MySQL იუზერნეიმი და/ან პაროლი არ არის სწორი",
+"DB Error: \"%s\"" => "DB შეცდომა: \"%s\"",
+"Offending command was: \"%s\"" => "Offending ბრძანება იყო: \"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "MySQL მომხმარებელი '%s'@'localhost' უკვე არსებობს.",
+"Drop this user from MySQL" => "წაშალე ეს მომხამრებელი MySQL–იდან",
+"MySQL user '%s'@'%%' already exists" => "MySQL მომხმარებელი '%s'@'%%' უკვე არსებობს",
+"Drop this user from MySQL." => "წაშალე ეს მომხამრებელი MySQL–იდან",
+"Offending command was: \"%s\", name: %s, password: %s" => "Offending ბრძანება იყო: \"%s\", სახელი: %s, პაროლი: %s",
+"MS SQL username and/or password not valid: %s" => "MS SQL მომხმარებელი და/ან პაროლი არ არის მართებული: %s",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "თქვენი web სერვერი არ არის კონფიგურირებული ფაილ სინქრონიზაციისთვის, რადგან WebDAV ინტერფეისი შეიძლება იყოს გატეხილი.",
+"Please double check the <a href='%s'>installation guides</a>." => "გთხოვთ გადაათვალიეროთ <a href='%s'>ინსტალაციის გზამკვლევი</a>.",
"seconds ago" => "წამის წინ",
"1 minute ago" => "1 წუთის წინ",
+"%d minutes ago" => "%d წუთის წინ",
+"1 hour ago" => "1 საათის წინ",
+"%d hours ago" => "%d საათის წინ",
"today" => "დღეს",
"yesterday" => "გუშინ",
+"%d days ago" => "%d დღის წინ",
"last month" => "გასულ თვეში",
+"%d months ago" => "%d თვის წინ",
"last year" => "ბოლო წელს",
"years ago" => "წლის წინ",
+"%s is available. Get <a href=\"%s\">more information</a>" => "%s ხელმისაწვდომია. მიიღეთ <a href=\"%s\">უფრო მეტი ინფორმაცია</a>",
"up to date" => "განახლებულია",
-"updates check is disabled" => "განახლების ძებნა გათიშულია"
+"updates check is disabled" => "განახლების ძებნა გათიშულია",
+"Could not find category \"%s\"" => "\"%s\" კატეგორიის მოძებნა ვერ მოხერხდა"
);
diff --git a/lib/l10n/lv.php b/lib/l10n/lv.php
index c73d306ca0a..38793914073 100644
--- a/lib/l10n/lv.php
+++ b/lib/l10n/lv.php
@@ -18,7 +18,6 @@
"Images" => "Attēli",
"Set an admin username." => "Iestatiet administratora lietotājvārdu.",
"Set an admin password." => "Iestatiet administratora paroli.",
-"Specify a data folder." => "Norādiet datu mapi.",
"%s enter the database username." => "%s ievadiet datubāzes lietotājvārdu.",
"%s enter the database name." => "%s ievadiet datubāzes nosaukumu.",
"%s you may not use dots in the database name" => "%s datubāžu nosaukumos nedrīkst izmantot punktus",
diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php
index 10a4060e119..f7cc6ad899c 100644
--- a/lib/l10n/nl.php
+++ b/lib/l10n/nl.php
@@ -18,7 +18,6 @@
"Images" => "Afbeeldingen",
"Set an admin username." => "Stel de gebruikersnaam van de beheerder in.",
"Set an admin password." => "Stel een beheerderswachtwoord in.",
-"Specify a data folder." => "Geef een datamap op.",
"%s enter the database username." => "%s opgeven database gebruikersnaam.",
"%s enter the database name." => "%s opgeven databasenaam.",
"%s you may not use dots in the database name" => "%s er mogen geen puntjes in de databasenaam voorkomen",
diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php
index 9a1a5e836c9..c508794c42a 100644
--- a/lib/l10n/pl.php
+++ b/lib/l10n/pl.php
@@ -18,7 +18,6 @@
"Images" => "Obrazy",
"Set an admin username." => "Ustaw nazwę administratora.",
"Set an admin password." => "Ustaw hasło administratora.",
-"Specify a data folder." => "Określ folder danych.",
"%s enter the database username." => "%s wpisz nazwę użytkownika do bazy",
"%s enter the database name." => "%s wpisz nazwę bazy.",
"%s you may not use dots in the database name" => "%s nie można używać kropki w nazwie bazy danych",
diff --git a/lib/l10n/pt_BR.php b/lib/l10n/pt_BR.php
index d4f410d8885..8196b43be23 100644
--- a/lib/l10n/pt_BR.php
+++ b/lib/l10n/pt_BR.php
@@ -18,7 +18,6 @@
"Images" => "Imagens",
"Set an admin username." => "Defina um nome de usuário de administrador.",
"Set an admin password." => "Defina uma senha de administrador.",
-"Specify a data folder." => "Especifique uma pasta de dados.",
"%s enter the database username." => "%s insira o nome de usuário do banco de dados.",
"%s enter the database name." => "%s insira o nome do banco de dados.",
"%s you may not use dots in the database name" => "%s você não pode usar pontos no nome do banco de dados",
diff --git a/lib/l10n/pt_PT.php b/lib/l10n/pt_PT.php
index 2c813f5b07c..12470686e7e 100644
--- a/lib/l10n/pt_PT.php
+++ b/lib/l10n/pt_PT.php
@@ -18,7 +18,6 @@
"Images" => "Imagens",
"Set an admin username." => "Definir um nome de utilizador de administrador",
"Set an admin password." => "Definiar uma password de administrador",
-"Specify a data folder." => "Especificar a pasta para os dados.",
"%s enter the database username." => "%s introduza o nome de utilizador da base de dados",
"%s enter the database name." => "%s introduza o nome da base de dados",
"%s you may not use dots in the database name" => "%s não é permitido utilizar pontos (.) no nome da base de dados",
diff --git a/lib/l10n/ru.php b/lib/l10n/ru.php
index 25a88d5efc2..6f351cd4584 100644
--- a/lib/l10n/ru.php
+++ b/lib/l10n/ru.php
@@ -18,7 +18,6 @@
"Images" => "Изображения",
"Set an admin username." => "Установить имя пользователя для admin.",
"Set an admin password." => "становит пароль для admin.",
-"Specify a data folder." => "Указать папку данных.",
"%s enter the database username." => "%s введите имя пользователя базы данных.",
"%s enter the database name." => "%s введите имя базы данных.",
"%s you may not use dots in the database name" => "%s Вы не можете использовать точки в имени базы данных",
diff --git a/lib/l10n/sk_SK.php b/lib/l10n/sk_SK.php
index 8c9ce61622c..2ab255ef8fe 100644
--- a/lib/l10n/sk_SK.php
+++ b/lib/l10n/sk_SK.php
@@ -18,7 +18,6 @@
"Images" => "Obrázky",
"Set an admin username." => "Zadajte používateľské meno administrátora.",
"Set an admin password." => "Zadajte heslo administrátora.",
-"Specify a data folder." => "Zadajte priečinok pre dáta.",
"%s enter the database username." => "Zadajte používateľské meno %s databázy..",
"%s enter the database name." => "Zadajte názov databázy pre %s databázy.",
"%s you may not use dots in the database name" => "V názve databázy %s nemôžete používať bodky",
diff --git a/lib/l10n/sl.php b/lib/l10n/sl.php
index a2e1719de87..8775cdd0303 100644
--- a/lib/l10n/sl.php
+++ b/lib/l10n/sl.php
@@ -18,7 +18,6 @@
"Images" => "Slike",
"Set an admin username." => "Nastavi uporabniško ime skrbnika.",
"Set an admin password." => "Nastavi geslo skrbnika.",
-"Specify a data folder." => "Določi podatkovno mapo.",
"%s enter the database username." => "%s - vnos uporabniškega imena podatkovne zbirke.",
"%s enter the database name." => "%s - vnos imena podatkovne zbirke.",
"%s you may not use dots in the database name" => "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik.",
diff --git a/lib/l10n/sq.php b/lib/l10n/sq.php
index 78c9977c3c6..649af3c5c25 100644
--- a/lib/l10n/sq.php
+++ b/lib/l10n/sq.php
@@ -11,18 +11,34 @@
"Selected files too large to generate zip file." => "Skedarët e selektuar janë shumë të mëdhenj për të krijuar një skedar ZIP.",
"couldn't be determined" => "nuk u vendos dot",
"Application is not enabled" => "Programi nuk është i aktivizuar.",
-"Authentication error" => "Gabim gjatë vërtetimit të identitetit",
+"Authentication error" => "Veprim i gabuar gjatë vërtetimit të identitetit",
"Token expired. Please reload page." => "Përmbajtja ka skaduar. Ju lutemi ringarkoni faqen.",
"Files" => "Skedarët",
"Text" => "Tekst",
"Images" => "Foto",
"Set an admin username." => "Cakto emrin e administratorit.",
"Set an admin password." => "Cakto kodin e administratorit.",
-"Specify a data folder." => "Specifiko dosjen e të dhënave.",
+"%s enter the database username." => "% shkruani përdoruesin e database-it.",
+"%s enter the database name." => "%s shkruani emrin e database-it.",
+"%s you may not use dots in the database name" => "%s nuk mund të përdorni pikat tek emri i database-it",
+"%s set the database host." => "%s caktoni pozicionin (host) e database-it.",
+"PostgreSQL username and/or password not valid" => "Përdoruesi dhe/apo kodi i PostgreSQL i pavlefshëm",
+"You need to enter either an existing account or the administrator." => "Duhet të përdorni një llogari ekzistuese ose llogarinë e administratorit.",
+"Oracle username and/or password not valid" => "Përdoruesi dhe/apo kodi i Oracle-it i pavlefshëm",
+"MySQL username and/or password not valid" => "Përdoruesi dhe/apo kodi i MySQL-it i pavlefshëm.",
+"DB Error: \"%s\"" => "Veprim i gabuar i DB-it: \"%s\"",
+"Offending command was: \"%s\"" => "Komanda e gabuar ishte: \"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "Përdoruesi MySQL '%s'@'localhost' ekziston.",
+"Drop this user from MySQL" => "Eliminoni këtë përdorues nga MySQL",
+"MySQL user '%s'@'%%' already exists" => "Përdoruesi MySQL '%s'@'%%' ekziston",
+"Drop this user from MySQL." => "Eliminoni këtë përdorues nga MySQL.",
+"Offending command was: \"%s\", name: %s, password: %s" => "Komanda e gabuar ishte: \"%s\", përdoruesi: %s, kodi: %s",
+"MS SQL username and/or password not valid: %s" => "Përdoruesi dhe/apo kodi i MS SQL i pavlefshëm: %s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Serveri web i juaji nuk është konfiguruar akoma për të lejuar sinkronizimin e skedarëve sepse ndërfaqja WebDAV mund të jetë e dëmtuar.",
"Please double check the <a href='%s'>installation guides</a>." => "Ju lutemi kontrolloni mirë <a href='%s'>shoqëruesin e instalimit</a>.",
"seconds ago" => "sekonda më parë",
"1 minute ago" => "1 minutë më parë",
+"%d minutes ago" => "%d minuta më parë",
"1 hour ago" => "1 orë më parë",
"%d hours ago" => "%d orë më parë",
"today" => "sot",
diff --git a/lib/l10n/sr.php b/lib/l10n/sr.php
index 1161b0a44b7..5c6620f82ba 100644
--- a/lib/l10n/sr.php
+++ b/lib/l10n/sr.php
@@ -16,6 +16,8 @@
"Files" => "Датотеке",
"Text" => "Текст",
"Images" => "Слике",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Ваш веб сервер тренутно не подржава синхронизацију датотека јер се чини да је WebDAV сучеље неисправно.",
+"Please double check the <a href='%s'>installation guides</a>." => "Погледајте <a href='%s'>водиче за инсталацију</a>.",
"seconds ago" => "пре неколико секунди",
"1 minute ago" => "пре 1 минут",
"%d minutes ago" => "пре %d минута",
diff --git a/lib/l10n/tr.php b/lib/l10n/tr.php
index 84278f6d4c4..4a8292989ab 100644
--- a/lib/l10n/tr.php
+++ b/lib/l10n/tr.php
@@ -16,6 +16,16 @@
"Files" => "Dosyalar",
"Text" => "Metin",
"Images" => "Resimler",
+"Set an admin username." => "Bir adi kullanici vermek. ",
+"Set an admin password." => "Parola yonetici birlemek. ",
+"PostgreSQL username and/or password not valid" => "PostgreSQL adi kullanici ve/veya parola yasal degildir. ",
+"You need to enter either an existing account or the administrator." => "Bir konto veya kullanici birlemek ihtiyacin. ",
+"Oracle username and/or password not valid" => "Adi klullanici ve/veya parola Oracle mantikli değildir. ",
+"DB Error: \"%s\"" => "DB Hata: ''%s''",
+"Offending command was: \"%s\"" => "Komut rahasiz ''%s''. ",
+"MySQL user '%s'@'localhost' exists already." => "MySQL kullanici '%s @local host zatan var. ",
+"Drop this user from MySQL" => "Bu kullanici MySQLden list disari koymak. ",
+"MySQL user '%s'@'%%' already exists" => "MySQL kullanici '%s @ % % zaten var (zaten yazili)",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.",
"Please double check the <a href='%s'>installation guides</a>." => "Lütfen <a href='%s'>kurulum kılavuzlarını</a> iki kez kontrol edin.",
"seconds ago" => "saniye önce",
diff --git a/lib/l10n/uk.php b/lib/l10n/uk.php
index 68f7151d15e..9dfc16c3464 100644
--- a/lib/l10n/uk.php
+++ b/lib/l10n/uk.php
@@ -18,7 +18,6 @@
"Images" => "Зображення",
"Set an admin username." => "Встановіть ім'я адміністратора.",
"Set an admin password." => "Встановіть пароль адміністратора.",
-"Specify a data folder." => "Вкажіть теку для даних.",
"%s enter the database username." => "%s введіть ім'я користувача бази даних.",
"%s enter the database name." => "%s введіть назву бази даних.",
"%s you may not use dots in the database name" => "%s не можна використовувати крапки в назві бази даних",
diff --git a/lib/l10n/zh_CN.GB2312.php b/lib/l10n/zh_CN.GB2312.php
index 08975e44598..16487339421 100644
--- a/lib/l10n/zh_CN.GB2312.php
+++ b/lib/l10n/zh_CN.GB2312.php
@@ -15,9 +15,12 @@
"Files" => "文件",
"Text" => "文本",
"Images" => "图片",
+"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "因WebDAV接口故障,您的网络服务器好像并未允许文件同步。",
+"Please double check the <a href='%s'>installation guides</a>." => "请双击<a href='%s'>安装向导</a>。",
"seconds ago" => "秒前",
"1 minute ago" => "1 分钟前",
"%d minutes ago" => "%d 分钟前",
+"1 hour ago" => "1小时前",
"today" => "今天",
"yesterday" => "昨天",
"%d days ago" => "%d 天前",
diff --git a/lib/l10n/zh_CN.php b/lib/l10n/zh_CN.php
index b79fdfcca1d..2dea94dec36 100644
--- a/lib/l10n/zh_CN.php
+++ b/lib/l10n/zh_CN.php
@@ -18,7 +18,6 @@
"Images" => "图片",
"Set an admin username." => "请设置一个管理员用户名。",
"Set an admin password." => "请设置一个管理员密码。",
-"Specify a data folder." => "请指定一个数据目录。",
"%s enter the database username." => "%s 输入数据库用户名。",
"%s enter the database name." => "%s 输入数据库名称。",
"%s you may not use dots in the database name" => "%s 您不能在数据库名称中使用英文句号。",
diff --git a/lib/l10n/zh_TW.php b/lib/l10n/zh_TW.php
index 62a55ebbb47..fbcf81ad3a4 100644
--- a/lib/l10n/zh_TW.php
+++ b/lib/l10n/zh_TW.php
@@ -5,10 +5,10 @@
"Users" => "使用者",
"Apps" => "應用程式",
"Admin" => "管理",
-"ZIP download is turned off." => "ZIP 下載已關閉",
-"Files need to be downloaded one by one." => "檔案需要逐一下載",
+"ZIP download is turned off." => "ZIP 下載已關閉。",
+"Files need to be downloaded one by one." => "檔案需要逐一下載。",
"Back to Files" => "回到檔案列表",
-"Selected files too large to generate zip file." => "選擇的檔案太大以致於無法產生壓縮檔",
+"Selected files too large to generate zip file." => "選擇的檔案太大以致於無法產生壓縮檔。",
"couldn't be determined" => "無法判斷",
"Application is not enabled" => "應用程式未啟用",
"Authentication error" => "認證錯誤",
@@ -16,12 +16,24 @@
"Files" => "檔案",
"Text" => "文字",
"Images" => "圖片",
-"Set an admin username." => "設置一個管理員用戶名。",
-"Set an admin password." => "設置一個管理員密碼。",
-"PostgreSQL username and/or password not valid" => "PostgreSQL用戶名和/或密碼無效",
-"You need to enter either an existing account or the administrator." => "您必須輸入一個現有的賬戶或管理員",
-"Oracle username and/or password not valid" => "Oracle用戶名和/或密碼無效",
-"MySQL username and/or password not valid" => "MySQL用戶名和/或密碼無效",
+"Set an admin username." => "設定管理員帳號。",
+"Set an admin password." => "設定管理員密碼。",
+"%s enter the database username." => "%s 輸入資料庫使用者名稱。",
+"%s enter the database name." => "%s 輸入資料庫名稱。",
+"%s you may not use dots in the database name" => "%s 資料庫名稱不能包含小數點",
+"%s set the database host." => "%s 設定資料庫主機。",
+"PostgreSQL username and/or password not valid" => "PostgreSQL 用戶名和/或密碼無效",
+"You need to enter either an existing account or the administrator." => "您必須輸入一個現有的帳號或管理員帳號。",
+"Oracle username and/or password not valid" => "Oracle 用戶名和/或密碼無效",
+"MySQL username and/or password not valid" => "MySQL 用戶名和/或密碼無效",
+"DB Error: \"%s\"" => "資料庫錯誤:\"%s\"",
+"Offending command was: \"%s\"" => "有問題的指令是:\"%s\"",
+"MySQL user '%s'@'localhost' exists already." => "MySQL 使用者 '%s'@'localhost' 已經存在。",
+"Drop this user from MySQL" => "在 MySQL 移除這個使用者",
+"MySQL user '%s'@'%%' already exists" => "MySQL 使用者 '%s'@'%%' 已經存在",
+"Drop this user from MySQL." => "在 MySQL 移除這個使用者。",
+"Offending command was: \"%s\", name: %s, password: %s" => "有問題的指令是:\"%s\" ,使用者:\"%s\",密碼:\"%s\"",
+"MS SQL username and/or password not valid: %s" => "MS SQL 使用者和/或密碼無效:%s",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "您的網頁伺服器尚未被正確設定來進行檔案同步,因為您的 WebDAV 界面似乎無法使用。",
"Please double check the <a href='%s'>installation guides</a>." => "請參考<a href='%s'>安裝指南</a>。",
"seconds ago" => "幾秒前",
@@ -38,6 +50,6 @@
"years ago" => "幾年前",
"%s is available. Get <a href=\"%s\">more information</a>" => "%s 已經可用。取得 <a href=\"%s\">更多資訊</a>",
"up to date" => "最新的",
-"updates check is disabled" => "檢查更新已停用",
+"updates check is disabled" => "更新檢查已停用",
"Could not find category \"%s\"" => "找不到分類:\"%s\""
);
diff --git a/lib/log/owncloud.php b/lib/log/owncloud.php
index 20df52c27bb..7a11a588330 100644
--- a/lib/log/owncloud.php
+++ b/lib/log/owncloud.php
@@ -49,7 +49,8 @@ class OC_Log_Owncloud {
public static function write($app, $message, $level) {
$minLevel=min(OC_Config::getValue( "loglevel", OC_Log::WARN ), OC_Log::ERROR);
if($level>=$minLevel) {
- $entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=>time());
+ $time = date("F d, Y H:i:s", time());
+ $entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=> $time);
$handle = @fopen(self::$logFile, 'a');
if ($handle) {
fwrite($handle, json_encode($entry)."\n");
diff --git a/lib/mimetypes.list.php b/lib/mimetypes.list.php
index 86ce9c6c237..9135a7e3af2 100644
--- a/lib/mimetypes.list.php
+++ b/lib/mimetypes.list.php
@@ -98,5 +98,9 @@ return array(
'epub' => 'application/epub+zip',
'mobi' => 'application/x-mobipocket-ebook',
'exe' => 'application',
- 'msi' => 'application'
+ 'msi' => 'application',
+ 'md' => 'text/markdown',
+ 'markdown' => 'text/markdown',
+ 'mdown' => 'text/markdown',
+ 'mdwn' => 'text/markdown'
);
diff --git a/lib/public/share.php b/lib/public/share.php
index 8b8a41d47c0..4b337530be8 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -661,6 +661,7 @@ class Share {
}
}
$backend = self::getBackend($itemType);
+ $collectionTypes = false;
// Get filesystem root to add it to the file target and remove from the
// file source, match file_source with the file cache
if ($itemType == 'file' || $itemType == 'folder') {
@@ -1145,7 +1146,7 @@ class Share {
'itemTarget' => $groupItemTarget,
'parent' => $parent,
'shareType' => $shareType,
- 'shareWith' => $uid,
+ 'shareWith' => $shareWith['group'],
'uidOwner' => $uidOwner,
'permissions' => $permissions,
'fileSource' => $fileSource,
diff --git a/lib/setup.php b/lib/setup.php
index 7082f0b2afd..d1197b3ebf3 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -37,7 +37,7 @@ class OC_Setup {
$error[] = $l->t('Set an admin password.');
}
if(empty($options['directory'])) {
- $error[] = $l->t('Specify a data folder.');
+ $options['directory'] = OC::$SERVERROOT."/data";
}
if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { //mysql and postgresql needs more config options
@@ -187,6 +187,7 @@ class OC_Setup {
unlink("$datadir/owncloud.db");
}
//in case of sqlite, we can always fill the database
+ error_log("creating sqlite db");
OC_DB::createDbFromStructure('db_structure.xml');
}
@@ -195,7 +196,7 @@ class OC_Setup {
OC_User::createUser($username, $password);
}
catch(Exception $exception) {
- $error[] = $exception->getMessage();
+ $error[] = 'Error while trying to create admin user: ' . $exception->getMessage();
}
if(count($error) == 0) {
@@ -827,6 +828,10 @@ class OC_Setup {
$content.= "AddType image/svg+xml svg svgz\n";
$content.= "AddEncoding gzip svgz\n";
$content.= "</IfModule>\n";
+ $content.= "<IfModule dir_module>\n";
+ $content.= "DirectoryIndex index.php index.html\n";
+ $content.= "</IfModule>\n";
+ $content.= "AddDefaultCharset utf-8\n";
$content.= "Options -Indexes\n";
@file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it
diff --git a/lib/template.php b/lib/template.php
index 434c1e9e990..2f535335648 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -186,10 +186,15 @@ class OC_Template{
$this->l10n = OC_L10N::get($parts[0]);
// Some headers to enhance security
- header('X-Frame-Options: Sameorigin'); // Disallow iFraming from other domains
header('X-XSS-Protection: 1; mode=block'); // Enforce browser based XSS filters
header('X-Content-Type-Options: nosniff'); // Disable sniffing the content type for IE
+ // iFrame Restriction Policy
+ $xFramePolicy = OC_Config::getValue('xframe_restriction', true);
+ if($xFramePolicy) {
+ header('X-Frame-Options: Sameorigin'); // Disallow iFraming from other domains
+ }
+
// Content Security Policy
// If you change the standard policy, please also change it in config.sample.php
$policy = OC_Config::getValue('custom_csp_policy',
@@ -198,7 +203,8 @@ class OC_Template{
.'style-src \'self\' \'unsafe-inline\'; '
.'frame-src *; '
.'img-src *; '
- .'font-src \'self\' data:');
+ .'font-src \'self\' data:; '
+ .'media-src *');
header('Content-Security-Policy:'.$policy); // Standard
$this->findTemplate($name);
@@ -272,7 +278,7 @@ class OC_Template{
protected function findTemplate($name)
{
// Read the selected theme from the config file
- $theme=OC_Config::getValue( "theme" );
+ $theme = OC_Util::getTheme();
// Read the detected formfactor and use the right file name.
$fext = self::getFormFactorExtension();
diff --git a/lib/templatelayout.php b/lib/templatelayout.php
index 73094232230..3c496f56e41 100644
--- a/lib/templatelayout.php
+++ b/lib/templatelayout.php
@@ -103,7 +103,7 @@ class OC_TemplateLayout extends OC_Template {
static public function findStylesheetFiles($styles) {
// Read the selected theme from the config file
- $theme=OC_Config::getValue( 'theme' );
+ $theme = OC_Util::getTheme();
// Read the detected formfactor and use the right file name.
$fext = self::getFormFactorExtension();
@@ -111,7 +111,8 @@ class OC_TemplateLayout extends OC_Template {
$files = array();
foreach($styles as $style) {
// is it in 3rdparty?
- if(self::appendIfExist($files, OC::$THIRDPARTYROOT, OC::$THIRDPARTYWEBROOT, $style.'.css')) {
+ if(strpos($style, '3rdparty') === 0 &&
+ self::appendIfExist($files, OC::$THIRDPARTYROOT, OC::$THIRDPARTYWEBROOT, $style.'.css')) {
// or in the owncloud root?
}elseif(self::appendIfExist($files, OC::$SERVERROOT, OC::$WEBROOT, "$style$fext.css" )) {
@@ -161,7 +162,7 @@ class OC_TemplateLayout extends OC_Template {
static public function findJavascriptFiles($scripts) {
// Read the selected theme from the config file
- $theme=OC_Config::getValue( 'theme' );
+ $theme = OC_Util::getTheme();
// Read the detected formfactor and use the right file name.
$fext = self::getFormFactorExtension();
@@ -169,7 +170,8 @@ class OC_TemplateLayout extends OC_Template {
$files = array();
foreach($scripts as $script) {
// Is it in 3rd party?
- if(self::appendIfExist($files, OC::$THIRDPARTYROOT, OC::$THIRDPARTYWEBROOT, $script.'.js')) {
+ if(strpos($script, '3rdparty') === 0 &&
+ self::appendIfExist($files, OC::$THIRDPARTYROOT, OC::$THIRDPARTYWEBROOT, $script.'.js')) {
// Is it in apps and overwritten by the theme?
}elseif(self::appendIfExist($files, OC::$SERVERROOT, OC::$WEBROOT, "themes/$theme/apps/$script$fext.js" )) {
diff --git a/lib/user.php b/lib/user.php
index 33e25268175..b19af940795 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -633,9 +633,9 @@ class OC_User {
public static function setMagicInCookie($username, $token) {
$secure_cookie = OC_Config::getValue("forcessl", false);
$expires = time() + OC_Config::getValue('remember_login_cookie_lifetime', 60*60*24*15);
- setcookie("oc_username", $username, $expires, '', '', $secure_cookie);
- setcookie("oc_token", $token, $expires, '', '', $secure_cookie, true);
- setcookie("oc_remember_login", true, $expires, '', '', $secure_cookie);
+ setcookie("oc_username", $username, $expires, OC::$WEBROOT, '', $secure_cookie);
+ setcookie("oc_token", $token, $expires, OC::$WEBROOT, '', $secure_cookie, true);
+ setcookie("oc_remember_login", true, $expires, OC::$WEBROOT, '', $secure_cookie);
}
/**
diff --git a/lib/user/database.php b/lib/user/database.php
index 210c7f3e1eb..ea938790d22 100644
--- a/lib/user/database.php
+++ b/lib/user/database.php
@@ -237,13 +237,13 @@ class OC_User_Database extends OC_User_Backend {
* @return boolean
*/
public function userExists($uid) {
- $query = OC_DB::prepare( 'SELECT * FROM `*PREFIX*users` WHERE LOWER(`uid`) = LOWER(?)' );
+ $query = OC_DB::prepare( 'SELECT COUNT(*) FROM `*PREFIX*users` WHERE LOWER(`uid`) = LOWER(?)' );
$result = $query->execute( array( $uid ));
if (OC_DB::isError($result)) {
OC_Log::write('core', OC_DB::getErrorMessage($result), OC_Log::ERROR);
return false;
}
- return $result->numRows() > 0;
+ return $result->fetchOne() > 0;
}
/**
diff --git a/lib/util.php b/lib/util.php
index 6630c6a9e1a..810593358a5 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -75,7 +75,7 @@ class OC_Util {
public static function getVersion() {
// hint: We only can count up. Reset minor/patchlevel when
// updating major/minor version number.
- return array(5, 80, 01);
+ return array(5, 80, 02);
}
/**
@@ -595,7 +595,7 @@ class OC_Util {
} catch(\Sabre_DAV_Exception_NotAuthenticated $e) {
$return = true;
} catch(\Exception $e) {
- OC_Log::write('core', 'isWebDAVWorking: NO - Reason: '.$e, OC_Log::WARN);
+ OC_Log::write('core', 'isWebDAVWorking: NO - Reason: '.$e->getMessage(). ' ('.get_class($e).')', OC_Log::WARN);
$return = false;
}
@@ -635,6 +635,11 @@ class OC_Util {
*/
public static function isinternetconnectionworking() {
+ // in case there is no internet connection on purpose there is no need to display a warning
+ if (!\OC_Config::getValue("has_internet_connection", true)) {
+ return true;
+ }
+
// try to connect to owncloud.org to see if http connections to the internet are possible.
$connected = @fsockopen("www.owncloud.org", 80);
if ($connected) {
@@ -790,4 +795,25 @@ class OC_Util {
return (substr(PHP_OS, 0, 3) === "WIN");
}
+
+ /**
+ * Handles the case that there may not be a theme, then check if a "default"
+ * theme exists and take that one
+ * @return string the theme
+ */
+ public static function getTheme() {
+ $theme = OC_Config::getValue("theme");
+
+ if(is_null($theme)) {
+
+ if(is_dir(OC::$SERVERROOT . '/themes/default')) {
+ $theme = 'default';
+ }
+
+ }
+
+ return $theme;
+ }
+
+
}
diff --git a/lib/vobject/stringproperty.php b/lib/vobject/stringproperty.php
new file mode 100644
index 00000000000..b98a8f26c2b
--- /dev/null
+++ b/lib/vobject/stringproperty.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * ownCloud - VObject String Property
+ *
+ * This class adds escaping of simple string properties.
+ *
+ * @author Thomas Tanghus
+ * @author Evert Pot (http://www.rooftopsolutions.nl/)
+ *
+ * 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 OC\VObject;
+
+/**
+ * This class overrides \Sabre\VObject\Property::serialize() properly
+ * escape commas and semi-colons in string properties.
+*/
+class StringProperty extends \Sabre\VObject\Property {
+
+ /**
+ * Turns the object back into a serialized blob.
+ *
+ * @return string
+ */
+ public function serialize() {
+
+ $str = $this->name;
+ if ($this->group) {
+ $str = $this->group . '.' . $this->name;
+ }
+
+ foreach($this->parameters as $param) {
+ $str.=';' . $param->serialize();
+ }
+
+ $src = array(
+ '\\',
+ "\n",
+ ';',
+ ',',
+ );
+ $out = array(
+ '\\\\',
+ '\n',
+ '\;',
+ '\,',
+ );
+ $value = strtr($this->value, array('\,' => ',', '\;' => ';', '\\\\' => '\\'));
+ $str.=':' . str_replace($src, $out, $value);
+
+ $out = '';
+ while(strlen($str) > 0) {
+ if (strlen($str) > 75) {
+ $out .= mb_strcut($str, 0, 75, 'utf-8') . "\r\n";
+ $str = ' ' . mb_strcut($str, 75, strlen($str), 'utf-8');
+ } else {
+ $out .= $str . "\r\n";
+ $str = '';
+ break;
+ }
+ }
+
+ return $out;
+
+ }
+
+} \ No newline at end of file