2828
2929use OCA \Forms \Db \Form ;
3030use OCA \Forms \Db \FormMapper ;
31- use OCA \Forms \Db \OptionMapper ;
32- use OCA \Forms \Db \QuestionMapper ;
3331use OCA \Forms \Service \FormsService ;
3432
33+ use OCP \Accounts \IAccountManager ;
3534use OCP \AppFramework \Controller ;
3635use OCP \AppFramework \Db \DoesNotExistException ;
36+ use OCP \AppFramework \Http \Template \PublicTemplateResponse ;
3737use OCP \AppFramework \Http \TemplateResponse ;
3838use OCP \IGroupManager ;
3939use OCP \IInitialStateService ;
40+ use OCP \IL10N ;
4041use OCP \IRequest ;
41- use OCP \IURLGenerator ;
42+ use OCP \IUser ;
43+ use OCP \IUserManager ;
4244use OCP \IUserSession ;
4345use OCP \Util ;
4446
@@ -47,22 +49,28 @@ class PageController extends Controller {
4749
4850 /** @var FormMapper */
4951 private $ formMapper ;
52+
53+ /** @var FormsService */
54+ private $ formsService ;
5055
51- /** @var IURLGenerator */
52- private $ urlGenerator ;
56+ /** @var IAccountManager */
57+ protected $ accountManager ;
5358
5459 /** @var IGroupManager */
5560 private $ groupManager ;
5661
57- /** @var IUserSession */
58- private $ userSession ;
59-
6062 /** @var IInitialStateService */
6163 private $ initialStateService ;
62-
63- /** @var FormsService */
64- private $ formService ;
6564
65+ /** @var IL10N */
66+ private $ l10n ;
67+
68+ /** @var IUserManager */
69+ private $ userManager ;
70+
71+ /** @var IUserSession */
72+ private $ userSession ;
73+
6674 /** @var Array
6775 *
6876 * Maximum String lengths, the database is set to store.
@@ -77,25 +85,27 @@ class PageController extends Controller {
7785
7886 public function __construct (string $ appName ,
7987 IRequest $ request ,
80- IGroupManager $ groupManager ,
81- IURLGenerator $ urlGenerator ,
8288 FormMapper $ formMapper ,
83- QuestionMapper $ questionMapper ,
84- OptionMapper $ optionMapper ,
85- IUserSession $ userSession ,
89+ FormsService $ formsService ,
90+ IAccountManager $ accountManager ,
91+ IGroupManager $ groupManager ,
8692 IInitialStateService $ initialStateService ,
87- FormsService $ formsService ) {
93+ IL10N $ l10n ,
94+ IUserManager $ userManager ,
95+ IUserSession $ userSession ) {
8896 parent ::__construct ($ appName , $ request );
8997
90- $ this ->groupManager = $ groupManager ;
91- $ this ->urlGenerator = $ urlGenerator ;
9298 $ this ->appName = $ appName ;
99+
93100 $ this ->formMapper = $ formMapper ;
94- $ this ->questionMapper = $ questionMapper ;
95- $ this ->optionMapper = $ optionMapper ;
96- $ this ->userSession = $ userSession ;
97- $ this ->initialStateService = $ initialStateService ;
98101 $ this ->formsService = $ formsService ;
102+
103+ $ this ->accountManager = $ accountManager ;
104+ $ this ->groupManager = $ groupManager ;
105+ $ this ->initialStateService = $ initialStateService ;
106+ $ this ->l10n = $ l10n ;
107+ $ this ->userManager = $ userManager ;
108+ $ this ->userSession = $ userSession ;
99109 }
100110
101111 /**
@@ -198,11 +208,29 @@ public function gotoForm($hash): ?TemplateResponse {
198208 return new TemplateResponse ('forms ' , 'expired ' );
199209 }
200210
201- $ renderAs = $ this ->userSession ->isLoggedIn () ? 'user ' : 'public ' ;
202-
203211 Util::addScript ($ this ->appName , 'submit ' );
204212 $ this ->initialStateService ->provideInitialState ($ this ->appName , 'form ' , $ this ->formsService ->getPublicForm ($ form ->getId ()));
205213 $ this ->initialStateService ->provideInitialState ($ this ->appName , 'maxStringLengths ' , $ this ->maxStringLengths );
206- return new TemplateResponse ($ this ->appName , 'main ' , [], $ renderAs );
214+
215+ if (!$ this ->userSession ->isLoggedIn ()) {
216+ Util::addStyle ($ this ->appName , 'public ' );
217+ $ response = new PublicTemplateResponse ($ this ->appName , 'main ' );
218+ $ response ->setHeaderTitle ($ form ->getTitle ());
219+
220+ // Get owner and check display name privacy settings
221+ $ owner = $ this ->userManager ->get ($ form ->getOwnerId ());
222+ if ($ owner instanceof IUser) {
223+ $ ownerAccount = $ this ->accountManager ->getAccount ($ owner );
224+
225+ $ ownerName = $ ownerAccount ->getProperty (IAccountManager::PROPERTY_DISPLAYNAME );
226+ if ($ ownerName ->getScope () === IAccountManager::VISIBILITY_PUBLIC ) {
227+ $ response ->setHeaderDetails ($ this ->l10n ->t ('Shared by %s ' , [$ ownerName ->getValue ()]));
228+ }
229+ }
230+
231+ return $ response ;
232+ }
233+
234+ return new TemplateResponse ($ this ->appName , 'main ' );
207235 }
208236}
0 commit comments