summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQingping Hou <dave2008713@gmail.com>2013-02-25 17:16:03 -0500
committerQingping Hou <dave2008713@gmail.com>2013-02-25 17:16:03 -0500
commit195b52cb63eda3d8e3af6195058a0e1403e4dede (patch)
tree4c79947d856f136051a84171eba913b1517a3bd1
parentc111a3aa248bee2bff22318c2a3d0da32ea0e451 (diff)
parentd713948d3f85a6e0a369bf1a9052ce563250e3da (diff)
downloadnextcloud-server-195b52cb63eda3d8e3af6195058a0e1403e4dede.tar.gz
nextcloud-server-195b52cb63eda3d8e3af6195058a0e1403e4dede.zip
Merge branch 'master' of github.com:owncloud/core into issue_1776
Conflicts: core/templates/layout.user.php
-rw-r--r--apps/files/appinfo/info.xml2
-rw-r--r--apps/files/css/files.css18
-rw-r--r--apps/files/js/filelist.js2
-rw-r--r--apps/files/js/files.js8
-rw-r--r--apps/files/l10n/he.php1
-rw-r--r--apps/files_external/appinfo/info.xml2
-rw-r--r--apps/files_sharing/appinfo/info.xml2
-rw-r--r--apps/files_sharing/l10n/my_MM.php4
-rw-r--r--apps/files_sharing/lib/sharedstorage.php3
-rw-r--r--apps/files_trashbin/appinfo/database.xml32
-rw-r--r--apps/files_trashbin/appinfo/update.php40
-rw-r--r--apps/files_trashbin/appinfo/version2
-rw-r--r--apps/files_trashbin/index.php4
-rw-r--r--apps/files_trashbin/l10n/he.php8
-rw-r--r--apps/files_trashbin/lib/trash.php239
-rw-r--r--apps/files_trashbin/templates/index.php2
-rw-r--r--apps/files_versions/ajax/getVersions.php4
-rw-r--r--apps/files_versions/appinfo/database.xml35
-rw-r--r--apps/files_versions/appinfo/info.xml2
-rw-r--r--apps/files_versions/appinfo/version2
-rw-r--r--apps/files_versions/lib/versions.php61
-rw-r--r--apps/user_ldap/appinfo/info.xml2
-rw-r--r--apps/user_ldap/l10n/he.php1
-rw-r--r--apps/user_ldap/l10n/my_MM.php1
-rw-r--r--apps/user_ldap/lib/connection.php11
-rwxr-xr-xapps/user_webdavauth/appinfo/info.xml2
-rw-r--r--autotest.cmd47
-rw-r--r--core/js/js.js2
-rw-r--r--core/js/setup.js7
-rw-r--r--core/l10n/he.php7
-rw-r--r--core/l10n/my_MM.php53
-rw-r--r--core/setup.php2
-rw-r--r--core/templates/installation.php20
-rw-r--r--core/templates/layout.user.php2
-rw-r--r--l10n/he/core.po96
-rw-r--r--l10n/he/files.po18
-rw-r--r--l10n/he/files_trashbin.po23
-rw-r--r--l10n/he/settings.po80
-rw-r--r--l10n/he/user_ldap.po116
-rw-r--r--l10n/my_MM/core.po182
-rw-r--r--l10n/my_MM/files_sharing.po16
-rw-r--r--l10n/my_MM/lib.po8
-rw-r--r--l10n/my_MM/settings.po82
-rw-r--r--l10n/my_MM/user_ldap.po4
-rw-r--r--l10n/templates/core.pot2
-rw-r--r--l10n/templates/files.pot2
-rw-r--r--l10n/templates/files_encryption.pot2
-rw-r--r--l10n/templates/files_external.pot2
-rw-r--r--l10n/templates/files_sharing.pot2
-rw-r--r--l10n/templates/files_trashbin.pot2
-rw-r--r--l10n/templates/files_versions.pot2
-rw-r--r--l10n/templates/lib.pot2
-rw-r--r--l10n/templates/settings.pot2
-rw-r--r--l10n/templates/user_ldap.pot2
-rw-r--r--l10n/templates/user_webdavauth.pot2
-rw-r--r--lib/app.php34
-rw-r--r--lib/base.php17
-rw-r--r--lib/db.php199
-rw-r--r--lib/files/cache/cache.php4
-rw-r--r--lib/files/storage/common.php4
-rw-r--r--lib/files/view.php9
-rw-r--r--lib/helper.php11
-rw-r--r--lib/l10n/my_MM.php1
-rw-r--r--lib/public/files.php3
-rw-r--r--lib/setup.php248
-rw-r--r--lib/template.php9
-rw-r--r--lib/templatelayout.php4
-rwxr-xr-xlib/util.php31
-rw-r--r--search/js/result.js2
-rw-r--r--settings/js/personal.js4
-rw-r--r--settings/l10n/he.php1
-rw-r--r--settings/l10n/my_MM.php5
-rw-r--r--tests/lib/app.php66
-rw-r--r--tests/lib/dbschema.php12
74 files changed, 1391 insertions, 550 deletions
diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml
index 7c82c839dab..34800378537 100644
--- a/apps/files/appinfo/info.xml
+++ b/apps/files/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>File Management</description>
<licence>AGPL</licence>
<author>Robin Appelman</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<standalone/>
<default_enable/>
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index dfc2e4c0e2f..3cd809038b9 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -123,6 +123,24 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; }
.selectedActions a { display:inline; margin:-.5em 0; padding:.5em !important; }
.selectedActions a img { position:relative; top:.3em; }
+#fileList a.action {
+ display:none;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+#fileList tr:hover a.action {
+ display:inline;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=.5)";
+ filter: alpha(opacity=.5);
+ opacity: .5;
+}
+#fileList tr:hover a.action:hover {
+ display:inline;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
+ filter: alpha(opacity=1);
+ opacity: 1;
+}
#scanning-message{ top:40%; left:40%; position:absolute; display:none; }
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index ea721059c3f..f5f3f3ba0c6 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -334,7 +334,7 @@ var FileList={
if (result.status == 'success') {
$.each(files,function(index,file){
var files = $('tr').filterAttr('data-file',file);
- files.hide();
+ files.remove();
files.find('input[type="checkbox"]').removeAttr('checked');
files.removeClass('selected');
});
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 6801fb59910..464f7703685 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -524,7 +524,7 @@ $(document).ready(function() {
crumb.text(text);
}
- $(window).click(function(){
+ $(document).click(function(){
$('#new>ul').hide();
$('#new').removeClass('active');
$('#new li').each(function(i,element){
@@ -595,7 +595,7 @@ $(document).ready(function() {
var date=new Date();
FileList.addFile(name,0,date,false,hidden);
var tr=$('tr').filterAttr('data-file',name);
- tr.data('mime','text/plain').data('id',result.data.id);
+ tr.attr('data-mime','text/plain');
tr.attr('data-id', result.data.id);
getMimeIcon('text/plain',function(path){
tr.find('td.filename').attr('style','background-image:url('+path+')');
@@ -863,6 +863,10 @@ var dragOptions={
$('#fileList tr td.filename').addClass('ui-draggable');
}
}
+// sane browsers support using the distance option
+if ( ! $.browser.msie) {
+ dragOptions['distance'] = 20;
+}
var folderDropOptions={
drop: function( event, ui ) {
diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php
index 442eafe1c04..ca2cb14027c 100644
--- a/apps/files/l10n/he.php
+++ b/apps/files/l10n/he.php
@@ -8,6 +8,7 @@
"Missing a temporary folder" => "תיקייה זמנית חסרה",
"Failed to write to disk" => "הכתיבה לכונן נכשלה",
"Files" => "קבצים",
+"Delete permanently" => "מחק לצמיתות",
"Delete" => "מחיקה",
"Rename" => "שינוי שם",
"Pending" => "ממתין",
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index 2c04216a9fb..0542b7b10a7 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>Mount external storage sources</description>
<licence>AGPL</licence>
<author>Robin Appelman, Michael Gapczynski</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<types>
<filesystem/>
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index 1f24a4dde83..9a199281a76 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>File sharing between users</description>
<licence>AGPL</licence>
<author>Michael Gapczynski</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<default_enable/>
<types>
diff --git a/apps/files_sharing/l10n/my_MM.php b/apps/files_sharing/l10n/my_MM.php
new file mode 100644
index 00000000000..aa574b58b02
--- /dev/null
+++ b/apps/files_sharing/l10n/my_MM.php
@@ -0,0 +1,4 @@
+<?php $TRANSLATIONS = array(
+"Password" => "စကားဝှက်",
+"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"
+);
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index c7521949da1..5a9864b64ba 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -315,7 +315,8 @@ class Shared extends \OC\Files\Storage\Common {
if ($this->isCreatable(dirname($path2))) {
$source = $this->fopen($path1, 'r');
$target = $this->fopen($path2, 'w');
- return \OC_Helper::streamCopy($source, $target);
+ list ($count, $result) = \OC_Helper::streamCopy($source, $target);
+ return $result;
}
return false;
}
diff --git a/apps/files_trashbin/appinfo/database.xml b/apps/files_trashbin/appinfo/database.xml
index 1144a1c9a97..aae334b1489 100644
--- a/apps/files_trashbin/appinfo/database.xml
+++ b/apps/files_trashbin/appinfo/database.xml
@@ -18,7 +18,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
- <length>50</length>
+ <length>250</length>
</field>
<field>
@@ -26,7 +26,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
- <length>50</length>
+ <length>64</length>
</field>
<field>
@@ -42,7 +42,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
- <length>200</length>
+ <length>512</length>
</field>
<field>
@@ -89,4 +89,30 @@
</table>
+ <table>
+
+ <name>*dbprefix*files_trashsize</name>
+
+ <declaration>
+
+ <field>
+ <name>user</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>64</length>
+ </field>
+
+ <field>
+ <name>size</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>50</length>
+ </field>
+
+ </declaration>
+
+ </table>
+
</database>
diff --git a/apps/files_trashbin/appinfo/update.php b/apps/files_trashbin/appinfo/update.php
new file mode 100644
index 00000000000..b0bf79cc510
--- /dev/null
+++ b/apps/files_trashbin/appinfo/update.php
@@ -0,0 +1,40 @@
+<?php
+
+$installedVersion=OCP\Config::getAppValue('files_trashbin', 'installed_version');
+// move versions to new directory
+
+if (version_compare($installedVersion, '0.2', '<')) {
+ $datadir = \OCP\Config::getSystemValue('datadirectory').'/';
+
+ $users = \OCP\User::getUsers();
+ foreach ($users as $user) {
+
+ //create new folders
+ @mkdir($datadir.$user.'/files_trashbin/files');
+ @mkdir($datadir.$user.'/files_trashbin/versions');
+ @mkdir($datadir.$user.'/files_trashbin/keyfiles');
+
+ // move files to the new folders
+ if ($handle = opendir($datadir.$user.'/files_trashbin')) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != ".." && $file != 'files' && $file != 'versions' && $file != 'keyfiles') {
+ rename($datadir.$user.'/files_trashbin/'.$file,
+ $datadir.$user.'/files_trashbin/files/'.$file);
+ }
+ }
+ closedir($handle);
+ }
+
+ // move versions to the new folder
+ if ($handle = opendir($datadir.$user.'/versions_trashbin')) {
+ while (false !== ($file = readdir($handle))) {
+ rename($datadir.$user.'/versions_trashbin/'.$file,
+ $datadir.$user.'/files_trashbin/versions/'.$file);
+ }
+ closedir($handle);
+ }
+
+ @rmdir($datadir.$user.'/versions_trashbin');
+
+ }
+} \ No newline at end of file
diff --git a/apps/files_trashbin/appinfo/version b/apps/files_trashbin/appinfo/version
index 49d59571fbf..be586341736 100644
--- a/apps/files_trashbin/appinfo/version
+++ b/apps/files_trashbin/appinfo/version
@@ -1 +1 @@
-0.1
+0.3
diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php
index 4615df3586f..2f1fb32f8ce 100644
--- a/apps/files_trashbin/index.php
+++ b/apps/files_trashbin/index.php
@@ -9,7 +9,7 @@ OCP\Util::addScript('files', 'fileactions');
$tmpl = new OCP\Template('files_trashbin', 'index', 'user');
$user = \OCP\User::getUser();
-$view = new OC_Filesystemview('/'.$user.'/files_trashbin');
+$view = new OC_Filesystemview('/'.$user.'/files_trashbin/files');
OCP\Util::addStyle('files', 'files');
OCP\Util::addScript('files', 'filelist');
@@ -19,7 +19,6 @@ $dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
$result = array();
if ($dir) {
$dirlisting = true;
- $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin');
$fullpath = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($dir);
$dirContent = opendir($fullpath);
$i = 0;
@@ -96,6 +95,7 @@ $list->assign('disableDownloadActions', true);
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
$tmpl->assign('fileList', $list->fetchPage(), false);
$tmpl->assign('files', $files);
+$tmpl->assign('dirlisting', $dirlisting);
$tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath()));
$tmpl->printPage();
diff --git a/apps/files_trashbin/l10n/he.php b/apps/files_trashbin/l10n/he.php
index fe60eab7b7b..9c767d2222c 100644
--- a/apps/files_trashbin/l10n/he.php
+++ b/apps/files_trashbin/l10n/he.php
@@ -1,8 +1,16 @@
<?php $TRANSLATIONS = array(
+"Couldn't delete %s permanently" => "בלתי אפשרי למחוק את %s לצמיתות",
+"Couldn't restore %s" => "בלתי אפשרי לשחזר את %s",
+"perform restore operation" => "בצע פעולת שחזור",
+"delete file permanently" => "מחק קובץ לצמיתות",
+"Delete permanently" => "מחק לצמיתות",
"Name" => "שם",
+"Deleted" => "נמחק",
"1 folder" => "תיקייה אחת",
"{count} folders" => "{count} תיקיות",
"1 file" => "קובץ אחד",
"{count} files" => "{count} קבצים",
+"Nothing in here. Your trash bin is empty!" => "שום דבר כאן. סל המחזור שלך ריק!",
+"Restore" => "שחזר",
"Delete" => "מחיקה"
);
diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php
index 8355c7252b0..d4d5ad96cfa 100644
--- a/apps/files_trashbin/lib/trash.php
+++ b/apps/files_trashbin/lib/trash.php
@@ -36,10 +36,12 @@ class Trashbin {
*/
public static function move2trash($file_path) {
$user = \OCP\User::getUser();
- $view = new \OC_FilesystemView('/'. $user);
+ $view = new \OC\Files\View('/'. $user);
if (!$view->is_dir('files_trashbin')) {
$view->mkdir('files_trashbin');
- $view->mkdir("versions_trashbin");
+ $view->mkdir("files_trashbin/files");
+ $view->mkdir("files_trashbin/versions");
+ $view->mkdir("files_trashbin/keyfiles");
}
$path_parts = pathinfo($file_path);
@@ -54,50 +56,61 @@ class Trashbin {
} else {
$type = 'file';
}
-
- if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) {
+
+ $trashbinSize = self::getTrashbinSize($user);
+ if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
- $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
}
- $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/'.$deleted.'.d'.$timestamp, $view);
+ $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view);
- if ( $view->file_exists('files_trashbin/'.$deleted.'.d'.$timestamp) ) {
- $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user)"
- ." VALUES (?,?,?,?,?,?)");
+ if ( $view->file_exists('files_trashbin/files/'.$deleted.'.d'.$timestamp) ) {
+ $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)");
$result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user));
if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin.
- $view->deleteAll('files_trashbin/'.$deleted.'.d'.$timestamp);
+ $view->deleteAll('files_trashbin/files/'.$deleted.'.d'.$timestamp);
\OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR);
return;
}
-
+
+ // Take care of file versions
if ( \OCP\App::isEnabled('files_versions') ) {
if ( $view->is_dir('files_versions'.$file_path) ) {
- $trashbinSize += self::calculateSize(
- new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path)
- );
- $view->rename('files_versions'.$file_path, 'versions_trashbin/'. $deleted.'.d'.$timestamp);
- } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($file_path) ) {
+ $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path));
+ $view->rename('files_versions'.$file_path, 'files_trashbin/versions'. $deleted.'.d'.$timestamp);
+ } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($user, $file_path) ) {
foreach ($versions as $v) {
$trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']);
- $view->rename('files_versions'.$v['path'].'.v'.$v['version'],
- 'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
+ $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'files_trashbin/versions'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
}
}
}
+
+ // Take care of encryption keys
+ $keyfile = \OC_Filesystem::normalizePath('files_encryption/keyfiles/'.$file_path);
+ if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile.'.key') ) {
+ if ( $view->is_dir('files'.$file_path) ) {
+ $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
+ $view->rename($keyfile, 'files_trashbin/keyfiles/'. $deleted.'.d'.$timestamp);
+ } else {
+ $trashbinSize += $view->filesize($keyfile.'.key');
+ $view->rename($keyfile.'.key', 'files_trashbin/keyfiles/'. $deleted.'.key.d'.$timestamp);
+ }
+ }
} else {
\OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR);
}
-
+
// get available disk space for user
- $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($user, 'files', 'quota'));
- if ( $quota == null ) {
- $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
+ $quota = \OC_Preferences::getValue($user, 'files', 'quota');
+ if ( $quota === null ) {
+ $quota = \OC_Appconfig::getValue('files', 'default_quota');
}
- if ( $quota == null ) {
- $quota = \OC\Files\Filesystem::free_space('/');
+ if ( $quota === null ) {
+ $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
+ } else {
+ $quota = \OCP\Util::computerFileSize($quota);
}
-
+
// calculate available space for trash bin
$rootInfo = $view->getFileInfo('/files');
$free = $quota-$rootInfo['size']; // remaining free space for user
@@ -106,9 +119,10 @@ class Trashbin {
} else {
$availableSpace = $free-$trashbinSize;
}
-
$trashbinSize -= self::expire($availableSpace);
- \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
+
+ self::setTrashbinSize($user, $trashbinSize);
+
}
@@ -121,10 +135,10 @@ class Trashbin {
public static function restore($file, $filename, $timestamp) {
$user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'.$user);
-
- if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) {
+
+ $trashbinSize = self::getTrashbinSize($user);
+ if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
- $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
}
if ( $timestamp ) {
$query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash'
@@ -143,15 +157,15 @@ class Trashbin {
$location = '';
}
} else {
- $path_parts = pathinfo($filename);
+ $path_parts = pathinfo($file);
$result[] = array(
'location' => $path_parts['dirname'],
- 'type' => $view->is_dir('/files_trashbin/'.$file) ? 'dir' : 'files',
+ 'type' => $view->is_dir('/files_trashbin/files/'.$file) ? 'dir' : 'files',
);
$location = '';
}
-
- $source = \OC_Filesystem::normalizePath('files_trashbin/'.$file);
+
+ $source = \OC_Filesystem::normalizePath('files_trashbin/files/'.$file);
$target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename);
// we need a extension in case a file/dir with the same name already exists
@@ -171,33 +185,49 @@ class Trashbin {
} else {
$versionedFile = $file;
}
- if ( $result[0]['type'] == 'dir' ) {
- $trashbinSize -= self::calculateSize(
- new \OC_FilesystemView('/'.$user.'/'.'versions_trashbin/'. $file)
- );
- $view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file),
- \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
+ if ( $result[0]['type'] === 'dir' ) {
+ $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.'files_trashbin/versions/'. $file));
+ $view->rename(\OC_Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
} else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) {
foreach ($versions as $v) {
if ($timestamp ) {
- $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp);
- $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp,
- 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
+ $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp);
+ $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
} else {
- $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v);
- $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v,
- 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
+ $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v);
+ $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
}
}
}
}
-
+
+ // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!)
+ $parts = pathinfo($file);
+ if ( $result[0]['type'] === 'dir' ) {
+ $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename);
+ } else {
+ $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename.'.key');
+ }
+ if ($timestamp) {
+ $keyfile .= '.d'.$timestamp;
+ }
+ if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) {
+ if ( $result[0]['type'] === 'dir' ) {
+ $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
+ $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename);
+ } else {
+ $trashbinSize -= $view->filesize($keyfile);
+ $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename.'.key');
+ }
+ }
+
if ( $timestamp ) {
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
$query->execute(array($user,$filename,$timestamp));
}
- \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
+ self::setTrashbinSize($user, $trashbinSize);
+
return true;
} else {
\OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename, \OC_log::ERROR);
@@ -216,10 +246,10 @@ class Trashbin {
$user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'.$user);
$size = 0;
-
- if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) {
+
+ $trashbinSize = self::getTrashbinSize($user);
+ if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
- $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
}
if ( $timestamp ) {
@@ -231,31 +261,50 @@ class Trashbin {
}
if ( \OCP\App::isEnabled('files_versions') ) {
- if ($view->is_dir('versions_trashbin/'.$file)) {
- $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/versions_trashbin/'.$file));
- $view->unlink('versions_trashbin/'.$file);
+ if ($view->is_dir('files_trashbin/versions/'.$file)) {
+ $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/versions/'.$file));
+ $view->unlink('files_trashbin/versions/'.$file);
} else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
foreach ($versions as $v) {
if ($timestamp ) {
- $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
- $view->unlink('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
+ $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
+ $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
} else {
- $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v);
- $view->unlink('/versions_trashbin/'.$filename.'.v'.$v);
+ $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v);
+ $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v);
}
}
}
}
-
- if ($view->is_dir('/files_trashbin/'.$file)) {
- $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file));
+
+ // Take care of encryption keys
+ $parts = pathinfo($file);
+ if ( $view->is_dir('/files_trashbin/files/'.$file) ) {
+ $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename);
+ } else {
+ $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename.'.key');
+ }
+ if ($timestamp) {
+ $keyfile .= '.d'.$timestamp;
+ }
+ if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) {
+ if ( $view->is_dir($keyfile) ) {
+ $size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
+ } else {
+ $size += $view->filesize($keyfile);
+ }
+ $view->unlink($keyfile);
+ }
+
+ if ($view->is_dir('/files_trashbin/files/'.$file)) {
+ $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/files/'.$file));
} else {
- $size += $view->filesize('/files_trashbin/'.$file);
+ $size += $view->filesize('/files_trashbin/files/'.$file);
}
- $view->unlink('/files_trashbin/'.$file);
+ $view->unlink('/files_trashbin/files/'.$file);
$trashbinSize -= $size;
- \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
-
+ self::setTrashbinSize($user, $trashbinSize);
+
return $size;
}
@@ -275,7 +324,7 @@ class Trashbin {
$filename = $filename;
}
- $target = \OC_Filesystem::normalizePath('files_trashbin/'.$filename);
+ $target = \OC_Filesystem::normalizePath('files_trashbin/files/'.$filename);
return $view->file_exists($target);
}
@@ -301,31 +350,9 @@ class Trashbin {
$timestamp = $r['timestamp'];
$filename = $r['id'];
if ( $r['timestamp'] < $limit ) {
- if ($view->is_dir('files_trashbin/'.$filename.'.d'.$timestamp)) {
- $size += self::calculateSize(
- new \OC_FilesystemView('/'.$user.'/files_trashbin/'.$filename.'.d'.$timestamp)
- );
- } else {
- $size += $view->filesize('files_trashbin/'.$filename.'.d'.$timestamp);
- }
- $view->unlink('files_trashbin/'.$filename.'.d'.$timestamp);
- if ($r['type'] == 'dir') {
- $size += self::calculateSize(
- new \OC_FilesystemView('/'.$user.'/versions_trashbin/'.$filename.'.d'.$timestamp)
- );
- $view->unlink('versions_trashbin/'.$filename.'.d'.$timestamp);
- } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
- foreach ($versions as $v) {
- $size += $view->filesize('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
- $view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
- }
- }
+ $size += self::delete($filename, $timestamp);
}
}
-
- $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestamp<?');
- $query->execute(array($user,$limit));
-
$availableSpace = $availableSpace + $size;
// if size limit for trash bin reached, delete oldest files in trash bin
if ($availableSpace < 0) {
@@ -341,6 +368,7 @@ class Trashbin {
$i++;
}
+
}
return $size;
@@ -382,7 +410,7 @@ class Trashbin {
* @param $timestamp timestamp when the file was deleted
*/
private static function getVersionsFromTrash($filename, $timestamp) {
- $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/versions_trashbin');
+ $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin/versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename);
$versions = array();
if ($timestamp ) {
@@ -449,4 +477,35 @@ class Trashbin {
return $size;
}
+ /**
+ * get current size of trash bin from a given user
+ *
+ * @param $user user who owns the trash bin
+ * @return mixed trash bin size or false if no trash bin size is stored
+ */
+ private static function getTrashbinSize($user) {
+ $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_trashsize WHERE user=?');
+ $result = $query->execute(array($user))->fetchAll();
+
+ if ($result) {
+ return $result[0]['size'];
+ }
+ return false;
+ }
+
+ /**
+ * write to the database how much space is in use for the trash bin
+ *
+ * @param $user owner of the trash bin
+ * @param $size size of the trash bin
+ */
+ private static function setTrashbinSize($user, $size) {
+ if ( self::getTrashbinSize($user) === false) {
+ $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_trashsize (size, user) VALUES (?, ?)');
+ }else {
+ $query = \OC_DB::prepare('UPDATE *PREFIX*files_trashsize SET size=? WHERE user=?');
+ }
+ $query->execute(array($size, $user));
+ }
+
}
diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php
index c948c94d552..aaeeb5c6f6e 100644
--- a/apps/files_trashbin/templates/index.php
+++ b/apps/files_trashbin/templates/index.php
@@ -5,7 +5,7 @@
</div>
<div id='notification'></div>
-<?php if (isset($_['files']) && count($_['files'])==0):?>
+<?php if (isset($_['files']) && count($_['files'])==0 && $_['dirlisting'] == false):?>
<div id="emptyfolder"><?php echo $l->t('Nothing in here. Your trash bin is empty!')?></div>
<?php endif; ?>
diff --git a/apps/files_versions/ajax/getVersions.php b/apps/files_versions/ajax/getVersions.php
index 53fc04625c6..8a8fa43080c 100644
--- a/apps/files_versions/ajax/getVersions.php
+++ b/apps/files_versions/ajax/getVersions.php
@@ -1,11 +1,11 @@
<?php
OCP\JSON::checkAppEnabled('files_versions');
-$userDirectory = "/".OCP\USER::getUser()."/files";
$source = $_GET['source'];
+list ($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($source);
$count = 5; //show the newest revisions
-if( ($versions = OCA\Files_Versions\Storage::getVersions( $source, $count)) ) {
+if( ($versions = OCA\Files_Versions\Storage::getVersions($uid, $filename, $count)) ) {
$versionsFormatted = array();
diff --git a/apps/files_versions/appinfo/database.xml b/apps/files_versions/appinfo/database.xml
new file mode 100644
index 00000000000..d3854776980
--- /dev/null
+++ b/apps/files_versions/appinfo/database.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<database>
+
+ <name>*dbname*</name>
+ <create>true</create>
+ <overwrite>false</overwrite>
+
+ <charset>utf8</charset>
+
+ <table>
+
+ <name>*dbprefix*files_versions</name>
+
+ <declaration>
+
+ <field>
+ <name>user</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>64</length>
+ </field>
+ <field>
+ <name>size</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>50</length>
+ </field>
+
+ </declaration>
+
+ </table>
+
+</database>
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index 0155f8e830f..44878da5e4d 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -4,7 +4,7 @@
<name>Versions</name>
<licence>AGPL</licence>
<author>Frank Karlitschek</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<description>Versioning of files</description>
<types>
diff --git a/apps/files_versions/appinfo/version b/apps/files_versions/appinfo/version
index e6d5cb833c6..e4c0d46e55f 100644
--- a/apps/files_versions/appinfo/version
+++ b/apps/files_versions/appinfo/version
@@ -1 +1 @@
-1.0.2 \ No newline at end of file
+1.0.3 \ No newline at end of file
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index adbf2c1df7e..778fefd8a72 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -35,7 +35,7 @@ class Storage {
6 => array('intervalEndsAfter' => -1, 'step' => 604800),
);
- private static function getUidAndFilename($filename) {
+ public static function getUidAndFilename($filename) {
$uid = \OC\Files\Filesystem::getOwner($filename);
\OC\Files\Filesystem::initMountPoints($uid);
if ( $uid != \OCP\User::getUser() ) {
@@ -47,6 +47,37 @@ class Storage {
}
/**
+ * get current size of all versions from a given user
+ *
+ * @param $user user who owns the versions
+ * @return mixed versions size or false if no versions size is stored
+ */
+ private static function getVersionsSize($user) {
+ $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_versions WHERE user=?');
+ $result = $query->execute(array($user))->fetchAll();
+
+ if ($result) {
+ return $result[0]['size'];
+ }
+ return false;
+ }
+
+ /**
+ * write to the database how much space is in use for versions
+ *
+ * @param $user owner of the versions
+ * @param $size size of the versions
+ */
+ private static function setVersionsSize($user, $size) {
+ if ( self::getVersionsSize($user) === false) {
+ $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_versions (size, user) VALUES (?, ?)');
+ }else {
+ $query = \OC_DB::prepare('UPDATE *PREFIX*files_versions SET size=? WHERE user=?');
+ }
+ $query->execute(array($size, $user));
+ }
+
+ /**
* store a new version of a file.
*/
public static function store($filename) {
@@ -74,17 +105,19 @@ class Storage {
}
// store a new version of a file
- $result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
+ $versionsSize = self::getVersionsSize($uid);
+ if ( $versionsSize === false || $versionSize < 0 ) {
$versionsSize = self::calculateSize($uid);
}
+
$versionsSize += $users_view->filesize('files'.$filename);
// expire old revisions if necessary
$newSize = self::expire($filename, $versionsSize);
if ( $newSize != $versionsSize ) {
- \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+ self::setVersionsSize($uid, $newSize);
}
}
}
@@ -99,14 +132,15 @@ class Storage {
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
if( ($versions = self::getVersions($uid, $filename)) ) {
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::getVersionsSize($uid);
+ if ( $versionsSize === false || $versionsSize < 0 ) {
$versionsSize = self::calculateSize($uid);
}
foreach ($versions as $v) {
unlink($abs_path . $v['version']);
$versionsSize -= $v['size'];
}
- \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+ self::setVersionsSize($uid, $versionsSize);
}
}
@@ -316,17 +350,20 @@ class Storage {
$versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions');
// get available disk space for user
- $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota'));
- if ( $quota == null ) {
- $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
+ $quota = \OC_Preferences::getValue($uid, 'files', 'quota');
+ if ( $quota === null ) {
+ $quota = \OC_Appconfig::getValue('files', 'default_quota');
}
- if ( $quota == null ) {
- $quota = \OC\Files\Filesystem::free_space('/');
+ if ( $quota === null ) {
+ $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
+ } else {
+ $quota = \OCP\Util::computerFileSize($quota);
}
// make sure that we have the current size of the version history
if ( $versionsSize === null ) {
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::getVersionsSize($uid);
+ if ( $versionsSize === false || $versionsSize < 0 ) {
$versionsSize = self::calculateSize($uid);
}
}
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 53269edfb34..03a4fa52332 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the WebDAV user backend.</description>
<licence>AGPL</licence>
<author>Dominik Schmidt and Arthur Schiwon</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<types>
<authentication/>
diff --git a/apps/user_ldap/l10n/he.php b/apps/user_ldap/l10n/he.php
index 5c563b7b6f3..c9b0e282f1d 100644
--- a/apps/user_ldap/l10n/he.php
+++ b/apps/user_ldap/l10n/he.php
@@ -7,6 +7,7 @@
"User Login Filter" => "סנן כניסת משתמש",
"User List Filter" => "סנן רשימת משתמשים",
"Group Filter" => "סנן קבוצה",
+"Port" => "פורט",
"in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.",
"in bytes" => "בבתים",
"Help" => "עזרה"
diff --git a/apps/user_ldap/l10n/my_MM.php b/apps/user_ldap/l10n/my_MM.php
index d7bd0adc492..ee8d3dd26fa 100644
--- a/apps/user_ldap/l10n/my_MM.php
+++ b/apps/user_ldap/l10n/my_MM.php
@@ -1,3 +1,4 @@
<?php $TRANSLATIONS = array(
+"Password" => "စကားဝှက်",
"Help" => "အကူအညီ"
);
diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index abbc133038c..6643428afe4 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -357,9 +357,6 @@ class Connection {
case 'ldapAgentPassword':
$value = base64_encode($value);
break;
- case 'homeFolderNamingRule':
- $value = empty($value) ? 'opt:username' : $value;
- break;
case 'ldapBase':
case 'ldapBaseUsers':
case 'ldapBaseGroups':
@@ -394,10 +391,10 @@ class Connection {
$config = array();
foreach($trans as $dbKey => $classKey) {
if($classKey == 'homeFolderNamingRule') {
- if(strpos($this->config[$classKey], 'opt') === 0) {
- $config[$dbKey] = '';
- } else {
+ if(strpos($this->config[$classKey], 'attr:') === 0) {
$config[$dbKey] = substr($this->config[$classKey], 5);
+ } else {
+ $config[$dbKey] = '';
}
continue;
} else if((strpos($classKey, 'ldapBase') !== false)
@@ -540,7 +537,7 @@ class Connection {
'ldap_cache_ttl' => 600,
'ldap_uuid_attribute' => 'auto',
'ldap_override_uuid_attribute' => 0,
- 'home_folder_naming_rule' => 'opt:username',
+ 'home_folder_naming_rule' => '',
'ldap_turn_off_cert_check' => 0,
'ldap_configuration_active' => 1,
'ldap_attributes_for_user_search' => '',
diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml
index f62f03577e8..76b314e48aa 100755
--- a/apps/user_webdavauth/appinfo/info.xml
+++ b/apps/user_webdavauth/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the LDAP user and group backend.</description>
<licence>AGPL</licence>
<author>Frank Karlitschek</author>
- <require>4.91</require>
+ <require>4.93</require>
<shipped>true</shipped>
<types>
<authentication/>
diff --git a/autotest.cmd b/autotest.cmd
index 053860db547..a511faef9c6 100644
--- a/autotest.cmd
+++ b/autotest.cmd
@@ -4,14 +4,14 @@
:: @author Thomas Müller
:: @author Tobias Ramforth (translated into Windows batch file)
::
-:: @copyright 2012 Thomas Müller thomas.mueller@tmit.eu
+:: @copyright 2012, 2013 Thomas Müller thomas.mueller@tmit.eu
::
@echo off
set DATADIR=data-autotest
set BASEDIR=%~dp0
-:: create autoconfig for sqlite, mysql and postgresql
+:: create autoconfig for sqlite, mysql, postgresql and mssql
echo ^<?php > .\tests\autoconfig-sqlite.php
echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-sqlite.php
echo 'installed' ^=^> false^, >> .\tests\autoconfig-sqlite.php
@@ -50,16 +50,35 @@ echo 'dbhost' ^=^> 'localhost'^, >> .\tests\autoconfig-pgsql.php
echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-pgsql.php
echo ^)^; >> .\tests\autoconfig-pgsql.php
+echo ^<?php > .\tests\autoconfig-mssql.php
+echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-mssql.php
+echo 'installed' ^=^> false^, >> .\tests\autoconfig-mssql.php
+echo 'dbtype' ^=^> 'mssql'^, >> .\tests\autoconfig-mssql.php
+echo 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-mssql.php
+echo 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php
+echo 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php
+echo 'directory' ^=^> '%BASEDIR%%DATADIR%'^, >> .\tests\autoconfig-mssql.php
+echo 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php
+echo 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php
+echo 'dbhost' ^=^> 'localhost\sqlexpress'^, >> .\tests\autoconfig-mssql.php
+echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-mssql.php
+echo ^)^; >> .\tests\autoconfig-mssql.php
+
echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf
::
:: start test execution
::
-::call:execute_tests "sqlite"
-call:execute_tests "mysql"
-::call:execute_tests "mssql"
-::call:execute_tests "ora"
-::call:execute_tests "pgsql"
+if [%1] == [] (
+ echo "Running on all database backends"
+ call:execute_tests "sqlite"
+ call:execute_tests "mysql"
+ call:execute_tests "mssql"
+ ::call:execute_tests "ora"
+ call:execute_tests "pgsql"
+) else (
+ call:execute_tests "%1"
+)
goto:eof
@@ -83,6 +102,9 @@ goto:eof
if "%~1" == "mysql" mysql -u oc_autotest -powncloud -e "DROP DATABASE oc_autotest"
if "%~1" == "pgsql" dropdb -h localhost -p 5432 -U oc_autotest -w oc_autotest
+
+ :: we assume a sqlexpress installation
+ if "%~1" == "mssql" sqlcmd -S localhost\sqlexpress -U oc_autotest -P owncloud -Q "IF EXISTS (SELECT name FROM sys.databases WHERE name=N'oc_autotest') DROP DATABASE [oc_autotest]"
:: copy autoconfig
copy /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php
@@ -96,9 +118,8 @@ goto:eof
rmdir /s /q coverage-html-%~1
md coverage-html-%~1
php -f enable_all.php
- ::phpunit --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
- ::phpunit --bootstrap bootstrap.php --configuration phpunit.xml
- php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
+
+ php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit-autotest.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
echo "Done with testing %~1 ..."
cd %BASEDIR%
goto:eof
@@ -114,4 +135,10 @@ goto:eof
:: - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine):
:: local all all trust
::
+:: NOTES on mssql:
+:: we assume the usage of a local installed sqlexpress
+:: create a user 'oc_autotest' with password 'owncloud' and assign the server role 'dbcreator'
+:: make sure the sqlserver is configured to allow sql authentication
+::
+
diff --git a/core/js/js.js b/core/js/js.js
index 6d5d65403fb..e373fca8865 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -669,7 +669,7 @@ $(document).ready(function(){
$('#settings #expanddiv').click(function(event){
event.stopPropagation();
});
- $(window).click(function(){//hide the settings menu when clicking outside it
+ $(document).click(function(){//hide the settings menu when clicking outside it
$('#settings #expanddiv').slideUp(200);
});
diff --git a/core/js/setup.js b/core/js/setup.js
index 2656cac2f45..76812b29979 100644
--- a/core/js/setup.js
+++ b/core/js/setup.js
@@ -5,6 +5,7 @@ $(document).ready(function() {
mysql:!!$('#hasMySQL').val(),
postgresql:!!$('#hasPostgreSQL').val(),
oracle:!!$('#hasOracle').val(),
+ mssql:!!$('#hasMSSQL').val()
};
$('#selectDbType').buttonset();
@@ -41,6 +42,12 @@ $(document).ready(function() {
$('#dbhost').show(250);
$('#dbhostlabel').show(250);
});
+
+ $('#mssql').click(function() {
+ $('#use_other_db').slideDown(250);
+ $('#dbhost').show(250);
+ $('#dbhostlabel').show(250);
+ });
$('input[checked]').trigger('click');
diff --git a/core/l10n/he.php b/core/l10n/he.php
index 75c378ceceb..1db5820bdf7 100644
--- a/core/l10n/he.php
+++ b/core/l10n/he.php
@@ -5,6 +5,7 @@
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "המשתמש %s שיתף אתך את התיקייה „%s“. ניתן להוריד את התיקייה מכאן: %s",
"Category type not provided." => "סוג הקטגוריה לא סופק.",
"No category to add?" => "אין קטגוריה להוספה?",
+"This category already exists: %s" => "הקטגוריה הבאה כבר קיימת: %s",
"Object type not provided." => "סוג הפריט לא סופק.",
"%s ID not provided." => "מזהה %s לא סופק.",
"Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.",
@@ -52,6 +53,7 @@
"Error" => "שגיאה",
"The app name is not specified." => "שם היישום לא צוין.",
"The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!",
+"Shared" => "שותף",
"Share" => "שתף",
"Error while sharing" => "שגיאה במהלך השיתוף",
"Error while unsharing" => "שגיאה במהלך ביטול השיתוף",
@@ -82,6 +84,8 @@
"Error setting expiration date" => "אירעה שגיאה בעת הגדרת תאריך התפוגה",
"Sending ..." => "מתבצעת שליחה ...",
"Email sent" => "הודעת הדוא״ל נשלחה",
+"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "תהליך העדכון לא הושלם בהצלחה. נא דווח את הבעיה ב<a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">קהילת ownCloud</a>.",
+"The update was successful. Redirecting you to ownCloud now." => "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.",
"ownCloud password reset" => "איפוס הססמה של ownCloud",
"Use the following link to reset your password: {link}" => "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}",
"You will receive a link to reset your password via Email." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.",
@@ -105,6 +109,8 @@
"Security Warning" => "אזהרת אבטחה",
"No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.",
"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.",
+"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.",
+"For information how to properly configure your server, please see the <a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">documentation</a>." => "לקבלת מידע להגדרה נכונה של השרת שלך, ראה את ה<a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">תיעוד</a>.",
"Create an <strong>admin account</strong>" => "יצירת <strong>חשבון מנהל</strong>",
"Advanced" => "מתקדם",
"Data folder" => "תיקיית נתונים",
@@ -124,6 +130,7 @@
"Lost your password?" => "שכחת את ססמתך?",
"remember" => "שמירת הססמה",
"Log in" => "כניסה",
+"Alternative Logins" => "כניסות אלטרנטיביות",
"prev" => "הקודם",
"next" => "הבא",
"Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה."
diff --git a/core/l10n/my_MM.php b/core/l10n/my_MM.php
index f8d2458081c..97631d4df58 100644
--- a/core/l10n/my_MM.php
+++ b/core/l10n/my_MM.php
@@ -1,4 +1,18 @@
<?php $TRANSLATIONS = array(
+"No category to add?" => "ထည့်ရန်ခေါင်းစဉ်မရှိဘူးလား",
+"No categories selected for deletion." => "ဖျက်ရန်အတွက်ခေါင်းစဉ်မရွေးထားပါ",
+"January" => "ဇန်နဝါရီ",
+"February" => "ဖေဖော်ဝါရီ",
+"March" => "မတ်",
+"April" => "ဧပြီ",
+"May" => "မေ",
+"June" => "ဇွန်",
+"July" => "ဇူလိုင်",
+"August" => "ဩဂုတ်",
+"September" => "စက်တင်ဘာ",
+"October" => "အောက်တိုဘာ",
+"November" => "နိုဝင်ဘာ",
+"December" => "ဒီဇင်ဘာ",
"seconds ago" => "စက္ကန့်အနည်းငယ်က",
"1 minute ago" => "၁ မိနစ်အရင်က",
"1 hour ago" => "၁ နာရီ အရင်က",
@@ -7,7 +21,44 @@
"last month" => "ပြီးခဲ့သောလ",
"last year" => "မနှစ်က",
"years ago" => "နှစ် အရင်က",
+"Choose" => "ရွေးချယ်",
+"Cancel" => "ပယ်ဖျက်မည်",
+"No" => "မဟုတ်ဘူး",
+"Yes" => "ဟုတ်",
+"Ok" => "အိုကေ",
+"Password" => "စကားဝှက်",
+"Set expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်",
+"Expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်",
+"Share via email:" => "အီးမေးလ်ဖြင့်ဝေမျှမည် -",
+"Resharing is not allowed" => "ပြန်လည်ဝေမျှခြင်းခွင့်မပြုပါ",
+"can edit" => "ပြင်ဆင်နိုင်",
+"create" => "ဖန်တီးမည်",
+"delete" => "ဖျက်မည်",
+"share" => "ဝေမျှမည်",
+"Password protected" => "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်",
+"You will receive a link to reset your password via Email." => "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။",
+"Username" => "သုံးစွဲသူအမည်",
+"Your password was reset" => "သင်၏စကားဝှက်ကိုပြန်ဖော်ပြီးပါပြီ။",
+"To login page" => "ဝင်ရောက်သည့်စာမျက်နှာသို့",
+"New password" => "စကားဝှက်အသစ်",
"Users" => "သုံးစွဲသူ",
"Apps" => "Apps",
-"Help" => "အကူအညီ"
+"Admin" => "အက်ဒမင်",
+"Help" => "အကူအညီ",
+"Cloud not found" => "မတွေ့ရှိမိပါ",
+"Add" => "ပေါင်းထည့်",
+"Security Warning" => "လုံခြုံရေးသတိပေးချက်",
+"Create an <strong>admin account</strong>" => "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်",
+"Advanced" => "အဆင့်မြင့်",
+"Data folder" => "အချက်အလက်ဖိုလ်ဒါလ်",
+"Database user" => "Database သုံးစွဲသူ",
+"Database password" => "Database စကားဝှက်",
+"Database name" => "Database အမည်",
+"Finish setup" => "တပ်ဆင်ခြင်းပြီးပါပြီ။",
+"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services",
+"Lost your password?" => "သင်၏စကားဝှက်ပျောက်သွားပြီလား။",
+"remember" => "မှတ်မိစေသည်",
+"Log in" => "ဝင်ရောက်ရန်",
+"prev" => "ယခင်",
+"next" => "နောက်သို့"
);
diff --git a/core/setup.php b/core/setup.php
index f16385466cb..77eed5376d6 100644
--- a/core/setup.php
+++ b/core/setup.php
@@ -16,6 +16,7 @@ $hasSQLite = class_exists('SQLite3');
$hasMySQL = is_callable('mysql_connect');
$hasPostgreSQL = is_callable('pg_connect');
$hasOracle = is_callable('oci_connect');
+$hasMSSQL = is_callable('sqlsrv_connect');
$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
// Protect data directory here, so we can test if the protection is working
@@ -26,6 +27,7 @@ $opts = array(
'hasMySQL' => $hasMySQL,
'hasPostgreSQL' => $hasPostgreSQL,
'hasOracle' => $hasOracle,
+ 'hasMSSQL' => $hasMSSQL,
'directory' => $datadir,
'secureRNG' => OC_Util::secureRNG_available(),
'htaccessWorking' => OC_Util::ishtaccessworking(),
diff --git a/core/templates/installation.php b/core/templates/installation.php
index c48d2f764e7..aca9648d0bf 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -2,6 +2,7 @@
<input type='hidden' id='hasSQLite' value='<?php echo $_['hasSQLite'] ?>'>
<input type='hidden' id='hasPostgreSQL' value='<?php echo $_['hasPostgreSQL'] ?>'>
<input type='hidden' id='hasOracle' value='<?php echo $_['hasOracle'] ?>'>
+<input type='hidden' id='hasMSSQL' value='<?php echo $_['hasMSSQL'] ?>'>
<form action="index.php" method="post">
<input type="hidden" name="install" value="true" />
<?php if(count($_['errors']) > 0): ?>
@@ -60,7 +61,7 @@
</fieldset>
<fieldset id='databaseField'>
- <?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'])
+ <?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'] or $_['hasMSSQL'])
$hasOtherDB = true; else $hasOtherDB =false; //other than SQLite ?>
<legend><?php echo $l->t( 'Configure the database' ); ?></legend>
<div id="selectDbType">
@@ -78,7 +79,7 @@
<?php if($_['hasMySQL']): ?>
<input type='hidden' id='hasMySQL' value='true'/>
- <?php if(!$_['hasSQLite'] and !$_['hasPostgreSQL'] and !$_['hasOracle']): ?>
+ <?php if(!$_['hasSQLite'] and !$_['hasPostgreSQL'] and !$_['hasOracle'] and !$_['hasMSSQL']): ?>
<p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="mysql" />
<?php else: ?>
@@ -89,7 +90,7 @@
<?php endif; ?>
<?php if($_['hasPostgreSQL']): ?>
- <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasOracle']): ?>
+ <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasOracle'] and !$_['hasMSSQL']): ?>
<p>PostgreSQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="pgsql" />
<?php else: ?>
@@ -100,7 +101,7 @@
<?php endif; ?>
<?php if($_['hasOracle']): ?>
- <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL']): ?>
+ <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL'] and !$_['hasMSSQL']): ?>
<p>Oracle <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="oci" />
<?php else: ?>
@@ -109,6 +110,17 @@
<?php OC_Helper::init_radio('dbtype', 'oci', 'sqlite'); ?>/>
<?php endif; ?>
<?php endif; ?>
+
+ <?php if($_['hasMSSQL']): ?>
+ <input type='hidden' id='hasMSSQL' value='true'/>
+ <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL'] and !$_['hasOracle']): ?>
+ <p>MS SQL <?php echo $l->t( 'will be used' ); ?>.</p>
+ <input type="hidden" id="dbtype" name="dbtype" value="mssql" />
+ <?php else: ?>
+ <label class="mssql" for="mssql">MS SQL</label>
+ <input type="radio" name="dbtype" value='mssql' id="mssql" <?php OC_Helper::init_radio('dbtype', 'mssql', 'sqlite'); ?>/>
+ <?php endif; ?>
+ <?php endif; ?>
</div>
<?php if($hasOtherDB): ?>
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 03e55594d67..7a677b88345 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -34,7 +34,7 @@
<ul id="settings" class="svg">
<span id="expand">
- <span id="expandDisplayName"><?php echo $_['displayname'] ?></span>
+ <span id="expandDisplayName"><?php echo $_['user_displayname'] ?></span>
<img class="svg" src="<?php echo image_path('', 'actions/caret.svg'); ?>" />
</span>
<div id="expanddiv">
diff --git a/l10n/he/core.po b/l10n/he/core.po
index 49cfe652f22..612d193348f 100644
--- a/l10n/he/core.po
+++ b/l10n/he/core.po
@@ -12,9 +12,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-20 23:20+0000\n"
-"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 12:10+0000\n"
+"Last-Translator: Gilad Naaman <gilad.doom@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,24 +22,24 @@ msgstr ""
"Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ajax/share.php:85
+#: ajax/share.php:97
#, php-format
msgid "User %s shared a file with you"
msgstr "המשתמש %s שיתף אתך קובץ"
-#: ajax/share.php:87
+#: ajax/share.php:99
#, php-format
msgid "User %s shared a folder with you"
msgstr "המשתמש %s שיתף אתך תיקייה"
-#: ajax/share.php:89
+#: ajax/share.php:101
#, php-format
msgid ""
"User %s shared the file \"%s\" with you. It is available for download here: "
"%s"
msgstr "המשתמש %s שיתף אתך את הקובץ „%s“. ניתן להוריד את הקובץ מכאן: %s"
-#: ajax/share.php:91
+#: ajax/share.php:104
#, php-format
msgid ""
"User %s shared the folder \"%s\" with you. It is available for download "
@@ -57,7 +57,7 @@ msgstr "אין קטגוריה להוספה?"
#: ajax/vcategories/add.php:37
#, php-format
msgid "This category already exists: %s"
-msgstr ""
+msgstr "הקטגוריה הבאה כבר קיימת: %s"
#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27
#: ajax/vcategories/favorites.php:24
@@ -85,79 +85,79 @@ msgstr "לא נבחרו קטגוריות למחיקה"
msgid "Error removing %s from favorites."
msgstr "שגיאה בהסרת %s מהמועדפים."
-#: js/config.php:32
+#: js/config.php:34
msgid "Sunday"
msgstr "יום ראשון"
-#: js/config.php:32
+#: js/config.php:35
msgid "Monday"
msgstr "יום שני"
-#: js/config.php:32
+#: js/config.php:36
msgid "Tuesday"
msgstr "יום שלישי"
-#: js/config.php:32
+#: js/config.php:37
msgid "Wednesday"
msgstr "יום רביעי"
-#: js/config.php:32
+#: js/config.php:38
msgid "Thursday"
msgstr "יום חמישי"
-#: js/config.php:32
+#: js/config.php:39
msgid "Friday"
msgstr "יום שישי"
-#: js/config.php:32
+#: js/config.php:40
msgid "Saturday"
msgstr "שבת"
-#: js/config.php:33
+#: js/config.php:45
msgid "January"
msgstr "ינואר"
-#: js/config.php:33
+#: js/config.php:46
msgid "February"
msgstr "פברואר"
-#: js/config.php:33
+#: js/config.php:47
msgid "March"
msgstr "מרץ"
-#: js/config.php:33
+#: js/config.php:48
msgid "April"
msgstr "אפריל"
-#: js/config.php:33
+#: js/config.php:49
msgid "May"
msgstr "מאי"
-#: js/config.php:33
+#: js/config.php:50
msgid "June"
msgstr "יוני"
-#: js/config.php:33
+#: js/config.php:51
msgid "July"
msgstr "יולי"
-#: js/config.php:33
+#: js/config.php:52
msgid "August"
msgstr "אוגוסט"
-#: js/config.php:33
+#: js/config.php:53
msgid "September"
msgstr "ספטמבר"
-#: js/config.php:33
+#: js/config.php:54
msgid "October"
msgstr "אוקטובר"
-#: js/config.php:33
+#: js/config.php:55
msgid "November"
msgstr "נובמבר"
-#: js/config.php:33
+#: js/config.php:56
msgid "December"
msgstr "דצמבר"
@@ -258,7 +258,7 @@ msgstr "הקובץ הנדרש {file} אינו מותקן!"
#: js/share.js:29 js/share.js:43 js/share.js:90
msgid "Shared"
-msgstr ""
+msgstr "שותף"
#: js/share.js:93
msgid "Share"
@@ -296,7 +296,7 @@ msgstr "שיתוף עם קישור"
msgid "Password protect"
msgstr "הגנה בססמה"
-#: js/share.js:185 templates/installation.php:44 templates/login.php:35
+#: js/share.js:185 templates/installation.php:46 templates/login.php:35
msgid "Password"
msgstr "ססמה"
@@ -385,11 +385,11 @@ msgid ""
"The update was unsuccessful. Please report this issue to the <a "
"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud "
"community</a>."
-msgstr ""
+msgstr "תהליך העדכון לא הושלם בהצלחה. נא דווח את הבעיה ב<a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">קהילת ownCloud</a>."
#: js/update.js:18
msgid "The update was successful. Redirecting you to ownCloud now."
-msgstr ""
+msgstr "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud."
#: lostpassword/controller.php:48
msgid "ownCloud password reset"
@@ -411,7 +411,7 @@ msgstr "איפוס שליחת דוא״ל."
msgid "Request failed!"
msgstr "הבקשה נכשלה!"
-#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39
+#: lostpassword/templates/lostpassword.php:11 templates/installation.php:40
#: templates/login.php:28
msgid "Username"
msgstr "שם משתמש"
@@ -492,65 +492,65 @@ msgstr "ללא מחולל מספרים אקראיים מאובטח תוקף יכ
msgid ""
"Your data directory and files are probably accessible from the internet "
"because the .htaccess file does not work."
-msgstr ""
+msgstr "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד."
#: templates/installation.php:32
msgid ""
"For information how to properly configure your server, please see the <a "
"href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" "
"target=\"_blank\">documentation</a>."
-msgstr ""
+msgstr "לקבלת מידע להגדרה נכונה של השרת שלך, ראה את ה<a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">תיעוד</a>."
#: templates/installation.php:36
msgid "Create an <strong>admin account</strong>"
msgstr "יצירת <strong>חשבון מנהל</strong>"
-#: templates/installation.php:52
+#: templates/installation.php:54
msgid "Advanced"
msgstr "מתקדם"
-#: templates/installation.php:54
+#: templates/installation.php:56
msgid "Data folder"
msgstr "תיקיית נתונים"
-#: templates/installation.php:61
+#: templates/installation.php:65
msgid "Configure the database"
msgstr "הגדרת מסד הנתונים"
-#: templates/installation.php:66 templates/installation.php:77
-#: templates/installation.php:87 templates/installation.php:97
+#: templates/installation.php:70 templates/installation.php:82
+#: templates/installation.php:93 templates/installation.php:104
msgid "will be used"
msgstr "ינוצלו"
-#: templates/installation.php:109
+#: templates/installation.php:117
msgid "Database user"
msgstr "שם משתמש במסד הנתונים"
-#: templates/installation.php:113
+#: templates/installation.php:122
msgid "Database password"
msgstr "ססמת מסד הנתונים"
-#: templates/installation.php:117
+#: templates/installation.php:127
msgid "Database name"
msgstr "שם מסד הנתונים"
-#: templates/installation.php:125
+#: templates/installation.php:137
msgid "Database tablespace"
msgstr "מרחב הכתובות של מסד הנתונים"
-#: templates/installation.php:131
+#: templates/installation.php:144
msgid "Database host"
msgstr "שרת בסיס נתונים"
-#: templates/installation.php:136
+#: templates/installation.php:150
msgid "Finish setup"
msgstr "סיום התקנה"
-#: templates/layout.guest.php:33
+#: templates/layout.guest.php:35
msgid "web services under your control"
msgstr "שירותי רשת בשליטתך"
-#: templates/layout.user.php:48
+#: templates/layout.user.php:53
msgid "Log out"
msgstr "התנתקות"
@@ -582,7 +582,7 @@ msgstr "כניסה"
#: templates/login.php:49
msgid "Alternative Logins"
-msgstr ""
+msgstr "כניסות אלטרנטיביות"
#: templates/part.pagenavi.php:3
msgid "prev"
diff --git a/l10n/he/files.po b/l10n/he/files.po
index aa31effeb90..569dbeb0daa 100644
--- a/l10n/he/files.po
+++ b/l10n/he/files.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-20 23:30+0000\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 12:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n"
@@ -54,27 +54,27 @@ msgid ""
"the HTML form"
msgstr "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML"
-#: ajax/upload.php:31
+#: ajax/upload.php:30
msgid "The uploaded file was only partially uploaded"
msgstr "הקובץ שהועלה הועלה בצורה חלקית"
-#: ajax/upload.php:32
+#: ajax/upload.php:31
msgid "No file was uploaded"
msgstr "לא הועלו קבצים"
-#: ajax/upload.php:33
+#: ajax/upload.php:32
msgid "Missing a temporary folder"
msgstr "תיקייה זמנית חסרה"
-#: ajax/upload.php:34
+#: ajax/upload.php:33
msgid "Failed to write to disk"
msgstr "הכתיבה לכונן נכשלה"
-#: ajax/upload.php:52
+#: ajax/upload.php:51
msgid "Not enough storage available"
msgstr ""
-#: ajax/upload.php:83
+#: ajax/upload.php:82
msgid "Invalid directory."
msgstr ""
@@ -84,7 +84,7 @@ msgstr "קבצים"
#: js/fileactions.js:125
msgid "Delete permanently"
-msgstr ""
+msgstr "מחק לצמיתות"
#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92
msgid "Delete"
diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po
index fc348ed86c4..0f5b6dca9e8 100644
--- a/l10n/he/files_trashbin.po
+++ b/l10n/he/files_trashbin.po
@@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
+# Gilad Naaman <gilad.doom@gmail.com>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-20 23:32+0000\n"
-"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 12:30+0000\n"
+"Last-Translator: Gilad Naaman <gilad.doom@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,24 +21,24 @@ msgstr ""
#: ajax/delete.php:40
#, php-format
msgid "Couldn't delete %s permanently"
-msgstr ""
+msgstr "בלתי אפשרי למחוק את %s לצמיתות"
#: ajax/undelete.php:41
#, php-format
msgid "Couldn't restore %s"
-msgstr ""
+msgstr "בלתי אפשרי לשחזר את %s"
#: js/trash.js:7 js/trash.js:96
msgid "perform restore operation"
-msgstr ""
+msgstr "בצע פעולת שחזור"
#: js/trash.js:34
msgid "delete file permanently"
-msgstr ""
+msgstr "מחק קובץ לצמיתות"
#: js/trash.js:121
msgid "Delete permanently"
-msgstr ""
+msgstr "מחק לצמיתות"
#: js/trash.js:151 templates/index.php:17
msgid "Name"
@@ -45,7 +46,7 @@ msgstr "שם"
#: js/trash.js:152 templates/index.php:27
msgid "Deleted"
-msgstr ""
+msgstr "נמחק"
#: js/trash.js:161
msgid "1 folder"
@@ -65,11 +66,11 @@ msgstr "{count} קבצים"
#: templates/index.php:9
msgid "Nothing in here. Your trash bin is empty!"
-msgstr ""
+msgstr "שום דבר כאן. סל המחזור שלך ריק!"
#: templates/index.php:20 templates/index.php:22
msgid "Restore"
-msgstr ""
+msgstr "שחזר"
#: templates/index.php:30 templates/index.php:31
msgid "Delete"
diff --git a/l10n/he/settings.po b/l10n/he/settings.po
index 67cfba57dd5..72e496d2620 100644
--- a/l10n/he/settings.po
+++ b/l10n/he/settings.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-20 23:30+0000\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 12:20+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n"
@@ -25,8 +25,8 @@ msgstr ""
msgid "Unable to load list from App Store"
msgstr "לא ניתן לטעון רשימה מה־App Store"
-#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15
-#: ajax/togglegroups.php:18
+#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:17
+#: ajax/togglegroups.php:20
msgid "Authentication error"
msgstr "שגיאת הזדהות"
@@ -74,12 +74,12 @@ msgstr "בקשה לא חוקית"
msgid "Admins can't remove themself from the admin group"
msgstr "מנהלים לא יכולים להסיר את עצמם מקבוצת המנהלים"
-#: ajax/togglegroups.php:28
+#: ajax/togglegroups.php:30
#, php-format
msgid "Unable to add user to group %s"
msgstr "לא ניתן להוסיף משתמש לקבוצה %s"
-#: ajax/togglegroups.php:34
+#: ajax/togglegroups.php:36
#, php-format
msgid "Unable to remove user from group %s"
msgstr "לא ניתן להסיר משתמש מהקבוצה %s"
@@ -320,11 +320,11 @@ msgstr ""
msgid "More"
msgstr "יותר"
-#: templates/admin.php:227 templates/personal.php:98
+#: templates/admin.php:227 templates/personal.php:102
msgid "Version"
msgstr "גרסא"
-#: templates/admin.php:230 templates/personal.php:100
+#: templates/admin.php:230 templates/personal.php:105
msgid ""
"Developed by the <a href=\"http://ownCloud.org/contact\" "
"target=\"_blank\">ownCloud community</a>, the <a "
@@ -334,51 +334,51 @@ msgid ""
"License\">AGPL</abbr></a>."
msgstr "פותח על די <a href=\"http://ownCloud.org/contact\" target=\"_blank\">קהילתownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">קוד המקור</a> מוגן ברישיון <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>."
-#: templates/apps.php:10
+#: templates/apps.php:11
msgid "Add your App"
msgstr "הוספת היישום שלך"
-#: templates/apps.php:11
+#: templates/apps.php:12
msgid "More Apps"
msgstr "יישומים נוספים"
-#: templates/apps.php:24
+#: templates/apps.php:28
msgid "Select an App"
msgstr "בחירת יישום"
-#: templates/apps.php:28
+#: templates/apps.php:34
msgid "See application page at apps.owncloud.com"
msgstr "צפה בעמוד הישום ב apps.owncloud.com"
-#: templates/apps.php:29
+#: templates/apps.php:36
msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>"
msgstr "ברישיון <span class=\"licence\"></span>לטובת <span class=\"author\"></span>"
-#: templates/apps.php:31
+#: templates/apps.php:38
msgid "Update"
msgstr "עדכון"
-#: templates/help.php:3
+#: templates/help.php:4
msgid "User Documentation"
msgstr "תיעוד משתמש"
-#: templates/help.php:4
+#: templates/help.php:6
msgid "Administrator Documentation"
msgstr "תיעוד מנהלים"
-#: templates/help.php:6
+#: templates/help.php:9
msgid "Online Documentation"
msgstr "תיעוד מקוון"
-#: templates/help.php:7
+#: templates/help.php:11
msgid "Forum"
msgstr "פורום"
-#: templates/help.php:9
+#: templates/help.php:14
msgid "Bugtracker"
msgstr ""
-#: templates/help.php:11
+#: templates/help.php:17
msgid "Commercial Support"
msgstr "תמיכה בתשלום"
@@ -387,79 +387,79 @@ msgstr "תמיכה בתשלום"
msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>"
msgstr "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך"
-#: templates/personal.php:14
+#: templates/personal.php:15
msgid "Get the apps to sync your files"
-msgstr ""
+msgstr "השג את האפליקציות על מנת לסנכרן את הקבצים שלך"
-#: templates/personal.php:25
+#: templates/personal.php:26
msgid "Show First Run Wizard again"
msgstr ""
-#: templates/personal.php:36 templates/users.php:23 templates/users.php:79
+#: templates/personal.php:37 templates/users.php:23 templates/users.php:79
msgid "Password"
msgstr "ססמה"
-#: templates/personal.php:37
+#: templates/personal.php:38
msgid "Your password was changed"
msgstr "הססמה שלך הוחלפה"
-#: templates/personal.php:38
+#: templates/personal.php:39
msgid "Unable to change your password"
msgstr "לא ניתן לשנות את הססמה שלך"
-#: templates/personal.php:39
+#: templates/personal.php:40
msgid "Current password"
msgstr "ססמה נוכחית"
-#: templates/personal.php:40
+#: templates/personal.php:42
msgid "New password"
msgstr "ססמה חדשה"
-#: templates/personal.php:42
+#: templates/personal.php:44
msgid "Change password"
msgstr "שינוי ססמה"
-#: templates/personal.php:54 templates/users.php:78
+#: templates/personal.php:56 templates/users.php:78
msgid "Display Name"
msgstr ""
-#: templates/personal.php:55
+#: templates/personal.php:57
msgid "Your display name was changed"
msgstr ""
-#: templates/personal.php:56
+#: templates/personal.php:58
msgid "Unable to change your display name"
msgstr ""
-#: templates/personal.php:59
+#: templates/personal.php:61
msgid "Change display name"
msgstr ""
-#: templates/personal.php:68
+#: templates/personal.php:70
msgid "Email"
msgstr "דוא״ל"
-#: templates/personal.php:69
+#: templates/personal.php:72
msgid "Your email address"
msgstr "כתובת הדוא״ל שלך"
-#: templates/personal.php:70
+#: templates/personal.php:73
msgid "Fill in an email address to enable password recovery"
msgstr "נא למלא את כתובת הדוא״ל שלך כדי לאפשר שחזור ססמה"
-#: templates/personal.php:76 templates/personal.php:77
+#: templates/personal.php:79 templates/personal.php:80
msgid "Language"
msgstr "פה"
-#: templates/personal.php:82
+#: templates/personal.php:86
msgid "Help translate"
msgstr "עזרה בתרגום"
-#: templates/personal.php:87
+#: templates/personal.php:91
msgid "WebDAV"
msgstr ""
-#: templates/personal.php:89
+#: templates/personal.php:93
msgid "Use this address to connect to your ownCloud in your file manager"
msgstr "השתמש בכתובת זאת על מנת להתחבר אל ownCloud דרך סייר קבצים."
diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po
index cd67250d867..0052056c210 100644
--- a/l10n/he/user_ldap.po
+++ b/l10n/he/user_ldap.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-08 00:10+0100\n"
-"PO-Revision-Date: 2013-02-07 23:11+0000\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 12:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n"
@@ -22,17 +22,17 @@ msgstr ""
msgid "Failed to delete the server configuration"
msgstr ""
-#: ajax/testConfiguration.php:35
+#: ajax/testConfiguration.php:36
msgid "The configuration is valid and the connection could be established!"
msgstr ""
-#: ajax/testConfiguration.php:37
+#: ajax/testConfiguration.php:39
msgid ""
"The configuration is valid, but the Bind failed. Please check the server "
"settings and credentials."
msgstr ""
-#: ajax/testConfiguration.php:40
+#: ajax/testConfiguration.php:43
msgid ""
"The configuration is invalid. Please look in the ownCloud log for further "
"details."
@@ -87,224 +87,224 @@ msgstr ""
msgid "Server configuration"
msgstr ""
-#: templates/settings.php:17
+#: templates/settings.php:18
msgid "Add Server Configuration"
msgstr ""
-#: templates/settings.php:21
+#: templates/settings.php:23
msgid "Host"
msgstr "מארח"
-#: templates/settings.php:21
+#: templates/settings.php:25
msgid ""
"You can omit the protocol, except you require SSL. Then start with ldaps://"
msgstr ""
-#: templates/settings.php:22
+#: templates/settings.php:26
msgid "Base DN"
msgstr ""
-#: templates/settings.php:22
+#: templates/settings.php:27
msgid "One Base DN per line"
msgstr ""
-#: templates/settings.php:22
+#: templates/settings.php:28
msgid "You can specify Base DN for users and groups in the Advanced tab"
msgstr ""
-#: templates/settings.php:23
+#: templates/settings.php:30
msgid "User DN"
msgstr "DN משתמש"
-#: templates/settings.php:23
+#: templates/settings.php:32
msgid ""
"The DN of the client user with which the bind shall be done, e.g. "
"uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password "
"empty."
msgstr ""
-#: templates/settings.php:24
+#: templates/settings.php:33
msgid "Password"
msgstr "סיסמא"
-#: templates/settings.php:24
+#: templates/settings.php:36
msgid "For anonymous access, leave DN and Password empty."
msgstr "לגישה אנונימית, השאר את הDM והסיסמא ריקים."
-#: templates/settings.php:25
+#: templates/settings.php:37
msgid "User Login Filter"
msgstr "סנן כניסת משתמש"
-#: templates/settings.php:25
+#: templates/settings.php:40
#, php-format
msgid ""
"Defines the filter to apply, when login is attempted. %%uid replaces the "
"username in the login action."
msgstr ""
-#: templates/settings.php:25
+#: templates/settings.php:41
#, php-format
msgid "use %%uid placeholder, e.g. \"uid=%%uid\""
msgstr ""
-#: templates/settings.php:26
+#: templates/settings.php:42
msgid "User List Filter"
msgstr "סנן רשימת משתמשים"
-#: templates/settings.php:26
+#: templates/settings.php:45
msgid "Defines the filter to apply, when retrieving users."
msgstr ""
-#: templates/settings.php:26
+#: templates/settings.php:46
msgid "without any placeholder, e.g. \"objectClass=person\"."
msgstr ""
-#: templates/settings.php:27
+#: templates/settings.php:47
msgid "Group Filter"
msgstr "סנן קבוצה"
-#: templates/settings.php:27
+#: templates/settings.php:50
msgid "Defines the filter to apply, when retrieving groups."
msgstr ""
-#: templates/settings.php:27
+#: templates/settings.php:51
msgid "without any placeholder, e.g. \"objectClass=posixGroup\"."
msgstr ""
-#: templates/settings.php:31
+#: templates/settings.php:55
msgid "Connection Settings"
msgstr ""
-#: templates/settings.php:33
+#: templates/settings.php:57
msgid "Configuration Active"
msgstr ""
-#: templates/settings.php:33
+#: templates/settings.php:57
msgid "When unchecked, this configuration will be skipped."
msgstr ""
-#: templates/settings.php:34
+#: templates/settings.php:58
msgid "Port"
-msgstr ""
+msgstr "פורט"
-#: templates/settings.php:35
+#: templates/settings.php:59
msgid "Backup (Replica) Host"
msgstr ""
-#: templates/settings.php:35
+#: templates/settings.php:59
msgid ""
"Give an optional backup host. It must be a replica of the main LDAP/AD "
"server."
msgstr ""
-#: templates/settings.php:36
+#: templates/settings.php:60
msgid "Backup (Replica) Port"
msgstr ""
-#: templates/settings.php:37
+#: templates/settings.php:61
msgid "Disable Main Server"
msgstr ""
-#: templates/settings.php:37
+#: templates/settings.php:61
msgid "When switched on, ownCloud will only connect to the replica server."
msgstr ""
-#: templates/settings.php:38
+#: templates/settings.php:62
msgid "Use TLS"
msgstr ""
-#: templates/settings.php:38
+#: templates/settings.php:62
msgid "Do not use it additionally for LDAPS connections, it will fail."
msgstr ""
-#: templates/settings.php:39
+#: templates/settings.php:63
msgid "Case insensitve LDAP server (Windows)"
msgstr ""
-#: templates/settings.php:40
+#: templates/settings.php:64
msgid "Turn off SSL certificate validation."
msgstr ""
-#: templates/settings.php:40
+#: templates/settings.php:64
msgid ""
"If connection only works with this option, import the LDAP server's SSL "
"certificate in your ownCloud server."
msgstr ""
-#: templates/settings.php:40
+#: templates/settings.php:64
msgid "Not recommended, use for testing only."
msgstr ""
-#: templates/settings.php:41
+#: templates/settings.php:65
msgid "in seconds. A change empties the cache."
msgstr "בשניות. שינוי מרוקן את המטמון."
-#: templates/settings.php:43
+#: templates/settings.php:67
msgid "Directory Settings"
msgstr ""
-#: templates/settings.php:45
+#: templates/settings.php:69
msgid "User Display Name Field"
msgstr ""
-#: templates/settings.php:45
+#: templates/settings.php:69
msgid "The LDAP attribute to use to generate the user`s ownCloud name."
msgstr ""
-#: templates/settings.php:46
+#: templates/settings.php:70
msgid "Base User Tree"
msgstr ""
-#: templates/settings.php:46
+#: templates/settings.php:70
msgid "One User Base DN per line"
msgstr ""
-#: templates/settings.php:47
+#: templates/settings.php:71
msgid "User Search Attributes"
msgstr ""
-#: templates/settings.php:47 templates/settings.php:50
+#: templates/settings.php:71 templates/settings.php:74
msgid "Optional; one attribute per line"
msgstr ""
-#: templates/settings.php:48
+#: templates/settings.php:72
msgid "Group Display Name Field"
msgstr ""
-#: templates/settings.php:48
+#: templates/settings.php:72
msgid "The LDAP attribute to use to generate the groups`s ownCloud name."
msgstr ""
-#: templates/settings.php:49
+#: templates/settings.php:73
msgid "Base Group Tree"
msgstr ""
-#: templates/settings.php:49
+#: templates/settings.php:73
msgid "One Group Base DN per line"
msgstr ""
-#: templates/settings.php:50
+#: templates/settings.php:74
msgid "Group Search Attributes"
msgstr ""
-#: templates/settings.php:51
+#: templates/settings.php:75
msgid "Group-Member association"
msgstr ""
-#: templates/settings.php:53
+#: templates/settings.php:77
msgid "Special Attributes"
msgstr ""
-#: templates/settings.php:56
+#: templates/settings.php:80
msgid "in bytes"
msgstr "בבתים"
-#: templates/settings.php:58
+#: templates/settings.php:82
msgid ""
"Leave empty for user name (default). Otherwise, specify an LDAP/AD "
"attribute."
msgstr ""
-#: templates/settings.php:62
+#: templates/settings.php:86
msgid "Help"
msgstr "עזרה"
diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po
index f681f707da9..f7b5644106d 100644
--- a/l10n/my_MM/core.po
+++ b/l10n/my_MM/core.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-21 11:20+0000\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 11:20+0000\n"
"Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
"MIME-Version: 1.0\n"
@@ -18,24 +18,24 @@ msgstr ""
"Language: my_MM\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: ajax/share.php:85
+#: ajax/share.php:97
#, php-format
msgid "User %s shared a file with you"
msgstr ""
-#: ajax/share.php:87
+#: ajax/share.php:99
#, php-format
msgid "User %s shared a folder with you"
msgstr ""
-#: ajax/share.php:89
+#: ajax/share.php:101
#, php-format
msgid ""
"User %s shared the file \"%s\" with you. It is available for download here: "
"%s"
msgstr ""
-#: ajax/share.php:91
+#: ajax/share.php:104
#, php-format
msgid ""
"User %s shared the folder \"%s\" with you. It is available for download "
@@ -48,7 +48,7 @@ msgstr ""
#: ajax/vcategories/add.php:30
msgid "No category to add?"
-msgstr ""
+msgstr "ထည့်ရန်ခေါင်းစဉ်မရှိဘူးလား"
#: ajax/vcategories/add.php:37
#, php-format
@@ -74,88 +74,88 @@ msgstr ""
#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136
msgid "No categories selected for deletion."
-msgstr ""
+msgstr "ဖျက်ရန်အတွက်ခေါင်းစဉ်မရွေးထားပါ"
#: ajax/vcategories/removeFromFavorites.php:35
#, php-format
msgid "Error removing %s from favorites."
msgstr ""
-#: js/config.php:32
+#: js/config.php:34
msgid "Sunday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:35
msgid "Monday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:36
msgid "Tuesday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:37
msgid "Wednesday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:38
msgid "Thursday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:39
msgid "Friday"
msgstr ""
-#: js/config.php:32
+#: js/config.php:40
msgid "Saturday"
msgstr ""
-#: js/config.php:33
+#: js/config.php:45
msgid "January"
-msgstr ""
+msgstr "ဇန်နဝါရီ"
-#: js/config.php:33
+#: js/config.php:46
msgid "February"
-msgstr ""
+msgstr "ဖေဖော်ဝါရီ"
-#: js/config.php:33
+#: js/config.php:47
msgid "March"
-msgstr ""
+msgstr "မတ်"
-#: js/config.php:33
+#: js/config.php:48
msgid "April"
-msgstr ""
+msgstr "ဧပြီ"
-#: js/config.php:33
+#: js/config.php:49
msgid "May"
-msgstr ""
+msgstr "မေ"
-#: js/config.php:33
+#: js/config.php:50
msgid "June"
-msgstr ""
+msgstr "ဇွန်"
-#: js/config.php:33
+#: js/config.php:51
msgid "July"
-msgstr ""
+msgstr "ဇူလိုင်"
-#: js/config.php:33
+#: js/config.php:52
msgid "August"
-msgstr ""
+msgstr "ဩဂုတ်"
-#: js/config.php:33
+#: js/config.php:53
msgid "September"
-msgstr ""
+msgstr "စက်တင်ဘာ"
-#: js/config.php:33
+#: js/config.php:54
msgid "October"
-msgstr ""
+msgstr "အောက်တိုဘာ"
-#: js/config.php:33
+#: js/config.php:55
msgid "November"
-msgstr ""
+msgstr "နိုဝင်ဘာ"
-#: js/config.php:33
+#: js/config.php:56
msgid "December"
-msgstr ""
+msgstr "ဒီဇင်ဘာ"
#: js/js.js:286
msgid "Settings"
@@ -215,23 +215,23 @@ msgstr "နှစ် အရင်က"
#: js/oc-dialogs.js:126
msgid "Choose"
-msgstr ""
+msgstr "ရွေးချယ်"
#: js/oc-dialogs.js:146 js/oc-dialogs.js:166
msgid "Cancel"
-msgstr ""
+msgstr "ပယ်ဖျက်မည်"
#: js/oc-dialogs.js:162
msgid "No"
-msgstr ""
+msgstr "မဟုတ်ဘူး"
#: js/oc-dialogs.js:163
msgid "Yes"
-msgstr ""
+msgstr "ဟုတ်"
#: js/oc-dialogs.js:180
msgid "Ok"
-msgstr ""
+msgstr "အိုကေ"
#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102
#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162
@@ -292,9 +292,9 @@ msgstr ""
msgid "Password protect"
msgstr ""
-#: js/share.js:185 templates/installation.php:44 templates/login.php:35
+#: js/share.js:185 templates/installation.php:46 templates/login.php:35
msgid "Password"
-msgstr ""
+msgstr "စကားဝှက်"
#: js/share.js:189
msgid "Email link to person"
@@ -306,15 +306,15 @@ msgstr ""
#: js/share.js:194
msgid "Set expiration date"
-msgstr ""
+msgstr "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်"
#: js/share.js:195
msgid "Expiration date"
-msgstr ""
+msgstr "သက်တမ်းကုန်ဆုံးမည့်ရက်"
#: js/share.js:227
msgid "Share via email:"
-msgstr ""
+msgstr "အီးမေးလ်ဖြင့်ဝေမျှမည် -"
#: js/share.js:229
msgid "No people found"
@@ -322,7 +322,7 @@ msgstr ""
#: js/share.js:256
msgid "Resharing is not allowed"
-msgstr ""
+msgstr "ပြန်လည်ဝေမျှခြင်းခွင့်မပြုပါ"
#: js/share.js:292
msgid "Shared in {item} with {user}"
@@ -334,7 +334,7 @@ msgstr ""
#: js/share.js:325
msgid "can edit"
-msgstr ""
+msgstr "ပြင်ဆင်နိုင်"
#: js/share.js:327
msgid "access control"
@@ -342,7 +342,7 @@ msgstr ""
#: js/share.js:330
msgid "create"
-msgstr ""
+msgstr "ဖန်တီးမည်"
#: js/share.js:333
msgid "update"
@@ -350,15 +350,15 @@ msgstr ""
#: js/share.js:336
msgid "delete"
-msgstr ""
+msgstr "ဖျက်မည်"
#: js/share.js:339
msgid "share"
-msgstr ""
+msgstr "ဝေမျှမည်"
#: js/share.js:373 js/share.js:569
msgid "Password protected"
-msgstr ""
+msgstr "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်"
#: js/share.js:582
msgid "Error unsetting expiration date"
@@ -397,7 +397,7 @@ msgstr ""
#: lostpassword/templates/lostpassword.php:3
msgid "You will receive a link to reset your password via Email."
-msgstr ""
+msgstr "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။"
#: lostpassword/templates/lostpassword.php:5
msgid "Reset email send."
@@ -407,10 +407,10 @@ msgstr ""
msgid "Request failed!"
msgstr ""
-#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39
+#: lostpassword/templates/lostpassword.php:11 templates/installation.php:40
#: templates/login.php:28
msgid "Username"
-msgstr ""
+msgstr "သုံးစွဲသူအမည်"
#: lostpassword/templates/lostpassword.php:14
msgid "Request reset"
@@ -418,15 +418,15 @@ msgstr ""
#: lostpassword/templates/resetpassword.php:4
msgid "Your password was reset"
-msgstr ""
+msgstr "သင်၏စကားဝှက်ကိုပြန်ဖော်ပြီးပါပြီ။"
#: lostpassword/templates/resetpassword.php:5
msgid "To login page"
-msgstr ""
+msgstr "ဝင်ရောက်သည့်စာမျက်နှာသို့"
#: lostpassword/templates/resetpassword.php:8
msgid "New password"
-msgstr ""
+msgstr "စကားဝှက်အသစ်"
#: lostpassword/templates/resetpassword.php:11
msgid "Reset password"
@@ -446,7 +446,7 @@ msgstr "Apps"
#: strings.php:8
msgid "Admin"
-msgstr ""
+msgstr "အက်ဒမင်"
#: strings.php:9
msgid "Help"
@@ -458,7 +458,7 @@ msgstr ""
#: templates/404.php:12
msgid "Cloud not found"
-msgstr ""
+msgstr "မတွေ့ရှိမိပါ"
#: templates/edit_categories_dialog.php:4
msgid "Edit categories"
@@ -466,11 +466,11 @@ msgstr ""
#: templates/edit_categories_dialog.php:16
msgid "Add"
-msgstr ""
+msgstr "ပေါင်းထည့်"
#: templates/installation.php:23 templates/installation.php:30
msgid "Security Warning"
-msgstr ""
+msgstr "လုံခြုံရေးသတိပေးချက်"
#: templates/installation.php:24
msgid ""
@@ -499,54 +499,54 @@ msgstr ""
#: templates/installation.php:36
msgid "Create an <strong>admin account</strong>"
-msgstr ""
+msgstr "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်"
-#: templates/installation.php:52
+#: templates/installation.php:54
msgid "Advanced"
-msgstr ""
+msgstr "အဆင့်မြင့်"
-#: templates/installation.php:54
+#: templates/installation.php:56
msgid "Data folder"
-msgstr ""
+msgstr "အချက်အလက်ဖိုလ်ဒါလ်"
-#: templates/installation.php:61
+#: templates/installation.php:65
msgid "Configure the database"
msgstr ""
-#: templates/installation.php:66 templates/installation.php:77
-#: templates/installation.php:87 templates/installation.php:97
+#: templates/installation.php:70 templates/installation.php:82
+#: templates/installation.php:93 templates/installation.php:104
msgid "will be used"
msgstr ""
-#: templates/installation.php:109
+#: templates/installation.php:117
msgid "Database user"
-msgstr ""
+msgstr "Database သုံးစွဲသူ"
-#: templates/installation.php:113
+#: templates/installation.php:122
msgid "Database password"
-msgstr ""
+msgstr "Database စကားဝှက်"
-#: templates/installation.php:117
+#: templates/installation.php:127
msgid "Database name"
-msgstr ""
+msgstr "Database အမည်"
-#: templates/installation.php:125
+#: templates/installation.php:137
msgid "Database tablespace"
msgstr ""
-#: templates/installation.php:131
+#: templates/installation.php:144
msgid "Database host"
msgstr ""
-#: templates/installation.php:136
+#: templates/installation.php:150
msgid "Finish setup"
-msgstr ""
+msgstr "တပ်ဆင်ခြင်းပြီးပါပြီ။"
-#: templates/layout.guest.php:33
+#: templates/layout.guest.php:35
msgid "web services under your control"
-msgstr ""
+msgstr "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"
-#: templates/layout.user.php:48
+#: templates/layout.user.php:53
msgid "Log out"
msgstr ""
@@ -566,15 +566,15 @@ msgstr ""
#: templates/login.php:19
msgid "Lost your password?"
-msgstr ""
+msgstr "သင်၏စကားဝှက်ပျောက်သွားပြီလား။"
#: templates/login.php:41
msgid "remember"
-msgstr ""
+msgstr "မှတ်မိစေသည်"
#: templates/login.php:43
msgid "Log in"
-msgstr ""
+msgstr "ဝင်ရောက်ရန်"
#: templates/login.php:49
msgid "Alternative Logins"
@@ -582,11 +582,11 @@ msgstr ""
#: templates/part.pagenavi.php:3
msgid "prev"
-msgstr ""
+msgstr "ယခင်"
#: templates/part.pagenavi.php:20
msgid "next"
-msgstr ""
+msgstr "နောက်သို့"
#: templates/update.php:3
#, php-format
diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po
index 2886a4d02bc..6c66538b0e2 100644
--- a/l10n/my_MM/files_sharing.po
+++ b/l10n/my_MM/files_sharing.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-21 00:14+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2012-08-12 22:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@@ -19,30 +19,30 @@ msgstr ""
#: templates/authenticate.php:4
msgid "Password"
-msgstr ""
+msgstr "စကားဝှက်"
#: templates/authenticate.php:6
msgid "Submit"
msgstr ""
-#: templates/public.php:9
+#: templates/public.php:10
#, php-format
msgid "%s shared the folder %s with you"
msgstr ""
-#: templates/public.php:11
+#: templates/public.php:13
#, php-format
msgid "%s shared the file %s with you"
msgstr ""
-#: templates/public.php:14 templates/public.php:30
+#: templates/public.php:19 templates/public.php:37
msgid "Download"
msgstr ""
-#: templates/public.php:29
+#: templates/public.php:34
msgid "No preview available for"
msgstr ""
-#: templates/public.php:35
+#: templates/public.php:43
msgid "web services under your control"
-msgstr ""
+msgstr "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"
diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po
index 436088e71e9..b2c72b85c53 100644
--- a/l10n/my_MM/lib.po
+++ b/l10n/my_MM/lib.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
-"PO-Revision-Date: 2013-02-21 11:20+0000\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
+"PO-Revision-Date: 2013-02-24 08:40+0000\n"
"Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
"MIME-Version: 1.0\n"
@@ -40,7 +40,7 @@ msgstr "Apps"
#: app.php:406
msgid "Admin"
-msgstr ""
+msgstr "အက်ဒမင်"
#: files.php:202
msgid "ZIP download is turned off."
@@ -178,7 +178,7 @@ msgid ""
"because the WebDAV interface seems to be broken."
msgstr ""
-#: setup.php:651
+#: setup.php:650
#, php-format
msgid "Please double check the <a href='%s'>installation guides</a>."
msgstr ""
diff --git a/l10n/my_MM/settings.po b/l10n/my_MM/settings.po
index ce5041c02e0..bb7c8afa2de 100644
--- a/l10n/my_MM/settings.po
+++ b/l10n/my_MM/settings.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2011-07-25 16:05+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@@ -21,8 +21,8 @@ msgstr ""
msgid "Unable to load list from App Store"
msgstr ""
-#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15
-#: ajax/togglegroups.php:18
+#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:17
+#: ajax/togglegroups.php:20
msgid "Authentication error"
msgstr "ခွင့်ပြုချက်မအောင်မြင်"
@@ -70,12 +70,12 @@ msgstr ""
msgid "Admins can't remove themself from the admin group"
msgstr ""
-#: ajax/togglegroups.php:28
+#: ajax/togglegroups.php:30
#, php-format
msgid "Unable to add user to group %s"
msgstr ""
-#: ajax/togglegroups.php:34
+#: ajax/togglegroups.php:36
#, php-format
msgid "Unable to remove user from group %s"
msgstr ""
@@ -167,7 +167,7 @@ msgstr ""
#: templates/admin.php:15
msgid "Security Warning"
-msgstr ""
+msgstr "လုံခြုံရေးသတိပေးချက်"
#: templates/admin.php:18
msgid ""
@@ -316,11 +316,11 @@ msgstr ""
msgid "More"
msgstr ""
-#: templates/admin.php:227 templates/personal.php:98
+#: templates/admin.php:227 templates/personal.php:102
msgid "Version"
msgstr ""
-#: templates/admin.php:230 templates/personal.php:100
+#: templates/admin.php:230 templates/personal.php:105
msgid ""
"Developed by the <a href=\"http://ownCloud.org/contact\" "
"target=\"_blank\">ownCloud community</a>, the <a "
@@ -330,51 +330,51 @@ msgid ""
"License\">AGPL</abbr></a>."
msgstr ""
-#: templates/apps.php:10
+#: templates/apps.php:11
msgid "Add your App"
msgstr ""
-#: templates/apps.php:11
+#: templates/apps.php:12
msgid "More Apps"
msgstr ""
-#: templates/apps.php:24
+#: templates/apps.php:28
msgid "Select an App"
msgstr ""
-#: templates/apps.php:28
+#: templates/apps.php:34
msgid "See application page at apps.owncloud.com"
msgstr ""
-#: templates/apps.php:29
+#: templates/apps.php:36
msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>"
msgstr ""
-#: templates/apps.php:31
+#: templates/apps.php:38
msgid "Update"
msgstr ""
-#: templates/help.php:3
+#: templates/help.php:4
msgid "User Documentation"
msgstr ""
-#: templates/help.php:4
+#: templates/help.php:6
msgid "Administrator Documentation"
msgstr ""
-#: templates/help.php:6
+#: templates/help.php:9
msgid "Online Documentation"
msgstr ""
-#: templates/help.php:7
+#: templates/help.php:11
msgid "Forum"
msgstr ""
-#: templates/help.php:9
+#: templates/help.php:14
msgid "Bugtracker"
msgstr ""
-#: templates/help.php:11
+#: templates/help.php:17
msgid "Commercial Support"
msgstr ""
@@ -383,79 +383,79 @@ msgstr ""
msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>"
msgstr ""
-#: templates/personal.php:14
+#: templates/personal.php:15
msgid "Get the apps to sync your files"
msgstr ""
-#: templates/personal.php:25
+#: templates/personal.php:26
msgid "Show First Run Wizard again"
msgstr ""
-#: templates/personal.php:36 templates/users.php:23 templates/users.php:79
+#: templates/personal.php:37 templates/users.php:23 templates/users.php:79
msgid "Password"
-msgstr ""
+msgstr "စကားဝှက်"
-#: templates/personal.php:37
+#: templates/personal.php:38
msgid "Your password was changed"
msgstr ""
-#: templates/personal.php:38
+#: templates/personal.php:39
msgid "Unable to change your password"
msgstr ""
-#: templates/personal.php:39
+#: templates/personal.php:40
msgid "Current password"
msgstr ""
-#: templates/personal.php:40
+#: templates/personal.php:42
msgid "New password"
-msgstr ""
+msgstr "စကားဝှက်အသစ်"
-#: templates/personal.php:42
+#: templates/personal.php:44
msgid "Change password"
msgstr ""
-#: templates/personal.php:54 templates/users.php:78
+#: templates/personal.php:56 templates/users.php:78
msgid "Display Name"
msgstr ""
-#: templates/personal.php:55
+#: templates/personal.php:57
msgid "Your display name was changed"
msgstr ""
-#: templates/personal.php:56
+#: templates/personal.php:58
msgid "Unable to change your display name"
msgstr ""
-#: templates/personal.php:59
+#: templates/personal.php:61
msgid "Change display name"
msgstr ""
-#: templates/personal.php:68
+#: templates/personal.php:70
msgid "Email"
msgstr ""
-#: templates/personal.php:69
+#: templates/personal.php:72
msgid "Your email address"
msgstr ""
-#: templates/personal.php:70
+#: templates/personal.php:73
msgid "Fill in an email address to enable password recovery"
msgstr ""
-#: templates/personal.php:76 templates/personal.php:77
+#: templates/personal.php:79 templates/personal.php:80
msgid "Language"
msgstr ""
-#: templates/personal.php:82
+#: templates/personal.php:86
msgid "Help translate"
msgstr ""
-#: templates/personal.php:87
+#: templates/personal.php:91
msgid "WebDAV"
msgstr ""
-#: templates/personal.php:89
+#: templates/personal.php:93
msgid "Use this address to connect to your ownCloud in your file manager"
msgstr ""
diff --git a/l10n/my_MM/user_ldap.po b/l10n/my_MM/user_ldap.po
index e990717a5f3..918b95dbf34 100644
--- a/l10n/my_MM/user_ldap.po
+++ b/l10n/my_MM/user_ldap.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
-"POT-Creation-Date: 2013-02-22 00:06+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2012-08-12 22:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@@ -124,7 +124,7 @@ msgstr ""
#: templates/settings.php:33
msgid "Password"
-msgstr ""
+msgstr "စကားဝှက်"
#: templates/settings.php:36
msgid "For anonymous access, leave DN and Password empty."
diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot
index cecc39cb73e..2a8f0615ace 100644
--- a/l10n/templates/core.pot
+++ b/l10n/templates/core.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:06+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot
index 47515fcf173..fc6f66258f2 100644
--- a/l10n/templates/files.pot
+++ b/l10n/templates/files.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot
index 473f5d0f606..eecfc2b5663 100644
--- a/l10n/templates/files_encryption.pot
+++ b/l10n/templates/files_encryption.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot
index 950996cb1da..45d9ce016f1 100644
--- a/l10n/templates/files_external.pot
+++ b/l10n/templates/files_external.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot
index 56f2cef992a..3dd26594044 100644
--- a/l10n/templates/files_sharing.pot
+++ b/l10n/templates/files_sharing.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot
index 7e19dd1d502..c0d9911e2a6 100644
--- a/l10n/templates/files_trashbin.pot
+++ b/l10n/templates/files_trashbin.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot
index 3f528d866db..2854191572b 100644
--- a/l10n/templates/files_versions.pot
+++ b/l10n/templates/files_versions.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot
index 521c5013b5d..854f33470c4 100644
--- a/l10n/templates/lib.pot
+++ b/l10n/templates/lib.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:06+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot
index 04c63969958..c6fe848769a 100644
--- a/l10n/templates/settings.pot
+++ b/l10n/templates/settings.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:06+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot
index 396d0c8eae2..d4c1c33115a 100644
--- a/l10n/templates/user_ldap.pot
+++ b/l10n/templates/user_ldap.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot
index f76cd4d18f1..496d3c2f460 100644
--- a/l10n/templates/user_webdavauth.pot
+++ b/l10n/templates/user_webdavauth.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
-"POT-Creation-Date: 2013-02-24 00:05+0100\n"
+"POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/lib/app.php b/lib/app.php
index e653c30b2d9..2eb43a582e2 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -223,7 +223,7 @@ class OC_App{
// check if the app is compatible with this version of ownCloud
$info=OC_App::getAppInfo($app);
$version=OC_Util::getVersion();
- if(!isset($info['require']) or ($version[0]>$info['require'])) {
+ if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core',
'App "'.$info['name'].'" can\'t be installed because it is'
.' not compatible with this version of ownCloud',
@@ -851,7 +851,7 @@ class OC_App{
foreach($apps as $app) {
// check if the app is compatible with this version of ownCloud
$info = OC_App::getAppInfo($app);
- if(!isset($info['require']) or (($version[0].'.'.$version[1])>$info['require'])) {
+ if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core',
'App "'.$info['name'].'" ('.$app.') can\'t be used because it is'
.' not compatible with this version of ownCloud',
@@ -862,6 +862,36 @@ class OC_App{
}
}
+
+ /**
+ * Compares the app version with the owncloud version to see if the app
+ * requires a newer version than the currently active one
+ * @param array $owncloudVersions array with 3 entries: major minor bugfix
+ * @param string $appRequired the required version from the xml
+ * major.minor.bugfix
+ * @return boolean true if compatible, otherwise false
+ */
+ public static function isAppVersionCompatible($owncloudVersions, $appRequired){
+ $appVersions = explode('.', $appRequired);
+
+ for($i=0; $i<count($appVersions); $i++){
+ $appVersion = (int) $appVersions[$i];
+
+ if(isset($owncloudVersions[$i])){
+ $owncloudVersion = $owncloudVersions[$i];
+ } else {
+ $owncloudVersion = 0;
+ }
+
+ if($owncloudVersion < $appVersion){
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
/**
* get the installed version of all apps
*/
diff --git a/lib/base.php b/lib/base.php
index b5439c00abf..f9bb1bb11bf 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -320,8 +320,21 @@ class OC {
// set the session name to the instance id - which is unique
session_name(OC_Util::getInstanceId());
- // (re)-initialize session
- session_start();
+ // if session cant be started break with http 500 error
+ if (session_start() === false){
+ OC_Log::write('core', 'Session could not be initialized',
+ OC_Log::ERROR);
+
+ header('HTTP/1.1 500 Internal Server Error');
+ $error = 'Session could not be initialized. Please contact your ';
+ $error .= 'system administrator';
+
+ $tmpl = new OC_Template('', 'error', 'guest');
+ $tmpl->assign('errors', array(1 => array('error' => $error)));
+ $tmpl->printPage();
+
+ exit();
+ }
// regenerate session id periodically to avoid session fixation
if (!isset($_SESSION['SID_CREATED'])) {
diff --git a/lib/db.php b/lib/db.php
index edbc2fe13ed..fb2c027cdb9 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -178,6 +178,13 @@ class OC_DB {
$dsn = 'oci:dbname=//' . $host . '/' . $name;
}
break;
+ case 'mssql':
+ if ($port) {
+ $dsn='sqlsrv:Server='.$host.','.$port.';Database='.$name;
+ } else {
+ $dsn='sqlsrv:Server='.$host.';Database='.$name;
+ }
+ break;
default:
return false;
}
@@ -278,6 +285,15 @@ class OC_DB {
$dsn['database'] = $user;
}
break;
+ case 'mssql':
+ $dsn = array(
+ 'phptype' => 'sqlsrv',
+ 'username' => $user,
+ 'password' => $pass,
+ 'hostspec' => $host,
+ 'database' => $name
+ );
+ break;
default:
return false;
}
@@ -389,6 +405,13 @@ class OC_DB {
$query = self::prepare('SELECT lastval() AS id');
$row = $query->execute()->fetchRow();
return $row['id'];
+ }
+ if( $type == 'mssql' ) {
+ if($table !== null) {
+ $prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
+ $table = str_replace( '*PREFIX*', $prefix, $table );
+ }
+ return self::$connection->lastInsertId($table);
}else{
if($table !== null) {
$prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
@@ -631,7 +654,7 @@ class OC_DB {
} else {
return true;
}
- } elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql') {
+ } elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql' || $type == 'mssql') {
$query = 'INSERT INTO `' .$table . '` ('
. implode(',', array_keys($input)) . ') SELECT \''
. implode('\',\'', array_values($input)) . '\' FROM ' . $table . ' WHERE ';
@@ -691,7 +714,15 @@ class OC_DB {
}elseif( $type == 'oci' ) {
$query = str_replace( '`', '"', $query );
$query = str_ireplace( 'NOW()', 'CURRENT_TIMESTAMP', $query );
- }
+ }elseif( $type == 'mssql' ) {
+ $query = preg_replace( "/\`(.*?)`/", "[$1]", $query );
+ $query = str_replace( 'NOW()', 'CURRENT_TIMESTAMP', $query );
+ $query = str_replace( 'now()', 'CURRENT_TIMESTAMP', $query );
+ $query = str_replace( 'LENGTH(', 'LEN(', $query );
+ $query = str_replace( 'SUBSTR(', 'SUBSTRING(', $query );
+
+ $query = self::fixLimitClauseForMSSQL($query);
+ }
// replace table name prefix
$query = str_replace( '*PREFIX*', $prefix, $query );
@@ -699,6 +730,60 @@ class OC_DB {
return $query;
}
+ private static function fixLimitClauseForMSSQL($query) {
+ $limitLocation = stripos ($query, "LIMIT");
+
+ if ( $limitLocation === false ) {
+ return $query;
+ }
+
+ // total == 0 means all results - not zero results
+ //
+ // First number is either total or offset, locate it by first space
+ //
+ $offset = substr ($query, $limitLocation + 5);
+ $offset = substr ($offset, 0, stripos ($offset, ' '));
+ $offset = trim ($offset);
+
+ // check for another parameter
+ if (stripos ($offset, ',') === false) {
+ // no more parameters
+ $offset = 0;
+ $total = intval ($offset);
+ } else {
+ // found another parameter
+ $offset = intval ($offset);
+
+ $total = substr ($query, $limitLocation + 5);
+ $total = substr ($total, stripos ($total, ','));
+
+ $total = substr ($total, 0, stripos ($total, ' '));
+ $total = intval ($total);
+ }
+
+ $query = trim (substr ($query, 0, $limitLocation));
+
+ if ($offset == 0 && $total !== 0) {
+ if (strpos($query, "SELECT") === false) {
+ $query = "TOP {$total} " . $query;
+ } else {
+ $query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP '.$total, $query);
+ }
+ } else if ($offset > 0) {
+ $query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP(10000000) ', $query);
+ $query = 'SELECT *
+ FROM (SELECT sub2.*, ROW_NUMBER() OVER(ORDER BY sub2.line2) AS line3
+ FROM (SELECT 1 AS line2, sub1.* FROM (' . $query . ') AS sub1) as sub2) AS sub3';
+
+ if ($total > 0) {
+ $query .= ' WHERE line3 BETWEEN ' . ($offset + 1) . ' AND ' . ($offset + $total);
+ } else {
+ $query .= ' WHERE line3 > ' . $offset;
+ }
+ }
+ return $query;
+ }
+
/**
* @brief drop a table
* @param string $tableName the table to drop
@@ -850,19 +935,119 @@ class PDOStatementWrapper{
* make execute return the result instead of a bool
*/
public function execute($input=array()) {
- $this->lastArguments=$input;
- if(count($input)>0) {
+ $this->lastArguments = $input;
+ if (count($input) > 0) {
+
+ if (!isset($type)) {
+ $type = OC_Config::getValue( "dbtype", "sqlite" );
+ }
+
+ if ($type == 'mssql') {
+ $input = $this->tryFixSubstringLastArgumentDataForMSSQL($input);
+ }
+
$result=$this->statement->execute($input);
- }else{
+ } else {
$result=$this->statement->execute();
}
- if($result) {
+
+ if ($result) {
return $this;
- }else{
+ } else {
return false;
}
}
+ private function tryFixSubstringLastArgumentDataForMSSQL($input) {
+ $query = $this->statement->queryString;
+ $pos = stripos ($query, 'SUBSTRING');
+
+ if ( $pos === false) {
+ return;
+ }
+
+ try {
+ $newQuery = '';
+
+ $cArg = 0;
+
+ $inSubstring = false;
+
+ // Create new query
+ for ($i = 0; $i < strlen ($query); $i++) {
+ if ($inSubstring == false) {
+ // Defines when we should start inserting values
+ if (substr ($query, $i, 9) == 'SUBSTRING') {
+ $inSubstring = true;
+ }
+ } else {
+ // Defines when we should stop inserting values
+ if (substr ($query, $i, 1) == ')') {
+ $inSubstring = false;
+ }
+ }
+
+ if (substr ($query, $i, 1) == '?') {
+ // We found a question mark
+ if ($inSubstring) {
+ $newQuery .= $input[$cArg];
+
+ //
+ // Remove from input array
+ //
+ array_splice ($input, $cArg, 1);
+ } else {
+ $newQuery .= substr ($query, $i, 1);
+ $cArg++;
+ }
+ } else {
+ $newQuery .= substr ($query, $i, 1);
+ }
+ }
+
+ // The global data we need
+ $name = OC_Config::getValue( "dbname", "owncloud" );
+ $host = OC_Config::getValue( "dbhost", "" );
+ $user = OC_Config::getValue( "dbuser", "" );
+ $pass = OC_Config::getValue( "dbpassword", "" );
+ if (strpos($host,':')) {
+ list($host, $port) = explode(':', $host, 2);
+ } else {
+ $port = false;
+ }
+ $opts = array();
+
+ if ($port) {
+ $dsn = 'sqlsrv:Server='.$host.','.$port.';Database='.$name;
+ } else {
+ $dsn = 'sqlsrv:Server='.$host.';Database='.$name;
+ }
+
+ $PDO = new PDO($dsn, $user, $pass, $opts);
+ $PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+ $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+ $this->statement = $PDO->prepare($newQuery);
+
+ $this->lastArguments = $input;
+
+ return $input;
+ } catch (PDOException $e){
+ $entry = 'PDO DB Error: "'.$e->getMessage().'"<br />';
+ $entry .= 'Offending command was: '.$this->statement->queryString .'<br />';
+ $entry .= 'Input parameters: ' .print_r($input, true).'<br />';
+ $entry .= 'Stack trace: ' .$e->getTraceAsString().'<br />';
+ OC_Log::write('core', $entry, OC_Log::FATAL);
+ OC_User::setUserId(null);
+
+ // send http status 503
+ header('HTTP/1.1 503 Service Temporarily Unavailable');
+ header('Status: 503 Service Temporarily Unavailable');
+ OC_Template::printErrorPage('Failed to connect to database');
+ die ($entry);
+ }
+ }
+
/**
* provide numRows
*/
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 3652dc7cf23..01e6e788263 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -500,8 +500,8 @@ class Cache {
public function getIncomplete() {
$query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`'
. ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1');
- $query->execute(array($this->numericId));
- if ($row = $query->fetchRow()) {
+ $result = $query->execute(array($this->numericId));
+ if ($row = $result->fetchRow()) {
return $row['path'];
} else {
return false;
diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php
index 8faacdf01d8..f9c6bdfce0c 100644
--- a/lib/files/storage/common.php
+++ b/lib/files/storage/common.php
@@ -97,8 +97,8 @@ abstract class Common implements \OC\Files\Storage\Storage {
public function copy($path1, $path2) {
$source=$this->fopen($path1, 'r');
$target=$this->fopen($path2, 'w');
- $count=\OC_Helper::streamCopy($source, $target);
- return $count>0;
+ list($count, $result) = \OC_Helper::streamCopy($source, $target);
+ return $result;
}
/**
diff --git a/lib/files/view.php b/lib/files/view.php
index 9ac08c98082..f48d0c8b225 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -285,7 +285,7 @@ class View {
}
$target = $this->fopen($path, 'w');
if ($target) {
- $count = \OC_Helper::streamCopy($data, $target);
+ list ($count, $result) = \OC_Helper::streamCopy($data, $target);
fclose($target);
fclose($data);
if ($this->fakeRoot == Filesystem::getRoot()) {
@@ -303,7 +303,7 @@ class View {
);
}
\OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count);
- return $count > 0;
+ return $result;
} else {
return false;
}
@@ -361,10 +361,9 @@ class View {
} else {
$source = $this->fopen($path1 . $postFix1, 'r');
$target = $this->fopen($path2 . $postFix2, 'w');
- $count = \OC_Helper::streamCopy($source, $target);
+ list($count, $result) = \OC_Helper::streamCopy($source, $target);
list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1);
$storage1->unlink($internalPath1);
- $result = $count > 0;
}
if ($this->fakeRoot == Filesystem::getRoot()) {
\OC_Hook::emit(
@@ -444,7 +443,7 @@ class View {
} else {
$source = $this->fopen($path1 . $postFix1, 'r');
$target = $this->fopen($path2 . $postFix2, 'w');
- $result = \OC_Helper::streamCopy($source, $target);
+ list($count, $result) = \OC_Helper::streamCopy($source, $target);
}
if ($this->fakeRoot == Filesystem::getRoot()) {
\OC_Hook::emit(
diff --git a/lib/helper.php b/lib/helper.php
index add5c66e7be..41985ca57a7 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -513,11 +513,16 @@ class OC_Helper {
if(!$source or !$target) {
return false;
}
- $count=0;
+ $result = true;
+ $count = 0;
while(!feof($source)) {
- $count+=fwrite($target, fread($source, 8192));
+ if ( ( $c = fwrite($target, fread($source, 8192)) ) === false) {
+ $result = false;
+ } else {
+ $count += $c;
+ }
}
- return $count;
+ return array($count, $result);
}
/**
diff --git a/lib/l10n/my_MM.php b/lib/l10n/my_MM.php
index cee6f65d22e..d725a06a3a9 100644
--- a/lib/l10n/my_MM.php
+++ b/lib/l10n/my_MM.php
@@ -2,6 +2,7 @@
"Help" => "အကူအညီ",
"Users" => "သုံးစွဲသူ",
"Apps" => "Apps",
+"Admin" => "အက်ဒမင်",
"ZIP download is turned off." => "ZIP ဒေါင်းလုတ်ကိုပိတ်ထားသည်",
"Files need to be downloaded one by one." => "ဖိုင်များသည် တစ်ခုပြီး တစ်ခုဒေါင်းလုတ်ချရန်လိုအပ်သည်",
"Back to Files" => "ဖိုင်သို့ပြန်သွားမည်",
diff --git a/lib/public/files.php b/lib/public/files.php
index c2945b200e8..700bf574537 100644
--- a/lib/public/files.php
+++ b/lib/public/files.php
@@ -62,7 +62,8 @@ class Files {
* @return int the number of bytes copied
*/
public static function streamCopy( $source, $target ) {
- return(\OC_Helper::streamCopy( $source, $target ));
+ list($count, $result) = \OC_Helper::streamCopy( $source, $target );
+ return $count;
}
/**
diff --git a/lib/setup.php b/lib/setup.php
index 19e4a82b51f..fd5f3cd5bee 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -40,11 +40,13 @@ class OC_Setup {
$error[] = $l->t('Specify a data folder.');
}
- if($dbtype=='mysql' or $dbtype == 'pgsql' or $dbtype == 'oci') { //mysql and postgresql needs more config options
- if($dbtype=='mysql')
+ if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { //mysql and postgresql needs more config options
+ if($dbtype == 'mysql')
$dbprettyname = 'MySQL';
- else if($dbtype=='pgsql')
+ else if($dbtype == 'pgsql')
$dbprettyname = 'PostgreSQL';
+ else if ($dbtype == 'mssql')
+ $dbprettyname = 'MS SQL Server';
else
$dbprettyname = 'Oracle';
@@ -152,6 +154,29 @@ class OC_Setup {
return $error;
}
}
+ elseif ($dbtype == 'mssql') {
+ $dbuser = $options['dbuser'];
+ $dbpass = $options['dbpass'];
+ $dbname = $options['dbname'];
+ $dbhost = $options['dbhost'];
+ $dbtableprefix = isset($options['dbtableprefix']) ? $options['dbtableprefix'] : 'oc_';
+
+ OC_Config::setValue('dbname', $dbname);
+ OC_Config::setValue('dbhost', $dbhost);
+ OC_Config::setValue('dbuser', $dbuser);
+ OC_Config::setValue('dbpassword', $dbpass);
+ OC_Config::setValue('dbtableprefix', $dbtableprefix);
+
+ try {
+ self::setupMSSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix);
+ } catch (Exception $e) {
+ $error[] = array(
+ 'error' => 'MS SQL username and/or password not valid',
+ 'hint' => 'You need to enter either an existing account or the administrator.'
+ );
+ return $error;
+ }
+ }
else {
//delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) {
@@ -256,11 +281,12 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(mysql_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
}
$query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";
- //this query will fail if there aren't the right permissons, ignore the error
- $result = mysql_query($query, $connection);
+
+ //this query will fail if there aren't the right permissions, ignore the error
+ mysql_query($query, $connection);
}
private static function createDBUser($name, $password, $connection) {
@@ -359,7 +385,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
if(! pg_fetch_row($result)) {
//The database does not exists... let's create it
@@ -368,11 +394,11 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
else {
$query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC";
- $result = pg_query($connection, $query);
+ pg_query($connection, $query);
}
}
}
@@ -386,7 +412,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
if(! pg_fetch_row($result)) {
@@ -396,7 +422,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
}
else { // change password of the existing role
@@ -405,7 +431,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
}
}
@@ -434,7 +460,7 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
$result = oci_execute($stmt);
if($result) {
@@ -498,9 +524,9 @@ class OC_Setup {
$un = $dbtableprefix.'users';
oci_bind_by_name($stmt, ':un', $un);
if (!$stmt) {
- $entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<br />';
+ $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
$result = oci_execute($stmt);
@@ -526,14 +552,14 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
oci_bind_by_name($stmt, ':un', $name);
$result = oci_execute($stmt);
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
if(! oci_fetch_row($stmt)) {
@@ -544,7 +570,7 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
//oci_bind_by_name($stmt, ':un', $name);
$result = oci_execute($stmt);
@@ -552,7 +578,7 @@ class OC_Setup {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s", name: %s, password: %s',
array($query, $name, $password)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
} else { // change password of the existing role
$query = "ALTER USER :un IDENTIFIED BY :pw";
@@ -560,7 +586,7 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
oci_bind_by_name($stmt, ':un', $name);
oci_bind_by_name($stmt, ':pw', $password);
@@ -568,24 +594,198 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
}
- // grant neccessary roles
+ // grant necessary roles
$query = 'GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, UNLIMITED TABLESPACE TO '.$name;
$stmt = oci_parse($connection, $query);
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
$result = oci_execute($stmt);
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s", name: %s, password: %s',
array($query, $name, $password)) . '<br />';
- echo($entry);
+ \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
+ }
+ }
+
+ private static function setupMSSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix) {
+ $l = self::getTrans();
+
+ //check if the database user has admin right
+ $masterConnectionInfo = array( "Database" => "master", "UID" => $dbuser, "PWD" => $dbpass);
+
+ $masterConnection = @sqlsrv_connect($dbhost, $masterConnectionInfo);
+ if(!$masterConnection) {
+ $entry = null;
+ if( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ throw new Exception($l->t('MS SQL username and/or password not valid: $s', array($entry)));
}
+
+ OC_Config::setValue('dbuser', $dbuser);
+ OC_Config::setValue('dbpassword', $dbpass);
+
+ self::mssql_createDBLogin($dbuser, $dbpass, $masterConnection);
+
+ self::mssql_createDatabase($dbname, $masterConnection);
+
+ self::mssql_createDBUser($dbuser, $dbname, $masterConnection);
+
+ sqlsrv_close($masterConnection);
+
+ self::mssql_createDatabaseStructure($dbhost, $dbname, $dbuser, $dbpass, $dbtableprefix);
+ }
+
+ private static function mssql_createDBLogin($name, $password, $connection) {
+ $query = "SELECT * FROM master.sys.server_principals WHERE name = '".$name."';";
+ $result = sqlsrv_query($connection, $query);
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ $row = sqlsrv_fetch_array($result);
+
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ if ($row == null) {
+ $query = "CREATE LOGIN [".$name."] WITH PASSWORD = '".$password."';";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result or $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ }
+ }
+ }
+ }
+ }
+
+ private static function mssql_createDBUser($name, $dbname, $connection) {
+ $query = "SELECT * FROM [".$dbname."].sys.database_principals WHERE name = '".$name."';";
+ $result = sqlsrv_query($connection, $query);
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ $row = sqlsrv_fetch_array($result);
+
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ if ($row == null) {
+ $query = "USE [".$dbname."]; CREATE USER [".$name."] FOR LOGIN [".$name."];";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry = 'DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ }
+ }
+
+ $query = "USE [".$dbname."]; EXEC sp_addrolemember 'db_owner', '".$name."';";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ }
+ }
+ }
+ }
+
+ private static function mssql_createDatabase($dbname, $connection) {
+ $query = "CREATE DATABASE [".$dbname."];";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ }
+ }
+
+ private static function mssql_createDatabaseStructure($dbhost, $dbname, $dbuser, $dbpass, $dbtableprefix) {
+ $connectionInfo = array( "Database" => $dbname, "UID" => $dbuser, "PWD" => $dbpass);
+
+ $connection = @sqlsrv_connect($dbhost, $connectionInfo);
+
+ //fill the database if needed
+ $query = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$dbname}' AND TABLE_NAME = '{$dbtableprefix}users'";
+ $result = sqlsrv_query($connection, $query);
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ $row = sqlsrv_fetch_array($result);
+
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
+ } else {
+ if ($row == null) {
+ OC_DB::createDbFromStructure('db_structure.xml');
+ }
+ }
+ }
+
+ sqlsrv_close($connection);
}
/**
diff --git a/lib/template.php b/lib/template.php
index 3df5a24f946..ce55e58d28d 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -413,11 +413,6 @@ class OC_Template{
if( $this->renderas ) {
$page = new OC_TemplateLayout($this->renderas);
- if($this->renderas == 'user') {
- $page->assign('requesttoken', $this->vars['requesttoken']);
- $user = OC_User::getUser();
- $page->assign('displayname', OCP\User::getDisplayName($user));
- }
// Add custom headers
$page->assign('headers', $this->headers, false);
@@ -530,8 +525,10 @@ class OC_Template{
* @param string $hint An option hint message
*/
public static function printErrorPage( $error_msg, $hint = '' ) {
+ $content = new OC_Template( '', 'error', 'error' );
$errors = array(array('error' => $error_msg, 'hint' => $hint));
- OC_Template::printGuestPage("", "error", array("errors" => $errors));
+ $content->assign( 'errors', $errors, false );
+ $content->printPage();
die();
}
}
diff --git a/lib/templatelayout.php b/lib/templatelayout.php
index 25d4033d9ee..afa875b0a6d 100644
--- a/lib/templatelayout.php
+++ b/lib/templatelayout.php
@@ -31,7 +31,7 @@ class OC_TemplateLayout extends OC_Template {
}
$user_displayname = OC_User::getDisplayName();
$this->assign( 'user_displayname', $user_displayname );
- } else if ($renderas == 'guest') {
+ } else if ($renderas == 'guest' || $renderas == 'error') {
parent::__construct('core', 'layout.guest');
} else {
parent::__construct('core', 'layout.base');
@@ -39,7 +39,7 @@ class OC_TemplateLayout extends OC_Template {
// Add the js files
$jsfiles = self::findJavascriptFiles(OC_Util::$scripts);
$this->assign('jsfiles', array(), false);
- if (OC_Config::getValue('installed', false)) {
+ if (OC_Config::getValue('installed', false) && $renderas!='error') {
$this->append( 'jsfiles', OC_Helper::linkToRoute('js_config'));
}
if (!empty(OC_Util::$core_scripts)) {
diff --git a/lib/util.php b/lib/util.php
index 87facda1804..cfb13ad292d 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(4, 93, 10);
+ return array(4, 94, 10);
}
/**
@@ -83,7 +83,7 @@ class OC_Util {
* @return string
*/
public static function getVersionString() {
- return '5.0 beta 1';
+ return '5.0 beta 2';
}
/**
@@ -275,19 +275,6 @@ class OC_Util {
$web_server_restart= false;
}
- $handler = ini_get("session.save_handler");
- if($handler == "files") {
- $tmpDir = session_save_path();
- if($tmpDir != "") {
- if(!@is_writable($tmpDir)) {
- $errors[]=array('error' => 'The temporary folder used by PHP to save the session data'
- .' is either incorrect or not writable! Please check : '.session_save_path().'<br/>',
- 'hint'=>'Please ask your server administrator to grant write access'
- .' or define another temporary folder.');
- }
- }
- }
-
if($web_server_restart) {
$errors[]=array('error'=>'PHP modules have been installed, but they are still listed as missing?<br/>',
'hint'=>'Please ask your server administrator to restart the web server.');
@@ -509,10 +496,10 @@ class OC_Util {
* @return array with sanitized strings or a single sanitized string, depends on the input parameter.
*/
public static function sanitizeHTML( &$value ) {
- if (is_array($value) || is_object($value)) {
+ if (is_array($value)) {
array_walk_recursive($value, 'OC_Util::sanitizeHTML');
} else {
- $value = htmlentities($value, ENT_QUOTES, 'UTF-8'); //Specify encoding for PHP<5.4
+ $value = htmlentities((string)$value, ENT_QUOTES, 'UTF-8'); //Specify encoding for PHP<5.4
}
return $value;
}
@@ -569,11 +556,16 @@ class OC_Util {
if (!function_exists('curl_init')) {
return true;
}
-
$settings = array(
'baseUri' => OC_Helper::linkToRemote('webdav'),
);
+ // save the old timeout so that we can restore it later
+ $old_timeout=ini_get("default_socket_timeout");
+
+ // use a 5 sec timeout for the check. Should be enough for local requests.
+ ini_set("default_socket_timeout", 5);
+
$client = new \Sabre_DAV_Client($settings);
$return = true;
@@ -587,6 +579,9 @@ class OC_Util {
$return = false;
}
+ // restore the original timeout
+ ini_set("default_socket_timeout", $old_timeout);
+
return $return;
}
diff --git a/search/js/result.js b/search/js/result.js
index cadb0d0aabe..78fa8efc8e9 100644
--- a/search/js/result.js
+++ b/search/js/result.js
@@ -28,7 +28,7 @@ OC.search.showResults=function(results){
OC.search.hide();
event.stopPropagation();
});
- $(window).click(function(event){
+ $(document).click(function(event){
OC.search.hide();
});
OC.search.lastResults=results;
diff --git a/settings/js/personal.js b/settings/js/personal.js
index 4c8b2542b56..d0a471e56b5 100644
--- a/settings/js/personal.js
+++ b/settings/js/personal.js
@@ -42,9 +42,9 @@ $(document).ready(function(){
$.post( 'ajax/changedisplayname.php', post, function(data){
if( data.status == "success" ){
$('#displaynamechanged').show();
- $('#oldDisplayName').val($('#displayName').val());
+ $('#oldDisplayName').text($('#displayName').val());
// update displayName on the top right expand button
- $('#expandDisplayName').html($('#displayName').val());
+ $('#expandDisplayName').text($('#displayName').val());
}
else{
$('#newdisplayname').val(data.data.displayName)
diff --git a/settings/l10n/he.php b/settings/l10n/he.php
index 20e97b3ffda..196dc4d146f 100644
--- a/settings/l10n/he.php
+++ b/settings/l10n/he.php
@@ -39,6 +39,7 @@
"Forum" => "פורום",
"Commercial Support" => "תמיכה בתשלום",
"You have used <strong>%s</strong> of the available <strong>%s</strong>" => "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך",
+"Get the apps to sync your files" => "השג את האפליקציות על מנת לסנכרן את הקבצים שלך",
"Password" => "ססמה",
"Your password was changed" => "הססמה שלך הוחלפה",
"Unable to change your password" => "לא ניתן לשנות את הססמה שלך",
diff --git a/settings/l10n/my_MM.php b/settings/l10n/my_MM.php
index de234d96437..a332c4d8ce9 100644
--- a/settings/l10n/my_MM.php
+++ b/settings/l10n/my_MM.php
@@ -1,3 +1,6 @@
<?php $TRANSLATIONS = array(
-"Authentication error" => "ခွင့်ပြုချက်မအောင်မြင်"
+"Authentication error" => "ခွင့်ပြုချက်မအောင်မြင်",
+"Security Warning" => "လုံခြုံရေးသတိပေးချက်",
+"Password" => "စကားဝှက်",
+"New password" => "စကားဝှက်အသစ်"
);
diff --git a/tests/lib/app.php b/tests/lib/app.php
new file mode 100644
index 00000000000..9cab36903a2
--- /dev/null
+++ b/tests/lib/app.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright (c) 2012 Bernhard Posselt <nukeawhale@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+class Test_App extends PHPUnit_Framework_TestCase {
+
+
+ public function testIsAppVersionCompatibleSingleOCNumber(){
+ $oc = array(4);
+ $app = '4.0';
+
+ $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+
+ public function testIsAppVersionCompatibleMultipleOCNumber(){
+ $oc = array(4, 3, 1);
+ $app = '4.3';
+
+ $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+
+ public function testIsAppVersionCompatibleSingleNumber(){
+ $oc = array(4);
+ $app = '4';
+
+ $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+
+ public function testIsAppVersionCompatibleSingleAppNumber(){
+ $oc = array(4, 3);
+ $app = '4';
+
+ $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+
+ public function testIsAppVersionCompatibleShouldFail(){
+ $oc = array(4, 3, 1);
+ $app = '4.3.2';
+
+ $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+ public function testIsAppVersionCompatibleShouldFailTwoVersionNumbers(){
+ $oc = array(4, 3, 1);
+ $app = '4.4';
+
+ $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+
+ public function testIsAppVersionCompatibleShouldFailOneVersionNumbers(){
+ $oc = array(4, 3, 1);
+ $app = '5';
+
+ $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
+ }
+
+} \ No newline at end of file
diff --git a/tests/lib/dbschema.php b/tests/lib/dbschema.php
index fb60ce7dbb7..e20a04ef7fd 100644
--- a/tests/lib/dbschema.php
+++ b/tests/lib/dbschema.php
@@ -91,9 +91,15 @@ class Test_DBSchema extends PHPUnit_Framework_TestCase {
break;
case 'pgsql':
$sql = "SELECT tablename AS table_name, schemaname AS schema_name "
- . "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' "
- . "AND schemaname != 'information_schema' "
- . "AND tablename = '".$table."'";
+ . "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' "
+ . "AND schemaname != 'information_schema' "
+ . "AND tablename = '".$table."'";
+ $query = OC_DB::prepare($sql);
+ $result = $query->execute(array());
+ $exists = $result && $result->fetchOne();
+ break;
+ case 'mssql':
+ $sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{$table}'";
$query = OC_DB::prepare($sql);
$result = $query->execute(array());
$exists = $result && $result->fetchOne();