first commit
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
|
||||
use \SearchWP_Live_Search_Settings_Api as Settings_Api;
|
||||
|
||||
// Exit if accessed directly.
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class SearchWP_Live_Search_Utils.
|
||||
*
|
||||
* @since 1.7.0
|
||||
*/
|
||||
class SearchWP_Live_Search_Utils {
|
||||
|
||||
/**
|
||||
* Plugin general prefix.
|
||||
*
|
||||
* @since 1.7.3
|
||||
*/
|
||||
const SEARCHWP_LIVE_SEARCH_PREFIX = 'searchwp_live_search_';
|
||||
|
||||
/**
|
||||
* Check if SearchWP plugin is active.
|
||||
*
|
||||
* @since 1.7.0
|
||||
*/
|
||||
public static function is_searchwp_active() {
|
||||
|
||||
return class_exists( 'SearchWP' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to determine if loading a Live Ajax Search admin settings page.
|
||||
*
|
||||
* @since 1.7.0
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function is_settings_page() {
|
||||
|
||||
if ( ! is_admin() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
$page = isset( $_REQUEST['page'] ) ? sanitize_key( $_REQUEST['page'] ) : '';
|
||||
|
||||
if ( empty( $page ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $page === 'searchwp-live-search';
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize array/string of CSS classes.
|
||||
*
|
||||
* @since 1.7.0
|
||||
*
|
||||
* @param array|string $classes
|
||||
* @param array $args {
|
||||
* Optional arguments.
|
||||
*
|
||||
* @type bool $convert Whether to suppress filters. Default true.
|
||||
* }
|
||||
*
|
||||
* @return string|array
|
||||
*/
|
||||
public static function sanitize_classes( $classes, $args = [] ) {
|
||||
|
||||
$is_array = is_array( $classes );
|
||||
$convert = ! empty( $args['convert'] );
|
||||
$css = [];
|
||||
|
||||
if ( ! empty( $classes ) ) {
|
||||
$classes = $is_array ? $classes : explode( ' ', trim( $classes ) );
|
||||
foreach ( $classes as $class ) {
|
||||
if ( ! empty( $class ) ) {
|
||||
$css[] = sanitize_html_class( $class );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $is_array ) {
|
||||
return $convert ? implode( ' ', $css ) : $css;
|
||||
}
|
||||
|
||||
return $convert ? $css : implode( ' ', $css );
|
||||
}
|
||||
|
||||
/**
|
||||
* Localizes a script using a standard set of variables.
|
||||
*
|
||||
* @since 1.7.3
|
||||
*
|
||||
* @param string $handle The script handle to localize.
|
||||
* @param array $settings Additional settings to localize.
|
||||
*/
|
||||
public static function localize_script( string $handle, array $settings = [] ) {
|
||||
|
||||
$capability = Settings_Api::get_capability();
|
||||
|
||||
$l10n = [
|
||||
'nonce' => current_user_can( $capability ) ? wp_create_nonce( self::SEARCHWP_LIVE_SEARCH_PREFIX . 'settings' ) : '',
|
||||
'prefix' => self::SEARCHWP_LIVE_SEARCH_PREFIX,
|
||||
];
|
||||
|
||||
if ( ! empty( $settings ) && is_array( $settings ) ) {
|
||||
$l10n = array_merge( $l10n , $settings );
|
||||
}
|
||||
|
||||
wp_localize_script( $handle, '_SEARCHWP', $l10n );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the AJAX call has all the necessary permissions (nonce and capability).
|
||||
*
|
||||
* @since 1.7.3
|
||||
*
|
||||
* @param array $args Arguments to change method's behaviour.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function check_ajax_permissions( $args = [] ) {
|
||||
|
||||
$defaults = [
|
||||
'capability' => Settings_Api::get_capability(),
|
||||
'query_arg' => false,
|
||||
'die' => true,
|
||||
];
|
||||
|
||||
$args = wp_parse_args( $args, $defaults );
|
||||
|
||||
$result = check_ajax_referer( self::SEARCHWP_LIVE_SEARCH_PREFIX . 'settings', $args['query_arg'], $args['die'] );
|
||||
|
||||
if ( $result === false ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! current_user_can( $args['capability'] ) ) {
|
||||
$result = false;
|
||||
}
|
||||
|
||||
if ( $result === false && $args['die'] ) {
|
||||
wp_die( -1, 403 );
|
||||
}
|
||||
|
||||
return (bool) $result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user