HEX
Server: Apache
System: Linux cp4.skywebbox.com 5.14.0-503.15.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Nov 28 07:25:19 EST 2024 x86_64
User: alfouzantranspor (1054)
PHP: 8.3.23
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/alfouzantranspor/public_html/wp-content/plugins_backup/surerank/inc/functions/sanitize.php
<?php
/**
 * Sanitize
 *
 * @package surerank
 * @since 0.0.1
 */

namespace SureRank\Inc\Functions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Sanitize
 *
 * @since 1.0.0
 */
class Sanitize {

	/**
	 * Sanitize text
	 * if the value after sanitize_text is empty, return the default value
	 *
	 * @param string $value   Value to sanitize.
	 * @param string $default Default value.
	 *
	 * @since 1.0.0
	 * @return string
	 */
	public static function text( $value, $default = '' ) {
		return sanitize_text_field( $value ) ? $value : $default;
	}

	/**
	 * Sanitize multi-dimension array.
	 *
	 * @param callable                                $function Function reference.
	 * @param array<string, mixed>|array<int, string> $data_array Array what we need to sanitize.
	 * @since  0.0.1
	 * @return array<string, mixed>|array<int, string>
	 */
	public static function array_deep( callable $function, array $data_array ) {
		if ( ! is_callable( $function ) ) {
			return [];
		}

		if ( empty( $data_array ) ) {
			return [];
		}

		$response = [];
		foreach ( $data_array as $key => $data ) {
			if ( is_array( $data ) ) {
				$response[ $key ] = self::array_deep( $function, $data );
			} else {
				$response[ $key ] = $function( $data );
			}
		}

		return $response;
	}

	/**
	 * Custom sanitization function to allow specific placeholders like %term_title%
	 *
	 * Sanitize data recursively, while preserving any placeholder patterns in the format %placeholder%.
	 * The default sanitize_text_field function would remove certain characters, such as the '%' symbol,
	 * potentially breaking placeholders like %term_title%. By using the custom sanitize_with_placeholders
	 * function, we ensure that placeholders are retained exactly as they are (e.g., %term_title% remains intact),
	 * while still sanitizing other parts of the text to prevent any malicious input.
	 *
	 * @param string|bool $text The input text to sanitize.
	 * @return string|bool The sanitized text with placeholders retained.
	 */
	public static function sanitize_with_placeholders( $text ) {

		if ( is_bool( $text ) ) {
			return $text;
		}

		if ( empty( $text ) ) {
			return '';
		}

		if ( ! is_string( $text ) ) {
			return $text;
		}

		if ( filter_var( $text, FILTER_VALIDATE_URL ) ) {
			return esc_url_raw( $text );
		}
		return sanitize_text_field( $text );
	}

	/**
	 * Sanitize shortcode
	 *
	 * @since 1.2.0
	 * @param string $text The text to sanitize.
	 * @return string The sanitized text.
	 */
	public static function sanitize_shortcode( $text ) {
		if ( empty( $text ) ) {
			return '';
		}

		if ( ! is_string( $text ) ) {
			return $text;
		}

		return do_shortcode( $text );
	}
}