Server IP : 15.235.198.142 / Your IP : 216.73.216.159 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/rhodeworks/wp-content/plugins/nextgen-gallery/src/Display/ |
Upload File : |
<?php namespace Imagely\NGG\Display; use Imagely\NGG\Settings\Settings; use Imagely\NGG\DataTypes\Lightbox; class LightboxManager { private $lightboxes = []; private $has_registered_default_lightboxes = false; /** * @var LightboxManager */ private static $_instance = null; /** * @return LightboxManager */ public static function get_instance() { if ( ! isset( self::$_instance ) ) { self::$_instance = new LightboxManager(); } return self::$_instance; } public function register_defaults() { $settings = Settings::get_instance(); // No lightbox at all. $none = new Lightbox( 'none' ); $none->title = \__( 'None', 'nggallery' ); $this->register( 'none', $none ); $simplelightbox = new Lightbox( 'simplelightbox' ); $simplelightbox->title = \__( 'Simplelightbox', 'nggallery' ); $simplelightbox->code = 'class="ngg-simplelightbox" rel="%GALLERY_NAME%"'; $simplelightbox->styles = [ [ 'Lightbox/simplelightbox/simple-lightbox.css', 'photocrati-lightbox#simplelightbox/simple-lightbox.css' ], ]; $simplelightbox->scripts = [ [ 'Lightbox/simplelightbox/simple-lightbox.js', 'photocrati-lightbox#simplelightbox/simple-lightbox.js' ], [ 'Lightbox/simplelightbox/nextgen_simple_lightbox_init.js', 'photocrati-lightbox#simplelightbox/nextgen_simple_lightbox_init.js' ], ]; $this->register( 'simplelightbox', $simplelightbox ); $fancybox = new Lightbox( 'fancybox' ); $fancybox->title = \__( 'Fancybox', 'nggallery' ); $fancybox->code = 'class="ngg-fancybox" rel="%GALLERY_NAME%"'; $fancybox->styles = [ [ 'Lightbox/fancybox/jquery.fancybox-1.3.4.css', 'photocrati-lightbox#fancybox/jquery.fancybox-1.3.4.css' ], ]; $fancybox->scripts = [ [ 'Lightbox/fancybox/jquery.easing-1.3.pack.js', 'photocrati-lightbox#fancybox/jquery.easing-1.3.pack.js' ], [ 'Lightbox/fancybox/jquery.fancybox-1.3.4.pack.js', 'photocrati-lightbox#fancybox/jquery.fancybox-1.3.4.pack.js' ], [ 'Lightbox/fancybox/nextgen_fancybox_init.js', 'photocrati-lightbox#fancybox/nextgen_fancybox_init.js' ], ]; $this->register( 'fancybox', $fancybox ); $shutter = new Lightbox( 'shutter' ); $shutter->title = \__( 'Shutter', 'nggallery' ); $shutter->code = 'class="shutterset_%GALLERY_NAME%"'; $shutter->styles = [ [ 'Lightbox/shutter/shutter.css', 'photocrati-lightbox#shutter/shutter.css' ], ]; $shutter->scripts = [ [ 'Lightbox/shutter/shutter.js', 'photocrati-lightbox#shutter/shutter.js' ], [ 'Lightbox/shutter/nextgen_shutter.js', 'photocrati-lightbox#shutter/nextgen_shutter.js' ], ]; $shutter->values = [ 'nextgen_shutter_i18n' => [ 'msgLoading' => \__( 'L O A D I N G', 'nggallery' ), 'msgClose' => \__( 'Click to Close', 'nggallery' ), ], ]; $this->register( 'shutter', $shutter ); $shutter2 = new Lightbox( 'shutter2' ); $shutter2->title = \__( 'Shutter Reloaded', 'nggallery' ); $shutter2->code = 'class="shutterset_%GALLERY_NAME%"'; $shutter2->styles = [ [ 'Lightbox/shutter_reloaded/shutter.css', 'photocrati-lightbox#shutter_reloaded/shutter.css' ], ]; $shutter2->scripts = [ [ 'Lightbox/shutter_reloaded/shutter.js', 'photocrati-lightbox#shutter_reloaded/shutter.js' ], [ 'Lightbox/shutter_reloaded/nextgen_shutter_reloaded.js', 'photocrati-lightbox#shutter_reloaded/nextgen_shutter_reloaded.js' ], ]; $shutter2->values = [ 'nextgen_shutter2_i18n' => [ \__( 'Previous', 'nggallery' ), \__( 'Next', 'nggallery' ), \__( 'Close', 'nggallery' ), \__( 'Full Size', 'nggallery' ), \__( 'Fit to Screen', 'nggallery' ), \__( 'Image', 'nggallery' ), \__( 'of', 'nggallery' ), \__( 'Loading...', 'nggallery' ), ], ]; $this->register( 'shutter2', $shutter2 ); $thickbox = new Lightbox( 'thickbox' ); $thickbox->title = \__( 'Thickbox', 'nggallery' ); $thickbox->code = "class='thickbox' rel='%GALLERY_NAME%'"; $thickbox->styles = [ 'wordpress#thickbox' ]; $thickbox->scripts = [ [ 'Lightbox/thickbox/nextgen_thickbox_init.js', 'photocrati-lightbox#thickbox/nextgen_thickbox_init.js' ], [ 'Lightbox/thickbox/thickbox.js', 'photocrati-lightbox#thickbox/thickbox.js' ], ]; $thickbox->values = [ 'nextgen_thickbox_i18n' => [ 'next' => \__( 'Next >', 'nggallery' ), 'prev' => \__( '< Prev', 'nggallery' ), 'image' => \__( 'Image', 'nggallery' ), 'of' => \__( 'of', 'nggallery' ), 'close' => \__( 'Close', 'nggallery' ), 'noiframes' => \__( 'This feature requires inline frames. You have iframes disabled or your browser does not support them.', 'nggallery' ), ], ]; $this->register( 'thickbox', $thickbox ); // Allow third parties to integrate. do_action( 'ngg_registered_default_lightboxes' ); // Custom lightbox. $custom = new Lightbox( 'custom' ); $custom->title = \__( 'Custom', 'nggallery' ); $custom->code = $settings->get( 'thumbEffectCode', [] ); $custom->styles = $settings->get( 'thumbEffectStyles', [] ); $custom->scripts = $settings->get( 'thumbEffectScripts', [] ); $this->register( 'custom_lightbox', $custom ); $this->has_registered_default_lightboxes = true; } /** * @param string $name * @param Lightbox $lightbox * @return void */ public function register( $name, $lightbox ) { $lightbox->name = $name; $this->lightboxes[ $name ] = $lightbox; } /** * @param string $name * @return void */ public function deregister( $name ) { unset( $this->lightboxes[ $name ] ); } /** * @param string $name * @return Lightbox|void */ public function get( $name ) { if ( ! $this->has_registered_default_lightboxes ) { $this->register_defaults(); } if ( isset( $this->lightboxes[ $name ] ) ) { return $this->lightboxes[ $name ]; } } /** * Returns which lightbox effect has been chosen * * Highslide and jQuery.Lightbox were removed in 2.0.73 due to licensing. If a user has selected either of those * options we silently make their selection fallback to Fancybox. * * @return Lightbox */ public function get_selected() { $settings = Settings::get_instance(); $thumbEffect = $settings->get( 'thumbEffect' ); // These have been removed from NextGEN; if they were previously selected update them to Fancybox. if ( in_array( $thumbEffect, [ 'highslide', 'lightbox' ] ) ) { $settings->set( 'thumbEffect', 'fancybox' ); } // Fallback to SimpleLightbox in case of failure. if ( ! $this->is_registered( $thumbEffect ) || empty( $thumbEffect ) ) { $settings->set( 'thumbEffect', 'simplelightbox' ); } return $this->get( $settings->get( 'thumbEffect' ) ); } /** * @return array */ public function get_all() { if ( ! $this->has_registered_default_lightboxes ) { $this->register_defaults(); } return array_values( $this->lightboxes ); } /** * @param string $name * @return bool */ public function is_registered( $name ) { return ! is_null( $this->get( $name ) ); } public function maybe_enqueue() { $settings = Settings::get_instance(); $thumbEffectContext = $settings->get( 'thumbEffectContext', '' ); if ( $thumbEffectContext != 'nextgen_images' ) { $this->enqueue(); } } /** * @param string $lightbox * @return void */ public function enqueue( $lightbox = null ) { $settings = Settings::get_instance(); $thumbEffectContext = $settings->get( 'thumbEffectContext', '' ); // If no lightbox has been provided, get the selected lightbox. if ( ! $lightbox ) { $lightbox = $this->get_selected(); } else { $lightbox = $this->get( $lightbox ); } if ( ! wp_script_is( 'ngg_lightbox_context' ) ) { wp_enqueue_script( 'ngg_lightbox_context', StaticAssets::get_url( 'Lightbox/lightbox_context.js', 'photocrati-lightbox#lightbox_context.js' ), [ 'ngg_common', 'photocrati_ajax' ], NGG_SCRIPT_VERSION, true ); } // TODO: move this into a shutter-reloaded 'value'. DisplayManager::add_script_data( 'ngg_common', 'nextgen_lightbox_settings', [ 'static_path' => trailingslashit( NGG_PLUGIN_URI ) . 'static/Lightbox/{placeholder}', 'context' => $thumbEffectContext, ], true, true ); // Enqueue lightbox resources, only if we have a configured lightbox. if ( $lightbox ) { // Add lightbox script data. if ( isset( $lightbox->values ) ) { foreach ( $lightbox->values as $name => $value ) { if ( empty( $value ) ) { continue; } DisplayManager::add_script_data( 'ngg_lightbox_context', $name, $value ); } } // Enqueue stylesheets. for ( $i = 0; $i < count( $lightbox->styles ); $i++ ) { $legacy_src = ''; $src = $lightbox->styles[ $i ]; if ( is_array( $src ) ) { list($src, $legacy_src) = $src; } if ( empty( $legacy_src ) ) { $legacy_src = $src; $src = ''; } if ( 0 === strpos( $src, 'wordpress#' ) ) { $parts = explode( 'wordpress#', $src ); wp_enqueue_style( array_pop( $parts ) ); } elseif ( 0 === strpos( $legacy_src, 'wordpress#' ) ) { $parts = explode( 'wordpress#', $legacy_src ); wp_enqueue_style( array_pop( $parts ) ); } elseif ( ! empty( $src ) || ! empty( $legacy_src ) ) { wp_enqueue_style( $lightbox->name . "-{$i}", $this->_handle_url( $src, $legacy_src ), [], NGG_SCRIPT_VERSION ); } } // Enqueue scripts. for ( $i = 0; $i < count( $lightbox->scripts ); $i++ ) { $legacy_src = ''; $src = $lightbox->scripts[ $i ]; $handle = $lightbox->name . "-{$i}"; if ( is_array( $src ) ) { list($src, $legacy_src) = $src; } if ( empty( $legacy_src ) ) { $legacy_src = $src; $src = ''; } if ( 0 === strpos( $src, 'wordpress#' ) ) { $parts = explode( 'wordpress#', $src ); wp_enqueue_script( array_pop( $parts ) ); } elseif ( 0 === strpos( $legacy_src, 'wordpress#' ) ) { $parts = explode( 'wordpress#', $legacy_src ); wp_enqueue_script( array_pop( $parts ) ); } elseif ( ! empty( $src ) || ! empty( $legacy_src ) ) { wp_enqueue_script( $handle, $this->_handle_url( $src, $legacy_src ), [ 'ngg_lightbox_context' ], NGG_SCRIPT_VERSION, true ); } } } } /** * Parses certain paths through get_static_url * * @param string $url * @param string $legacy_module_id * @return string Resulting URL */ public static function _handle_url( $url, $legacy_module_id = '' ) { if ( 0 !== strpos( $url, '/' ) && 0 !== strpos( $url, 'wordpress#' ) && 0 !== strpos( $url, 'http://' ) && 0 !== strpos( $url, 'https://' ) ) { if ( ! empty( $legacy_module_id ) && empty( $url ) ) { $url = StaticPopeAssets::get_url( $legacy_module_id ); } else { $url = StaticAssets::get_url( $url, $legacy_module_id ); } } elseif ( strpos( $url, '/' ) === 0 ) { $url = home_url( $url ); } return $url; } public function deregister_all() { $this->lightboxes = []; $this->has_registered_default_lightboxes = false; } /** * @TODO Remove this when Pro no longer requires it * @deprecated * @param string $handle * @param string $object_name * @param mixed $object_value * @param bool $define * @param bool $override * @return bool */ public function _add_script_data( $handle, $object_name, $object_value, $define = true, $override = false ) { return DisplayManager::add_script_data( $handle, $object_name, $object_value, $define, $override ); } }