%PDF- %PDF-
Direktori : /var/www/projetos/revistashowdafe.com.br/wp-content/plugins/bnfw/includes/helpers/ |
Current File : //var/www/projetos/revistashowdafe.com.br/wp-content/plugins/bnfw/includes/helpers/helpers.php |
<?php /** * General BNFW Helpers. * * @since 1.3.6 * @package bnfw */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly. if ( ! function_exists( 'bnfw_get_user_select_class' ) ) { /** * Dynamically determine the class name for select2 user dropdown based on user count. * * @since 1.3.6 */ function bnfw_get_user_select_class() { $user_count = count_users(); if ( $user_count['total_users'] > 200 ) { return 'user-ajax-select2'; } else { return 'user-select2'; } } } if ( ! function_exists( 'bnfw_expanded_alowed_tags' ) ) { /** * Get allowed html for wp_kses. * * @return array */ function bnfw_expanded_alowed_tags() { $allowed_html['select'] = array( 'class' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'type' => array(), ); // select options. $allowed_html['option'] = array( 'selected' => array(), 'value' => array(), ); return $allowed_html; } } if ( ! function_exists( 'bnfw_render_users_dropdown' ) ) { /** * Render users dropdown. * * @param array $selected_users Selected users. * * @since 1.3.6 * */ function bnfw_render_users_dropdown( $selected_users ) { global $wp_roles; $allowed_html = bnfw_expanded_alowed_tags(); $non_wp_users = $selected_users; $user_count = count_users(); ?> <optgroup label="<?php esc_attr_e( 'User Roles', 'bnfw' ); ?>"> <?php $roles = $wp_roles->get_names(); foreach ( $roles as $role_slug => $role_name ) { $selected = selected( true, in_array( 'role-' . $role_slug, $selected_users, true ), false ); if ( ! empty( $selected ) ) { $non_wp_users = array_diff( $non_wp_users, array( 'role-' . $role_slug ) ); } // Compatibility code, which will be eventually removed. $selected_old = selected( true, in_array( 'role-' . $role_name, $selected_users, true ), false ); if ( ! empty( $selected_old ) ) { $selected = $selected_old; } $count = 0; if ( isset( $user_count['avail_roles'][ $role_slug ] ) ) { $count = $user_count['avail_roles'][ $role_slug ]; } echo wp_kses( '<option value="role-' . esc_attr( $role_slug ) . '" ' . $selected . '>' . esc_html( $role_name ) . ' (' . $count . ' ' . __( 'Users', 'bnfw' ) . ')' . '</option>', $allowed_html ); } ?> </optgroup> <optgroup label="<?php esc_attr_e( 'Users', 'bnfw' ); ?>"> <?php $args = array( 'order_by' => 'email', 'fields' => array( 'ID', 'user_login' ), 'number' => 200, ); // if there are more than 200 users then use AJAX to load them dynamically. // So just get only the selected users. if ( $user_count['total_users'] > 200 ) { $selected_user_ids = array(); foreach ( $selected_users as $selected_user ) { if ( absint( $selected_user ) > 0 ) { $selected_user_ids[] = $selected_user; } } if ( $selected_user_ids > 0 ) { $args['include'] = $selected_user_ids; } } $users = get_users( $args ); foreach ( $users as $user ) { $selected = selected( true, in_array( $user->ID, $selected_users, true ), false ); if ( ! empty( $selected ) ) { $non_wp_users = array_diff( $non_wp_users, array( $user->ID ) ); } echo wp_kses( '<option value="' . esc_attr( $user->ID ) . '" ' . $selected . '>' . esc_html( $user->user_login ) . '</option>', $allowed_html ); } ?> </optgroup> <?php if ( ! empty( $non_wp_users ) ) { ?> <optgroup label="<?php esc_attr_e( 'Non WordPress Users', 'bnfw' ); ?>"> <?php foreach ( $non_wp_users as $non_wp_user ) { echo wp_kses( '<option value="' . esc_attr( $non_wp_user ) . '" selected >' . esc_html( $non_wp_user ) . '</option>', $allowed_html ); } ?> </optgroup> <?php } } } if ( ! function_exists( 'bnfw_is_comment_notification' ) ) { /** * Find whether the notification name is a comment notification. * * @param string $notification_name Notification Name. * * @return bool True if it is a comment notification, False otherwise. */ function bnfw_is_comment_notification( $notification_name ) { $is_comment_notification = false; switch ( $notification_name ) { case 'new-comment': case 'new-trackback': case 'new-pingback': case 'reply-comment': $is_comment_notification = true; break; default: $type = explode( '-', $notification_name, 2 ); if ( 'comment' === $type[0] || 'moderate' === $type[0] || 'approve' === $type[0] ) { $is_comment_notification = true; } break; } return $is_comment_notification; } } if ( ! function_exists( 'bnfw_format_user_capabilities' ) ) { /** * Format user capabilities. * * @param array $wp_capabilities User capabilities. * * @return string Formatted capabilities. */ function bnfw_format_user_capabilities( $wp_capabilities ) { $capabilities = array(); if ( is_array( $wp_capabilities ) ) { foreach ( $wp_capabilities as $capability => $enabled ) { if ( $enabled ) { $capabilities[] = $capability; } } } return implode( ', ', $capabilities ); } } if ( ! function_exists( 'bnfw_is_tracking_allowed' ) ) { /** * Has the user opted-in for tracking? * * @return bool True if tracking is allowed, False otherwise. */ function bnfw_is_tracking_allowed() { $tracking_allowed = false; if ( get_option( 'bnfw_allow_tracking' ) === 'on' ) { $tracking_allowed = true; } return $tracking_allowed; } } if ( ! function_exists( 'bnfw_get_post_id_from_comment' ) ) { /** * Get post id from comment id. * * @param int $comment_id Comment ID for which we need Post ID. * * @return int Post ID. 0 if invalid comment id. */ function bnfw_get_post_id_from_comment( $comment_id ) { $comment = get_comment( $comment_id ); if ( null !== $comment ) { return $comment->comment_post_ID; } return 0; } } if ( ! function_exists( 'bnfw_format_date' ) ) { /** * Format date based on date format stored in options. * * @param string $date Date. * * @return string Formatted date. */ function bnfw_format_date( $date ) { $date_format = get_option( 'date_format' ); $time_format = get_option( 'time_format' ); return date( $date_format . ' ' . $time_format, strtotime( $date ) ); } } if ( ! function_exists( 'str_contains' ) ) { /** * Backward php version support `str_contains()` function added in PHP 8.0. * * Performs a case-sensitive check indicating if needle is * contained in haystack. * * @param string $haystack The string to search in. * @param string $needle The substring to search for in the haystack. * * @return bool True if `$needle` is in `$haystack`, otherwise false. */ function str_contains( $haystack, $needle ) { return ( '' === $needle || false !== strpos( $haystack, $needle ) ); } } /** * Find whether the comment author needs notification. * * @param string $notification_name Notification Name. * * @return bool True if comment author needs notification, False otherwise. */ function bnfw_is_comment_author_needs_notification( $notification_name ) { $is_comment_author_needs_notification = false; switch ( $notification_name ) { case 'moderate-post-comment': case 'moderate-page-comment': case 'moderate-attachment-comment': $is_comment_author_needs_notification = true; break; default: $is_comment_author_needs_notification = false; $type = substr( $notification_name, 0, 9 ); if ( 'moderate-' === $type ) { $is_comment_author_needs_notification = true; } break; } return $is_comment_author_needs_notification; } /** * Get visitor IP address. * * @since 1.9 * @return string|null */ function bnfw_get_the_user_ip() { if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) { return sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_REAL_IP'] ) ); } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { // Proxy servers can send through this header like this: X-Forwarded-For: client1, proxy1, proxy2 // Make sure we always only send through the first IP in the list which should always be the client IP. return (string) rest_is_ip_address( trim( current( preg_split( '/,/', sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) ) ) ); } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) { return sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ); } return ''; }