From ae4453c266cdabfaf48e31afbf23e9a39783d302 Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Mon, 28 Sep 2026 07:42:51 -0700 Subject: [PATCH] Add a toggle for the media embed privacy policy --- adm/style/acp_phpbb_mediaembed_settings.html | 8 ++++ controller/acp_controller.php | 2 + event/display_listener.php | 4 +- language/ar/acp.php | 3 ++ language/cs/acp.php | 3 ++ language/da/acp.php | 3 ++ language/de/acp.php | 3 ++ language/en/acp.php | 3 ++ language/es/acp.php | 3 ++ language/es_x_tu/acp.php | 3 ++ language/et/acp.php | 3 ++ language/fr/acp.php | 3 ++ language/it/acp.php | 3 ++ language/nl/acp.php | 3 ++ language/pl/acp.php | 3 ++ language/pt/acp.php | 3 ++ language/pt_br/acp.php | 3 ++ language/ro/acp.php | 3 ++ language/ru/acp.php | 3 ++ language/sk/acp.php | 3 ++ language/tr/acp.php | 3 ++ language/zh_cmn_hans/acp.php | 3 ++ language/zh_cmn_hant/acp.php | 3 ++ migrations/m8_add_privacy_setting.php | 43 ++++++++++++++++++++ tests/acp/acp_controller_test.php | 7 +++- tests/event/listener_test.php | 12 ++++-- tests/functional/media_embed_test.php | 1 + 27 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 migrations/m8_add_privacy_setting.php diff --git a/adm/style/acp_phpbb_mediaembed_settings.html b/adm/style/acp_phpbb_mediaembed_settings.html index bd6a9db..d069c8b 100644 --- a/adm/style/acp_phpbb_mediaembed_settings.html +++ b/adm/style/acp_phpbb_mediaembed_settings.html @@ -50,6 +50,14 @@

{{ lang('ACP_MEDIA_SETTINGS') }}

+
+ {{ lang('ACP_MEDIA_PRIVACY_LEGEND') }} +
+

