[Pkg-owncloud-commits] [owncloud] 71/394: introduce util.php for file sharing which provides functionallity which is also needed in other places, e.g. the webdav server
David Prévot
taffit at alioth.debian.org
Fri Nov 8 23:11:30 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to annotated tag v4.5.10
in repository owncloud.
commit 56c8976bacc395c9e97ab41e0d068c97dd28e8a5
Author: Björn Schießle <schiessle at owncloud.com>
Date: Tue Nov 6 14:39:30 2012 +0100
introduce util.php for file sharing which provides functionallity which is also needed in other places, e.g. the webdav server
---
apps/files_sharing/appinfo/app.php | 1 +
apps/files_sharing/lib/util.php | 79 ++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+)
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index 109f86b..bfed426 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -3,6 +3,7 @@
OC::$CLASSPATH['OC_Share_Backend_File'] = "apps/files_sharing/lib/share/file.php";
OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'apps/files_sharing/lib/share/folder.php';
OC::$CLASSPATH['OC_Filestorage_Shared'] = "apps/files_sharing/lib/sharedstorage.php";
+OC::$CLASSPATH['OC_Files_Sharing_Util'] = "apps/files_sharing/lib/util.php";
OCP\Util::connectHook('OC_Filesystem', 'setup', 'OC_Filestorage_Shared', 'setup');
OCP\Share::registerBackend('file', 'OC_Share_Backend_File');
OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file');
diff --git a/apps/files_sharing/lib/util.php b/apps/files_sharing/lib/util.php
new file mode 100644
index 0000000..84cddb7
--- /dev/null
+++ b/apps/files_sharing/lib/util.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Bjoern Schiessle
+ * @copyright 2012 Bjoern Schiessle schiessle at owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+class OC_Files_Sharing_Util {
+
+ private static $files = array();
+
+ /**
+ * @brief Get the source file path and the permissions granted for a shared file
+ * @param string Shared target file path
+ * @return Returns array with the keys path and permissions or false if not found
+ */
+ private function getFile($target) {
+ $target = '/'.$target;
+ $target = rtrim($target, '/');
+ if (isset(self::$files[$target])) {
+ return self::$files[$target];
+ } else {
+ $pos = strpos($target, '/', 1);
+ // Get shared folder name
+ if ($pos !== false) {
+ $folder = substr($target, 0, $pos);
+ if (isset(self::$files[$folder])) {
+ $file = self::$files[$folder];
+ } else {
+ $file = OCP\Share::getItemSharedWith('folder', $folder, OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
+ }
+ if ($file) {
+ self::$files[$target]['path'] = $file['path'].substr($target, strlen($folder));
+ self::$files[$target]['permissions'] = $file['permissions'];
+ return self::$files[$target];
+ }
+ } else {
+ $file = OCP\Share::getItemSharedWith('file', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
+ if ($file) {
+ self::$files[$target] = $file;
+ return self::$files[$target];
+ }
+ }
+ OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, OCP\Util::ERROR);
+ return false;
+ }
+ }
+
+ /**
+ * @brief Get the source file path for a shared file
+ * @param string Shared target file path
+ * @return Returns source file path or false if not found
+ */
+ public static function getSourcePath($target) {
+ $file = self::getFile($target);
+ if (isset($file['path'])) {
+ $uid = substr($file['path'], 1, strpos($file['path'], '/', 1) - 1);
+ OC_Filesystem::mount('OC_Filestorage_Local', array('datadir' => OC_User::getHome($uid)), $uid);
+ return $file['path'];
+ }
+ return false;
+ }
+}
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list