@@ -880,30 +880,60 @@ public function userDeleted($uid, $shareType) {
880880 //TODO: probably a good idea to send unshare info to remote servers
881881
882882 $ qb = $ this ->dbConnection ->getQueryBuilder ();
883-
884883 $ qb ->delete ('share ' )
885884 ->where ($ qb ->expr ()->eq ('share_type ' , $ qb ->createNamedParameter (IShare::TYPE_REMOTE )))
886885 ->andWhere ($ qb ->expr ()->eq ('uid_owner ' , $ qb ->createNamedParameter ($ uid )))
887- ->execute ();
886+ ->executeStatement ();
887+
888+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
889+ $ qb ->delete ('share_external ' )
890+ ->where ($ qb ->expr ()->eq ('share_type ' , $ qb ->createNamedParameter (IShare::TYPE_GROUP )))
891+ ->andWhere ($ qb ->expr ()->eq ('user ' , $ qb ->createNamedParameter ($ uid )))
892+ ->executeStatement ();
888893 }
889894
890- /**
891- * This provider does not handle groups
892- *
893- * @param string $gid
894- */
895895 public function groupDeleted ($ gid ) {
896- // We don't handle groups here
896+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
897+ $ qb ->select ('id ' )
898+ ->from ('share_external ' )
899+ ->where ($ qb ->expr ()->eq ('share_type ' , $ qb ->createNamedParameter (IShare::TYPE_GROUP )))
900+ // This is not a typo, the group ID is really stored in the 'user' column
901+ ->andWhere ($ qb ->expr ()->eq ('user ' , $ qb ->createNamedParameter ($ gid )));
902+ $ cursor = $ qb ->executeQuery ();
903+ $ parentShareIds = $ cursor ->fetchAll (\PDO ::FETCH_COLUMN );
904+ $ cursor ->closeCursor ();
905+ if ($ parentShareIds === []) {
906+ return ;
907+ }
908+
909+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
910+ $ parentShareIdsParam = $ qb ->createNamedParameter ($ parentShareIds , IQueryBuilder::PARAM_INT_ARRAY );
911+ $ qb ->delete ('share_external ' )
912+ ->where ($ qb ->expr ()->in ('id ' , $ parentShareIdsParam ))
913+ ->orWhere ($ qb ->expr ()->in ('parent ' , $ parentShareIdsParam ))
914+ ->executeStatement ();
897915 }
898916
899- /**
900- * This provider does not handle groups
901- *
902- * @param string $uid
903- * @param string $gid
904- */
905917 public function userDeletedFromGroup ($ uid , $ gid ) {
906- // We don't handle groups here
918+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
919+ $ qb ->select ('id ' )
920+ ->from ('share_external ' )
921+ ->where ($ qb ->expr ()->eq ('share_type ' , $ qb ->createNamedParameter (IShare::TYPE_GROUP )))
922+ // This is not a typo, the group ID is really stored in the 'user' column
923+ ->andWhere ($ qb ->expr ()->eq ('user ' , $ qb ->createNamedParameter ($ gid )));
924+ $ cursor = $ qb ->executeQuery ();
925+ $ parentShareIds = $ cursor ->fetchAll (\PDO ::FETCH_COLUMN );
926+ $ cursor ->closeCursor ();
927+ if ($ parentShareIds === []) {
928+ return ;
929+ }
930+
931+ $ qb = $ this ->dbConnection ->getQueryBuilder ();
932+ $ parentShareIdsParam = $ qb ->createNamedParameter ($ parentShareIds , IQueryBuilder::PARAM_INT_ARRAY );
933+ $ qb ->delete ('share_external ' )
934+ ->where ($ qb ->expr ()->in ('parent ' , $ parentShareIdsParam ))
935+ ->andWhere ($ qb ->expr ()->eq ('user ' , $ qb ->createNamedParameter ($ uid )))
936+ ->executeStatement ();
907937 }
908938
909939 /**
0 commit comments