| 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"> |
| 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"> |
| 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"> |
| 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"> |
| 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"> |
| 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 |
|