4444use OCP \Files \Folder ;
4545use OCP \Files \IRootFolder ;
4646use OCP \Files \Node ;
47+ use OCP \IConfig ;
4748use OCP \IDBConnection ;
4849use OCP \IGroupManager ;
4950use OCP \IURLGenerator ;
@@ -105,6 +106,7 @@ public function __construct(
105106 IURLGenerator $ urlGenerator ,
106107 ITimeFactory $ timeFactory ,
107108 private IManager $ shareManager ,
109+ private IConfig $ config ,
108110 ) {
109111 $ this ->dbConn = $ connection ;
110112 $ this ->userManager = $ userManager ;
@@ -547,6 +549,15 @@ public function deleteFromSelf(IShare $share, $recipient) {
547549 protected function createUserSpecificGroupShare (IShare $ share , string $ recipient ): int {
548550 $ type = $ share ->getNodeType ();
549551
552+ $ shareFolder = $ this ->config ->getSystemValue ('share_folder ' , '/ ' );
553+ $ allowCustomShareFolder = $ this ->config ->getSystemValueBool ('sharing.allow_custom_share_folder ' , true );
554+ if ($ allowCustomShareFolder ) {
555+ $ shareFolder = $ this ->config ->getUserValue ($ recipient , Application::APP_ID , 'share_folder ' , $ shareFolder );
556+ }
557+
558+ $ target = $ shareFolder . '/ ' . $ share ->getNode ()->getName ();
559+ $ target = \OC \Files \Filesystem::normalizePath ($ target );
560+
550561 $ qb = $ this ->dbConn ->getQueryBuilder ();
551562 $ qb ->insert ('share ' )
552563 ->values ([
@@ -558,7 +569,7 @@ protected function createUserSpecificGroupShare(IShare $share, string $recipient
558569 'item_type ' => $ qb ->createNamedParameter ($ type ),
559570 'item_source ' => $ qb ->createNamedParameter ($ share ->getNodeId ()),
560571 'file_source ' => $ qb ->createNamedParameter ($ share ->getNodeId ()),
561- 'file_target ' => $ qb ->createNamedParameter ($ share -> getTarget () ),
572+ 'file_target ' => $ qb ->createNamedParameter ($ target ),
562573 'permissions ' => $ qb ->createNamedParameter ($ share ->getPermissions ()),
563574 'stime ' => $ qb ->createNamedParameter ($ share ->getShareTime ()->getTimestamp ()),
564575 ])->execute ();
0 commit comments