summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_trashbin/download.php2
-rw-r--r--apps/files_trashbin/index.php20
-rw-r--r--apps/files_trashbin/js/trash.js29
-rw-r--r--apps/files_trashbin/lib/trash.php52
-rw-r--r--core/ajax/share.php6
-rw-r--r--core/css/share.css6
-rw-r--r--core/js/router.js4
-rw-r--r--lib/files/cache/cache.php3
-rw-r--r--lib/files/cache/permissions.php25
-rw-r--r--lib/public/share.php26
-rw-r--r--lib/template.php2
-rwxr-xr-xlib/util.php11
-rw-r--r--tests/lib/share/share.php5
13 files changed, 140 insertions, 51 deletions
diff --git a/apps/files_trashbin/download.php b/apps/files_trashbin/download.php
index 665697dca5f..60328e1dddb 100644
--- a/apps/files_trashbin/download.php
+++ b/apps/files_trashbin/download.php
@@ -26,7 +26,7 @@ OCP\User::checkLoggedIn();
$filename = $_GET["file"];
-$view = new OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin');
+$view = new OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin/files');
if(!$view->file_exists($filename)) {
header("HTTP/1.0 404 Not Found");
diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php
index 2f1fb32f8ce..31b46cc2dec 100644
--- a/apps/files_trashbin/index.php
+++ b/apps/files_trashbin/index.php
@@ -3,6 +3,8 @@
// Check if we are a user
OCP\User::checkLoggedIn();
+OCP\App::setActiveNavigationEntry('files_index');
+
OCP\Util::addScript('files_trashbin', 'trash');
OCP\Util::addScript('files_trashbin', 'disableDefaultActions');
OCP\Util::addScript('files', 'fileactions');
@@ -41,7 +43,7 @@ if ($dir) {
} else {
$dirlisting = false;
- $query = \OC_DB::prepare('SELECT id,location,timestamp,type,mime FROM *PREFIX*files_trash WHERE user=?');
+ $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE user = ?');
$result = $query->execute(array($user))->fetchAll();
}
@@ -66,6 +68,18 @@ foreach ($result as $r) {
$files[] = $i;
}
+function fileCmp($a, $b) {
+ if ($a['type'] == 'dir' and $b['type'] != 'dir') {
+ return -1;
+ } elseif ($a['type'] != 'dir' and $b['type'] == 'dir') {
+ return 1;
+ } else {
+ return strnatcasecmp($a['name'], $b['name']);
+ }
+}
+
+usort($files, "fileCmp");
+
// Make breadcrumb
$pathtohere = '';
$breadcrumb = array();
@@ -93,9 +107,9 @@ $list->assign('disableSharing', true);
$list->assign('dirlisting', $dirlisting);
$list->assign('disableDownloadActions', true);
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
+$tmpl->assign('dirlisting', $dirlisting);
$tmpl->assign('fileList', $list->fetchPage(), false);
$tmpl->assign('files', $files);
-$tmpl->assign('dirlisting', $dirlisting);
-$tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath()));
+$tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($view->getAbsolutePath()));
$tmpl->printPage();
diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js
index 7769def535e..39e76e10c9c 100644
--- a/apps/files_trashbin/js/trash.js
+++ b/apps/files_trashbin/js/trash.js
@@ -141,6 +141,29 @@ $(document).ready(function() {
});
});
+ $('#fileList').on('click', 'td.filename a', function(event) {
+ var mime = $(this).parent().parent().data('mime');
+ if (mime !== 'httpd/unix-directory') {
+ event.preventDefault();
+ }
+ var filename = $(this).parent().parent().attr('data-file');
+ var tr = $('tr').filterAttr('data-file',filename);
+ var renaming = tr.data('renaming');
+ if(!renaming && !FileList.isLoading(filename)){
+ if(mime.substr(0, 5) === 'text/'){ //no texteditor for now
+ return;
+ }
+ var type = $(this).parent().parent().data('type');
+ var permissions = $(this).parent().parent().data('permissions');
+ var action = FileActions.getDefault(mime, type, permissions);
+ if(action){
+ event.preventDefault();
+ action(filename);
+ }
+ }
+ });
+
+ FileActions.actions.dir = {};
});
function processSelection(){
@@ -206,4 +229,8 @@ function getSelectedFiles(property){
}
});
return files;
-} \ No newline at end of file
+}
+
+function fileDownloadPath(dir, file) {
+ return OC.filePath('files_trashbin', '', 'download.php') + '?file='+encodeURIComponent(file);
+}
diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php
index d4d5ad96cfa..0b8472198d9 100644
--- a/apps/files_trashbin/lib/trash.php
+++ b/apps/files_trashbin/lib/trash.php
@@ -59,7 +59,7 @@ class Trashbin {
$trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
- $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
+ $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin'));
}
$trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view);
@@ -75,7 +75,7 @@ class Trashbin {
// 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));
+ $trashbinSize += self::calculateSize(new \OC\Files\View('/'. $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) {
@@ -86,10 +86,10 @@ class Trashbin {
}
// Take care of encryption keys
- $keyfile = \OC_Filesystem::normalizePath('files_encryption/keyfiles/'.$file_path);
+ $keyfile = \OC\Files\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));
+ $trashbinSize += self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile));
$view->rename($keyfile, 'files_trashbin/keyfiles/'. $deleted.'.d'.$timestamp);
} else {
$trashbinSize += $view->filesize($keyfile.'.key');
@@ -102,7 +102,7 @@ class Trashbin {
// get available disk space for user
$quota = \OC_Preferences::getValue($user, 'files', 'quota');
- if ( $quota === null ) {
+ if ( $quota === null || $quota === 'default') {
$quota = \OC_Appconfig::getValue('files', 'default_quota');
}
if ( $quota === null ) {
@@ -134,11 +134,11 @@ class Trashbin {
*/
public static function restore($file, $filename, $timestamp) {
$user = \OCP\User::getUser();
- $view = new \OC_FilesystemView('/'.$user);
+ $view = new \OC\Files\View('/'.$user);
$trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
- $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
+ $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin'));
}
if ( $timestamp ) {
$query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash'
@@ -165,8 +165,8 @@ class Trashbin {
$location = '';
}
- $source = \OC_Filesystem::normalizePath('files_trashbin/files/'.$file);
- $target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename);
+ $source = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$file);
+ $target = \OC\Files\Filesystem::normalizePath('files/'.$location.'/'.$filename);
// we need a extension in case a file/dir with the same name already exists
$ext = self::getUniqueExtension($location, $filename, $view);
@@ -174,7 +174,7 @@ class Trashbin {
if( $view->rename($source, $target.$ext) ) {
$view->touch($target.$ext, $mtime);
if ($view->is_dir($target.$ext)) {
- $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$target.$ext));
+ $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$target.$ext));
} else {
$trashbinSize -= $view->filesize($target.$ext);
}
@@ -186,8 +186,8 @@ class Trashbin {
$versionedFile = $file;
}
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));
+ $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.'files_trashbin/versions/'. $file));
+ $view->rename(\OC\Files\Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC\Files\Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
} else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) {
foreach ($versions as $v) {
if ($timestamp ) {
@@ -204,16 +204,16 @@ class Trashbin {
// 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);
+ $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename);
} else {
- $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename.'.key');
+ $keyfile = \OC\Files\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));
+ $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile));
$view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename);
} else {
$trashbinSize -= $view->filesize($keyfile);
@@ -244,12 +244,12 @@ class Trashbin {
*/
public static function delete($filename, $timestamp=null) {
$user = \OCP\User::getUser();
- $view = new \OC_FilesystemView('/'.$user);
+ $view = new \OC\Files\View('/'.$user);
$size = 0;
$trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
- $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
+ $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin'));
}
if ( $timestamp ) {
@@ -262,7 +262,7 @@ class Trashbin {
if ( \OCP\App::isEnabled('files_versions') ) {
if ($view->is_dir('files_trashbin/versions/'.$file)) {
- $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/versions/'.$file));
+ $size += self::calculateSize(new \OC\Files\view('/'.$user.'/files_trashbin/versions/'.$file));
$view->unlink('files_trashbin/versions/'.$file);
} else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
foreach ($versions as $v) {
@@ -280,16 +280,16 @@ class Trashbin {
// Take care of encryption keys
$parts = pathinfo($file);
if ( $view->is_dir('/files_trashbin/files/'.$file) ) {
- $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename);
+ $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename);
} else {
- $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename.'.key');
+ $keyfile = \OC\Files\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));
+ $size += self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile));
} else {
$size += $view->filesize($keyfile);
}
@@ -297,7 +297,7 @@ class Trashbin {
}
if ($view->is_dir('/files_trashbin/files/'.$file)) {
- $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/files/'.$file));
+ $size += self::calculateSize(new \OC\Files\View('/'.$user.'/files_trashbin/files/'.$file));
} else {
$size += $view->filesize('/files_trashbin/files/'.$file);
}
@@ -316,7 +316,7 @@ class Trashbin {
*/
public static function file_exists($filename, $timestamp=null) {
$user = \OCP\User::getUser();
- $view = new \OC_FilesystemView('/'.$user);
+ $view = new \OC\Files\View('/'.$user);
if ($timestamp) {
$filename = $filename.'.d'.$timestamp;
@@ -324,7 +324,7 @@ class Trashbin {
$filename = $filename;
}
- $target = \OC_Filesystem::normalizePath('files_trashbin/files/'.$filename);
+ $target = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$filename);
return $view->file_exists($target);
}
@@ -335,7 +335,7 @@ class Trashbin {
private static function expire($availableSpace) {
$user = \OCP\User::getUser();
- $view = new \OC_FilesystemView('/'.$user);
+ $view = new \OC\Files\View('/'.$user);
$size = 0;
$query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?');
@@ -410,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().'/files_trashbin/versions');
+ $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_trashbin/versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename);
$versions = array();
if ($timestamp ) {
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 332b6a0bed8..9201b48cb95 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -185,8 +185,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
$users = array();
$limit = 0;
$offset = 0;
- while ($count < 4 && count($users) == $limit) {
- $limit = 4 - $count;
+ while ($count < 15 && count($users) == $limit) {
+ $limit = 15 - $count;
if ($sharePolicy == 'groups_only') {
$users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset);
} else {
@@ -209,7 +209,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
}
$count = 0;
foreach ($groups as $group) {
- if ($count < 4) {
+ if ($count < 15) {
if (stripos($group, $_GET['search']) !== false
&& (!isset($_GET['itemShares'])
|| !isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP])
diff --git a/core/css/share.css b/core/css/share.css
index 2480a571ae5..2d6849b4bb1 100644
--- a/core/css/share.css
+++ b/core/css/share.css
@@ -91,3 +91,9 @@
}
.reshare { white-space:normal; } /* fix shared by text going out of box */
+
+.ui-autocomplete { /* limit dropdown height to 4 1/2 entries */
+ max-height:103px;
+ overflow-y:auto;
+ overflow-x:hidden;
+}
diff --git a/core/js/router.js b/core/js/router.js
index 3562785b342..b94721673a7 100644
--- a/core/js/router.js
+++ b/core/js/router.js
@@ -1,11 +1,11 @@
-OC.router_base_url = OC.webroot + '/index.php/',
+OC.router_base_url = OC.webroot + '/index.php',
OC.Router = {
// register your ajax requests to load after the loading of the routes
// has finished. otherwise you face problems with race conditions
registerLoadedCallback: function(callback){
this.routes_request.done(callback);
},
- routes_request: $.ajax(OC.router_base_url + 'core/routes.json', {
+ routes_request: $.ajax(OC.router_base_url + '/core/routes.json', {
dataType: 'json',
success: function(jsondata) {
if (jsondata.status === 'success') {
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 01e6e788263..f288919df74 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -313,6 +313,9 @@ class Cache {
}
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?');
$query->execute(array($entry['fileid']));
+
+ $permissionsCache = new Permissions($this->storageId);
+ $permissionsCache->remove($entry['fileid']);
}
/**
diff --git a/lib/files/cache/permissions.php b/lib/files/cache/permissions.php
index e1735831b94..a5c9c144054 100644
--- a/lib/files/cache/permissions.php
+++ b/lib/files/cache/permissions.php
@@ -17,10 +17,10 @@ class Permissions {
/**
* @param \OC\Files\Storage\Storage|string $storage
*/
- public function __construct($storage){
- if($storage instanceof \OC\Files\Storage\Storage) {
+ public function __construct($storage) {
+ if ($storage instanceof \OC\Files\Storage\Storage) {
$this->storageId = $storage->getId();
- }else{
+ } else {
$this->storageId = $storage;
}
}
@@ -52,10 +52,10 @@ class Permissions {
public function set($fileId, $user, $permissions) {
if (self::get($fileId, $user) !== -1) {
$query = \OC_DB::prepare('UPDATE `*PREFIX*permissions` SET `permissions` = ?'
- .' WHERE `user` = ? AND `fileid` = ?');
+ . ' WHERE `user` = ? AND `fileid` = ?');
} else {
$query = \OC_DB::prepare('INSERT INTO `*PREFIX*permissions`(`permissions`, `user`, `fileid`)'
- .' VALUES(?, ?,? )');
+ . ' VALUES(?, ?,? )');
}
$query->execute(array($permissions, $user, $fileId));
}
@@ -76,7 +76,7 @@ class Permissions {
$inPart = implode(', ', array_fill(0, count($fileIds), '?'));
$query = \OC_DB::prepare('SELECT `fileid`, `permissions` FROM `*PREFIX*permissions`'
- .' WHERE `fileid` IN (' . $inPart . ') AND `user` = ?');
+ . ' WHERE `fileid` IN (' . $inPart . ') AND `user` = ?');
$result = $query->execute($params);
$filePermissions = array();
while ($row = $result->fetchRow()) {
@@ -91,14 +91,19 @@ class Permissions {
* @param int $fileId
* @param string $user
*/
- public function remove($fileId, $user) {
- $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
- $query->execute(array($fileId, $user));
+ public function remove($fileId, $user = null) {
+ if (is_null($user)) {
+ $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ?');
+ $query->execute(array($fileId));
+ } else {
+ $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
+ $query->execute(array($fileId, $user));
+ }
}
public function removeMultiple($fileIds, $user) {
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
- foreach($fileIds as $fileId){
+ foreach ($fileIds as $fileId) {
$query->execute(array($fileId, $user));
}
}
diff --git a/lib/public/share.php b/lib/public/share.php
index 37cf0838ed1..8146a23f360 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -61,6 +61,7 @@ class Share {
private static $shareTypeGroupUserUnique = 2;
private static $backends = array();
private static $backendTypes = array();
+ private static $isResharingAllowed;
/**
* @brief Register a sharing backend class that implements OCP\Share_Backend for an item type
@@ -568,6 +569,24 @@ class Share {
}
/**
+ * @brief Check if resharing is allowed
+ * @return Returns true if allowed or false
+ *
+ * Resharing is allowed by default if not configured
+ *
+ */
+ private static function isResharingAllowed() {
+ if (!isset(self::$isResharingAllowed)) {
+ if (\OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes') == 'yes') {
+ self::$isResharingAllowed = true;
+ } else {
+ self::$isResharingAllowed = false;
+ }
+ }
+ return self::$isResharingAllowed;
+ }
+
+ /**
* @brief Get a list of collection item types for the specified item type
* @param string Item type
* @return array
@@ -840,7 +859,10 @@ class Share {
continue;
}
}
-
+ // Check if resharing is allowed, if not remove share permission
+ if (isset($row['permissions']) && !self::isResharingAllowed()) {
+ $row['permissions'] &= ~PERMISSION_SHARE;
+ }
// Add display names to result
if ( isset($row['share_with']) && $row['share_with'] != '') {
$row['share_with_displayname'] = \OCP\User::getDisplayName($row['share_with']);
@@ -978,7 +1000,7 @@ class Share {
throw new \Exception($message);
}
// Check if share permissions is granted
- if ((int)$checkReshare['permissions'] & PERMISSION_SHARE) {
+ if (self::isResharingAllowed() && (int)$checkReshare['permissions'] & PERMISSION_SHARE) {
if (~(int)$checkReshare['permissions'] & $permissions) {
$message = 'Sharing '.$itemSource
.' failed, because the permissions exceed permissions granted to '.$uidOwner;
diff --git a/lib/template.php b/lib/template.php
index ce55e58d28d..3c103c901c2 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -147,7 +147,7 @@ function html_select_options($options, $selected, $params=array()) {
$label = $label[$label_name];
}
$select = in_array($value, $selected) ? ' selected="selected"' : '';
- $html .= '<option value="' . $value . '"' . $select . '>' . $label . '</option>'."\n";
+ $html .= '<option value="' . OC_Util::sanitizeHTML($value) . '"' . $select . '>' . OC_Util::sanitizeHTML($label) . '</option>'."\n";
}
return $html;
}
diff --git a/lib/util.php b/lib/util.php
index 060db73da00..2e32ee2e3c2 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -222,7 +222,16 @@ class OC_Util {
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart= false;
}
-
+ if(!class_exists('DOMDocument')) {
+ $errors[] = array('error' => 'PHP module dom not installed.<br/>',
+ 'hint' => 'Please ask your server administrator to install the module.');
+ $web_server_restart = false;
+ }
+ if(!function_exists('xml_parser_create')) {
+ $errors[] = array('error' => 'PHP module libxml not installed.<br/>',
+ 'hint' => 'Please ask your server administrator to install the module.');
+ $web_server_restart = false;
+ }
if(!function_exists('mb_detect_encoding')) {
$errors[]=array('error'=>'PHP module mb multibyte not installed.<br/>',
'hint'=>'Please ask your server administrator to install the module.');
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index ab43e47726b..e7d441a7e78 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -28,7 +28,7 @@ class Test_Share extends PHPUnit_Framework_TestCase {
protected $groupBackend;
protected $group1;
protected $group2;
-
+ protected $resharing;
public function setUp() {
OC_User::clearBackends();
@@ -56,11 +56,14 @@ class Test_Share extends PHPUnit_Framework_TestCase {
OCP\Share::registerBackend('test', 'Test_Share_Backend');
OC_Hook::clear('OCP\\Share');
OC::registerShareHooks();
+ $this->resharing = OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes');
+ OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes');
}
public function tearDown() {
$query = OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `item_type` = ?');
$query->execute(array('test'));
+ OC_Appconfig::setValue('core', 'shareapi_allow_resharing', $this->resharing);
}
public function testShareInvalidShareType() {