Files
2024-09-25 09:25:31 -04:00

100 lines
3.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
defined( 'ABSPATH' ) || die( 'Cheatin uh?' );
/**
* A wrapper to easily get imagify option.
*
* @since 1.0
* @since 1.7 The $default parameter was removed.
*
* @param string $key The option name.
* @return mixed The option value.
*/
function get_imagify_option( $key ) {
return Imagify_Options::get_instance()->get( $key );
}
/**
* Update an Imagify option.
*
* @since 1.6
* @author Remy Perona
*
* @param string $key The option name.
* @param mixed $value The value of the option.
*/
function update_imagify_option( $key, $value ) {
Imagify_Options::get_instance()->set( $key, $value );
}
/**
* Autoload network options and put them in cache.
*
* @since 1.7
* @author Grégory Viguier
* @source SecuPress
*
* @param array $option_names A list of option names to cache.
* @param string|array $prefixes A prefix for the option names. Handy for transients for example (`_site_transient_` and `_site_transient_timeout_`).
*/
function imagify_load_network_options( $option_names, $prefixes = '' ) {
global $wpdb;
$prefixes = (array) $prefixes;
if ( ! $option_names || count( $option_names ) * count( $prefixes ) === 1 ) {
return;
}
// Get values.
$not_exist = array();
$option_names = array_flip( array_flip( $option_names ) );
$options = '';
foreach ( $prefixes as $prefix ) {
$options .= "'$prefix" . implode( "','$prefix", esc_sql( $option_names ) ) . "',";
}
$options = rtrim( $options, ',' );
if ( is_multisite() ) {
$network_id = function_exists( 'get_current_network_id' ) ? get_current_network_id() : (int) $wpdb->siteid;
$cache_prefix = "$network_id:";
$notoptions_key = "$network_id:notoptions";
$cache_group = 'site-options';
$results = $wpdb->get_results( $wpdb->prepare( "SELECT meta_key as name, meta_value as value FROM $wpdb->sitemeta WHERE meta_key IN ( $options ) AND site_id = %d", $network_id ), OBJECT_K ); // WPCS: unprepared SQL ok.
} else {
$cache_prefix = '';
$notoptions_key = 'notoptions';
$cache_group = 'options';
$results = $wpdb->get_results( "SELECT option_name as name, option_value as value FROM $wpdb->options WHERE option_name IN ( $options )", OBJECT_K ); // WPCS: unprepared SQL ok.
}
foreach ( $prefixes as $prefix ) {
foreach ( $option_names as $option_name ) {
$option_name = $prefix . $option_name;
if ( isset( $results[ $option_name ] ) ) {
// Cache the value.
$value = $results[ $option_name ]->value;
$value = maybe_unserialize( $value );
wp_cache_set( "$cache_prefix$option_name", $value, $cache_group );
} else {
// No value.
$not_exist[ $option_name ] = true;
}
}
}
if ( ! $not_exist ) {
return;
}
// Cache the options that don't exist in the DB.
$notoptions = wp_cache_get( $notoptions_key, $cache_group );
$notoptions = is_array( $notoptions ) ? $notoptions : array();
$notoptions = array_merge( $notoptions, $not_exist );
wp_cache_set( $notoptions_key, $notoptions, $cache_group );
}