class-ad-list-stats.php
1 week ago
class-addons.php
1 day ago
class-cache.php
1 week ago
class-conditional.php
1 day ago
class-content-injection.php
1 year ago
class-data.php
1 day ago
class-sanitize.php
1 year ago
class-testing.php
1 year ago
class-validation.php
1 day ago
class-wordpress.php
1 day ago
index.php
2 years ago
class-sanitize.php
83 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Utilities Sanitize. |
| 4 | * |
| 5 | * @package AdvancedAds |
| 6 | * @author Advanced Ads <info@wpadvancedads.com> |
| 7 | * @since 1.50.0 |
| 8 | */ |
| 9 | |
| 10 | namespace AdvancedAds\Utilities; |
| 11 | |
| 12 | defined( 'ABSPATH' ) || exit; |
| 13 | |
| 14 | /** |
| 15 | * Utilities Sanitize. |
| 16 | */ |
| 17 | class Sanitize { |
| 18 | /** |
| 19 | * Sanitize the frontend prefix to result in valid HTML classes. |
| 20 | * See https://www.w3.org/TR/selectors-3/#grammar for valid tokens. |
| 21 | * |
| 22 | * @param string $prefix The HTML class to sanitize. |
| 23 | * @param string $fallback The fallback if the class is invalid. |
| 24 | * |
| 25 | * @return string |
| 26 | */ |
| 27 | public static function frontend_prefix( $prefix, $fallback = '' ): string { |
| 28 | $prefix = sanitize_html_class( $prefix ); |
| 29 | $nonascii = '[^\0-\177]'; |
| 30 | $unicode = '\\[0-9a-f]{1,6}(\r\n|[ \n\r\t\f])?'; |
| 31 | $escape = sprintf( '%s|\\[^\n\r\f0-9a-f]', $unicode ); |
| 32 | $nmstart = sprintf( '[_a-z]|%s|%s', $nonascii, $escape ); |
| 33 | $nmchar = sprintf( '[_a-z0-9-]|%s|%s', $nonascii, $escape ); |
| 34 | |
| 35 | if ( ! preg_match( sprintf( '/-?(?:%s)(?:%s)*/i', $nmstart, $nmchar ), $prefix, $matches ) ) { |
| 36 | return $fallback; |
| 37 | } |
| 38 | |
| 39 | return $matches[0]; |
| 40 | } |
| 41 | |
| 42 | /** |
| 43 | * Sanitize email list |
| 44 | * |
| 45 | * @param string $emails List of addresses to sanitize. |
| 46 | * |
| 47 | * @return string |
| 48 | */ |
| 49 | public static function email_addresses( $emails ): string { |
| 50 | // Early bail!! |
| 51 | if ( ! is_string( $emails ) || empty( $emails ) ) { |
| 52 | return ''; |
| 53 | } |
| 54 | |
| 55 | $emails = stripslashes( $emails ); |
| 56 | $emails = explode( ',', $emails ); |
| 57 | $emails = array_map( 'sanitize_email', $emails ); |
| 58 | $emails = array_filter( $emails ); |
| 59 | |
| 60 | return implode( ',', $emails ); |
| 61 | } |
| 62 | |
| 63 | /** |
| 64 | * Sanitize Google Analytics UID |
| 65 | * |
| 66 | * @param string $ids Google Analytics UID. |
| 67 | * |
| 68 | * @return string |
| 69 | */ |
| 70 | public static function analytics_uid( $ids ): string { |
| 71 | $ids = explode( ',', $ids ); |
| 72 | $ids = array_map( |
| 73 | function ( $ga_id ) { |
| 74 | return trim( $ga_id, ' /][)(#' ); |
| 75 | }, |
| 76 | $ids |
| 77 | ); |
| 78 | $ids = array_filter( $ids ); |
| 79 | |
| 80 | return implode( ', ', $ids ); |
| 81 | } |
| 82 | } |
| 83 |