2
2
3
3
namespace OCA \Collectives \Service ;
4
4
5
+ use OC \Files \Node \File ;
5
6
use OCA \Collectives \Db \Collective ;
6
7
use OCA \Collectives \Db \CollectiveMapper ;
8
+ use OCA \Collectives \Db \Page ;
9
+ use OCA \Collectives \Db \PageMapper ;
7
10
use OCA \Collectives \Model \CollectiveInfo ;
11
+ use OCA \Collectives \Model \PageFile ;
8
12
use OCA \Collectives \Mount \CollectiveFolderManager ;
9
13
use OCP \Files \InvalidPathException ;
14
+ use OCP \Files \NotFoundException as FilesNotFoundException ;
10
15
use OCP \Files \NotPermittedException as FilesNotPermittedException ;
11
16
use OCP \IL10N ;
12
17
@@ -23,6 +28,9 @@ class CollectiveService {
23
28
/** @var CircleHelper */
24
29
private $ circleHelper ;
25
30
31
+ /** @var PageMapper */
32
+ private $ pageMapper ;
33
+
26
34
/** @var IL10N */
27
35
private $ l10n ;
28
36
@@ -33,18 +41,21 @@ class CollectiveService {
33
41
* @param CollectiveHelper $collectiveHelper
34
42
* @param CollectiveFolderManager $collectiveFolderManager
35
43
* @param CircleHelper $circleHelper
44
+ * @param PageMapper $pageMapper
36
45
* @param IL10N $l10n
37
46
*/
38
47
public function __construct (
39
48
CollectiveMapper $ collectiveMapper ,
40
49
CollectiveHelper $ collectiveHelper ,
41
50
CollectiveFolderManager $ collectiveFolderManager ,
42
51
CircleHelper $ circleHelper ,
52
+ PageMapper $ pageMapper ,
43
53
IL10N $ l10n ) {
44
54
$ this ->collectiveMapper = $ collectiveMapper ;
45
55
$ this ->collectiveHelper = $ collectiveHelper ;
46
56
$ this ->collectiveFolderManager = $ collectiveFolderManager ;
47
57
$ this ->circleHelper = $ circleHelper ;
58
+ $ this ->pageMapper = $ pageMapper ;
48
59
$ this ->l10n = $ l10n ;
49
60
}
50
61
@@ -121,11 +132,26 @@ public function createCollective(string $userId, string $userLang, string $safeN
121
132
122
133
// Create folder for collective and optionally copy default landing page
123
134
try {
124
- $ this ->collectiveFolderManager ->createFolder ($ collective ->getId (), $ userLang );
135
+ $ collectiveFolder = $ this ->collectiveFolderManager ->createFolder ($ collective ->getId (), $ userLang );
125
136
} catch (InvalidPathException | FilesNotPermittedException $ e ) {
126
137
throw new NotPermittedException ($ e ->getMessage ());
127
138
}
128
139
140
+ // Register landing page
141
+ try {
142
+ $ file = $ collectiveFolder ->get (PageFile::INDEX_PAGE_TITLE . PageFile::SUFFIX );
143
+ if (!$ file instanceof File) {
144
+ throw new NotFoundException ('Unable to get landing page for collective ' );
145
+ }
146
+
147
+ $ page = new Page ();
148
+ $ page ->setFileId ($ file ->getId ());
149
+ $ page ->setLastUserId ($ userId );
150
+ $ this ->pageMapper ->updateOrInsert ($ page );
151
+ } catch (FilesNotFoundException | InvalidPathException $ e ) {
152
+ throw new NotFoundException ($ e ->getMessage ());
153
+ }
154
+
129
155
return [$ collectiveInfo , $ message ];
130
156
}
131
157
0 commit comments