]> source.dussan.org Git - nextcloud-server.git/commitdiff
add more linebreaks, replace SQL LIMIT with param
authorJörn Friedrich Dreyer <jfd@butonic.de>
Wed, 9 Jan 2013 12:57:51 +0000 (13:57 +0100)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Wed, 9 Jan 2013 12:57:51 +0000 (13:57 +0100)
apps/files_sharing/public.php
lib/public/share.php

index fef0ed8a8c291f92a488a06410ef01dadee2c96c..487b9e79961b6fb1a734012cac2433d3ee0432fe 100644 (file)
@@ -7,7 +7,7 @@ OC_App::loadApps();
 // support will be removed in OC 5.0,a
 if (isset($_GET['token'])) {
        unset($_GET['file']);
-       $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
+       $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ?', 1);
        $filepath = $qry->execute(array($_GET['token']))->fetchOne();
        if(isset($filepath)) {
                $info = OC_FileCache_Cached::get($filepath, '');
@@ -16,7 +16,9 @@ if (isset($_GET['token'])) {
                } else {
                        $_GET['file'] = $filepath;
                }
-               \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
+               \OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0.'
+                               .' Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.',
+                               \OCP\Util::WARN);
        }
 }
 
@@ -27,7 +29,10 @@ function getID($path) {
                $path_parts = explode('/', $path, 5);
                $user = $path_parts[1];
                $intPath = '/'.$path_parts[4];
-               $query = \OC_DB::prepare('SELECT `item_source` FROM `*PREFIX*share` WHERE `uid_owner` = ? AND `file_target` = ? ');
+               $query = \OC_DB::prepare('SELECT `item_source`'
+                                                               .' FROM `*PREFIX*share`'
+                                                               .' WHERE `uid_owner` = ?'
+                                                               .' AND `file_target` = ? ');
                $result = $query->execute(array($user, $intPath));
                $row = $result->fetchRow();
                $fileSource = $row['item_source'];
@@ -69,7 +74,8 @@ if (isset($_GET['t'])) {
                        
                        //if this is a reshare check the file owner also exists
                        if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) {
-                                       OCP\Util::writeLog('share', 'original file owner '.$fileOwner.' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR);
+                                       OCP\Util::writeLog('share', 'original file owner '.$fileOwner
+                                                                                          .' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR);
                                        header('HTTP/1.0 404 Not Found');
                                        $tmpl = new OCP\Template('', '404', 'guest');
                                        $tmpl->printPage();
@@ -134,7 +140,8 @@ if ($linkItem) {
                                // Check Password
                                $forcePortable = (CRYPT_BLOWFISH != 1);
                                $hasher = new PasswordHash(8, $forcePortable);
-                               if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $linkItem['share_with']))) {
+                               if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''),
+                                                                                        $linkItem['share_with']))) {
                                        $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
                                        $tmpl->assign('URL', $url);
                                        $tmpl->assign('error', true);
@@ -145,19 +152,25 @@ if ($linkItem) {
                                        $_SESSION['public_link_authenticated'] = $linkItem['id'];
                                }
                        } else {
-                               OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'].' for share id '.$linkItem['id'], \OCP\Util::ERROR);
+                               OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type']
+                                                                                  .' for share id '.$linkItem['id'], \OCP\Util::ERROR);
                                header('HTTP/1.0 404 Not Found');
                                $tmpl = new OCP\Template('', '404', 'guest');
                                $tmpl->printPage();
                                exit();
                        }
-               // Check if item id is set in session
-               } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
-                       // Prompt for password
-                       $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
-                       $tmpl->assign('URL', $url);
-                       $tmpl->printPage();
-                       exit();
+               
+               } else {
+                       // Check if item id is set in session
+                       if (!isset($_SESSION['public_link_authenticated'])
+                               || $_SESSION['public_link_authenticated'] !== $linkItem['id']
+                       ) {
+                               // Prompt for password
+                               $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
+                               $tmpl->assign('URL', $url);
+                               $tmpl->printPage();
+                               exit();
+                       }
                }
        }
        $basePath = substr($pathAndUser['path'], strlen('/'.$fileOwner.'/files'));
@@ -203,7 +216,9 @@ if ($linkItem) {
                        $getPath = '';
                }
                //
-               $urlLinkIdentifiers= (isset($token)?'&t='.$token:'').(isset($_GET['dir'])?'&dir='.$_GET['dir']:'').(isset($_GET['file'])?'&file='.$_GET['file']:'');
+               $urlLinkIdentifiers= (isset($token)?'&t='.$token:'')
+                                                       .(isset($_GET['dir'])?'&dir='.$_GET['dir']:'')
+                                                       .(isset($_GET['file'])?'&file='.$_GET['file']:'');
                // Show file list
                if (OC_Filesystem::is_dir($path)) {
                        OCP\Util::addStyle('files', 'files');
@@ -260,13 +275,16 @@ if ($linkItem) {
                        $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
                        $tmpl->assign('folder', $folder->fetchPage(), false);
                        $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
-                       $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
+                       $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
+                                                                               .$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
                } else {
                        // Show file preview if viewer is available
                        if ($type == 'file') {
-                               $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download');
+                               $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
+                                                                                       .$urlLinkIdentifiers.'&download');
                        } else {
-                               $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
+                               $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
+                                                                                       .$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
                        }
                }
                $tmpl->printPage();
