%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/projetos/revistashowdafe.com.br/wp-content/plugins/bnfw/includes/helpers/
Upload File :
Create Path :
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 '';
}

Zerion Mini Shell 1.0