115 lines
2.4 KiB
PHP
115 lines
2.4 KiB
PHP
<?php
|
|
namespace ElementorPro\Modules\Notes;
|
|
|
|
use Elementor\Core\Utils\Collection;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly.
|
|
}
|
|
|
|
/**
|
|
* This is specific for notes and should not be used outside the module.
|
|
*/
|
|
class Utils {
|
|
|
|
/**
|
|
* Clean the url.
|
|
*
|
|
* @param $url
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function clean_url( $url ) {
|
|
$parsed_url = wp_parse_url( $url );
|
|
|
|
$url = '/';
|
|
|
|
if ( isset( $parsed_url['path'] ) ) {
|
|
$url = $parsed_url['path'];
|
|
}
|
|
|
|
if ( isset( $parsed_url['query'] ) ) {
|
|
$query = [];
|
|
|
|
parse_str( $parsed_url['query'], $query );
|
|
|
|
$remove_if_start_with = [ 'utm_' ];
|
|
$remove_if_end_with = [ '_nonce' ];
|
|
$remove_if_is = [ 'fbclid', 'elementor-preview', 'ver', 'preview_id', 'preview_nonce', 'preview', 'theme_template_id', 'nonce' ];
|
|
|
|
$query = ( new Collection( $query ) )
|
|
->filter( function ( $value, $key ) use ( $remove_if_start_with, $remove_if_end_with, $remove_if_is ) {
|
|
foreach ( $remove_if_start_with as $term ) {
|
|
if ( 0 === strpos( $key, $term ) ) {
|
|
return false;
|
|
};
|
|
}
|
|
|
|
foreach ( $remove_if_end_with as $term ) {
|
|
if ( 1 === preg_match( "/{$term}$/", $key ) ) {
|
|
return false;
|
|
};
|
|
}
|
|
|
|
foreach ( $remove_if_is as $term ) {
|
|
if ( $key === $term ) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
} );
|
|
|
|
if ( ! $query->is_empty() ) {
|
|
$url = implode( '?', [
|
|
$url,
|
|
build_query( $query->all() ),
|
|
] );
|
|
}
|
|
}
|
|
|
|
return esc_url_raw( rtrim( $url, '/' ) );
|
|
}
|
|
|
|
/**
|
|
* @param $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function validate_url_or_relative_url( $value ) {
|
|
$is_valid_url = filter_var( $value, FILTER_VALIDATE_URL );
|
|
|
|
if ( $is_valid_url ) {
|
|
return (bool) $is_valid_url;
|
|
}
|
|
|
|
// Check if the $value is relative url.
|
|
return (bool) filter_var( 'https://localhost/' . ltrim( $value, '/' ), FILTER_VALIDATE_URL );
|
|
}
|
|
|
|
/**
|
|
* Clean the WP document title and return it.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function get_clean_document_title() {
|
|
$filter = function ( $title ) {
|
|
if ( is_home() || is_front_page() ) {
|
|
return [ esc_html__( 'Home page', 'elementor-pro' ) ];
|
|
}
|
|
|
|
unset( $title['site'] );
|
|
|
|
return $title;
|
|
};
|
|
|
|
add_filter( 'document_title_parts', $filter );
|
|
|
|
$title = wp_get_document_title();
|
|
|
|
remove_filter( 'document_title_parts', $filter );
|
|
|
|
return $title;
|
|
}
|
|
}
|