geno/wp-content/plugins/astra-sites/inc/classes/functions.php
2024-02-01 11:54:18 +00:00

238 lines
5.7 KiB
PHP

<?php
/**
* Functions
*
* @since 2.0.0
* @package Astra Sites
*/
if ( ! function_exists( 'astra_sites_error_log' ) ) :
/**
* Error Log
*
* A wrapper function for the error_log() function.
*
* @since 2.0.0
*
* @param mixed $message Error message.
* @return void
*/
function astra_sites_error_log( $message = '' ) {
if ( defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ) {
if ( is_array( $message ) ) {
$message = wp_json_encode( $message );
}
if ( apply_filters( 'astra_sites_debug_logs', false ) ) {
error_log( $message ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- This is for the debug logs while importing. This is conditional and will not be logged in the debug.log file for normal users.
}
}
}
endif;
if ( ! function_exists( 'astra_sites_get_suggestion_link' ) ) :
/**
*
* Get suggestion link.
*
* @since 2.6.1
*
* @return suggestion link.
*/
function astra_sites_get_suggestion_link() {
$white_label_link = Astra_Sites_White_Label::get_option( 'astra-agency', 'licence' );
if ( empty( $white_label_link ) ) {
$white_label_link = 'https://wpastra.com/sites-suggestions/?utm_source=demo-import-panel&utm_campaign=astra-sites&utm_medium=suggestions';
}
return apply_filters( 'astra_sites_suggestion_link', $white_label_link );
}
endif;
if ( ! function_exists( 'astra_sites_is_valid_image' ) ) :
/**
* Check for the valid image
*
* @param string $link The Image link.
*
* @since 2.6.2
* @return boolean
*/
function astra_sites_is_valid_image( $link = '' ) {
return preg_match( '/^((https?:\/\/)|(www\.))([a-z0-9-].?)+(:[0-9]+)?\/[\w\-\@]+\.(jpg|png|gif|jpeg|svg)\/?$/i', $link );
}
endif;
if ( ! function_exists( 'astra_get_site_data' ) ) :
/**
* Returns the value of the index for the Site Data
*
* @param string $index The index value of the data.
*
* @since 2.6.14
* @return mixed
*/
function astra_get_site_data( $index = '' ) {
$demo_data = get_option( 'astra_sites_import_data', array() );
if ( ! empty( $demo_data ) && isset( $demo_data[ $index ] ) ) {
return $demo_data[ $index ];
}
return '';
}
endif;
/**
* Check is valid URL
*
* @param string $url The site URL.
*
* @since 2.7.1
* @return string
*/
function astra_sites_is_valid_url( $url = '' ) {
if ( empty( $url ) ) {
return false;
}
$parse_url = wp_parse_url( $url );
if ( empty( $parse_url ) || ! is_array( $parse_url ) ) {
return false;
}
$valid_hosts = array(
'lh3.googleusercontent.com',
'pixabay.com',
);
$api_domain_parse_url = wp_parse_url( Astra_Sites::get_instance()->get_api_domain() );
$valid_hosts[] = $api_domain_parse_url['host'];
// Validate host.
if ( in_array( $parse_url['host'], $valid_hosts, true ) ) {
return true;
}
return false;
}
/**
* Get all the posts to be reset.
*
* @since 3.0.3
* @return array
*/
function astra_sites_get_reset_post_data() {
global $wpdb;
$post_ids = $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_astra_sites_imported_post'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- We need this to get all the posts and pages. Traditional WP_Query would have been expensive here.
return $post_ids;
}
/**
* Get all the forms to be reset.
*
* @since 3.0.3
* @return array
*/
function astra_sites_get_reset_form_data() {
global $wpdb;
$form_ids = $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_astra_sites_imported_wp_forms'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- We need this to get all the WP forms. Traditional WP_Query would have been expensive here.
return $form_ids;
}
/**
* Get all the terms to be reset.
*
* @since 3.0.3
* @return array
*/
function astra_sites_get_reset_term_data() {
global $wpdb;
$term_ids = $wpdb->get_col( "SELECT term_id FROM {$wpdb->termmeta} WHERE meta_key='_astra_sites_imported_term'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- We need this to get all the terms and taxonomy. Traditional WP_Query would have been expensive here.
return $term_ids;
}
/**
* Get API params
*
* @since 2.7.3
* @return array
*/
function astra_sites_get_api_params() {
return apply_filters(
'astra_sites_api_params', array(
'purchase_key' => '',
'site_url' => get_site_url(),
'per-page' => 15,
'template_status' => '',
'version' => ASTRA_SITES_VER,
)
);
}
/**
* Check if Import for Astra Site is in progress
*
* @since 3.0.21
* @return array
*/
function astra_sites_has_import_started() {
$has_import_started = get_transient( 'astra_sites_import_started' );
if ( 'yes' === $has_import_started ) {
return true;
}
return false;
}
/**
* Remove the post excerpt
*
* @param int $post_id The post ID.
* @since 3.1.0
*/
function astra_sites_empty_post_excerpt( $post_id = 0 ) {
if ( ! $post_id ) {
return;
}
wp_update_post(
array(
'ID' => $post_id,
'post_excerpt' => '',
)
);
}
/**
* Get the WP Forms URL.
*
* @since 3.2.4
* @param int $id The template ID.
* @return string
*/
function astra_sites_get_wp_forms_url( $id ) {
$demo_data = get_option( 'astra_sites_import_elementor_data_' . $id, array() );
if ( empty( $demo_data ) ) {
return '';
}
if ( isset( $demo_data['type'] ) ) {
$type = $demo_data['type'];
if ( 'site-pages' === $type && isset( $demo_data['astra-site-wpforms-path'] ) ) {
return $demo_data['astra-site-wpforms-path'];
}
if ( 'astra-blocks' === $type && isset( $demo_data['post-meta'] ) ) {
return $demo_data['post-meta']['astra-site-wpforms-path'];
}
}
return '';
}