PluginProbe
wpForo Forum / 3.1.6
wpForo Forum v3.1.6
3.1.6 3.1.5 3.1.4 3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 All 138 releases
wpforo / integrations / legal.php

legal.php in wpForo Forum 3.1.6, at integrations/legal.php

212 lines 11.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 function wpforo_legal_checkbox_forum_privacy() {
3 $only_forum = apply_filters( 'wpforo_legal_checkbox_forum_privacy_only_for_forum', true );
4 $only_new_guests = apply_filters( 'wpforo_legal_checkbox_forum_privacy_only_for_new_guests', true );
5
6 if( $only_forum && ! is_wpforo_page() || is_user_logged_in() ) return;
7 $guest = WPF()->member->get_guest_cookies();
8 if( $only_new_guests && wpfval( $guest, 'email' ) ) return;
9
10 $checkbox_forum_privacy = wpforo_setting( 'legal', 'checkbox_forum_privacy' );
11 $forum_privacy_text = wpforo_setting( 'legal', 'forum_privacy_text' );
12
13 if( $checkbox_forum_privacy && $forum_privacy_text ) {
14 $forum_home = preg_replace( '|\?.+$|', '', wpforo_home_url() );
15 $str_privacy = wpforo_phrase( 'forum privacy policy', false, 'native' );
16 $str_privacy_label = wpforo_phrase( 'I have read and agree to the %s.', false );
17 $str_privacy_link = ' <span id="wpf-open-privacy" class="wpflink" title="' . esc_attr( wpforo_phrase( 'Click to open forum privacy policy below', false ) ) . '">' . $str_privacy . '</span>';
18 $str_privacy = sprintf( $str_privacy_label, $str_privacy_link );
19 $str_privacy_text = wpautop( stripslashes( (string) $forum_privacy_text ) );
20 $str_privacy_text = apply_filters( 'wpforo_legal_forum_privacy_text', $str_privacy_text );
21 $url = parse_url( get_bloginfo( 'url' ) );
22 $find = [ '[forum-name]', '[forum-url]' ];
23 $domain = ( wpfval( $url, 'host' ) ) ? $url['host'] : $_SERVER['HTTP_HOST'];
24 $replace = [ WPF()->board->get_current( 'settings' )['title'], $domain ];
25 $str_privacy_text = str_replace( $find, $replace, $str_privacy_text );
26 ?>
27 <label class="wpforo-legal-checkbox wpflegal-privacy">
28 <input id="wpflegal_privacy" name="legal[gdpr]" value="1" required="required" type="checkbox"> &nbsp;
29 <span><?php echo wp_unslash( $str_privacy ); ?></span>
30 </label>
31 <div class="wpforo-legal-privacy wpforo-text" style="display: none;">
32 <?php echo $str_privacy_text; ?>
33 <div class="wpflegal-privacy-buttons">
34 <div id="wpflegal-privacy-yes" class="wpflegal-privacy-button"><?php wpforo_phrase( 'I agree' ); ?></div>
35 <a href="<?php echo esc_url( (string) $forum_home ); ?>" id="wpflegal-privacy-not" class="wpflegal-privacy-button"><?php wpforo_phrase( 'I do not agree. Take me away from here.' ); ?></a>
36 </div>
37 </div>
38 <?php
39 }
40 }
41
42 add_action( 'register_form', 'wpforo_legal_checkbox_forum_privacy', 20 );
43 add_action( 'wpforo_editor_post_submit_before', 'wpforo_legal_checkbox_forum_privacy', 20 );
44 add_action( 'wpforo_portable_editor_post_submit_before', 'wpforo_legal_checkbox_forum_privacy', 20 );
45 add_action( 'wpforo_editor_topic_submit_before', 'wpforo_legal_checkbox_forum_privacy', 20 );
46
47 function wpforo_legal_checkbox_forum_rules() {
48
49 $only_forum = apply_filters( 'wpforo_legal_checkbox_rules_only_for_forum', true );
50 $only_new_guests = apply_filters( 'wpforo_legal_checkbox_rules_only_for_new_guests', true );
51 if( $only_forum && ! is_wpforo_page() || is_user_logged_in() ) return false;
52 $guest = WPF()->member->get_guest_cookies();
53 if( $only_new_guests && wpfval( $guest, 'email' ) ) return false;
54
55 $rules_checkbox = wpforo_setting( 'legal', 'rules_checkbox' );
56 $rules_text = wpforo_setting( 'legal', 'rules_text' );
57
58 if( $rules_checkbox && $rules_text ) {
59 $forum_home = preg_replace( '|\?.+$|', '', wpforo_home_url() );
60 $str_rules = wpforo_phrase( 'forum rules', false, 'native' );
61 $str_rules_text = wpforo_phrase( 'I have read and agree to abide by the %s.', false );
62 $str_rules_link = ' <span id="wpf-open-rules" class="wpflink" title="' . esc_attr( wpforo_phrase( 'Click to open forum rules below', false ) ) . '">' . $str_rules . '</span>';
63 $str_rules = sprintf( $str_rules_text, $str_rules_link );
64 $str_rules_text = apply_filters( 'wpforo_legal_forum_rules_text', $rules_text );
65 ?>
66 <label class="wpforo-legal-checkbox wpflegal-rules">
67 <input id="wpflegal_rules" name="legal[rules]" value="1" required="required" type="checkbox"> &nbsp;
68 <span><?php echo $str_rules; ?></span>
69 </label>
70 <div class="wpforo-legal-rules wpforo-text" style="display: none;">
71 <?php echo wp_unslash( $str_rules_text ); ?>
72 <div class="wpflegal-rules-buttons">
73 <div id="wpflegal-rules-yes" class="wpflegal-rules-button"><?php wpforo_phrase( 'I agree to these rules' ); ?></div>
74 <a href="<?php echo esc_url( (string) $forum_home ); ?>" id="wpflegal-rules-not" class="wpflegal-rules-button"><?php wpforo_phrase( 'I do not agree to these rules. Take me away from here.' ); ?></a>
75 </div>
76 </div>
77 <?php
78 }
79 }
80
81 add_action( 'register_form', 'wpforo_legal_checkbox_forum_rules', 20 );
82 add_action( 'wpforo_editor_post_submit_before', 'wpforo_legal_checkbox_forum_rules', 20 );
83 add_action( 'wpforo_portable_editor_post_submit_before', 'wpforo_legal_checkbox_forum_rules', 20 );
84 add_action( 'wpforo_editor_topic_submit_before', 'wpforo_legal_checkbox_forum_rules', 20 );
85
86 function wpforo_legal_checkbox_terms_privacy() {
87
88 $only_forum = apply_filters( 'wpforo_legal_checkbox_only_for_forum', true );
89 $only_new_guests = apply_filters( 'wpforo_legal_checkbox_only_for_new_guests', true );
90 if( $only_forum && ! is_wpforo_page() || is_user_logged_in() ) return false;
91 $guest = WPF()->member->get_guest_cookies();
92 if( $only_new_guests && wpfval( $guest, 'email' ) ) return false;
93
94 $str_and = '';
95 $str_terms = '';
96 $str_privacy = '';
97 $str_site_name = get_bloginfo( 'name' );
98 $str_site_name = $str_site_name ?: wpforo_phrase( 'the website', false );
99 $str_terms_privacy = wpforo_phrase( 'I have read and agree to the', false );
100 $str_if_no_pages = sprintf( wpforo_phrase( 'I have read and agree to %s privacy policy.', false ), $str_site_name );
101
102 if( $page_terms = wpforo_setting( 'legal', 'page_terms' ) ) {
103 $term_url = $page_terms;
104 $term_pageid = wpforo_wp_url_to_postid( $term_url );
105 $str_terms = wpforo_phrase( 'Terms', false );
106 $term_title = ( $term_pageid ) ? get_the_title( $term_pageid ) : $str_terms;
107 $str_terms = ' <a href="' . esc_url( (string) $term_url ) . '" title="' . esc_attr( $term_title ) . '">' . $str_terms . ' </a>';
108 }
109
110 if( $page_privacy = wpforo_setting( 'legal', 'page_privacy' ) ) {
111 $privacy_url = $page_privacy;
112 $privacy_pageid = wpforo_wp_url_to_postid( $privacy_url );
113 $str_privacy = wpforo_phrase( 'Privacy Policy', false );
114 $privacy_title = ( $privacy_pageid ) ? get_the_title( $privacy_pageid ) : $str_privacy;
115 $str_privacy = ' <a href="' . esc_url( (string) $privacy_url ) . '" title="' . esc_attr( $privacy_title ) . '">' . $str_privacy . ' </a>';
116 }
117
118 if( $str_terms && $str_privacy ) {
119 $str_and = wpforo_phrase( 'and', false, 'lower' );
120 }
121
122 if( $str_terms || $str_privacy || ( wpforo_setting( 'legal', 'checkbox_forum_privacy' ) && wpforo_setting( 'legal', 'forum_privacy_text' ) ) ) {
123 $terms_privacy = $str_terms_privacy . ' ' . $str_terms . ' ' . $str_and . ' ' . $str_privacy;
124 $terms_privacy = apply_filters( 'wpforo_legal_checkbox_label_terms_and_privacy', $terms_privacy );
125 if( ( $str_terms || $str_privacy ) && $terms_privacy ) {
126 ?>
127 <label class="wpforo-legal-checkbox wpflegal-terms-privacy">
128 <input name="legal[terms_privacy]" value="1" required="required" type="checkbox"> &nbsp;
129 <span><?php echo $terms_privacy; ?></span>
130 </label>
131 <?php
132 }
133 } elseif( wpforo_setting( 'legal', 'checkbox_terms_privacy' ) ) {
134 ?>
135 <label class="wpforo-legal-checkbox wpflegal-terms-privacy">
136 <input name="legal[terms_privacy]" value="1" required="required" type="checkbox"> &nbsp;
137 <span><?php echo $str_if_no_pages; ?></span>
138 </label>
139 <?php
140 }
141 }
142
143 add_action( 'register_form', 'wpforo_legal_checkbox_terms_privacy', 20 );
144 add_action( 'wpforo_editor_post_submit_before', 'wpforo_legal_checkbox_terms_privacy', 20 );
145 add_action( 'wpforo_portable_editor_post_submit_before', 'wpforo_legal_checkbox_terms_privacy', 20 );
146 add_action( 'wpforo_editor_topic_submit_before', 'wpforo_legal_checkbox_terms_privacy', 20 );
147
148 function wpforo_legal_checkbox_email_password() {
149
150 $only_forum = apply_filters( 'wpforo_legal_checkbox_email_password', true );
151 if( $only_forum && ! is_wpforo_page() ) return false;
152
153 if( wpforo_setting( 'authorization', 'user_register_email_confirm' ) && wpforo_setting( 'legal', 'checkbox_email_password' ) ) {
154 $str_email_password = wpforo_phrase( 'I agree to receive an email confirmation with a link to set a password.', false );
155 $str_email_password = apply_filters( 'wpforo_legal_checkbox_confirm_email_password', $str_email_password );
156 ?>
157 <label class="wpforo-legal-checkbox wpflegal-email">
158 <input name="legal[email]" value="1" required="required" type="checkbox"> &nbsp;
159 <span><?php echo $str_email_password; ?></span>
160 </label>
161 <?php
162 }
163 }
164
165 add_action( 'register_form', 'wpforo_legal_checkbox_email_password', 20 );
166
167 function wpforo_page_privacy_policy( $template ) {
168 if( $template !== 'privacy' ) return false;
169 if( wpforo_setting( 'legal', 'checkbox_forum_privacy' ) ) {
170 $str_privacy_text = wpautop( stripslashes( (string) wpforo_setting( 'legal', 'forum_privacy_text' ) ) );
171 $str_privacy_text = apply_filters( 'wpforo_legal_forum_privacy_text', $str_privacy_text );
172 $url = parse_url( get_bloginfo( 'url' ) );
173 $find = [ '[forum-name]', '[forum-url]' ];
174 $domain = ( wpfval( $url, 'host' ) ) ? $url['host'] : $_SERVER['HTTP_HOST'];
175 $replace = [ WPF()->board->get_current( 'settings' )['title'], $domain ];
176 $str_privacy_text = str_replace( $find, $replace, $str_privacy_text );
177 $str_privacy_text = apply_filters( 'wpforo_legal_forum_privacy_output', $str_privacy_text );
178 ?>
179 <div class="wpforo-page wpforo-page-privacy wpforo-text">
180 <?php echo $str_privacy_text; ?>
181 </div>
182 <?php
183 }
184 }
185
186 add_action( 'wpforo_page', 'wpforo_page_privacy_policy', 20 );
187
188 function wpforo_page_forum_rules( $template ) {
189 if( $template !== 'rules' ) return false;
190 if( wpforo_setting( 'legal', 'rules_checkbox' ) ) {
191 $str_rules_text = wpautop( stripslashes( (string) wpforo_setting( 'legal', 'rules_text' ) ) );
192 $str_rules_text = apply_filters( 'wpforo_legal_forum_rules_text', $str_rules_text );
193 ?>
194 <div class="wpforo-page wpforo-page-rules wpforo-text">
195 <?php echo $str_rules_text; ?>
196 </div>
197 <?php
198 }
199 }
200
201 add_action( 'wpforo_page', 'wpforo_page_forum_rules', 11 );
202
203 function wpforo_contact_forum_admin() {
204 if( wpforo_setting( 'legal', 'contact_page_url' ) ) {
205 $url = wpforo_setting( 'legal', 'contact_page_url' );
206 $html = '<a href="' . esc_url( (string) $url ) . '" title="' . wpforo_phrase( 'Contact Us', false ) . '" class="wpf-contact-admin">' . wpforo_phrase( 'Contact the forum administrator', false ) . '</a>';
207 echo apply_filters( 'wpforo_legal_contact_forum_admin_button', $html );
208 }
209 }
210
211 add_action( 'wpforo_profile_account_bottom', 'wpforo_contact_forum_admin', 10 );
212