]> source.dussan.org Git - nextcloud-server.git/commitdiff
Sharing: offer an option to allow sharing with everyone, i.e. do not check group...
authorArthur Schiwon <blizzz@owncloud.com>
Tue, 17 Jul 2012 12:09:01 +0000 (14:09 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Tue, 17 Jul 2012 12:09:01 +0000 (14:09 +0200)
apps/files_sharing/ajax/togglesharewitheveryone.php [new file with mode: 0644]
apps/files_sharing/ajax/userautocomplete.php
apps/files_sharing/js/settings.js
apps/files_sharing/lib_share.php
apps/files_sharing/settings.php
apps/files_sharing/templates/settings.php

diff --git a/apps/files_sharing/ajax/togglesharewitheveryone.php b/apps/files_sharing/ajax/togglesharewitheveryone.php
new file mode 100644 (file)
index 0000000..dc1105f
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+OCP\JSON::checkAppEnabled('files_sharing');
+OCP\JSON::checkAdminUser();
+if ($_POST['allowSharingWithEveryone'] == true) {
+       OCP\Config::setAppValue('files_sharing', 'allowSharingWithEveryone', 'yes');
+} else {
+       OCP\Config::setAppValue('files_sharing', 'allowSharingWithEveryone', 'no');
+}
\ No newline at end of file
index 0e1bf6d588ec75f653c0f278b24cdefafc55db7d..23865693a1bb4e9ef34a988ac0c6a0a189eff03a 100644 (file)
@@ -6,24 +6,37 @@ OCP\JSON::checkAppEnabled('files_sharing');
 $users = array();
 $groups = array();
 $self = OCP\USER::getUser();
-$userGroups = OC_Group::getUserGroups($self);
 $users[] = "<optgroup label='Users'>";
 $groups[] = "<optgroup label='Groups'>";
-foreach ($userGroups as $group) {
-       $groupUsers = OC_Group::usersInGroup($group);
-       $userCount = 0;
-       foreach ($groupUsers as $user) {
-               if ($user != $self) {
+if(OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no') == 'yes') {
+       $allGroups = OC_Group::getGroups();
+       foreach($allGroups as $group) {
+           $groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+       }
+       $allUsers = OC_User::getUsers();
+       foreach($allUsers as $user) {
+               if($user != $self) {
                        $users[] = "<option value='".$user."'>".$user."</option>";
-                       $userCount++;
-               }
+           }
        }
-       // Don't include the group if only the current user is a member of it
-       if ($userCount > 0) {
-               $groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+} else {
+       $userGroups = OC_Group::getUserGroups($self);
+       foreach ($userGroups as $group) {
+               $groupUsers = OC_Group::usersInGroup($group);
+               $userCount = 0;
+               foreach ($groupUsers as $user) {
+                       if ($user != $self) {
+                               $users[] = "<option value='".$user."'>".$user."</option>";
+                               $userCount++;
+                       }
+               }
+               // Don't include the group if only the current user is a member of it
+               if ($userCount > 0) {
+                       $groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+               }
        }
+       $users = array_unique($users);
 }
-$users = array_unique($users);
 $users[] = "</optgroup>";
 $groups[] = "</optgroup>";
 $users = array_merge($users, $groups);
index bb7d79fecbb24a2de090c0424c6a183b15018f97..c276521b7b50f2375ee9f7c429932aa0b2dda157 100644 (file)
@@ -6,4 +6,11 @@ $(document).ready(function() {
                }
                $.post(OC.filePath('files_sharing','ajax','toggleresharing.php'), 'resharing='+checked);
        });
+       $('#allowSharingWithEveryone').bind('change', function() {
+               var checked = 1;
+               if (!this.checked) {
+                       checked = 0;
+               }
+               $.post(OC.filePath('files_sharing','ajax','togglesharewitheveryone.php'), 'allowSharingWithEveryone='+checked);
+       });
 });
\ No newline at end of file
index 31170f07fd1251d81cbac77a946272d01c849747..c0d0a1f18b95c0b1991c7baf9b64d8923a2df9f9 100644 (file)
@@ -21,7 +21,7 @@
  */
 
 /**
- * This class manages shared items within the database. 
+ * This class manages shared items within the database.
  */
 class OC_Share {
 
@@ -31,7 +31,7 @@ class OC_Share {
        const PUBLICLINK = "public";
 
        private $token;
-      
+
        /**
         * Share an item, adds an entry into the database
         * @param $source The source location of the item
@@ -56,17 +56,22 @@ class OC_Share {
                                // Remove the owner from the list of users in the group
                                $uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
                        } else if (OCP\User::userExists($uid_shared_with)) {
-                               $userGroups = OC_Group::getUserGroups($uid_owner);
-                               // Check if the user is in one of the owner's groups
-                               foreach ($userGroups as $group) {
-                                       if ($inGroup = OC_Group::inGroup($uid_shared_with, $group)) {
-                                               $gid = null;
-                                               $uid_shared_with = array($uid_shared_with);
-                                               break;
+                               if(OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no') == 'yes') {
+                                       $gid = null;
+                                       $uid_shared_with = array($uid_shared_with);
+                               } else {
+                                       $userGroups = OC_Group::getUserGroups($uid_owner);
+                                       // Check if the user is in one of the owner's groups
+                                       foreach ($userGroups as $group) {
+                                               if ($inGroup = OC_Group::inGroup($uid_shared_with, $group)) {
+                                                       $gid = null;
+                                                       $uid_shared_with = array($uid_shared_with);
+                                                       break;
+                                               }
+                                       }
+                                       if (!$inGroup) {
+                                               throw new Exception("You can't share with ".$uid_shared_with);
                                        }
-                               }
-                               if (!$inGroup) {
-                                       throw new Exception("You can't share with ".$uid_shared_with);
                                }
                        } else {
                                throw new Exception($uid_shared_with." is not a user");
@@ -379,7 +384,7 @@ class OC_Share {
         * You must use the pullOutOfFolder() function to change the target location of a file inside a shared folder if the target location differs from the folder
         *
         * @param $oldTarget The current target location
-        * @param $newTarget The new target location 
+        * @param $newTarget The new target location
         */
        public static function setTarget($oldTarget, $newTarget) {
                $oldTarget = self::cleanPath($oldTarget);
index 7b63a26515a312749b4cd8c560a36e93b18bf7ea..fcae7e0370f14a8334c38bcafa67bdf1806e1007 100644 (file)
@@ -4,6 +4,7 @@ OCP\User::checkAdminUser();
 OCP\Util::addscript('files_sharing', 'settings');
 $tmpl = new OCP\Template('files_sharing', 'settings');
 $tmpl->assign('allowResharing', OCP\Config::getAppValue('files_sharing', 'resharing', 'yes'));
+$tmpl->assign('allowSharingWithEveryone', OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no'));
 return $tmpl->fetchPage();
 
 ?>
\ No newline at end of file
index 5b6ba5f33ee1d0766e7da1adfdaf0ff640602a42..533a5c0c0c8612ee0e2a689176588a397dc8a1c0 100644 (file)
@@ -1,6 +1,8 @@
 <form id="resharing">
        <fieldset class="personalblock">
-       <input type="checkbox" name="allowResharing" id="allowResharing" value="1" <?php if ($_['allowResharing'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowResharing"><?php echo $l->t('Enable Resharing'); ?></label> <br/>
-       <em><?php echo $l->t('Allow users to reshare files they don\'t own');?></em>
+       <p><input type="checkbox" name="allowResharing" id="allowResharing" value="1" <?php if ($_['allowResharing'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowResharing"><?php echo $l->t('Enable Resharing'); ?></label> <br/>
+       <em><?php echo $l->t('Allow users to reshare files they don\'t own');?></em></p>
+       <p><input type="checkbox" name="allowSharingWithEveryone" id="allowSharingWithEveryone" value="1" <?php if ($_['allowSharingWithEveryone'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowSharingWithEveryone"><?php echo $l->t('Enable sharing with everyone'); ?></label> <br/>
+       <em><?php echo $l->t('Allow users to share files with everyone');?></em></p>
        </fieldset>
 </form>
\ No newline at end of file