/**
* Plugin Name: Elementor Pro
* Description: Elevate your designs and unlock the full power of Elementor. Gain access to dozens of Pro widgets and kits, Theme Builder, Pop Ups, Forms and WooCommerce building capabilities.
* Plugin URI: https://go.elementor.com/wp-dash-wp-plugins-author-uri/
* Version: 3.29.2
* Author: Elementor.com
* Author URI: https://go.elementor.com/wp-dash-wp-plugins-author-uri/
* Text Domain: elementor-pro
* Elementor tested up to: 3.29.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
define( 'ELEMENTOR_PRO_VERSION', '3.29.2' );
/**
* All versions should be `major.minor`, without patch, in order to compare them properly.
* Therefore, we can't set a patch version as a requirement.
* (e.g. Core 3.15.0-beta1 and Core 3.15.0-cloud2 should be fine when requiring 3.15, while
* requiring 3.15.2 is not allowed)
*/
define( 'ELEMENTOR_PRO_REQUIRED_CORE_VERSION', '3.27' );
define( 'ELEMENTOR_PRO_RECOMMENDED_CORE_VERSION', '3.29' );
define( 'ELEMENTOR_PRO__FILE__', __FILE__ );
define( 'ELEMENTOR_PRO_PLUGIN_BASE', plugin_basename( ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_PATH', plugin_dir_path( ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_ASSETS_PATH', ELEMENTOR_PRO_PATH . 'assets/' );
define( 'ELEMENTOR_PRO_MODULES_PATH', ELEMENTOR_PRO_PATH . 'modules/' );
define( 'ELEMENTOR_PRO_URL', plugins_url( '/', ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_ASSETS_URL', ELEMENTOR_PRO_URL . 'assets/' );
define( 'ELEMENTOR_PRO_MODULES_URL', ELEMENTOR_PRO_URL . 'modules/' );
// Include Composer's autoloader
if ( file_exists( ELEMENTOR_PRO_PATH . 'vendor/autoload.php' ) ) {
require_once ELEMENTOR_PRO_PATH . 'vendor/autoload.php';
// We need this file because of the DI\create function that we are using.
// Autoload classmap doesn't include this file.
require_once ELEMENTOR_PRO_PATH . 'vendor_prefixed/php-di/php-di/src/functions.php';
}
/**
* Load gettext translate for our text domain.
*
* @since 1.0.0
*
* @return void
*/
function elementor_pro_load_plugin() {
if ( ! did_action( 'elementor/loaded' ) ) {
add_action( 'admin_notices', 'elementor_pro_fail_load' );
return;
}
$core_version = ELEMENTOR_VERSION;
$core_version_required = ELEMENTOR_PRO_REQUIRED_CORE_VERSION;
$core_version_recommended = ELEMENTOR_PRO_RECOMMENDED_CORE_VERSION;
if ( ! elementor_pro_compare_major_version( $core_version, $core_version_required, '>=' ) ) {
add_action( 'admin_notices', 'elementor_pro_fail_load_out_of_date' );
return;
}
if ( ! elementor_pro_compare_major_version( $core_version, $core_version_recommended, '>=' ) ) {
add_action( 'admin_notices', 'elementor_pro_admin_notice_upgrade_recommendation' );
}
require ELEMENTOR_PRO_PATH . 'plugin.php';
}
function elementor_pro_compare_major_version( $left, $right, $operator ) {
$pattern = '/^(\d+\.\d+).*/';
$replace = '$1.0';
$left = preg_replace( $pattern, $replace, $left );
$right = preg_replace( $pattern, $replace, $right );
return version_compare( $left, $right, $operator );
}
add_action( 'plugins_loaded', 'elementor_pro_load_plugin' );
function print_error( $message ) {
if ( ! $message ) {
return;
}
// PHPCS - $message should not be escaped
echo '
' . $message . '
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Show in WP Dashboard notice about the plugin is not activated.
*
* @since 1.0.0
*
* @return void
*/
function elementor_pro_fail_load() {
$screen = get_current_screen();
if ( isset( $screen->parent_file ) && 'plugins.php' === $screen->parent_file && 'update' === $screen->id ) {
return;
}
$plugin = 'elementor/elementor.php';
if ( _is_elementor_installed() ) {
if ( ! current_user_can( 'activate_plugins' ) ) {
return;
}
$activation_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin );
$message = '' . esc_html__( 'You\'re not using Elementor Pro yet!', 'elementor-pro' ) . '
';
$message .= '' . esc_html__( 'Activate the Elementor plugin to start using all of Elementor Pro plugin’s features.', 'elementor-pro' ) . '
';
$message .= '' . sprintf( '%s', $activation_url, esc_html__( 'Activate Now', 'elementor-pro' ) ) . '
';
} else {
if ( ! current_user_can( 'install_plugins' ) ) {
return;
}
$install_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );
$message = '' . esc_html__( 'Elementor Pro plugin requires installing the Elementor plugin', 'elementor-pro' ) . '
';
$message .= '' . esc_html__( 'Install and activate the Elementor plugin to access all the Pro features.', 'elementor-pro' ) . '
';
$message .= '' . sprintf( '%s', $install_url, esc_html__( 'Install Now', 'elementor-pro' ) ) . '
';
}
print_error( $message );
}
function elementor_pro_fail_load_out_of_date() {
if ( ! current_user_can( 'update_plugins' ) ) {
return;
}
$file_path = 'elementor/elementor.php';
$upgrade_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file_path, 'upgrade-plugin_' . $file_path );
$message = sprintf(
'%1$s
%2$s %4$s
',
esc_html__( 'Elementor Pro requires newer version of the Elementor plugin', 'elementor-pro' ),
esc_html__( 'Update the Elementor plugin to reactivate the Elementor Pro plugin.', 'elementor-pro' ),
$upgrade_link,
esc_html__( 'Update Now', 'elementor-pro' )
);
print_error( $message );
}
function elementor_pro_admin_notice_upgrade_recommendation() {
if ( ! current_user_can( 'update_plugins' ) ) {
return;
}
$file_path = 'elementor/elementor.php';
$upgrade_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file_path, 'upgrade-plugin_' . $file_path );
$message = sprintf(
'%1$s
%2$s %4$s
',
esc_html__( 'Don’t miss out on the new version of Elementor', 'elementor-pro' ),
esc_html__( 'Update to the latest version of Elementor to enjoy new features, better performance and compatibility.', 'elementor-pro' ),
$upgrade_link,
esc_html__( 'Update Now', 'elementor-pro' )
);
print_error( $message );
}
if ( ! function_exists( '_is_elementor_installed' ) ) {
function _is_elementor_installed() {
$file_path = 'elementor/elementor.php';
$installed_plugins = get_plugins();
return isset( $installed_plugins[ $file_path ] );
}
}/**
* Stripe Co-branded cards compatibility class.
*
* @package WooCommerce Stripe
* @since 8.3.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class WC_Stripe_Co_Branded_CC_Compatibility {
const MIN_WC_VERSION = '8.9.0';
/**
* Determines whether the current version of WooCommerce is supported.
*
* @return bool
*/
public static function is_wc_supported() {
return 'beta' !== WC_VERSION && version_compare( WC_VERSION, self::MIN_WC_VERSION, '>' );
}
}// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
if ( ! function_exists( 'wcss_is_cart_empty' ) ) {
/**
* Check for woocommerce cart status.
*
* @return bool
*/
function wcss_is_cart_empty() {
return WC()->cart->get_cart_contents_count() === 0 ? true : false;
}
}
/**
* Generate unique 5 characters alphanumeric cart key.
*
* @since 2.2.0
* @return string 5 characters alphanumeric cart key.
*/
function wcss_generate_cart_key() {
$charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$base = strlen( $charset );
$result = '';
$now = explode( ' ', microtime() );
$now = $now[1];
while ( $now >= $base ) {
$i = $now % $base;
$result = $charset[ $i ] . $result;
$now = (int) ( $now / $base );
}
return apply_filters( 'wcss_generate_cart_key', substr( $result, -5 ) );
}// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
/**
* Get saved cart object.
*
* @since 2.0.0
*
* @param string $cart_key Optional. Saved cart key.
* @return WCSS_Saved_Cart Saved cart object.
*/
function wcss_get_saved_cart( $cart = '' ) {
return new WCSS_Saved_Cart( $cart );
}
/**
* Get all saved carts.
*
* @since 2.0.0
*
* @return array|bool Array of saved cart objects. false otherwise.
*/
function wcss_get_saved_carts() {
global $wpdb;
$saved_carts = array();
$_saved_carts = $wpdb->get_results(
"SELECT
cart_key
FROM
{$wpdb->prefix}wcss_saved_cart
ORDER BY id DESC"
);
if ( ! $_saved_carts ) {
return false;
}
foreach ( $_saved_carts as $_saved_cart ) {
$saved_carts[] = wcss_get_saved_cart( $_saved_cart->cart_key );
}
return $saved_carts;
}
/**
* Get saved carts by fields.
*
* @since 2.0.0
*
* @param string $field Saved cart field. Like `user_id`, `cart_key`.
* @param string $value Saved cart field value. Like Saved cart user ID, Saved cart key.
* @param string $order Optional. ASC or DESC. Default `DESC`.
* @return array|bool Array of saved cart objects or false if no saved cart found.
*/
function wcss_get_saved_carts_by( $field, $value, $order = 'DESC' ) {
if ( ! $field || ! $value ) {
return false;
}
if ( 'user_id' !== $field && 'cart_key' !== $field ) {
return false;
}
global $wpdb;
$saved_carts = array();
$_saved_carts = $wpdb->get_results(
$wpdb->prepare(
"SELECT cart_key FROM {$wpdb->prefix}wcss_saved_cart WHERE {$field} = %s ORDER BY id {$order}",
$value
)
);
if ( ! $_saved_carts ) {
return false;
}
foreach ( $_saved_carts as $_saved_cart ) {
$saved_carts[] = wcss_get_saved_cart( $_saved_cart->cart_key );
}
return $saved_carts;
}
/**
* Delete all saved carts.
*
* @since 2.0.0
*
* @return void
*/
function wcss_delete_saved_carts() {
$saved_carts = wcss_get_saved_carts();
if ( ! $saved_carts ) {
return;
}
foreach ( $saved_carts as $saved_cart ) {
$shared_cart = wcss_get_shared_cart( $saved_cart->get_cart_key() );
$shared_cart->delete();
$saved_cart->delete();
}
}
/**
* Delete saved cart.
*
* @since 2.0.0
*
* @param string $cart_key Saved cart key.
* @return bool True if saved cart deleted. False otherwise.
*/
function wcss_delete_saved_cart( $cart_key ) {
$saved_cart = wcss_get_saved_cart( $cart_key );
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $saved_cart ) {
return false;
}
$saved_cart->delete();
$shared_cart->delete();
return true;
}
/**
* Insert data into saved cart table.
*
* @since 2.0.0
*
* @param string $args Optional. Args used to create saved cart.
* @return WCSS_Saved_Cart|bool Saved cart object on success, false otherwise.
*/
function wcss_insert_saved_cart( $args = '' ) {
$a = wp_parse_args( $args, array(
'user_id' => 0,
'cart_name' => '',
'cart_key' => '',
'cart_saved' => '',
) );
$saved_cart = wcss_get_saved_cart();
if ( $saved_cart->is_exists() ) {
return false;
}
$saved_cart->set_user_id( $a['user_id'] );
$saved_cart->set_cart_name( $a['cart_name'] );
$saved_cart->set_cart_key( $a['cart_key'] );
$saved_cart->set_cart_saved( $a['cart_saved'] );
return $saved_cart->create();
}
/**
* Get saved carts by user ID.
*
* @since 2.0.0
*
* @param int $user_id User ID.
* @return array list of saved carts.
*/
function wcss_get_saved_carts_by_user_id( $user_id ) {
return wcss_get_saved_carts_by( 'user_id', $user_id );
}
/**
* Get saved carts table columns.
*
* @since 3.2.2
*
* @return array Array of column labels keyed by column IDs.
*/
function wcss_get_saved_carts_columns() {
/**
* Filter the array of My Account > Saved carts columns.
*
* @since 3.2.2
*
* @param array $columns Array of column labels keyed by column IDs.
*/
return apply_filters(
'wcss_saved_carts_columns',
array(
'count' => esc_html__( '#', 'woo-cart-share' ),
'cart_name' => esc_html__( 'Cart Name', 'woo-cart-share' ),
'actions' => esc_html__( 'Actions', 'woo-cart-share' ),
)
);
}// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
/**
* Get shared cart object.
*
* @since 2.0.0
*
* @param string $cart_key Optional. Shared cart key.
* @return WCSS_Shared_Cart Shared cart object.
*/
function wcss_get_shared_cart( $cart = '' ) {
return new WCSS_Shared_Cart( $cart );
}
/**
* Get all shared carts.
*
* @since 2.0.0
*
* @return array|bool Array of shared cart objects. false otherwise.
*/
function wcss_get_shared_carts() {
global $wpdb;
$shared_carts = array();
$_shared_carts = $wpdb->get_results(
"SELECT
cart_key
FROM
{$wpdb->prefix}wcss_shared_cart
WHERE cart_key NOT IN (
SELECT cart_key FROM {$wpdb->prefix}wcss_saved_cart
)
ORDER BY id DESC"
);
if ( ! $_shared_carts ) {
return false;
}
foreach ( $_shared_carts as $_shared_cart ) {
$shared_carts[] = wcss_get_shared_cart( $_shared_cart->cart_key );
}
return $shared_carts;
}
/**
* Get shared carts by fields.
*
* @since 2.0.0
*
* @param string $field Shared cart field. Like `cart_key`, `cart_shared_by`, `cart_retrieved`.
* @param string $value Shared cart field value. Like Shared cart key, Shared cart by, Shared cart retrieved count.
* @param string $order Optional. ASC or DESC. Default `DESC`.
* @return array|bool Array of shared cart objects or false if no shared cart found.
*/
function wcss_get_shared_carts_by( $field, $value, $order = 'DESC' ) {
if ( ! $field || ! $value ) {
return false;
}
if ( 'user_id' !== $field && 'cart_key' !== $field && 'cart_retrieved' !== $field) {
return false;
}
global $wpdb;
$shared_carts = array();
$_shared_carts = $wpdb->get_results(
$wpdb->prepare(
"SELECT cart_key FROM {$wpdb->prefix}wcss_shared_cart WHERE {$field} = %s ORDER BY id {$order}",
$value
)
);
if ( ! $_shared_carts ) {
return false;
}
foreach ( $_shared_carts as $_shared_cart ) {
$shared_carts[] = wcss_get_shared_cart( $_shared_cart->cart_key );
}
return $shared_carts;
}
/**
* Delete all shared carts.
*
* @since 2.0.0
*
* @return void
*/
function wcss_delete_shared_carts() {
$shared_carts = wcss_get_shared_carts();
if ( ! $shared_carts ) {
return;
}
foreach ( $shared_carts as $shared_cart ) {
$saved_cart = wcss_get_saved_cart( $shared_cart->get_cart_key() );
$saved_cart->delete();
$shared_cart->delete();
}
}
/**
* Delete shared cart.
*
* @since 2.0.0
*
* @param string $cart_key Shared cart key.
* @return bool True if shared cart deleted. False otherwise.
*/
function wcss_delete_shared_cart( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
$saved_cart = wcss_get_saved_cart( $cart_key );
if ( ! $shared_cart->is_exists() || $saved_cart->is_exists() ) {
return false;
}
$shared_cart->delete();
return true;
}
/**
* Get shared cart data by DB column.
*
* @param string $cart_key Cart key.
* @param string $column Column name.
* @return mixed|bool Returns data if found, false otherwise.
*/
function wcss_get_shared_cart_data( $cart_key, $column ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( 'cart_key' === $column ) {
return $shared_cart->get_cart_key();
} elseif ( 'cart_value' === $column ) {
return $shared_cart->get_cart_value();
} elseif ( 'cart_shared_by' === $column ) {
return $shared_cart->get_cart_shared_by();
} elseif ( 'cart_retrieved' === $column ) {
return $shared_cart->get_cart_retrieved();
} elseif ( 'cart_retrieved_time' === $column ) {
return $shared_cart->get_cart_retrieved_time();
} elseif ( 'cart_created' === $column ) {
return $shared_cart->get_cart_created();
}
return false;
}
/**
* Insert data into shared cart table.
*
* @since 2.0.0
*
* @param string $args Optional. Args used to create shared cart.
* @return WCSS_Shared_Cart|bool Shared cart object on success, false otherwise.
*/
function wcss_insert_shared_cart( $args = '' ) {
$a = wp_parse_args( $args, array(
'cart_key' => '',
'cart_value' => '',
'cart_shared_by' => 0,
'cart_retrieved' => 0,
'cart_retrieved_time' => null,
'cart_created' => '',
) );
$shared_cart = wcss_get_shared_cart();
if ( $shared_cart->is_exists() ) {
return false;
}
$shared_cart->set_cart_key( $a['cart_key'] );
$shared_cart->set_cart_value( $a['cart_value'] );
$shared_cart->set_cart_shared_by( $a['cart_shared_by'] );
$shared_cart->set_cart_retrieved( $a['cart_retrieved'] );
$shared_cart->set_cart_retrieved_time( $a['cart_retrieved_time'] );
$shared_cart->set_cart_created( $a['cart_created'] );
$inserted_shared_cart = $shared_cart->create();
if ( ! $inserted_shared_cart ) {
return false;
}
return $inserted_shared_cart;
}
/**
* Increment the saved cart retrieved count value by one.
*
* @since 2.0.0
*
* @param string $cart_key Cart key.
* @return bool True on success, false otherwise.
*/
function wcss_shared_cart_retrieved_count_increment( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $shared_cart->is_exists() ) {
return false;
}
$shared_cart->set_cart_retrieved( $shared_cart->get_cart_retrieved() + 1 );
return $shared_cart->update();
}
/**
* Set cart retrieved time.
*
* @param string $cart_key Cart key.
* @return bool True on success, false otherwise.
*/
function wcss_set_shared_cart_retrieved_time( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $shared_cart->is_exists() ) {
return false;
}
$shared_cart->set_cart_retrieved_time( current_time( 'mysql' ) );
return $shared_cart->update();
}
/**
* Get shared cart retrieved time.
*
* @since 2.0.0
*
* @param string $cart_key Cart key.
* @return string|bool Returns cart retrieved time on success, false otherwise.
*/
function wcss_get_shared_cart_retrieved_time( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $shared_cart->is_exists() ) {
return false;
}
return $shared_cart->get_cart_retrieved_time();
}
/**
* Get the shared cart retrieved count.
*
* @since 2.0.0
*
* @param string $cart_key Cart key.
* @return int Returns cart retrieved count on success, false otherwise.
*/
function wcss_get_shared_cart_retrieved_count( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $shared_cart->is_exists() ) {
return false;
}
return $shared_cart->get_cart_retrieved();
}
/**
* Get shared cart session.
*
* @param string $cart_key Cart key.
* @return array Returns cart session on success, false otherwise.
*/
function wcss_get_shared_cart_session( $cart_key ) {
$shared_cart = wcss_get_shared_cart( $cart_key );
if ( ! $shared_cart->is_exists() ) {
return false;
}
return $shared_cart->get_cart_value();
}
/**
* Add to cart redirection URL.
*
* @since 2.1.1
*
* @return string Add to cart redirection URL.
*/
function wcss_add_to_cart_redirection_url() {
// Get plugin settings.
$redirection_page_id = get_option( 'wcss_retrieved_cart_redirection_page_id' );
if ( ! is_numeric( $redirection_page_id ) ) {
return wc_get_cart_url();
}
return apply_filters( 'wcss_after_add_to_cart_redirection_url', get_permalink( $redirection_page_id ) );
}/**
* Shared cart meta functions.
*
* @package WooCommerce Cart Share & Save
* @version 1.8.5
*/
defined( 'ABSPATH' ) || exit;
/**
* Get shared cart meta data.
*
* @since 1.8.5
*
* @param string $cart_key Shared cart unique key.
* @param string $meta_key Optional. The meta key to retrieve. By default,
* returns data for all keys. Default empty.
*
* @return mixed False for an invalid `$cart_key`.
* An empty string if a valid but non-existing Shared cart is passed.
*/
function wcss_get_shared_cart_meta( $cart_key, $meta_key = '' ) {
global $wpdb;
if ( ! $cart_key ) {
return;
}
if ( ! $meta_key ) {
return $wpdb->get_results(
$wpdb->prepare(
"SELECT *
FROM {$wpdb->prefix}wcss_shared_cart_meta
WHERE cart_key = %s",
$cart_key
),
ARRAY_A
);
}
return $wpdb->get_var(
$wpdb->prepare(
"SELECT meta_value
FROM {$wpdb->prefix}wcss_shared_cart_meta
WHERE cart_key = %s
AND meta_key = %s
ORDER BY id DESC
LIMIT 1",
$cart_key,
$meta_key
)
);
}
/**
* Add shared cart meta data.
*
* @since 1.8.5
*
* @param string $cart_key Shared cart unique key.
* @param string $meta_key Metadata key.
* @param mixed $meta_value Metadata value.
*
* @return int|false Meta ID on success, false on failure.
*/
function wcss_add_shared_cart_meta( $cart_key, $meta_key, $meta_value ) {
global $wpdb;
if ( wcss_get_shared_cart_meta( $cart_key, $meta_key ) ) {
return false;
}
$query = $wpdb->insert(
$wpdb->prefix . 'wcss_shared_cart_meta',
array(
'cart_key' => $cart_key,
'meta_key' => $meta_key,
'meta_value' => maybe_serialize( $meta_value ),
),
array(
'%s',
'%s',
'%s',
)
);
return $query ? $wpdb->insert_id : false;
}
/**
* Update shared cart meta data.
*
* @since 1.8.5
*
* @param string $cart_key Shared cart unique key.
* @param string $meta_key Meta key.
* @param mixed $meta_value Meta new value.
*
* @return int|bool True on success, false on failure.
*/
function wcss_update_shared_cart_meta( $cart_key, $meta_key, $meta_value ) {
if ( ! $cart_key || ! $meta_key || ! $meta_value ) {
return false;
}
global $wpdb;
return $wpdb->update(
$wpdb->prefix . 'wcss_shared_cart_meta',
array( 'meta_value' => maybe_serialize( $meta_value ) ),
array(
'cart_key' => $cart_key,
'meta_key' => $meta_key,
),
array( '%s' ),
array(
'%s',
'%s',
)
);
}
/**
* Delete shared cart meta.
*
* @param string $cart_key Shared cart unique key.
* @param string $meta_key Optional. Delete meta entry(ies).
* Delete all meta entries if '$meta_key' not passed.
*
* @return bool True on success, false on failure.
*/
function wcss_delete_shared_cart_meta( $cart_key, $meta_key = '' ) {
global $wpdb;
if ( ! $meta_key ) {
return $wpdb->delete(
$wpdb->prefix . 'wcss_shared_cart_meta',
array( 'cart_key' => $cart_key ),
array( '%s' )
);
}
return $wpdb->delete(
$wpdb->prefix . 'wcss_shared_cart_meta',
array(
'cart_key' => $cart_key,
'meta_key' => $meta_key,
),
array(
'%s',
'%s',
)
);
}
/**
* Delete all shared cart meta.
*
* @since 1.8.5
*
* @return void
*/
function wcss_delete_all_shared_cart_meta() {
global $wpdb;
return $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}wcss_shared_cart_meta" );
}// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
if ( ! function_exists( 'wcss_email_contact_media' ) ) {
/**
* Get email contact media.
*
* @return array
*/
function wcss_email_contact_media() {
$contact_media = get_option( 'wcss_email_contact_media' );
$contact_media[0] = array(
'img' => WCSS_PLUGIN_URL . 'assets/images/email/email-facebook.png',
'link' => $contact_media['facebook'],
);
$contact_media[1] = array(
'img' => WCSS_PLUGIN_URL . 'assets/images/email/email-instagram.png',
'link' => $contact_media['instagram'],
);
$contact_media[2] = array(
'img' => WCSS_PLUGIN_URL . 'assets/images/email/email-twitter.png',
'link' => $contact_media['twitter'],
);
$contact_media[3] = array(
'img' => WCSS_PLUGIN_URL . 'assets/images/email/email-whatsapp.png',
'link' => ( $contact_media['whatsapp'] ) ? '//wa.me/' . $contact_media['whatsapp'] : $contact_media['whatsapp'],
);
// Unset default.
if ( isset( $contact_media['facebook'] ) ) {
unset( $contact_media['facebook'] );
}
if ( isset( $contact_media['instagram'] ) ) {
unset( $contact_media['instagram'] );
}
if ( isset( $contact_media['twitter'] ) ) {
unset( $contact_media['twitter'] );
}
if ( isset( $contact_media['whatsapp'] ) ) {
unset( $contact_media['whatsapp'] );
}
return apply_filters( 'wcss_email_contact_media', $contact_media );
}
}
/**
* Add inline style to email template HTML.
*
* @since 2.3.0
*
* @param string $html Email template HTML.
* @return string Inline CSS applied to HTML.
*/
function wcss_email_style_inline( $html ) {
$css = apply_filters( 'wcss_email_css', wcss_get_template_html( 'email-cart/email-styles.php' ) );
/**
* Return HTML with applied inline CSS.
*/
return wcss_apply_inline_styles( $html, $css );
}
/**
* Send cart email.
*
* This function is used to send cart email.
* It cannot be called directly from the admin side; instead, please use an AJAX action to invoke this function in the admin area.
*
* @since 3.3.0
*
* @param string $cart_key Cart key.
* @param string $to Email to. Comma separated email addresses are allowed.
* @param string $subject Optional. Email subject.
* @param string $message Optional. Email message.
*
* @return void
*/
function wcss_send_cart_email( $cart_key, $to, $subject = '', $message = '' ) {
if ( is_admin() && ! wp_doing_ajax() ) {
_doing_it_wrong( __FUNCTION__, esc_html__( 'This function cannot be called directly from the admin side; instead, please use an AJAX action to invoke this function in the admin area.', 'woo-cart-share' ), '3.3.0' );
return;
}
$cart_key = sanitize_text_field( $cart_key );
/**
* Before email cart send action.
*/
do_action( 'wcss_before_send_email_cart', $cart_key, $_POST );
/**
* Filter email cart args.
*
* @since 3.3.0
*
* @param array $args Email cart args.
*/
$args = apply_filters(
'wcss_email_cart_args',
array(
'cart_key' => $cart_key,
'email_to' => sanitize_text_field( $to ),
'email_subject' => sanitize_text_field( $subject ),
'email_message' => wp_kses_post( $message ),
)
);
// Deprecated `wcss_email_cart_form_post_data` filter hook.
if ( has_filter( 'wcss_email_cart_form_post_data' ) ) {
_deprecated_hook( 'wcss_email_cart_form_post_data', '3.3.0', 'wcss_email_cart_args' );
/**
* Filter email cart form post data.
*
* @deprecated 3.3.0 Use `wcss_email_cart_args` filter hook instead.
*
* @param array $args Email cart args.
*/
$args = apply_filters( 'wcss_email_cart_form_post_data', $args );
}
wcss_set_session_to_cart( $cart_key );
$email_body = wcss_get_template_html(
'email-cart/email-cart.php',
array(
'cart_key' => $cart_key,
'message' => isset( $args['email_message'] ) ? $args['email_message'] : '',
// Following variables were removed in plugin version 2.3.0
'brand_name' => get_option( 'wcss_email_brand_name' ),
'brand_logo_url' => get_option( 'wcss_email_brand_logo_url' ),
'retrieve_cart_button_text' => get_option( 'wcss_email_retrieve_cart_button_text' ),
)
);
$email_from_name = apply_filters( 'wcss_email_from_name', get_option( 'wcss_email_from_name' ) );
$email_from_email = apply_filters( 'wcss_email_from_email', get_option( 'wcss_email_from_email' ) );
/**
* Filter email cart headers.
*
* @since 1.9.1
*
* @param array $headers Email cart header.
* @return array Email cart header.
*/
$headers = apply_filters(
'wcss_email_cart_headers',
array(
'Content-Type: text/html; charset=UTF-8',
'From: ' . esc_html( $email_from_name ) . ' <' . esc_html( $email_from_email ) . '>',
)
);
/**
* Filter email cart attachments.
*
* @since 3.3.0
*
* @param array $attachments Email cart attachments.
* @param string $cart_key Cart key.
*/
$attachments = apply_filters( 'wcss_email_cart_attachments', array(), $cart_key );
// Process and send emails.
$emails = array_filter( array_map( 'trim', explode( ',', $args['email_to'] ) ), 'is_email' );
foreach ( $emails as $email ) {
wp_mail( $email, $args['email_subject'], wcss_email_style_inline( $email_body ), $headers, $attachments );
}
/**
* After email cart send action.
*/
do_action( 'wcss_after_send_email_cart', $cart_key, $_POST );
}
C-STEM Modules & Toolkits Archives - C-STEM
C-STEM Modules & Toolkits