]> source.dussan.org Git - nextcloud-server.git/commitdiff
Initial merging of files_sharing and files_publiclink
authorMichael Gapczynski <GapczynskiM@gmail.com>
Wed, 17 Aug 2011 00:21:18 +0000 (20:21 -0400)
committerMichael Gapczynski <GapczynskiM@gmail.com>
Wed, 17 Aug 2011 00:21:18 +0000 (20:21 -0400)
apps/files_sharing/js/share.js
apps/files_sharing/lib_share.php

index d9d64d96a0bb0b245bd6d47674415cc3849792b8..18d8da8540376d48cbba4822d9e4d91dfad08fc4 100644 (file)
@@ -136,23 +136,29 @@ $(document).ready(function() {
        
        $('#makelink').live('change', function() {
                if (this.checked) {
-                       var data = 'path='+$('#dropdown').data('file')+'&expire=0';
+                       var source = $('#dropdown').data('file');
+                       var uid_shared_with = "public";
+                       var permissions = 0;
+                       var data = 'sources='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with)+'&permissions='+encodeURIComponent(permissions);
                        $.ajax({
-                               type: 'GET',
-                               url: OC.linkTo('files_publiclink','ajax/makelink.php'),
+                               type: 'POST',
+                               url: OC.linkTo('files_sharing','ajax/share.php'),
                                cache: false,
                                data: data,
-                               success: function(token) {
-                                       if (token) {
+                               success: function(result) {
+                                       if (result !== 'false') {
+                                               var token = 1234;
                                                showPublicLink(token);
                                        }
                                }
                        });
                } else {
-                       var data = 'token='+$('#link').data('token');
+                       var source = $('#dropdown').data('file');
+                       var uid_shared_with = "public";
+                       var data = 'source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with);
                        $.ajax({
                                type: 'GET',
-                               url: OC.linkTo('files_publiclink','ajax/deletelink.php'),
+                               url: OC.linkTo('files_sharing','ajax/unshare.php'),
                                cache: false,
                                data: data,
                                success: function(){
@@ -207,11 +213,11 @@ function createDropdown(filename, files) {
                        });
                }
        });
-       $.getJSON(OC.linkTo('files_publiclink', 'ajax/getlink.php'), { path: files }, function(token) {
-               if (token) {
-                       showPublicLink(token);
-               }
-       });
+//     $.getJSON(OC.linkTo('files_publiclink', 'ajax/getlink.php'), { path: files }, function(token) {
+//             if (token) {
+//                     showPublicLink(token);
+//             }
+//     });
        $('#dropdown').show('blind');
        $('#share_with').chosen();
 }
index a42fed3e763a9ecc50aa04741f0d1c408c004537..1bf60f3b1dbef03ebcf68bfa50ea905d2b878068 100644 (file)
@@ -30,6 +30,9 @@ class OC_Share {
 
        const WRITE = 1;
        const DELETE = 2;
+       const PUBLICLINK = "public";
+
+       private $token;
       
        /**
         * Share an item, adds an entry into the database
@@ -39,48 +42,54 @@ class OC_Share {
         */
        public function __construct($source, $uid_shared_with, $permissions) {
                $uid_owner = OC_User::getUser();
-               if (OC_Group::groupExists($uid_shared_with)) {
-                       $gid = $uid_shared_with;
-                       $uid_shared_with = OC_Group::usersInGroup($gid);
-                       // Remove the owner from the list of users in the group
-                       $uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
-               } else if (OC_User::userExists($uid_shared_with)) {
-                       $gid = null;
-                       $uid_shared_with = array($uid_shared_with);
+               $query = OC_DB::prepare("INSERT INTO *PREFIX*sharing VALUES(?,?,?,?,?)");
+               if ($uid_shared_with == self::PUBLICLINK) {
+                       $token = sha1("$uid_shared_with-$source");
+                       $query->execute(array($uid_owner, self::PUBLICLINK, $source, $token, $permissions));
+                       $this->token = $token;
                } else {
-                       throw new Exception($uid_shared_with." is not a user");
-               }
-               foreach ($uid_shared_with as $uid) {
-                       // Check if this item is already shared with the user
-                       $checkSource = OC_DB::prepare("SELECT source FROM *PREFIX*sharing WHERE source = ? AND uid_shared_with ".self::getUsersAndGroups($uid));
-                       $resultCheckSource = $checkSource->execute(array($source, $uid))->fetchAll();
-                       // TODO Check if the source is inside a folder
-                       if (count($resultCheckSource) > 0 && !isset($gid)) {
-                               throw new Exception("This item is already shared with ".$uid);
+                       if (OC_Group::groupExists($uid_shared_with)) {
+                               $gid = $uid_shared_with;
+                               $uid_shared_with = OC_Group::usersInGroup($gid);
+                               // Remove the owner from the list of users in the group
+                               $uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
+                       } else if (OC_User::userExists($uid_shared_with)) {
+                               $gid = null;
+                               $uid_shared_with = array($uid_shared_with);
+                       } else {
+                               throw new Exception($uid_shared_with." is not a user");
                        }
-                       // Check if the target already exists for the user, if it does append a number to the name
-                       $target = "/".$uid."/files/Shared/".basename($source);
-                       if (self::getSource($target)) {
-                               if ($pos = strrpos($target, ".")) {
-                                       $name = substr($target, 0, $pos);
-                                       $ext = substr($target, $pos);
-                               } else {
-                                       $name = $target;
-                                       $ext = "";
+                       foreach ($uid_shared_with as $uid) {
+                               // Check if this item is already shared with the user
+                               $checkSource = OC_DB::prepare("SELECT source FROM *PREFIX*sharing WHERE source = ? AND uid_shared_with ".self::getUsersAndGroups($uid));
+                               $resultCheckSource = $checkSource->execute(array($source, $uid))->fetchAll();
+                               // TODO Check if the source is inside a folder
+                               if (count($resultCheckSource) > 0 && !isset($gid)) {
+                                       throw new Exception("This item is already shared with ".$uid);
                                }
-                               $counter = 1;
-                               while ($checkTarget !== false) {
-                                       $newTarget = $name."_".$counter.$ext;
-                                       $checkTarget = self::getSource($newTarget);
-                                       $counter++;
+                               // Check if the target already exists for the user, if it does append a number to the name
+                               $target = "/".$uid."/files/Shared/".basename($source);
+                               if (self::getSource($target)) {
+                                       if ($pos = strrpos($target, ".")) {
+                                               $name = substr($target, 0, $pos);
+                                               $ext = substr($target, $pos);
+                                       } else {
+                                               $name = $target;
+                                               $ext = "";
+                                       }
+                                       $counter = 1;
+                                       while ($checkTarget !== false) {
+                                               $newTarget = $name."_".$counter.$ext;
+                                               $checkTarget = self::getSource($newTarget);
+                                               $counter++;
+                                       }
+                                       $target = $newTarget;
                                }
-                               $target = $newTarget;
-                       }
-                       if (isset($gid)) {
-                               $uid = $uid."@".$gid;
+                               if (isset($gid)) {
+                                       $uid = $uid."@".$gid;
+                               }
+                               $query->execute(array($uid_owner, $uid, $source, $target, $permissions));
                        }
-                       $query = OC_DB::prepare("INSERT INTO *PREFIX*sharing VALUES(?,?,?,?,?)");
-                       $query->execute(array($uid_owner, $uid, $source, $target, $permissions));
                }
        }