2626namespace OC \Settings \Personal ;
2727
2828use OC \Accounts \AccountManager ;
29+ use OC \Settings \Theming \ServerInfo ;
2930use OCA \FederatedFileSharing \AppInfo \Application ;
3031use OCP \App \IAppManager ;
3132use OCP \AppFramework \Http \TemplateResponse ;
3839use OCP \IUserManager ;
3940use OCP \L10N \IFactory ;
4041use OCP \Settings \ISettings ;
42+ use OCP \Encryption \IManager as EncryptionManager ;
4143
4244class PersonalInfo implements ISettings {
4345
@@ -55,14 +57,18 @@ class PersonalInfo implements ISettings {
5557 private $ l10nFactory ;
5658 /** @var IL10N */
5759 private $ l ;
60+ /** @var EncryptionManager */
61+ private $ encryptionManager ;
5862
5963 /**
6064 * @param IConfig $config
6165 * @param IUserManager $userManager
6266 * @param IGroupManager $groupManager
6367 * @param AccountManager $accountManager
68+ * @param IAppManager $appManager
6469 * @param IFactory $l10nFactory
6570 * @param IL10N $l
71+ * @param EncryptionManager $encryptionManager
6672 */
6773 public function __construct (
6874 IConfig $ config ,
@@ -71,7 +77,8 @@ public function __construct(
7177 AccountManager $ accountManager ,
7278 IAppManager $ appManager ,
7379 IFactory $ l10nFactory ,
74- IL10N $ l
80+ IL10N $ l ,
81+ EncryptionManager $ encryptionManager
7582 ) {
7683 $ this ->config = $ config ;
7784 $ this ->userManager = $ userManager ;
@@ -80,6 +87,7 @@ public function __construct(
8087 $ this ->appManager = $ appManager ;
8188 $ this ->l10nFactory = $ l10nFactory ;
8289 $ this ->l = $ l ;
90+ $ this ->encryptionManager = $ encryptionManager ;
8391 }
8492
8593 /**
@@ -135,12 +143,40 @@ public function getForm() {
135143 'twitterScope ' => $ userData [AccountManager::PROPERTY_TWITTER ]['scope ' ],
136144 'twitterVerification ' => $ userData [AccountManager::PROPERTY_TWITTER ]['verified ' ],
137145 'groups ' => $ this ->getGroups ($ user ),
138- ] + $ messageParameters + $ languageParameters + $ localeParameters ;
139-
146+ ] + $ this ->getWhereIsYourDataParams () + $ messageParameters + $ languageParameters + $ localeParameters ;
140147
141148 return new TemplateResponse ('settings ' , 'settings/personal/personal.info ' , $ parameters , '' );
142149 }
143150
151+ /**
152+ * Returns the "where is your data" template params.
153+ *
154+ * @return array
155+ */
156+ private function getWhereIsYourDataParams (): array {
157+
158+ $ adminContactConfigId = $ this ->config ->getSystemValue (ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT );
159+ $ adminContact = $ this ->userManager ->get ($ adminContactConfigId );
160+
161+ $ params = [
162+ 'dataLocation ' => $ this ->config ->getSystemValue (ServerInfo::SETTING_LOCATION ),
163+ 'provider ' => $ this ->config ->getSystemValue (ServerInfo::SETTING_PROVIDER ),
164+ 'providerLink ' => $ this ->config ->getSystemValue (ServerInfo::SETTING_PROVIDER_WEBSITE ),
165+ 'providerPrivacyLink ' => $ this ->config ->getSystemValue (ServerInfo::SETTING_PROVIDER_PRIVACY_LINK ),
166+ 'encryptionEnabled ' => $ this ->encryptionManager ->isEnabled (),
167+ 'adminName ' => $ adminContact !== null ? $ adminContact ->getDisplayName () : '' ,
168+ 'adminMail ' => $ adminContact !== null ? $ adminContact ->getEMailAddress () : ''
169+ ];
170+
171+ $ params ['show_where_is_your_data_section ' ] = empty ($ params ['dataLocation ' ]) === false
172+ || empty ($ params ['provider ' ]) === false
173+ || $ params ['encryptionEnabled ' ] === true
174+ || empty ($ params ['adminName ' ]) === false ;
175+
176+ return $ params ;
177+
178+ }
179+
144180 /**
145181 * @return string the section ID, e.g. 'sharing'
146182 * @since 9.1
@@ -202,7 +238,7 @@ private function getLanguages(IUser $user) {
202238 $ userLang = $ languages ['commonlanguages ' ][$ userLangIndex ];
203239 // search in the other languages
204240 if ($ userLangIndex === false ) {
205- $ userLangIndex = array_search ($ userConfLang , array_column ($ languages ['languages ' ], 'code ' ));
241+ $ userLangIndex = array_search ($ userConfLang , array_column ($ languages ['languages ' ], 'code ' ));
206242 $ userLang = $ languages ['languages ' ][$ userLangIndex ];
207243 }
208244 // if user language is not available but set somehow: show the actual code as name
0 commit comments