@@ -21,21 +21,24 @@ class NoteUtil {
2121 private TagService $ tagService ;
2222 private IManager $ shareManager ;
2323 private IUserSession $ userSession ;
24+ private SettingsService $ settingsService ;
2425
2526 public function __construct (
2627 Util $ util ,
2728 IRootFolder $ root ,
2829 IDBConnection $ db ,
2930 TagService $ tagService ,
3031 IManager $ shareManager ,
31- IUserSession $ userSession
32+ IUserSession $ userSession ,
33+ SettingsService $ settingsService
3234 ) {
3335 $ this ->util = $ util ;
3436 $ this ->root = $ root ;
3537 $ this ->db = $ db ;
3638 $ this ->tagService = $ tagService ;
3739 $ this ->shareManager = $ shareManager ;
3840 $ this ->userSession = $ userSession ;
41+ $ this ->settingsService = $ settingsService ;
3942 }
4043
4144 public function getRoot () : IRootFolder {
@@ -172,9 +175,36 @@ public function getOrCreateFolder(string $path, bool $create = true) : Folder {
172175 throw new NotesFolderException ($ path .' is not a folder ' );
173176 }
174177
175- if ($ folder ->isShared ()) {
176- $ folderName = $ this ->root ->getNonExistingName ($ path );
177- $ folder = $ this ->root ->newFolder ($ folderName );
178+ return $ folder ;
179+ }
180+
181+ public function getOrCreateNotesFolder (string $ userId , bool $ create = true ) : Folder {
182+ $ userFolder = $ this ->getRoot ()->getUserFolder ($ userId );
183+ $ notesPath = $ this ->settingsService ->get ($ userId , 'notesPath ' );
184+ $ allowShared = $ notesPath !== $ this ->settingsService ->getDefaultNotesPath ($ userId );
185+
186+ $ folder = null ;
187+ $ updateNotesPath = false ;
188+ if ($ userFolder ->nodeExists ($ notesPath )) {
189+ $ folder = $ userFolder ->get ($ notesPath );
190+ if (!$ allowShared && $ folder ->isShared ()) {
191+ $ notesPath = $ userFolder ->getNonExistingName ($ notesPath );
192+ $ folder = $ userFolder ->newFolder ($ notesPath );
193+ $ updateNotesPath = true ;
194+ }
195+ } elseif ($ create ) {
196+ $ folder = $ userFolder ->newFolder ($ notesPath );
197+ $ updateNotesPath = true ;
198+ }
199+
200+ if (!($ folder instanceof Folder)) {
201+ throw new NotesFolderException ($ notesPath . ' is not a folder ' );
202+ }
203+
204+ if ($ updateNotesPath ) {
205+ $ this ->settingsService ->set ($ userId , [
206+ 'notesPath ' => $ notesPath ,
207+ ], true );
178208 }
179209
180210 return $ folder ;
0 commit comments