| Server IP : 104.21.74.147 / Your IP : 216.73.217.154 Web Server : nginx/1.24.0 System : Linux wordpress-sites 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/rebeccaone.com/wp-content/plugins/envira-gallery/src/Functions/ |
Upload File : |
<?php
/**
* Envira Common Functions.
*
* @since 1.7.0
*
* @package Envira_Gallery
* @author Envira Gallery Team <[email protected]>
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Helper Method for Cropping Position.
*
* @since 1.7.0
*
* @access public
* @return array
*/
function envira_crop_position() {
$position = [
[
'value' => 'c',
'name' => __( 'Center', 'envira-gallery' ),
],
[
'value' => 'tl',
'name' => __( 'Top Left', 'envira-gallery' ),
],
[
'value' => 'tr',
'name' => __( 'Top Right', 'envira-gallery' ),
],
[
'value' => 'bl',
'name' => __( 'Bottom Left', 'envira-gallery' ),
],
[
'value' => 'br',
'name' => __( 'Bottom Right', 'envira-gallery' ),
],
];
return apply_filters( 'envira_crop_positions', $position );
}
/**
* Helper method for retrieving columns.
*
* @since 1.7.0
*
* @return array Array of column data.
*/
function envira_get_columns() {
$columns = [
[
'value' => '2',
'name' => __( 'Two Columns (2)', 'envira-gallery' ),
],
[
'value' => '3',
'name' => __( 'Three Columns (3)', 'envira-gallery' ),
],
[
'value' => '4',
'name' => __( 'Four Columns (4)', 'envira-gallery' ),
],
[
'value' => '5',
'name' => __( 'Five Columns (5)', 'envira-gallery' ),
],
[
'value' => '6',
'name' => __( 'Six Columns (6)', 'envira-gallery' ),
],
[
'value' => '7',
'name' => __( 'Seven Columns (7)', 'envira-gallery' ),
],
[
'value' => '8',
'name' => __( 'Eight Columns (8)', 'envira-gallery' ),
],
[
'value' => '9',
'name' => __( 'Nine Columns (9)', 'envira-gallery' ),
],
[
'value' => '10',
'name' => __( 'Ten Columns (10)', 'envira-gallery' ),
],
[
'value' => '11',
'name' => __( 'Eleven Columns (11)', 'envira-gallery' ),
],
[
'value' => '12',
'name' => __( 'Twelve Columns (12)', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_columns', $columns );
}
/**
* Helper method for retrieving layouts.
*
* @since 1.9.0
*
* @return array Array of column data.
*/
function envira_get_layouts() {
$layouts = [
'automatic' => [
'name' => 'Automatic',
'config' => [
'columns' => '0',
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/automatic-layout.png',
],
'mason' => [
'name' => 'Mason',
'config' => [
'columns' => '3',
'isotope' => true,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/mason-layout.png',
],
'grid' => [
'name' => 'Grid',
'config' => [
'columns' => '3',
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/grid-layout.png',
],
'square' => [
'name' => 'Square',
'config' => [],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/square-layout.png',
],
'blogroll' => [
'name' => 'Blogroll',
'config' => [
'columns' => 3,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/blogroll-layout.png',
],
'bnb' => [
'name' => 'BnB',
'config' => [
'columns' => 1,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/bnb-layout.png',
],
'polaroid' => [
'name' => 'Polaroid',
'config' => [
'columns' => 1,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/polaroid-layout.png',
],
'creative' => [
'name' => 'Creative',
'config' => [
'columns' => 1,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/creative-layout.png',
],
'vertical' => [
'name' => 'Vertical Focus',
'config' => [
'columns' => 1,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/vertical-focus-layout.png',
],
'grid-fixed-title' => [
'name' => 'Grid Fixed Title',
'config' => [
'columns' => 3,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/grid_fixed_title_layout.png',
],
'spread-harmony' => [
'name' => 'Spread Harmony',
'config' => [
'columns' => 4,
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/spread-harmony-layout.png',
],
'highlight-grid' => [
'name' => 'Highlight Grid',
'config' => [
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/highlight-grid-layout.png',
],
'vertical-line-grid' => [
'name' => 'Vertical Line Grid',
'config' => [
'columns' => '3',
'isotope' => false,
],
'thumbnail' => trailingslashit( ENVIRA_URL ) . 'assets/images/vertical-line-grid-layout.png',
],
];
return apply_filters( 'envira_gallery_layouts', $layouts );
}
/**
* Helper method for retrieving layout config.
*
* @since 1.9.0
* @param string $layout The layout.
* @return array Array of column data.
*/
function envira_get_layout_config( $layout ) {
$layouts = envira_get_layouts();
return $layouts[ $layout ]['config'];
}
/**
* Helper method for retrieving justified gallery themes.
*
* @since 1.7.0
*
* @return array Array of gallery theme data.
*/
function envira_get_justified_gallery_themes() {
$themes = [
[
'value' => 'normal',
'name' => __( 'Normal', 'envira-gallery' ),
'file' => ENVIRA_FILE,
],
];
return apply_filters( 'envira_gallery_justified_gallery_themes', $themes );
}
/**
* Helper method for retrieving justified gallery themes.
*
* @since 1.7.0
*
* @return array Array of gallery theme data.
*/
function envira_get_justified_gallery_themes_details() {
$details = [
[
'value' => 'normal',
'name' => __( 'Normal', 'envira-gallery' ),
'file' => ENVIRA_FILE,
],
[
'value' => 'hover',
'name' => __( 'On Hover', 'envira-gallery' ),
'file' => ENVIRA_FILE,
],
];
return apply_filters( 'envira_gallery_justified_gallery_themes_details', $details );
}
/**
* Helper method for retrieving display description options.
*
* @since 1.7.0
*
* @return array Array of description placement options.
*/
function envira_get_display_description_options() {
$descriptions = [
[
'name' => __( 'Do not display', 'envira-gallery' ),
'value' => 0,
],
[
'name' => __( 'Display above galleries', 'envira-gallery' ),
'value' => 'above',
],
[
'name' => __( 'Display below galleries', 'envira-gallery' ),
'value' => 'below',
],
];
return apply_filters( 'envira_gallery_display_description_options', $descriptions );
}
/**
* Helper method for retrieving display sorting options.
*
* @since 1.7.0
*
* @param bool $is_album Is an album.
* @return array Array of sorting options
*/
function envira_get_sorting_options( $is_album = false ) {
$options = [
[
'name' => __( 'No Sorting', 'envira-gallery' ),
'value' => 0,
],
[
'name' => __( 'Random', 'envira-gallery' ),
'value' => 1, // Deliberate, as we map the 'random' config key which was a true/false.
],
[
'name' => __( 'Published Date', 'envira-gallery' ),
'value' => 'date',
],
[
'name' => __( 'Title', 'envira-gallery' ),
'value' => 'title',
],
[
'name' => __( 'Caption', 'envira-gallery' ),
'value' => 'caption',
],
[
'name' => __( 'Alt', 'envira-gallery' ),
'value' => 'alt',
],
];
if ( false === $is_album ) {
$options[] = [
'name' => __( 'Filename', 'envira-gallery' ),
'value' => 'src',
];
$options[] = [
'name' => __( 'URL', 'envira-gallery' ),
'value' => 'link',
];
}
return apply_filters( 'envira_gallery_sorting_options', $options );
}
/**
* Helper method for retrieving sorting directions
*
* @since 1.7.0
*
* @return array Array of sorting directions
*/
function envira_get_sorting_directions() {
$directions = [
[
'name' => __( 'Ascending (A-Z)', 'envira-gallery' ),
'value' => 'ASC',
],
[
'name' => __( 'Descending (Z-A)', 'envira-gallery' ),
'value' => 'DESC',
],
];
return apply_filters( 'envira_gallery_sorting_directions', $directions );
}
/**
* Helper method for retrieving title displays.
*
* @since 1.7.0
*
* @return array Array of title display data.
*/
function envira_get_title_displays() {
$displays = [
[
'value' => 'float',
'name' => __( 'Float', 'envira-gallery' ),
],
[
'value' => 'inside',
'name' => __( 'Inside', 'envira-gallery' ),
],
[
'value' => 'outside',
'name' => __( 'Outside', 'envira-gallery' ),
],
[
'value' => 'over',
'name' => __( 'Over', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_title_displays', $displays );
}
/**
* Helper method for retrieving arrow positions.
*
* @since 1.7.0
*
* @return array Array of arrow position display data.
*/
function envira_get_arrows_positions() {
$displays = [
[
'value' => 'inside',
'name' => __( 'Inside', 'envira-gallery' ),
],
[
'value' => 'outside',
'name' => __( 'Outside', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_arrows_positions', $displays );
}
/**
* Helper method for retrieving lightbox transition effects.
*
* @since 1.7.0
*
* @return array Array of transition effect data.
*/
function envira_get_transition_effects() {
$effects = [
[
'value' => 'false',
'name' => __( 'No Effect', 'envira-gallery' ),
],
[
'value' => 'fade',
'name' => __( 'Fade', 'envira-gallery' ),
],
[
'value' => 'slide',
'name' => __( 'Slide', 'envira-gallery' ),
],
[
'value' => 'circular',
'name' => __( 'Circular', 'envira-gallery' ),
],
[
'value' => 'tube',
'name' => __( 'Tube', 'envira-gallery' ),
],
[
'value' => 'rotate',
'name' => __( 'Rotate', 'envira-gallery' ),
],
[
'value' => 'zoom-in-out',
'name' => __( 'Zoom-In-Out', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_transition_effects', $effects );
}
/**
* Helper Method for Envira Open Effects.
*
* @access public
* @return array
*/
function envira_get_envirabox_open_effects() {
$effects = [
[
'value' => 'none',
'name' => __( 'No Effect', 'envira-gallery' ),
],
[
'value' => 'fade',
'name' => __( 'Fade', 'envira-gallery' ),
],
[
'value' => 'zoom-in-out',
'name' => __( 'Zoom-In-Out', 'envira-gallery' ),
],
[
'value' => 'zoom',
'name' => __( 'Zoom', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_open_effects', $effects );
}
/**
* Helper method for retrieving toolbar positions.
*
* @since 1.7.0
*
* @return array Array of toolbar position data.
*/
function envira_get_toolbar_positions() {
$positions = [
[
'value' => 'top',
'name' => __( 'Top', 'envira-gallery' ),
],
[
'value' => 'bottom',
'name' => __( 'Bottom', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_toolbar_positions', $positions );
}
/**
* Helper method for retrieving thumbnail positions.
*
* @since 1.7.0
*
* @return array Array of thumbnail position data.
*/
function envira_get_thumbnail_positions() {
$positions = [
[
'value' => 'top',
'name' => __( 'Top', 'envira-gallery' ),
],
[
'value' => 'bottom',
'name' => __( 'Bottom', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_thumbnail_positions', $positions );
}
/**
* Helper method for retrieving Justified Last Row.
*
* @since 1.7.0
*
* @return array Array of last data.
*/
function envira_get_justified_last_row() {
$layouts = [
[
'value' => 'nojustify',
'name' => __( 'Left', 'envira-gallery' ),
],
[
'value' => 'center',
'name' => __( 'Center', 'envira-gallery' ),
],
[
'value' => 'right',
'name' => __( 'Right', 'envira-gallery' ),
],
[
'value' => 'justify',
'name' => __( 'Fill', 'envira-gallery' ),
],
[
'value' => 'hide',
'name' => __( 'Hide', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_justified_last_row', $layouts );
}
/**
* Helper method for retrieving additional copy options for legacy gallery views
*
* @since 1.7.0
*
* @return array Array of last data.
*/
function envira_get_additional_copy_options() {
$options = [
false => __( 'None', 'envira-gallery' ),
'title' => __( 'Title', 'envira-gallery' ),
'caption' => __( 'Caption', 'envira-gallery' ),
'title_caption' => __( 'Title + Caption', 'envira-gallery' ),
];
return apply_filters( 'envira_gallery_get_additional_copy_options', $options );
}
/**
* Retrieves the slider config defaults.
*
* @since 1.7.0
*
* @param int $post_id The current post ID.
* @return array sArray of slider config defaults.
*/
function envira_get_config_defaults( $post_id ) {
// Prepare default values.
$defaults = [
// Images Tab.
'type' => 'default',
// Config Tab.
'layout' => 'automatic',
'columns' => '4',
'justified_row_height' => 150, // automatic/justified layout.
'justified_gallery_theme' => 'normal',
'justified_margins' => 1,
'justified_last_row' => 'nojustify',
'justified_gallery_theme_detail' => '',
'gallery_theme' => 'base',
'display_description' => 0,
'description' => '',
'gutter' => 10,
'margin' => 10,
'random' => 0,
'sorting_direction' => 'ASC',
'image_size' => 'default', // Default = uses the below crop_width and crop_height.
'image_sizes_random' => [],
'crop_width' => 640,
'crop_height' => 480,
'square_size' => 300,
'crop' => 0,
'crop_position' => 'c',
'dimensions' => 0,
'isotope' => 1,
'css_animations' => 1, // Depricated @since 1.8.0.
'css_opacity' => 100, // Depricated @since 1.8.0.
'lightbox_title_caption' => 'title',
'additional_copy_title' => 0,
'additional_copy_caption' => 0,
'additional_copy_automatic_title' => 1,
'additional_copy_automatic_caption' => 1,
'additional_copy_title_mobile' => 0,
'additional_copy_caption_mobile' => 0,
'additional_copy_automatic_title_mobile' => 1,
'additional_copy_automatic_caption_mobile' => 1,
'lazy_loading' => 1, // lazy loading 'ON' for new galleries.
'lazy_loading_delay' => 500,
'sort_order' => '0',
// Lightbox.
'lightbox_enabled' => 1,
'gallery_link_enabled' => 1,
'lightbox_theme' => 'base_dark',
'lightbox_image_size' => 'default',
'lightbox_html_caption' => 0,
'title_display' => 'float',
'arrows' => 1,
'arrows_position' => 'inside',
'keyboard' => 1, // Depricated @since 1.8.1.
'mousewheel' => 1, // Depricated @since 1.8.1.
'toolbar' => 1,
'toolbar_title' => 0,
'toolbar_position' => 'top',
'aspect' => 1,
'loop' => 1,
'lightbox_open_close_effect' => 'fade',
'effect' => 'fade',
'html5' => 0,
'supersize' => 0,
// Thumbnails.
'thumbnails' => 1,
'thumbnails_width' => 75,
'thumbnails_height' => 50,
'thumbnails_position' => 'bottom',
// Mobile.
'mobile' => 1,
'mobile_width' => 320,
'mobile_height' => 240,
'mobile_lightbox' => 1,
'mobile_touchwipe' => 1,
'mobile_touchwipe_close' => 0,
'mobile_arrows' => 1,
'mobile_toolbar' => 1,
'mobile_thumbnails' => 1,
'mobile_thumbnails_width' => 75,
'mobile_thumbnails_height' => 50,
'mobile_justified_row_height' => 80,
// Misc.
'title' => '',
'slug' => '',
'classes' => [],
'rtl' => 0,
'show_more_text' => __( 'Click for more', 'envira-gallery' ),
];
// Allow devs to filter the defaults.
$defaults = apply_filters( 'envira_gallery_defaults', $defaults, $post_id );
return $defaults;
}
add_action( 'upload_mimes', 'envira_add_file_types_to_uploads' );
/**
* Add support for SVgs to the meida Library
*
* @since 1.8.6
*
* @param array $file_types Core file types.
* @return array
*/
function envira_add_file_types_to_uploads( $file_types ) {
$new_filetypes = [];
$new_filetypes['svg'] = 'image/svg+xml';
$file_types = array_merge( $file_types, $new_filetypes );
return $file_types;
}
/**
* Returns an array of supported file type groups and file types
*
* @since 1.7.0
*
* @return array Supported File Types
*/
function envira_get_supported_filetypes() {
$supported_file_types = [
[
'title' => __( 'Image Files', 'envira-gallery' ),
'extensions' => 'svg,jpg,jpeg,jpe,gif,png,bmp,tif,tiff,SVG,JPG,JPEG,JPE,GIF,PNG,BMP,TIF,TIFF,webp,WEBP',
],
];
// Allow Developers and Addons to filter the supported file types.
$supported_file_types = apply_filters( 'envira_gallery_supported_file_types', $supported_file_types );
return $supported_file_types;
}
/**
* Returns an array of support file types in full MIME format
*
* @since 1.7.0
*
* @return array Supported File Types
*/
function envira_get_supported_filetypes_mimes() {
$supported_file_types = [
'image/jpg',
'image/jpeg',
'image/jpe',
'image/gif',
'image/png',
'image/bmp',
'image/tif',
'image/tiff',
'image/webp',
];
// Allow Developers and Addons to filter the supported file types.
$supported_file_types = apply_filters( 'envira_gallery_supported_file_types_mimes', $supported_file_types );
return $supported_file_types;
}
/**
* Returns an array of positions for new images to be added to in an existing Gallery
*
* @since 1.7.0
*
* @return array
*/
function envira_get_media_positions() {
$positions = [
[
'value' => 'before',
'name' => __( 'Before Existing Images', 'envira-gallery' ),
],
[
'value' => 'after',
'name' => __( 'After Existing Images', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_media_positions', $positions );
}
/**
* Returns an array of media deletion options, when an Envira Gallery is deleted
*
* @since 1.7.0
*
* @return array
*/
function envira_get_media_delete_options() {
$options = [
[
'value' => '',
'name' => __( 'No', 'envira-gallery' ),
],
[
'value' => '1',
'name' => __( 'Yes', 'envira-gallery' ),
],
];
return apply_filters( 'envira_gallery_media_delete_options', $options );
}
/**
* Sorts the gallery
*
* @since 1.7.0
*
* @param array $data Gallery Data.
* @param string $sort_type Sorting Type.
* @param string $sort_direction Sorting Direction.
* @param boolean $flush_cache Flush the transient or not.
* @return array
*/
function envira_sort_gallery( $data, $sort_type, $sort_direction, $flush_cache = false ) {
// Dont go any further if datas not set.
if ( empty( $data ) ) {
return false;
}
// We need this part of $data populated with something.
if ( empty( $data['gallery'] ) ) {
return $data;
}
// Return if we dont have a sort type.
if ( empty( $sort_type ) || empty( $sort_direction ) ) {
return $data;
}
if ( empty( $data['gallery'] ) ) {
echo 'no gallery images?';
exit;
}
// Update the sort type.
$data['config']['sort_order'] = $sort_type;
switch ( $sort_type ) {
case '1':
// Shuffle keys.
$keys = array_keys( $data['gallery'] );
shuffle( $keys );
// Rebuild array in new order.
$new = [];
foreach ( $keys as $key ) {
$new[ $key ] = $data['gallery'][ $key ];
}
// Assign back to gallery.
$data['gallery'] = $new;
break;
case 'src':
case 'title':
case 'status':
case 'caption': // new for backend sort.
case 'alt': // new for backend sort.
case 'link':
// Get metadata.
$keys = [];
foreach ( $data['gallery'] as $id => $item ) {
if ( isset( $item[ $sort_type ] ) ) {
if ( 'src' === $sort_type ) {
$keys[ $id ] = basename( wp_strip_all_tags( $item[ $sort_type ] ) );
} else {
$keys[ $id ] = wp_strip_all_tags( $item[ $sort_type ] );
}
}
}
// Sort titles / captions.
if ( 'ASC' === $sort_direction ) {
natcasesort( $keys );
} else {
arsort( $keys, SORT_NATURAL | SORT_FLAG_CASE );
}
// Iterate through sorted items, rebuilding gallery.
$new_sort = [];
foreach ( $keys as $key => $title ) {
$new_sort[ $key ] = $data['gallery'][ $key ];
}
// Assign back to gallery.
$data['gallery'] = $new_sort;
break;
/**
* Published Date.
*/
case 'date':
// Get published date for each.
$keys = [];
foreach ( $data['gallery'] as $id => $item ) {
// If the attachment isn't in the Media Library, we can't get a post date - assume now.
$attachment = get_post( $id );
if ( ! is_numeric( $id ) || ( false === $attachment ) ) {
$keys[ $id ] = gmdate( 'Y-m-d H:i:s' );
} else {
$keys[ $id ] = ( ! empty( $attachment->post_date ) ) ? $attachment->post_date : false;
}
}
// Sort titles / captions.
if ( 'ASC' === $sort_direction ) {
asort( $keys );
} else {
arsort( $keys );
}
// Iterate through sorted items, rebuilding gallery.
$new = [];
foreach ( $keys as $key => $title ) {
$new[ $key ] = $data['gallery'][ $key ];
}
// Assign back to gallery.
$data['gallery'] = $new;
break;
case 'date':
break;
case '0':
break;
}
$data = apply_filters( 'envira_sort_gallery_custom', $data, $sort_type, $sort_direction, $flush_cache );
return $data;
}
/**
* Helper method to return the max execution time for scripts.
*
* @since 1.7.0
*/
function envira_get_max_execution_time() {
$time = ini_get( 'max_execution_time' );
return ! $time || empty( $time ) ? (int) 0 : $time;
}
/**
* Helper method to return the transient expiration time
*
* @since 1.7.0
*
* @param string $plugin Plugin to get transient Expiration Time.
* @return int Expiration Time (in seconds)
*/
function envira_get_transient_expiration_time( $plugin = 'envira-gallery' ) {
// Define the default.
$default = DAY_IN_SECONDS;
// Allow devs to filter this depending on the plugin.
$default = apply_filters( 'envira_gallery_get_transient_expiration_time', $default, $plugin );
// Return.
return $default;
}
/**
* Iterates through all Post Types, returning an array of reserved slugs
*
* @since 1.7.0
*/
function envira_standalone_get_reserved_post_type_slugs() {
$post_types = get_post_types();
if ( ! is_array( $post_types ) ) {
return; // Something went wrong fetching Post Types.
}
$slugs = [];
foreach ( $post_types as $post_type ) {
// Skip our own post type.
if ( 'envira' === $post_type || 'envira_album' === $post_type ) {
continue;
}
$post_type_obj = get_post_type_object( $post_type );
if ( ! isset( $post_type_obj->rewrite['slug'] ) ) {
continue;
}
// Add slug to array.
$slugs[] = $post_type_obj->rewrite['slug'];
}
return $slugs;
}
/**
* Checks whether to see if Standlone is enabled.
*
* Since 1.7.0
*
* @access public
* @return bool
*/
function envira_is_standalone_enabled() {
$standalone = envira_get_setting( 'standalone_enabled' );
if ( ! $standalone ) {
return false;
}
return true;
}
/**
* Helper method to minify a string of data.
*
* @since 1.7.0
*
* @param string $string_data String of data to minify.
* @param bool $strip_double_foward_slashes Strip Double Forward Slashes.
*
* @return string $string Minified string of data.
*/
function envira_minify( $string_data, $strip_double_foward_slashes = true ) {
// Added a switch for stripping double forwardslashes.
// This can be disabled when using URLs in JS, to ensure http:// doesn't get removed.
// All other comment removal and minification will take place.
$strip_double_foward_slashes = apply_filters( 'envira_minify_strip_double_forward_slashes', $strip_double_foward_slashes );
if ( $strip_double_foward_slashes ) {
$clean = preg_replace( '/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\')\/\/.*))/', '', $string_data );
} else {
// Use less aggressive method.
$clean = preg_replace( '!/\*.*?\*/!s', '', $string_data );
$clean = preg_replace( '/\n\s*\n/', "\n", $clean );
}
$clean = str_replace( [ "\r\n", "\r", "\t", "\n", ' ', ' ', ' ' ], '', $clean );
return apply_filters( 'envira_gallery_minified_string', $clean, $string_data );
}
/**
* Gets the slug from the options table. If blank or does not exist, defaults
* to 'envira'
*
* @since 1.7.0
*
* @param string $type Type (gallery|albums).
* @return string $slug Slug.
*/
function envira_standalone_get_the_slug( $type ) {
// Get slug.
switch ( $type ) {
case 'gallery':
$slug = get_option( 'envira-gallery-slug' );
if ( ! $slug || empty( $slug ) ) {
// Fallback to check for previous version option name.
$slug = get_option( 'envira_standalone_slug' );
$galleries = envira_get_galleries( false, false ); // don't ignore empty, don't ignore cache.
if ( ( ! $slug || empty( $slug ) ) && false === $galleries ) {
$slug = 'gallery';
} else {
$slug = 'envira';
}
}
break;
case 'albums':
$slug = get_option( 'envira-albums-slug' );
if ( ! $slug || empty( $slug ) ) {
$albums = function_exists( 'get_albums' ) ? envira_get_albums( false, false ) : false; // don't ignore empty, don't ignore cache.
if ( false === $albums ) {
$slug = 'album';
} else {
$slug = 'envira_album';
}
}
break;
default:
$slug = 'envira'; // Fallback.
break;
}
return $slug;
}
/**
* Old function that got the slug from the options table. Has to be here if someone is using older albums addon.
*
* @since 1.8.4.5
*
* @param string $type Type (gallery|albums).
* @return string $slug Slug.
*/
function envira_standalone_get_slug( $type ) {
return envira_standalone_get_the_slug( $type );
}
/**
* Helper method for getting a setting's value. Falls back to the default
* setting value if none exists in the options table.
*
* @since 1.7.0
*
* @param string $key The setting key to retrieve.
* @param string $default_value Default value.
*
* @return string Key value on success, false on failure.
*/
function envira_get_setting( $key, $default_value = '' ) {
// Prefix the key.
$prefixed_key = 'envira_gallery_' . $key;
// Get the option value.
$value = get_option( $prefixed_key );
// If no value exists, fallback to the default.
if ( ! isset( $value ) || false === $value ) {
$value = ( '' !== $default_value ) ? $default_value : envira_get_setting_default( $key );
}
// Allow devs to filter.
$value = apply_filters( 'envira_gallery_get_setting', $value, $key, $prefixed_key );
return $value;
}
/**
* Helper method for getting a setting's default value
*
* @since 1.7.0
*
* @param string $key The default setting key to retrieve.
* @return string Key value on success, false on failure.
*/
function envira_get_setting_default( $key ) {
// Prepare default values.
$defaults = envira_get_setting_defaults();
// Return the key specified.
return isset( $defaults[ $key ] ) ? $defaults[ $key ] : false;
}
/**
* Retrieves the default settings
*
* @since 1.7.0
*
* @return array Array of default settings.
*/
function envira_get_setting_defaults() {
// Prepare default values.
$defaults = [
'media_position' => 'after',
'standalone_enabled' => true,
'compression_sizes' => [],
'permissions_create' => '',
];
// Allow devs to filter the defaults.
$defaults = apply_filters( 'envira_gallery_settings_defaults', $defaults );
return $defaults;
}
/**
* Helper method for updating a setting's value.
*
* @since 1.7.0
*
* @param string $key The setting key.
* @param string $value The value to set for the key.
* @return void
*/
function envira_update_setting( $key, $value ) {
// Prefix the key.
$key = 'envira_gallery_' . $key;
// Allow devs to filter.
$value = apply_filters( 'envira_gallery_get_setting', $value, $key );
// Update option.
update_option( $key, $value );
}
/**
* Helper Method to get allowed tags.
*
* @access public
* @param array $tags (default: array()) Tags to allow.
* @return array
*/
function envira_get_allowed_tags( $tags = [] ) {
$allowed_html_tags = [
'a' => [
'href' => [],
'title' => [],
'class' => [],
'target' => [],
],
'br' => [],
'hr' => [],
'em' => [],
'strong' => [],
'p' => [],
'strike' => [],
'del' => [],
];
$tags = wp_parse_args( $tags, $allowed_html_tags );
return apply_filters( 'envira_gallery_allowed_tags', $tags );
}
/**
* Get user license Key.
*
* @since 1.7.0
*
* @access public
* @return string|bool
*/
function envira_get_license_key() {
$option = get_option( 'envira_gallery' );
$key = false;
if ( empty( $option['key'] ) ) {
if ( defined( 'ENVIRA_LICENSE_KEY' ) ) {
$key = ENVIRA_LICENSE_KEY;
}
} else {
$key = $option['key'];
}
return apply_filters( 'envira_gallery_license_key', $key );
}