index d736871d2440004d99fac20eaa75c3a3f2be9d90..8c0cfc16b4eb3d77d49fba6e7c505fc134635a63 100644 (file)
@@ -37,7 +37,8 @@ class Share {
        const SHARE_TYPE_REMOTE = 6;
 
        /** CRUDS permissions (Create, Read, Update, Delete, Share) using a bitmask
-       * Construct permissions for share() and setPermissions with Or (|) e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE
+       * Construct permissions for share() and setPermissions with Or (|)
+       * e.g. Give user read and update permissions: PERMISSION_READ | PERMISSION_UPDATE
        * Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE)
        * Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE
        * Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares
@@ -66,14 +67,17 @@ class Share {
        public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) {
                if (self::isEnabled()) {
                        if (!isset(self::$backendTypes[$itemType])) {
-                               self::$backendTypes[$itemType] = array('class' => $class, 'collectionOf' => $collectionOf, 'supportedFileExtensions' => $supportedFileExtensions);
+                               self::$backendTypes[$itemType] = array('class' => $class,
+                                                                                                          'collectionOf' => $collectionOf,
+                                                                                                          'supportedFileExtensions' => $supportedFileExtensions);
                                if(count(self::$backendTypes) === 1) {
                                        \OC_Util::addScript('core', 'share');
                                        \OC_Util::addStyle('core', 'share');
                                }
                                return true;
                        }
-                       \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, '.self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN);
+                       \OC_Log::write('OCP\Share', 'Sharing backend '.$class.' not registered, '
+                                       .self::$backendTypes[$itemType]['class'].' is already registered for '.$itemType, \OC_Log::WARN);
                }
                return false;
        }
@@ -99,8 +103,20 @@ class Share {
        * @param int Number of items to return (optional) Returns all by default
        * @return Return depends on format
        */
-       public static function getItemsSharedWith($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) {
-               return self::getItems($itemType, null, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, $limit, $includeCollections);
+       public static function getItemsSharedWith($itemType,
+                                                                                         $format = self::FORMAT_NONE,
+                                                                                         $parameters = null,
+                                                                                         $limit = -1,
+                                                                                         $includeCollections = false) {
+               return self::getItems($itemType,
+                                                         null,
+                                                         self::$shareTypeUserAndGroups,
+                                                         \OC_User::getUser(),
+                                                         null,
+                                                         $format,
+                                                         $parameters,
+                                                         $limit,
+                                                         $includeCollections);
        }
 
        /**
@@ -110,8 +126,20 @@ class Share {
        * @param int Format (optional) Format type must be defined by the backend
        * @return Return depends on format
        */
-       public static function getItemSharedWith($itemType, $itemTarget, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) {
-               return self::getItems($itemType, $itemTarget, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections);
+       public static function getItemSharedWith($itemType,
+                                                                                        $itemTarget,
+                                                                                        $format = self::FORMAT_NONE,
+                                                                                        $parameters = null,
+                                                                                        $includeCollections = false) {
+               return self::getItems($itemType,
+                                                         $itemTarget,
+                                                         self::$shareTypeUserAndGroups,
+                                                         \OC_User::getUser(),
+                                                         null,
+                                                         $format,
+                                                         $parameters,
+                                                         1,
+                                                         $includeCollections);
        }
 
        /**
@@ -121,8 +149,20 @@ class Share {
        * @param int Format (optional) Format type must be defined by the backend
        * @return Return depends on format
        */
-       public static function getItemSharedWithBySource($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) {
-               return self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, \OC_User::getUser(), null, $format, $parameters, 1, $includeCollections, true);
+       public static function getItemSharedWithBySource($itemType,
+                                                                                                        $itemSource,
+                                                                                                        $format = self::FORMAT_NONE,
+                                                                                                        $parameters = null,
+                                                                                                        $includeCollections = false) {
+               return self::getItems($itemType,
+                                                         $itemSource,
+                                                         self::$shareTypeUserAndGroups,
+                                                         \OC_User::getUser(),
+                                                         null,
+                                                         $format,
+                                                         $parameters,
+                                                         1,
+                                                         $includeCollections, true);
        }
 
        /**
@@ -133,7 +173,14 @@ class Share {
        * @return Item
        */
        public static function getItemSharedWithByLink($itemType, $itemSource, $uidOwner) {
-               return self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1);
+               return self::getItems($itemType,
+                                                         $itemSource,
+                                                         self::SHARE_TYPE_LINK,
+                                                         null,
+                                                         $uidOwner,
+                                                         self::FORMAT_NONE,
+                                                         null,
+                                                         1);
        }
 
        /**
@@ -142,7 +189,7 @@ class Share {
         * @return Item
         */
        public static function getShareByToken($token) {
-               $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `token` = ?',1);
+               $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `token` = ?', 1);
                $result = $query->execute(array($token));
                if (\OC_DB::isError($result)) {
                        \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', token=' . $token, \OC_Log::ERROR);
@@ -157,8 +204,20 @@ class Share {
        * @param int Number of items to return (optional) Returns all by default
        * @return Return depends on format
        */
-       public static function getItemsShared($itemType, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false) {
-               return self::getItems($itemType, null, null, null, \OC_User::getUser(), $format, $parameters, $limit, $includeCollections);
+       public static function getItemsShared($itemType,
+                                                                                 $format = self::FORMAT_NONE,
+                                                                                 $parameters = null,
+                                                                                 $limit = -1,
+                                                                                 $includeCollections = false) {
+               return self::getItems($itemType,
+                                                         null,
+                                                         null,
+                                                         null,
+                                                         \OC_User::getUser(),
+                                                         $format,
+                                                         $parameters,
+                                                         $limit,
+                                                         $includeCollections);
        }
 
        /**
@@ -168,8 +227,20 @@ class Share {
        * @param int Format (optional) Format type must be defined by the backend
        * @return Return depends on format
        */
-       public static function getItemShared($itemType, $itemSource, $format = self::FORMAT_NONE, $parameters = null, $includeCollections = false) {
-               return self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), $format, $parameters, -1, $includeCollections);
+       public static function getItemShared($itemType,
+                                                                                $itemSource,
+                                                                                $format = self::FORMAT_NONE,
+                                                                                $parameters = null,
+                                                                                $includeCollections = false) {
+               return self::getItems($itemType,
+                                                         $itemSource,
+                                                         null,
+                                                         null,
+                                                         \OC_User::getUser(),
+                                                         $format,
+                                                         $parameters,
+                                                         -1,
+                                                         $includeCollections);
        }
 
        /**
@@ -199,14 +270,26 @@ class Share {
                        if ($sharingPolicy == 'groups_only') {
                                $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith));
                                if (empty($inGroup)) {
-                                       $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of';
+                                       $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member'
+                                                       .' of any groups that '.$uidOwner.' is a member of';
                                        \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
                                        throw new \Exception($message);
                                }
                        }
                        // Check if the item source is already shared with the user, either from the same owner or a different user
-                       if ($checkExists = self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) {
-                               // Only allow the same share to occur again if it is the same owner and is not a user share, this use case is for increasing permissions for a specific user
+                       $checkExists = self::getItems($itemType,
+                                                                                 $itemSource,
+                                                                                 self::$shareTypeUserAndGroups,
+                                                                                 $shareWith,
+                                                                                 null,
+                                                                                 self::FORMAT_NONE,
+                                                                                 null,
+                                                                                 1,
+                                                                                 true,
+                                                                                 true);
+                       if ($checkExists) {
+                               // Only allow the same share to occur again if it is the same owner and is not a user share,
+                               // this use case is for increasing permissions for a specific user
                                if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) {
                                        $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith;
                                        \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
@@ -220,14 +303,26 @@ class Share {
                                throw new \Exception($message);
                        }
                        if ($sharingPolicy == 'groups_only' && !\OC_Group::inGroup($uidOwner, $shareWith)) {
-                               $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner.' is not a member of the group '.$shareWith;
+                               $message = 'Sharing '.$itemSource.' failed, because '.$uidOwner
+                                               .' is not a member of the group '.$shareWith;
                                \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
                                throw new \Exception($message);
                        }
                        // Check if the item source is already shared with the group, either from the same owner or a different user
                        // The check for each user in the group is done inside the put() function
-                       if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_GROUP, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) {
-                               // Only allow the same share to occur again if it is the same owner and is not a group share, this use case is for increasing permissions for a specific user
+                       $checkExists = self::getItems($itemType,
+                                                                                 $itemSource,
+                                                                                 self::SHARE_TYPE_GROUP,
+                                                                                 $shareWith,
+                                                                                 null,
+                                                                                 self::FORMAT_NONE,
+                                                                                 null,
+                                                                                 1,
+                                                                                 true,
+                                                                                 true);
+                       if ($checkExists) {
+                               // Only allow the same share to occur again if it is the same owner and is not a group share,
+                               // this use case is for increasing permissions for a specific user
                                if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) {
                                        $message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith;
                                        \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
@@ -242,7 +337,15 @@ class Share {
                } else if ($shareType === self::SHARE_TYPE_LINK) {
                        if (\OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes') == 'yes') {
                                // when updating a link share
-                               if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_LINK, null, $uidOwner, self::FORMAT_NONE, null, 1)) {
+                               $checkExists = self::getItems($itemType,
+                                                                                         $itemSource,
+                                                                                         self::SHARE_TYPE_LINK,
+                                                                                         null,
+                                                                                         $uidOwner,
+                                                                                         self::FORMAT_NONE,
+                                                                                         null,
+                                                                                         1);
+                               if ($checkExists) {
                                        // remember old token
                                        $oldToken = $checkExists['token'];
                                        //delete the old share
@@ -262,7 +365,14 @@ class Share {
                                } else {
                                        $token = \OC_Util::generate_random_bytes(self::TOKEN_LENGTH);
                                }
-                               $result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, null, $token);
+                               $result = self::put($itemType,
+                                                                       $itemSource,
+                                                                       $shareType,
+                                                                       $shareWith,
+                                                                       $uidOwner,
+                                                                       $permissions,
+                                                                       null,
+                                                                       $token);
                                if ($result) {
                                        return $token;
                                } else {
@@ -305,19 +415,26 @@ class Share {
                        if ($parentFolder && $files = \OC_Files::getDirectoryContent($itemSource)) {
                                for ($i = 0; $i < count($files); $i++) {
                                        $name = substr($files[$i]['name'], strpos($files[$i]['name'], $itemSource) - strlen($itemSource));
-                                       if ($files[$i]['mimetype'] == 'httpd/unix-directory' && $children = \OC_Files::getDirectoryContent($name, '/')) {
+                                       if ($files[$i]['mimetype'] == 'httpd/unix-directory' 
+                                               && $children = \OC_Files::getDirectoryContent($name, '/')
+                                       ) {
                                                // Continue scanning into child folders
                                                array_push($files, $children);
                                        } else {
                                                // Check file extension for an equivalent item type to convert to
                                                $extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1));
                                                foreach (self::$backends as $type => $backend) {
-                                                       if (isset($backend->dependsOn) && $backend->dependsOn == 'file' && isset($backend->supportedFileExtensions) && in_array($extension, $backend->supportedFileExtensions)) {
+                                                       if (isset($backend->dependsOn)
+                                                               && $backend->dependsOn == 'file'
+                                                               && isset($backend->supportedFileExtensions)
+                                                               && in_array($extension, $backend->supportedFileExtensions)
+                                                       ) {
                                                                $itemType = $type;
                                                                break;
                                                        }
                                                }
-                                               // Pass on to put() to check if this item should be converted, the item won't be inserted into the database unless it can be converted
+                                               // Pass on to put() to check if this item should be converted,
+                                               // the item won't be inserted into the database unless it can be converted
                                                self::put($itemType, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder);
                                        }
                                }
@@ -339,7 +456,15 @@ class Share {
        * @return Returns true on success or false on failure
        */
        public static function unshare($itemType, $itemSource, $shareType, $shareWith) {
-               if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1)) {
+               $item = self::getItems($itemType,
+                                                          $itemSource,
+                                                          $shareType,
+                                                          $shareWith,
+                                                          \OC_User::getUser(),
+                                                          self::FORMAT_NONE,
+                                                          null,
+                                                          1);
+               if ($item) {
                        self::delete($item['id']);
                        return true;
                }
@@ -353,7 +478,8 @@ class Share {
        * @return Returns true on success or false on failure
        */
        public static function unshareAll($itemType, $itemSource) {
-               if ($shares = self::getItemShared($itemType, $itemSource)) {
+               $shares = self::getItemShared($itemType, $itemSource);
+               if ($shares) {
                        foreach ($shares as $share) {
                                self::delete($share['id']);
                        }
@@ -372,11 +498,27 @@ class Share {
        *
        */
        public static function unshareFromSelf($itemType, $itemTarget) {
-               if ($item = self::getItemSharedWith($itemType, $itemTarget)) {
+               $item = self::getItemSharedWith($itemType, $itemTarget);
+               if ($item) {
                        if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) {
-                               // Insert an extra row for the group share and set permission to 0 to prevent it from showing up for the user
-                               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)');
-                               $query->execute(array($item['item_type'], $item['item_source'], $item['item_target'], $item['id'], self::$shareTypeGroupUserUnique, \OC_User::getUser(), $item['uid_owner'], 0, $item['stime'], $item['file_source'], $item['file_target']));
+                               // Insert an extra row for the group share and set permission to 0
+                               // to prevent it from showing up for the user
+                               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` ('
+                                                               .'`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, '
+                                                               .'`uid_owner`, `permissions`, `stime`, `file_source`, `file_target`'
+                                                               .') VALUES (?,?,?,?,?,?,?,?,?,?,?)');
+                               $query->execute(array(
+                                       $item['item_type'],
+                                       $item['item_source'],
+                                       $item['item_target'],
+                                       $item['id'],
+                                       self::$shareTypeGroupUserUnique,
+                                       \OC_User::getUser(),
+                                       $item['uid_owner'],
+                                       0,
+                                       $item['stime'],
+                                       $item['file_source'],
+                                       $item['file_target']));
                                \OC_DB::insertid('*PREFIX*share');
                                // Delete all reshares by this user of the group share
                                self::delete($item['id'], true, \OC_User::getUser());
@@ -403,13 +545,24 @@ class Share {
        * @return Returns true on success or false on failure
        */
        public static function setPermissions($itemType, $itemSource, $shareType, $shareWith, $permissions) {
-               if ($item = self::getItems($itemType, $itemSource, $shareType, $shareWith, \OC_User::getUser(), self::FORMAT_NONE, null, 1, false)) {
-                       // Check if this item is a reshare and verify that the permissions granted don't exceed the parent shared item
+               $item = self::getItems($itemType,
+                                       $itemSource,
+                                       $shareType,
+                                       $shareWith,
+                                       \OC_User::getUser(),
+                                       self::FORMAT_NONE,
+                                       null,
+                                       1,
+                                       false);
+               if ($item) {
+                       // Check if this item is a reshare and
+                       // verify that the permissions granted don't exceed the parent shared item
                        if (isset($item['parent'])) {
                                $query = \OC_DB::prepare('SELECT `permissions` FROM `*PREFIX*share` WHERE `id` = ?', 1);
                                $result = $query->execute(array($item['parent']))->fetchRow();
                                if (~(int)$result['permissions'] & $permissions) {
-                                       $message = 'Setting permissions for '.$itemSource.' failed, because the permissions exceed permissions granted to '.\OC_User::getUser();
+                                       $message = 'Setting permissions for '.$itemSource.' failed, '
+                                                       .'because the permissions exceed permissions granted to '.\OC_User::getUser();
                                        \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
                                        throw new \Exception($message);
                                }
@@ -426,9 +579,12 @@ class Share {
                                        $parents = array($item['id']);
                                        while (!empty($parents)) {
                                                $parents = "'".implode("','", $parents)."'";
-                                               $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')');
+                                               $query = \OC_DB::prepare('SELECT `id`, `permissions`'
+                                                                                               .' FROM `*PREFIX*share`'
+                                                                                               .' WHERE `parent` IN ('.$parents.')');
                                                $result = $query->execute();
-                                               // Reset parents array, only go through loop again if items are found that need permissions removed
+                                               // Reset parents array,
+                                               // only go through loop again if items are found that need permissions removed
                                                $parents = array();
                                                while ($item = $result->fetchRow()) {
                                                        // Check if permissions need to be removed
@@ -442,7 +598,9 @@ class Share {
                                        // Remove the permissions for all reshares of this item
                                        if (!empty($ids)) {
                                                $ids = "'".implode("','", $ids)."'";
-                                               $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = `permissions` & ? WHERE `id` IN ('.$ids.')');
+                                               $query = \OC_DB::prepare('UPDATE `*PREFIX*share`'
+                                                                                               .' SET `permissions` = `permissions` & ?'
+                                                                                               .' WHERE `id` IN ('.$ids.')');
                                                $query->execute(array($permissions));
                                        }
                                }
@@ -455,7 +613,16 @@ class Share {
        }
 
        public static function setExpirationDate($itemType, $itemSource, $date) {
-               if ($items = self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), self::FORMAT_NONE, null, -1, false)) {
+               $items = self::getItems($itemType,
+                                                               $itemSource,
+                                                               null,
+                                                               null,
+                                                               \OC_User::getUser(),
+                                                               self::FORMAT_NONE,
+                                                               null,
+                                                               -1,
+                                                               false);
+               if ($items) {
                        if (!empty($items)) {
                                if ($date == '') {
                                        $date = null;
@@ -517,7 +684,8 @@ class Share {
                if (!self::getBackend($itemType) instanceof Share_Backend_Collection) {
                        unset($collectionTypes[0]);
                }
-               // Return array if collections were found or the item type is a collection itself - collections can be inside collections
+               // Return array if collections were found or the item type is a collection itself
+               // - collections can be inside collections
                if (count($collectionTypes) > 0) {
                        return $collectionTypes;
                }
@@ -528,7 +696,8 @@ class Share {
        * @brief Get shared items from the database
        * @param string Item type
        * @param string Item source or target (optional)
-       * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK, $shareTypeUserAndGroups, or $shareTypeGroupUserUnique
+       * @param int SHARE_TYPE_USER, SHARE_TYPE_GROUP, SHARE_TYPE_LINK,
+       *                        $shareTypeUserAndGroups, or $shareTypeGroupUserUnique
        * @param string User or group the item is being shared with
        * @param string User that is the owner of shared items (optional)
        * @param int Format to convert items to with formatItems()
@@ -540,7 +709,16 @@ class Share {
        * See public functions getItem(s)... for parameter usage
        *
        */
-       private static function getItems($itemType, $item = null, $shareType = null, $shareWith = null, $uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false, $itemShareWithBySource = false) {
+       private static function getItems($itemType,
+                                                                        $item = null,
+                                                                        $shareType = null,
+                                                                        $shareWith = null,
+                                                                        $uidOwner = null,
+                                                                        $format = self::FORMAT_NONE,
+                                                                        $parameters = null,
+                                                                        $limit = -1,
+                                                                        $includeCollections = false,
+                                                                        $itemShareWithBySource = false) {
                if (!self::isEnabled()) {
                        if ($limit == 1 || (isset($uidOwner) && isset($item))) {
                                return false;
@@ -549,7 +727,8 @@ class Share {
                        }
                }
                $backend = self::getBackend($itemType);
-               // Get filesystem root to add it to the file target and remove from the file source, match file_source with the file cache
+               // Get filesystem root to add it to the file target and remove from the file source,
+               // match file_source with the file cache
                if ($itemType == 'file' || $itemType == 'folder') {
                        $root = \OC_Filesystem::getRoot();
                        $where = 'INNER JOIN `*PREFIX*fscache` ON `file_source` = `*PREFIX*fscache`.`id`';
@@ -652,7 +831,8 @@ class Share {
                }
                if ($limit != -1 && !$includeCollections) {
                        if ($shareType == self::$shareTypeUserAndGroups) {
-                               // Make sure the unique user target is returned if it exists, unique targets should follow the group share in the database
+                               // Make sure the unique user target is returned if it exists,
+                               // unique targets should follow the group share in the database
                                // If the limit is not 1, the filtering can be done later
                                $where .= ' ORDER BY `*PREFIX*share`.`id` DESC';
                        }
@@ -668,23 +848,34 @@ class Share {
                // TODO Optimize selects
                if ($format == self::FORMAT_STATUSES) {
                        if ($itemType == 'file' || $itemType == 'folder') {
-                               $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `file_source`, `path`, `expiration`';
+                               $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, '
+                                                .'`share_type`, `file_source`, `path`, `expiration`';
                        } else {
                                $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `expiration`';
                        }
                } else {
                        if (isset($uidOwner)) {
                                if ($itemType == 'file' || $itemType == 'folder') {
-                                       $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`, `token`';
+                                       $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, '
+                                                        .'`share_with`, `file_source`, `path`, `permissions`, `stime`, `expiration`, `token`';
                                } else {
-                                       $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `permissions`, `stime`, `file_source`, `expiration`, `token`';
+                                       $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, '
+                                                        .'`permissions`, `stime`, `file_source`, `expiration`, `token`';
                                }
                        } else {
                                if ($fileDependent) {
-                                       if (($itemType == 'file' || $itemType == 'folder') && $format == \OC_Share_Backend_File::FORMAT_FILE_APP || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT) {
-                                               $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, `share_type`, `share_with`, `file_source`, `path`, `file_target`, `permissions`, `expiration`, `name`, `ctime`, `mtime`, `mimetype`, `size`, `encrypted`, `versioned`, `writable`';
+                                       if (($itemType == 'file' || $itemType == 'folder') 
+                                               && $format == \OC_Share_Backend_File::FORMAT_FILE_APP
+                                               || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT
+                                       ) {
+                                               $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `uid_owner`, '
+                                                                .'`share_type`, `share_with`, `file_source`, `path`, `file_target`, `permissions`, '
+                                                                .'`expiration`, `name`, `ctime`, `mtime`, `mimetype`, `size`, `encrypted`, '
+                                                                .'`versioned`, `writable`';
                                        } else {
-                                               $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`, `file_source`, `path`, `file_target`, `permissions`, `stime`, `expiration`, `token`';
+                                               $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`, '
+                                                                .'`*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`, `file_source`, '
+                                                                .'`path`, `file_target`, `permissions`, `stime`, `expiration`, `token`';
                                        }
                                } else {
                                        $select = '*';
@@ -695,7 +886,9 @@ class Share {
                $query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit);
                $result = $query->execute($queryArgs);
                if (\OC_DB::isError($result)) {
-                       \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where, \OC_Log::ERROR);
+                       \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result)
+                                       . ', select=' . $select
+                                       . ' where=' . $where, \OC_Log::ERROR);
                }
                $items = array();
                $targets = array();
@@ -712,7 +905,8 @@ class Share {
                        } else if (!isset($uidOwner)) {
                                // Check if the same target already exists
                                if (isset($targets[$row[$column]])) {
-                                       // Check if the same owner shared with the user twice through a group and user share - this is allowed
+                                       // Check if the same owner shared with the user twice through a group and user share
+                                       // - this is allowed
                                        $id = $targets[$row[$column]];
                                        if ($items[$id]['uid_owner'] == $row['uid_owner']) {
                                                // Switch to group share type to ensure resharing conditions aren't bypassed
@@ -720,8 +914,11 @@ class Share {
                                                        $items[$id]['share_type'] = self::SHARE_TYPE_GROUP;
                                                        $items[$id]['share_with'] = $row['share_with'];
                                                }
-                                               // Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing
-                                               if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE && (int)$row['permissions'] & PERMISSION_SHARE) {
+                                               // Switch ids if sharing permission is granted on only one share
+                                               // to ensure correct parent is used if resharing
+                                               if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE
+                                                       && (int)$row['permissions'] & PERMISSION_SHARE
+                                               ) {
                                                        $items[$row['id']] = $items[$id];
                                                        unset($items[$id]);
                                                        $id = $row['id'];
@@ -764,7 +961,9 @@ class Share {
                                }
                                // Check if this is a collection of the requested item type
                                if ($includeCollections && $collectionTypes && in_array($row['item_type'], $collectionTypes)) {
-                                       if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) {
+                                       if (($collectionBackend = self::getBackend($row['item_type']))
+                                               && $collectionBackend instanceof Share_Backend_Collection
+                                       ) {
                                                // Collections can be inside collections, check if the item is a collection
                                                if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) {
                                                        $collectionItems[] = $row;
@@ -856,10 +1055,18 @@ class Share {
        * @param bool|array Parent folder target (optional)
        * @return bool Returns true on success or false on failure
        */
-       private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null, $token = null) {
+       private static function put($itemType,
+                                                               $itemSource,
+                                                               $shareType,
+                                                               $shareWith,
+                                                               $uidOwner,
+                                                               $permissions,
+                                                               $parentFolder = null,
+                                                               $token = null) {
                $backend = self::getBackend($itemType);
                // Check if this is a reshare
-               if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) {
+               $checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true);
+               if ($checkReshare) {
                        // Check if attempting to share back to owner
                        if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) {
                                $message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the original sharer';
@@ -869,7 +1076,8 @@ class Share {
                        // Check if share permissions is granted
                        if ((int)$checkReshare['permissions'] & PERMISSION_SHARE) {
                                if (~(int)$checkReshare['permissions'] & $permissions) {
-                                       $message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner;
+                                       $message = 'Sharing '.$itemSource.' failed, '
+                                                         .'because the permissions exceed permissions granted to '.$uidOwner;
                                        \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
                                        throw new \Exception($message);
                                } else {
@@ -891,7 +1099,8 @@ class Share {
                        $suggestedItemTarget = null;
                        $suggestedFileTarget = null;
                        if (!$backend->isValidSource($itemSource, $uidOwner)) {
-                               $message = 'Sharing '.$itemSource.' failed, because the sharing backend for '.$itemType.' could not find its source';
+                               $message = 'Sharing '.$itemSource.' failed, '
+                                                 .'because the sharing backend for '.$itemType.' could not find its source';
                                \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
                                throw new \Exception($message);
                        }
@@ -913,14 +1122,27 @@ class Share {
                                $fileSource = null;
                        }
                }
-               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`, `token`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');
+               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`,'
+                                                                                                                        .' `share_type`, `share_with`, `uid_owner`, `permissions`,'
+                                                                                                                        .' `stime`, `file_source`, `file_target`, `token`'
+                                                                                                                        .') VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');
                // Share with a group
                if ($shareType == self::SHARE_TYPE_GROUP) {
-                       $groupItemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith['group'], $uidOwner, $suggestedItemTarget);
+                       $groupItemTarget = self::generateTarget($itemType,
+                                                                                                       $itemSource,
+                                                                                                       $shareType,
+                                                                                                       $shareWith['group'],
+                                                                                                       $uidOwner,
+                                                                                                       $suggestedItemTarget);
                        if (isset($fileSource)) {
                                if ($parentFolder) {
                                        if ($parentFolder === true) {
-                                               $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget);
+                                               $groupFileTarget = self::generateTarget('file',
+                                                                                                                               $filePath,
+                                                                                                                               $shareType,
+                                                                                                                               $shareWith['group'],
+                                                                                                                               $uidOwner,
+                                                                                                                               $suggestedFileTarget);
                                                // Set group default file target for future use
                                                $parentFolders[0]['folder'] = $groupFileTarget;
                                        } else {
@@ -929,21 +1151,50 @@ class Share {
                                                $parent = $parentFolder[0]['id'];
                                        }
                                } else {
-                                       $groupFileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith['group'], $uidOwner, $suggestedFileTarget);
+                                       $groupFileTarget = self::generateTarget('file',
+                                                                                                                       $filePath,
+                                                                                                                       $shareType,
+                                                                                                                       $shareWith['group'],
+                                                                                                                       $uidOwner,
+                                                                                                                       $suggestedFileTarget);
                                }
                        } else {
                                $groupFileTarget = null;
                        }
-                       $query->execute(array($itemType, $itemSource, $groupItemTarget, $parent, $shareType, $shareWith['group'], $uidOwner, $permissions, time(), $fileSource, $groupFileTarget, $token));
+                       $query->execute(array(
+                               $itemType,
+                               $itemSource,
+                               $groupItemTarget,
+                               $parent,
+                               $shareType,
+                               $shareWith['group'],
+                               $uidOwner,
+                               $permissions,
+                               time(),
+                               $fileSource,
+                               $groupFileTarget,
+                               $token));
                        // Save this id, any extra rows for this group share will need to reference it
                        $parent = \OC_DB::insertid('*PREFIX*share');
                        // Loop through all users of this group in case we need to add an extra row
                        foreach ($shareWith['users'] as $uid) {
-                               $itemTarget = self::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedItemTarget, $parent);
+                               $itemTarget = self::generateTarget($itemType,
+                                                                                                  $itemSource,
+                                                                                                  self::SHARE_TYPE_USER,
+                                                                                                  $uid,
+                                                                                                  $uidOwner,
+                                                                                                  $suggestedItemTarget,
+                                                                                                  $parent);
                                if (isset($fileSource)) {
                                        if ($parentFolder) {
                                                if ($parentFolder === true) {
-                                                       $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent);
+                                                       $fileTarget = self::generateTarget('file',
+                                                                                                                          $filePath,
+                                                                                                                          self::SHARE_TYPE_USER,
+                                                                                                                          $uid,
+                                                                                                                          $uidOwner,
+                                                                                                                          $suggestedFileTarget,
+                                                                                                                          $parent);
                                                        if ($fileTarget != $groupFileTarget) {
                                                                $parentFolders[$uid]['folder'] = $fileTarget;
                                                        }
@@ -952,7 +1203,13 @@ class Share {
                                                        $parent = $parentFolder[$uid]['id'];
                                                }
                                        } else {
-                                               $fileTarget = self::generateTarget('file', $filePath, self::SHARE_TYPE_USER, $uid, $uidOwner, $suggestedFileTarget, $parent);
+                                               $fileTarget = self::generateTarget('file',
+                                                                                                                  $filePath,
+                                                                                                                  self::SHARE_TYPE_USER,
+                                                                                                                  $uid,
+                                                                                                                  $uidOwner,
+                                                                                                                  $suggestedFileTarget,
+                                                                                                                  $parent);
                                        }
                                } else {
                                        $fileTarget = null;
@@ -973,7 +1230,19 @@ class Share {
                                ));
                                // Insert an extra row for the group share if the item or file target is unique for this user
                                if ($itemTarget != $groupItemTarget || (isset($fileSource) && $fileTarget != $groupFileTarget)) {
-                                       $query->execute(array($itemType, $itemSource, $itemTarget, $parent, self::$shareTypeGroupUserUnique, $uid, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token));
+                                       $query->execute(array(
+                                               $itemType,
+                                               $itemSource,
+                                               $itemTarget,
+                                               $parent,
+                                               self::$shareTypeGroupUserUnique,
+                                               $uid,
+                                               $uidOwner,
+                                               $permissions,
+                                               time(),
+                                               $fileSource,
+                                               $fileTarget,
+                                               $token));
                                        $id = \OC_DB::insertid('*PREFIX*share');
                                }
                        }
@@ -982,23 +1251,50 @@ class Share {
                                return $parentFolders;
                        }
                } else {
-                       $itemTarget = self::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedItemTarget);
+                       $itemTarget = self::generateTarget($itemType,
+                                                                                          $itemSource,
+                                                                                          $shareType,
+                                                                                          $shareWith,
+                                                                                          $uidOwner,
+                                                                                          $suggestedItemTarget);
                        if (isset($fileSource)) {
                                if ($parentFolder) {
                                        if ($parentFolder === true) {
-                                               $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget);
+                                               $fileTarget = self::generateTarget('file',
+                                                                                                                  $filePath,
+                                                                                                                  $shareType,
+                                                                                                                  $shareWith,
+                                                                                                                  $uidOwner,
+                                                                                                                  $suggestedFileTarget);
                                                $parentFolders['folder'] = $fileTarget;
                                        } else {
                                                $fileTarget = $parentFolder['folder'].$itemSource;
                                                $parent = $parentFolder['id'];
                                        }
                                } else {
-                                       $fileTarget = self::generateTarget('file', $filePath, $shareType, $shareWith, $uidOwner, $suggestedFileTarget);
+                                       $fileTarget = self::generateTarget('file',
+                                                                                                          $filePath,
+                                                                                                          $shareType,
+                                                                                                          $shareWith,
+                                                                                                          $uidOwner,
+                                                                                                          $suggestedFileTarget);
                                }
                        } else {
                                $fileTarget = null;
                        }
-                       $query->execute(array($itemType, $itemSource, $itemTarget, $parent, $shareType, $shareWith, $uidOwner, $permissions, time(), $fileSource, $fileTarget, $token));
+                       $query->execute(array(
+                               $itemType,
+                               $itemSource,
+                               $itemTarget,
+                               $parent,
+                               $shareType,
+                               $shareWith,
+                               $uidOwner,
+                               $permissions,
+                               time(),
+                               $fileSource,
+                               $fileTarget,
+                               $token));
                        $id = \OC_DB::insertid('*PREFIX*share');
                        \OC_Hook::emit('OCP\Share', 'post_shared', array(
                                'itemType' => $itemType,
@@ -1033,7 +1329,13 @@ class Share {
        * @param int The id of the parent group share (optional)
        * @return string Item target
        */
-       private static function generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $suggestedTarget = null, $groupParent = null) {
+       private static function generateTarget($itemType,
+                       $itemSource,
+                       $shareType,
+                       $shareWith,
+                       $uidOwner,
+                       $suggestedTarget = null,
+                       $groupParent = null) {
                $backend = self::getBackend($itemType);
                if ($shareType == self::SHARE_TYPE_LINK) {
                        if (isset($suggestedTarget)) {
@@ -1099,18 +1401,43 @@ class Share {
                                        // Find similar targets to improve backend's chances to generate a unqiue target
                                        if ($userAndGroups) {
                                                if ($column == 'file_target') {
-                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')');
-                                                       $result = $checkTargets->execute(array(self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique));
+                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`'
+                                                                                                                  .' FROM `*PREFIX*share`'
+                                                                                                                  .' WHERE `item_type` IN (\'file\', \'folder\')'
+                                                                                                                  .' AND `share_type` IN (?,?,?)'
+                                                                                                                  .' AND `share_with`'
+                                                                                                                               .' IN (\''.implode('\',\'', $userAndGroups).'\')');
+                                                       $result = $checkTargets->execute(array(
+                                                               self::SHARE_TYPE_USER,
+                                                               self::SHARE_TYPE_GROUP,
+                                                               self::$shareTypeGroupUserUnique));
                                                } else {
-                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')');
-                                                       $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique));
+                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`'
+                                                                                                                  .' FROM `*PREFIX*share`'
+                                                                                                                  .' WHERE `item_type` = ?'
+                                                                                                                  .' AND `share_type` IN (?,?,?)'
+                                                                                                                  .' AND `share_with`'
+                                                                                                                               .' IN (\''.implode('\',\'', $userAndGroups).'\')');
+                                                       $result = $checkTargets->execute(array(
+                                                               $itemType,
+                                                               self::SHARE_TYPE_USER,
+                                                               self::SHARE_TYPE_GROUP,
+                                                               self::$shareTypeGroupUserUnique));
                                                }
                                        } else {
                                                if ($column == 'file_target') {
-                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\') AND `share_type` = ? AND `share_with` = ?');
+                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`'
+                                                                                                                  .' FROM `*PREFIX*share`'
+                                                                                                                  .' WHERE `item_type` IN (\'file\', \'folder\')'
+                                                                                                                  .' AND `share_type` = ?'
+                                                                                                                  .' AND `share_with` = ?');
                                                        $result = $checkTargets->execute(array(self::SHARE_TYPE_GROUP, $shareWith));
                                                } else {
-                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'` FROM `*PREFIX*share` WHERE `item_type` = ? AND `share_type` = ? AND `share_with` = ?');
+                                                       $checkTargets = \OC_DB::prepare('SELECT `'.$column.'`'
+                                                                                                                  .' FROM `*PREFIX*share`'
+                                                                                                                  .' WHERE `item_type` = ?'
+                                                                                                                  .' AND `share_type` = ?'
+                                                                                                                  .' AND `share_with` = ?');
                                                        $result = $checkTargets->execute(array($itemType, self::SHARE_TYPE_GROUP, $shareWith));
                                                }
                                        }
@@ -1138,21 +1465,43 @@ class Share {
                $parents = array($parent);
                while (!empty($parents)) {
                        $parents = "'".implode("','", $parents)."'";
-                       // Check the owner on the first search of reshares, useful for finding and deleting the reshares by a single user of a group share
+                       // Check the owner on the first search of reshares,
+                       // useful for finding and deleting the reshares by a single user of a group share
                        if (count($ids) == 1 && isset($uidOwner)) {
-                               $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.') AND `uid_owner` = ?');
+                               $query = \OC_DB::prepare('SELECT `id`, `uid_owner`, `item_type`, `item_target`, `parent`'
+                                                                               .' FROM `*PREFIX*share`'
+                                                                               .' WHERE `parent` IN ('.$parents.')'
+                                                                               .' AND `uid_owner` = ?');
                                $result = $query->execute(array($uidOwner));
                        } else {
-                               $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `parent` IN ('.$parents.')');
+                               $query = \OC_DB::prepare('SELECT `id`, `item_type`, `item_target`, `parent`, `uid_owner`'
+                                                                               .' FROM `*PREFIX*share`'
+                                                                               .' WHERE `parent` IN ('.$parents.')');
                                $result = $query->execute();
                        }
                        // Reset parents array, only go through loop again if items are found
                        $parents = array();
                        while ($item = $result->fetchRow()) {
-                               // Search for a duplicate parent share, this occurs when an item is shared to the same user through a group and user or the same item is shared by different users
+                               // Search for a duplicate parent share,
+                               // this occurs when an item is shared to the same user through a group and user
+                               // or the same item is shared by different users
                                $userAndGroups = array_merge(array($item['uid_owner']), \OC_Group::getUserGroups($item['uid_owner']));
-                               $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share` WHERE `item_type` = ? AND `item_target` = ? AND `share_type` IN (?,?,?) AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\') AND `uid_owner` != ? AND `id` != ?');
-                               $duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow();
+                               $query = \OC_DB::prepare('SELECT `id`, `permissions`'
+                                                                               .' FROM `*PREFIX*share`'
+                                                                               .' WHERE `item_type` = ?'
+                                                                               .' AND `item_target` = ?'
+                                                                               .' AND `share_type` IN (?,?,?)'
+                                                                               .' AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'
+                                                                               .' AND `uid_owner` != ?'
+                                                                               .' AND `id` != ?');
+                               $duplicateParent = $query->execute(array(
+                                       $item['item_type'],
+                                       $item['item_target'],
+                                       self::SHARE_TYPE_USER,
+                                       self::SHARE_TYPE_GROUP,
+                                       self::$shareTypeGroupUserUnique,
+                                       $item['uid_owner'],
+                                       $item['parent']))->fetchRow();
                                if ($duplicateParent) {
                                        // Change the parent to the other item id if share permission is granted
                                        if ($duplicateParent['permissions'] & PERMISSION_SHARE) {
@@ -1181,7 +1530,10 @@ class Share {
 
        public static function post_deleteUser($arguments) {
                // Delete any items shared with the deleted user
-               $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `share_with` = ? AND `share_type` = ? OR `share_type` = ?');
+               $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share`'
+                                                               .' WHERE `share_with` = ?'
+                                                               .' AND `share_type` = ?'
+                                                               .' OR `share_type` = ?');
                $result = $query->execute(array($arguments['uid'], self::SHARE_TYPE_USER, self::$shareTypeGroupUserUnique));
                // Delete any items the deleted user shared
                $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*share` WHERE `uid_owner` = ?');
@@ -1195,21 +1547,46 @@ class Share {
                // Find the group shares and check if the user needs a unique target
                $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `share_type` = ? AND `share_with` = ?');
                $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid']));
-               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`, `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`, `file_target`) VALUES (?,?,?,?,?,?,?,?,?,?,?)');
+               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_type`, `item_source`, `item_target`, `parent`,'
+                                                                       .' `share_type`, `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,'
+                                                                       .' `file_target`)'
+                                                               .' VALUES (?,?,?,?,?,?,?,?,?,?,?)');
                while ($item = $result->fetchRow()) {
                        if ($item['item_type'] == 'file' || $item['item_type'] == 'file') {
                                $itemTarget = null;
                        } else {
-                               $itemTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['item_target'], $item['id']);
+                               $itemTarget = self::generateTarget($item['item_type'],
+                                               $item['item_source'],
+                                               self::SHARE_TYPE_USER,
+                                               $arguments['uid'],
+                                               $item['uid_owner'],
+                                               $item['item_target'],
+                                               $item['id']);
                        }
                        if (isset($item['file_source'])) {
-                               $fileTarget = self::generateTarget($item['item_type'], $item['item_source'], self::SHARE_TYPE_USER, $arguments['uid'], $item['uid_owner'], $item['file_target'], $item['id']);
+                               $fileTarget = self::generateTarget($item['item_type'],
+                                               $item['item_source'],
+                                               self::SHARE_TYPE_USER,
+                                               $arguments['uid'],
+                                               $item['uid_owner'],
+                                               $item['file_target'],
+                                               $item['id']);
                        } else {
                                $fileTarget = null;
                        }
                        // Insert an extra row for the group share if the item or file target is unique for this user
                        if ($itemTarget != $item['item_target'] || $fileTarget != $item['file_target']) {
-                               $query->execute(array($item['item_type'], $item['item_source'], $itemTarget, $item['id'], self::$shareTypeGroupUserUnique, $arguments['uid'], $item['uid_owner'], $item['permissions'], $item['stime'], $item['file_source'], $fileTarget));
+                               $query->execute(array($item['item_type'],
+                                       $item['item_source'],
+                                       $itemTarget,
+                                       $item['id'],
+                                       self::$shareTypeGroupUserUnique,
+                                       $arguments['uid'],
+                                       $item['uid_owner'],
+                                       $item['permissions'],
+                                       $item['stime'],
+                                       $item['file_source'],
+                                       $fileTarget));
                                \OC_DB::insertid('*PREFIX*share');
                        }
                }
@@ -1217,8 +1594,15 @@ class Share {
 
        public static function post_removeFromGroup($arguments) {
                // TODO Don't call if user deleted?
-               $query = \OC_DB::prepare('SELECT `id`, `share_type` FROM `*PREFIX*share` WHERE (`share_type` = ? AND `share_with` = ?) OR (`share_type` = ? AND `share_with` = ?)');
-               $result = $query->execute(array(self::SHARE_TYPE_GROUP, $arguments['gid'], self::$shareTypeGroupUserUnique, $arguments['uid']));
+               $query = \OC_DB::prepare('SELECT `id`, `share_type`'
+                                                               .' FROM `*PREFIX*share`'
+                                                               .' WHERE (`share_type` = ? AND `share_with` = ?)'
+                                                               .' OR (`share_type` = ? AND `share_with` = ?)');
+               $result = $query->execute(array(
+                       self::SHARE_TYPE_GROUP,
+                       $arguments['gid'],
+                       self::$shareTypeGroupUserUnique,
+                       $arguments['uid']));
                while ($item = $result->fetchRow()) {
                        if ($item['share_type'] == self::SHARE_TYPE_GROUP) {
                                // Delete all reshares by this user of the group share
@@ -1275,10 +1659,13 @@ interface Share_Backend {
        * @param int Format
        * @return ?
        *
-       * The items array is a 3-dimensional array with the item_source as the first key and the share id as the second key to an array with the share info.
+       * The items array is a 3-dimensional array with the item_source as the first key
+       * and the share id as the second key to an array with the share info.
        * The key/value pairs included in the share info depend on the function originally called:
-       * If called by getItem(s)Shared: id, item_type, item, item_source, share_type, share_with, permissions, stime, file_source
-       * If called by getItem(s)SharedWith: id, item_type, item, item_source, item_target, share_type, share_with, permissions, stime, file_source, file_target
+       * If called by getItem(s)Shared: id, item_type, item, item_source,
+       * share_type, share_with, permissions, stime, file_source
+       * If called by getItem(s)SharedWith: id, item_type, item, item_source,
+       * item_target, share_type, share_with, permissions, stime, file_source, file_target
        * This function allows the backend to control the output of shared items with custom formats.
        * It is only called through calls to the public getItem(s)Shared(With) functions.
        */
@@ -1311,7 +1698,8 @@ interface Share_Backend_Collection extends Share_Backend {
        /**
        * @brief Get the sources of the children of the item
        * @param string Item source
-       * @return array Returns an array of children each inside an array with the keys: source, target, and file_path if applicable
+       * @return array Returns an array of children each inside an array with the keys:
+       * source, target, and file_path if applicable
        */
        public function getChildren($itemSource);