{{ lang('ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN') }}
+
+
+
+
  diff --git a/controller/acp_controller.php b/controller/acp_controller.php index 58bc7cd..7e35060 100644 --- a/controller/acp_controller.php +++ b/controller/acp_controller.php @@ -96,6 +96,7 @@ public function display_settings() { $this->template->assign_vars([ 'S_MEDIA_EMBED_BBCODE' => $this->config['media_embed_bbcode'], + 'S_MEDIA_EMBED_SHOW_AGREEMENT' => $this->config['media_embed_show_agreement'], 'S_MEDIA_EMBED_ALLOW_SIG' => $this->config['media_embed_allow_sig'], 'S_MEDIA_EMBED_PARSE_URLS' => $this->config['media_embed_parse_urls'], 'S_MEDIA_EMBED_ENABLE_CACHE' => $this->config['media_embed_enable_cache'], @@ -125,6 +126,7 @@ public function display_manage() public function save_settings() { $this->config->set('media_embed_bbcode', $this->request->variable('media_embed_bbcode', 0)); + $this->config->set('media_embed_show_agreement', $this->request->variable('media_embed_show_agreement', 0)); $this->config->set('media_embed_allow_sig', $this->request->variable('media_embed_allow_sig', 0)); $this->config->set('media_embed_parse_urls', $this->request->variable('media_embed_parse_urls', 0)); $this->config->set('media_embed_enable_cache', $this->request->variable('media_embed_enable_cache', 0)); diff --git a/event/display_listener.php b/event/display_listener.php index 6cfdba8..c624242 100644 --- a/event/display_listener.php +++ b/event/display_listener.php @@ -125,7 +125,9 @@ public function setup_media_configs() */ public function append_agreement() { - if (!$this->template->retrieve_var('S_AGREEMENT') || $this->template->retrieve_var('AGREEMENT_TITLE') !== $this->language->lang('PRIVACY')) + if (!$this->config['media_embed_show_agreement'] + || !$this->template->retrieve_var('S_AGREEMENT') + || $this->template->retrieve_var('AGREEMENT_TITLE') !== $this->language->lang('PRIVACY')) { return; } diff --git a/language/ar/acp.php b/language/ar/acp.php index 1af66e5..26806c9 100644 --- a/language/ar/acp.php +++ b/language/ar/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'من هنا تستطيع إدارة المواقع التي تريد السماح بإدارج محتوى الوسائط منها.', 'ACP_MEDIA_SITES_ERROR' => 'لا يوجد مواقع وسائط يُمكن عرضها.', 'ACP_MEDIA_SITES_MISSING' => 'المواقع التالية لم تعد مدعومة أو تعمل. نرجوا إعادة إرسال هذه الصفحة لإزالتها.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'الخصوصية', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'إفصاح الوسائط المضمنة', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'عرض تفاصيل في سياسة الخصوصية حول كيفية جمع المحتوى المضمن من مواقع الجهات الخارجية لمعلومات المستخدم أو تتبعها.', ]); diff --git a/language/cs/acp.php b/language/cs/acp.php index d31568e..a361a2a 100644 --- a/language/cs/acp.php +++ b/language/cs/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Zde můžete spravovat, jaké stránky mohou zobrazit obsaz z Media Embed pluginu.', 'ACP_MEDIA_SITES_ERROR' => 'Nejsou zde žádné stránky s médii k zobrazení.', 'ACP_MEDIA_SITES_MISSING' => 'Následující weby již nejsou podporovány nebo nefungují. Odešlete tuto stránku znovu, aby byly odstraněny.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Ochrana osobních údajů', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Informace o vložených médiích', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Zobrazit v zásadách ochrany osobních údajů podrobnosti o tom, jak může vložený obsah z webů třetích stran shromažďovat nebo sledovat informace o uživatelích.', ]); diff --git a/language/da/acp.php b/language/da/acp.php index 086a275..35b769f 100644 --- a/language/da/acp.php +++ b/language/da/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Her kan du håndtere stederne som du vil tillade Media Embed PlugIn at vise indhold fra.', 'ACP_MEDIA_SITES_ERROR' => 'Der er ikke nogen mediesteder at vise.', 'ACP_MEDIA_SITES_MISSING' => 'Følgende websteder understøttes eller fungerer ikke længere. Indsend siden igen for at fjerne dem.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privatliv', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Oplysninger om indlejrede medier', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Vis oplysninger i privatlivspolitikken om, hvordan indlejret indhold fra tredjepartswebsteder kan indsamle eller spore brugeroplysninger.', ]); diff --git a/language/de/acp.php b/language/de/acp.php index 80849f7..34b845f 100644 --- a/language/de/acp.php +++ b/language/de/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Hier kannst du die Seiten verwalten welche durch das Media Embed PlugIn angezeigt werden dürfen.', 'ACP_MEDIA_SITES_ERROR' => 'Es gibt keine Media Seiten zum anzeigen.', 'ACP_MEDIA_SITES_MISSING' => 'Folgende Websites werden nicht mehr unterstützt oder funktionieren nicht mehr. Sende diese Seite erneut ab, um sie zu entfernen.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Datenschutz', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Hinweis zu eingebetteten Medien', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'In der Datenschutzerklärung Informationen darüber anzeigen, wie eingebettete Inhalte von Drittanbieter-Websites Benutzerdaten erfassen oder verfolgen können.', ]); diff --git a/language/en/acp.php b/language/en/acp.php index 48f9d5b..2397e59 100644 --- a/language/en/acp.php +++ b/language/en/acp.php @@ -25,6 +25,9 @@ 'ACP_MEDIA_BBCODE_LEGEND' => 'BBCode', 'ACP_MEDIA_DISPLAY_BBCODE' => 'Display [media] BBCode on posting page', 'ACP_MEDIA_DISPLAY_BBCODE_EXPLAIN' => 'If disallowed, the BBCode button will not be displayed, however users can still use the [media] tag in their posts.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacy', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Embedded media disclosure', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Show details in the Privacy Policy about how embedded content from third-party sites may collect or track user information.', 'ACP_MEDIA_OPTIONS_LEGEND' => 'Options', 'ACP_MEDIA_ALLOW_SIG' => 'Allow in user signatures', 'ACP_MEDIA_ALLOW_SIG_EXPLAIN' => 'Allow user signatures to display embedded media content.', diff --git a/language/es/acp.php b/language/es/acp.php index 467e324..4d658c8 100644 --- a/language/es/acp.php +++ b/language/es/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Aquí puede gestionar los sitios que desea permitir en el PlugIn Media Embed, y mostrar su contenido.', 'ACP_MEDIA_SITES_ERROR' => 'No hay sitios para mostrar.', 'ACP_MEDIA_SITES_MISSING' => 'Estos sitios ya no son compatibles o funcionan. Por favor envíe este formulario para eliminarlos.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacidad', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Divulgación sobre contenido multimedia incrustado', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Mostrar en la Política de privacidad información sobre cómo el contenido incrustado de sitios de terceros puede recopilar o rastrear información del usuario.', ]); diff --git a/language/es_x_tu/acp.php b/language/es_x_tu/acp.php index 1debbb2..01f5bab 100644 --- a/language/es_x_tu/acp.php +++ b/language/es_x_tu/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Aquí puedes gestionar los sitios que deseas permitir en el PlugIn Media Embed, y mostrar su contenido.', 'ACP_MEDIA_SITES_ERROR' => 'No hay sitios para mostrar.', 'ACP_MEDIA_SITES_MISSING' => 'Estos sitios ya no son compatibles o funcionan. Por favor envíe este formulario para eliminarlos.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacidad', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Divulgación sobre contenido multimedia incrustado', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Mostrar en la Política de privacidad información sobre cómo el contenido incrustado de sitios de terceros puede recopilar o rastrear información del usuario.', ]); diff --git a/language/et/acp.php b/language/et/acp.php index 7024129..bbc3abc 100644 --- a/language/et/acp.php +++ b/language/et/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Sellel leheküljel on sul võimalik hallata veebilehti, kust sa soovid lubada manustada sisu.', 'ACP_MEDIA_SITES_ERROR' => 'Ei ole kuvada ühtegi meedia lehekülge.', 'ACP_MEDIA_SITES_MISSING' => 'Järgmised saidid pole enam toetatud või ei tööta. Nende eemaldamiseks esita leht uuesti.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privaatsus', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Manustatud meedia avalikustamine', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Kuva privaatsuspoliitikas üksikasjad selle kohta, kuidas kolmandate osapoolte saitidelt manustatud sisu võib kasutajateavet koguda või jälgida.', ]); diff --git a/language/fr/acp.php b/language/fr/acp.php index 050dfc9..fa70d72 100644 --- a/language/fr/acp.php +++ b/language/fr/acp.php @@ -71,4 +71,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Depuis cette page il est possible d’autoriser les sites Web des services qui seront pris en charge par l’extension « phpBB Media Embed PlugIn » pour afficher leur contenu dans les messages.', 'ACP_MEDIA_SITES_ERROR' => 'Il n’y aucun site de médias à afficher.', 'ACP_MEDIA_SITES_MISSING' => 'Les sites Web suivants ne sont plus pris en charge ou ne fonctionnent plus. Merci de re-valider cette page pour les retirer.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Confidentialité', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Divulgation relative aux médias intégrés', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Afficher dans la politique de confidentialité des informations sur la manière dont le contenu intégré provenant de sites tiers peut collecter ou suivre les informations des utilisateurs.', ]); diff --git a/language/it/acp.php b/language/it/acp.php index dc83ff4..0ce7dee 100644 --- a/language/it/acp.php +++ b/language/it/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Qui puoi gestire i siti che vuoi consentire al Plugin Media Embed di visualizzare il contenuto.', 'ACP_MEDIA_SITES_ERROR' => 'Non ci sono siti con media da visualizzare.', 'ACP_MEDIA_SITES_MISSING' => 'I seguenti siti non sono piu\' supportati o funzionanti. Si prega di risottomettere questa pagina per rimuoverli.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacy', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Informativa sui contenuti multimediali incorporati', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Mostra nell’Informativa sulla privacy i dettagli su come i contenuti incorporati da siti di terze parti possono raccogliere o monitorare le informazioni degli utenti.', ]); diff --git a/language/nl/acp.php b/language/nl/acp.php index a47765e..2c99a92 100644 --- a/language/nl/acp.php +++ b/language/nl/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Hier kunt u de websites beheren van welke u de de Media Embed PlugIn wilt toestaan inhoud te tonen.', 'ACP_MEDIA_SITES_ERROR' => 'Er zijn geen media websites om te tonen.', 'ACP_MEDIA_SITES_MISSING' => 'De volgende websites worden niet meer ondersteund of werken niet meer. Verzend deze pagina opnieuw om ze te verwijderen.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacy', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Openbaarmaking over ingesloten media', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Toon in het privacybeleid hoe ingesloten inhoud van websites van derden gebruikersinformatie kan verzamelen of volgen.', ]); diff --git a/language/pl/acp.php b/language/pl/acp.php index 0915ed7..4a5416c 100644 --- a/language/pl/acp.php +++ b/language/pl/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Tutaj można dokonać konfiguracji wyświetlania elementów stron przez rozszerzenie Media Embed.', 'ACP_MEDIA_SITES_ERROR' => 'Nie ma żadnych stron do wyświetlenia.', 'ACP_MEDIA_SITES_MISSING' => 'Poniższe strony nie są dłużej wspierane. Kliknij przycisk wyślij, aby zaktualizować listę.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Prywatność', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Informacje o osadzonych multimediach', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Pokaż w Polityce prywatności szczegółowe informacje o tym, jak osadzone treści z witryn stron trzecich mogą zbierać lub śledzić informacje o użytkownikach.', ]); diff --git a/language/pt/acp.php b/language/pt/acp.php index 44a73cf..ba73659 100644 --- a/language/pt/acp.php +++ b/language/pt/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Aqui você pode gerenciar os sites que deseja permitir que o Media Embed PlugIn mostre o conteúdo.', 'ACP_MEDIA_SITES_ERROR' => 'Não há sites de mídia para exibir.', 'ACP_MEDIA_SITES_MISSING' => 'Os seguintes sites já não são suportados ou deixaram de funcionar. Volte a enviar esta página para os remover.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacidade', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Divulgação de conteúdo multimédia incorporado', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Mostrar na Política de Privacidade informações sobre como o conteúdo incorporado de sites de terceiros pode recolher ou monitorizar informações dos utilizadores.', ]); diff --git a/language/pt_br/acp.php b/language/pt_br/acp.php index 866de6c..548177a 100644 --- a/language/pt_br/acp.php +++ b/language/pt_br/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Aqui você pode gerenciar os sites que deseja permitir que o Media Embed PlugIn mostre o conteúdo.', 'ACP_MEDIA_SITES_ERROR' => 'Não há sites de mídia para exibir.', 'ACP_MEDIA_SITES_MISSING' => 'Os sites a seguir não são mais compatíveis ou deixaram de funcionar. Reenvie esta página para removê-los.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Privacidade', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Divulgação de mídia incorporada', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Mostrar na Política de Privacidade informações sobre como o conteúdo incorporado de sites de terceiros pode coletar ou rastrear informações do usuário.', ]); diff --git a/language/ro/acp.php b/language/ro/acp.php index d4864a6..e314b55 100644 --- a/language/ro/acp.php +++ b/language/ro/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Aici puteți gestiona site-urile din care doriți să permiteți pluginului Media Embed să afișeze conținut.', 'ACP_MEDIA_SITES_ERROR' => 'Nu există site-uri media de afișat.', 'ACP_MEDIA_SITES_MISSING' => 'Următoarele site-uri nu mai sunt acceptate sau nu mai funcționează. Vă rugăm să retrimiteți această pagină pentru a le elimina.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Confidențialitate', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Informare privind conținutul media încorporat', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Afișați în Politica de confidențialitate detalii despre modul în care conținutul încorporat de pe site-uri terțe poate colecta sau urmări informațiile utilizatorilor.', ]); diff --git a/language/ru/acp.php b/language/ru/acp.php index ab3e6a7..964a63e 100644 --- a/language/ru/acp.php +++ b/language/ru/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Здесь, вы можете управлять сайтами, которые вы хотите подключать к Media Embed.', 'ACP_MEDIA_SITES_ERROR' => 'Нет сайтов для отображения.', 'ACP_MEDIA_SITES_MISSING' => 'Следующие сайты больше не поддерживаются или не работают. Повторно отправьте эту страницу, чтобы удалить их.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Конфиденциальность', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Раскрытие информации о встроенных медиа', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Показывать в Политике конфиденциальности сведения о том, как встроенное содержимое со сторонних сайтов может собирать или отслеживать информацию о пользователях.', ]); diff --git a/language/sk/acp.php b/language/sk/acp.php index 6129e2b..4186727 100644 --- a/language/sk/acp.php +++ b/language/sk/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Tu môžete spravovať stránky, pre ktoré chcete povoliť získavanie obsahu pluginu vkladania médií vkladanie médií.', 'ACP_MEDIA_SITES_ERROR' => 'Nie sú žiadne stránky médií na zobrazenie.', 'ACP_MEDIA_SITES_MISSING' => 'Nasledujúce stránky už nie sú podporované alebo nefungujú. Znova odošlite túto stránku, aby sa odstránili.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Ochrana osobných údajov', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Informácie o vložených médiách', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Zobraziť v zásadách ochrany osobných údajov podrobnosti o tom, ako môže vložený obsah zo stránok tretích strán zhromažďovať alebo sledovať informácie o používateľoch.', ]); diff --git a/language/tr/acp.php b/language/tr/acp.php index e258c4b..868efa4 100644 --- a/language/tr/acp.php +++ b/language/tr/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => 'Buradan, içeriğini göstermek için Medya (Ortam) Yerleştirme Eklentisine izin vermek istediğiniz siteleri yönetebilirsiniz.', 'ACP_MEDIA_SITES_ERROR' => 'Gösterilecek hiç bir medya (ortam) sitesi yok.', 'ACP_MEDIA_SITES_MISSING' => 'Aşağıdaki siteler artık desteklenmiyor veya çalışmıyor. Lütfen bu siteleri kaldırmak için bu sayfayı yeniden gönderin.', + 'ACP_MEDIA_PRIVACY_LEGEND' => 'Gizlilik', + 'ACP_MEDIA_SHOW_AGREEMENT' => 'Yerleşik medya açıklaması', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => 'Üçüncü taraf sitelerden yerleştirilen içeriğin kullanıcı bilgilerini nasıl toplayabileceği veya izleyebileceğiyle ilgili ayrıntıları Gizlilik Politikası’nda gösterin.', ]); diff --git a/language/zh_cmn_hans/acp.php b/language/zh_cmn_hans/acp.php index f53541b..567965e 100644 --- a/language/zh_cmn_hans/acp.php +++ b/language/zh_cmn_hans/acp.php @@ -52,4 +52,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => '你可以管理你所允许 Media Embed PlugIn 在帖子中显示内容的网站。', 'ACP_MEDIA_SITES_ERROR' => '没有可用的媒体网站用于显示。.', 'ACP_MEDIA_SITES_MISSING' => '以下网站已不再被支持或工作。请重新提交此页面以删除它们。', + 'ACP_MEDIA_PRIVACY_LEGEND' => '隐私', + 'ACP_MEDIA_SHOW_AGREEMENT' => '嵌入式媒体披露', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => '在隐私政策中显示第三方网站的嵌入内容可能如何收集或跟踪用户信息的详细信息。', ]); diff --git a/language/zh_cmn_hant/acp.php b/language/zh_cmn_hant/acp.php index 1e373fa..f7ff45a 100644 --- a/language/zh_cmn_hant/acp.php +++ b/language/zh_cmn_hant/acp.php @@ -51,4 +51,7 @@ 'ACP_MEDIA_MANAGE_EXPLAIN' => '您可以在此處管理要允許媒體嵌入外掛顯示內容的站點。', 'ACP_MEDIA_SITES_ERROR' => '沒有可顯示的媒體網站。', 'ACP_MEDIA_SITES_MISSING' => '以下站點不再受支持或不再工作。 請重新送出此頁面以將其刪除。', + 'ACP_MEDIA_PRIVACY_LEGEND' => '隱私權', + 'ACP_MEDIA_SHOW_AGREEMENT' => '嵌入式媒體揭露', + 'ACP_MEDIA_SHOW_AGREEMENT_EXPLAIN' => '在隱私權政策中顯示第三方網站的嵌入內容可能如何收集或追蹤使用者資訊的詳細資訊。', ]); diff --git a/migrations/m8_add_privacy_setting.php b/migrations/m8_add_privacy_setting.php new file mode 100644 index 0000000..e3982e8 --- /dev/null +++ b/migrations/m8_add_privacy_setting.php @@ -0,0 +1,43 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + */ + +namespace phpbb\mediaembed\migrations; + +/** + * Migration 8: Add setting to show privacy agreement + */ +class m8_add_privacy_setting extends \phpbb\db\migration\migration +{ + /** + * {@inheritdoc} + */ + public function effectively_installed() + { + return $this->config->offsetExists('media_embed_show_agreement'); + } + + /** + * {@inheritdoc} + */ + public static function depends_on() + { + return ['\phpbb\mediaembed\migrations\m7_add_missing_permissions']; + } + + /** + * {@inheritdoc} + */ + public function update_data() + { + return [ + ['config.add', ['media_embed_show_agreement', 1]], + ]; + } +} diff --git a/tests/acp/acp_controller_test.php b/tests/acp/acp_controller_test.php index 2fbaaca..09f0a1d 100644 --- a/tests/acp/acp_controller_test.php +++ b/tests/acp/acp_controller_test.php @@ -83,6 +83,7 @@ protected function setUp(): void ->getMock(); $this->config = new config([ 'media_embed_bbcode' => '0', + 'media_embed_show_agreement' => '0', 'media_embed_allow_sig' => '0', 'media_embed_parse_urls' => '0', 'media_embed_enable_cache' => '0', @@ -130,6 +131,7 @@ public function test_display_settings() ->method('assign_vars') ->with([ 'S_MEDIA_EMBED_BBCODE' => $this->config['media_embed_bbcode'], + 'S_MEDIA_EMBED_SHOW_AGREEMENT' => $this->config['media_embed_show_agreement'], 'S_MEDIA_EMBED_ALLOW_SIG' => $this->config['media_embed_allow_sig'], 'S_MEDIA_EMBED_PARSE_URLS' => $this->config['media_embed_parse_urls'], 'S_MEDIA_EMBED_ENABLE_CACHE' => $this->config['media_embed_enable_cache'], @@ -173,10 +175,11 @@ public function save_setting_data() public function test_save_setting($success, $data, $expected) { $this->request - ->expects(self::exactly(6)) + ->expects(self::exactly(7)) ->method('variable') ->withConsecutive( ['media_embed_bbcode', 0], + ['media_embed_show_agreement', 0], ['media_embed_allow_sig', 0], ['media_embed_parse_urls', 0], ['media_embed_enable_cache', 0], @@ -189,6 +192,7 @@ public function test_save_setting($success, $data, $expected) 1, 1, 1, + 1, $data[0] ); @@ -206,6 +210,7 @@ public function test_save_setting($success, $data, $expected) $result = $controller->save_settings(); $this->assertEquals(1, $this->config['media_embed_bbcode']); + $this->assertEquals(1, $this->config['media_embed_show_agreement']); $this->assertEquals(1, $this->config['media_embed_allow_sig']); $this->assertEquals(1, $this->config['media_embed_parse_urls']); $this->assertEquals(1, $this->config['media_embed_enable_cache']); diff --git a/tests/event/listener_test.php b/tests/event/listener_test.php index 871145e..d36afac 100644 --- a/tests/event/listener_test.php +++ b/tests/event/listener_test.php @@ -74,6 +74,7 @@ protected function setUp(): void $this->config = new \phpbb\config\config([ 'media_embed_bbcode' => 1, + 'media_embed_show_agreement' => 1, 'media_embed_allow_sig' => 0, 'media_embed_parse_urls' => 1, 'media_embed_full_width' => 1, @@ -631,9 +632,10 @@ public function test_setup_cache_dir($cache) public function append_agreement_data() { return [ - [false, 'PRIVACY', 0], // No agreement - [true, 'TERMS', 0], // Wrong title - [true, 'PRIVACY', 1], // Correct conditions + [true, false, 'PRIVACY', 0], // No agreement + [true, true, 'TERMS', 0], // Wrong title + [false, true, 'PRIVACY', 0], // Don't display agreement + [true, true, 'PRIVACY', 1], // Correct conditions ]; } @@ -641,12 +643,14 @@ public function append_agreement_data() * Test the append_agreement method * * @dataProvider append_agreement_data + * @param bool $show_agreement Whether to display agreement text * @param mixed $s_agreement S_AGREEMENT template variable value * @param mixed $agreement_title AGREEMENT_TITLE template variable value * @param int $expected_append_calls Expected append_var calls */ - public function test_append_agreement($s_agreement, $agreement_title, $expected_append_calls) + public function test_append_agreement($show_agreement, $s_agreement, $agreement_title, $expected_append_calls) { + $this->config['media_embed_show_agreement'] = $show_agreement; $this->config['sitename'] = 'Test Forum'; $this->template->expects(self::atMost(2)) diff --git a/tests/functional/media_embed_test.php b/tests/functional/media_embed_test.php index 47c5690..7d7c863 100644 --- a/tests/functional/media_embed_test.php +++ b/tests/functional/media_embed_test.php @@ -177,6 +177,7 @@ public function test_acp_modules() $form_data = [ 'media_embed_max_width' => "vimeo:100px\nyoutube:100%", 'media_embed_full_width'=> 1, + 'media_embed_show_agreement' => 1, ]; $form = $crawler->selectButton($this->lang('SUBMIT'))->form(); $crawler = self::submit($form, $form_data);