HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/remoteac/public_html/wp-content/plugins/fusion-builder/shortcodes/fusion-flickr.php
<?php
/**
 * Add an element to fusion-builder.
 *
 * @package fusion-builder
 * @since 1.0
 */

if ( fusion_is_element_enabled( 'fusion_flickr' ) ) {

	if ( ! class_exists( 'FusionSC_Flickr' ) ) {
		/**
		 * Shortcode class.
		 *
		 * @package fusion-builder
		 * @since 1.0
		 */
		class FusionSC_Flickr extends Fusion_Element {

			/**
			 * The image-frame counter.
			 *
			 * @access private
			 * @since 1.0
			 * @var int
			 */
			private $flickr_counter = 1;

			/**
			 * An array of the shortcode arguments.
			 *
			 * @access protected
			 * @since 1.0
			 * @var array
			 */
			protected $args;

			/**
			 * An array of wrapper attributes.
			 *
			 * @access protected
			 * @since 3.0
			 * @var array
			 */
			protected $wrapper_attr = [
				'class' => '',
				'style' => '',
			];

			/**
			 * Constructor.
			 *
			 * @access public
			 * @since 1.0
			 */
			public function __construct() {
				parent::__construct();
				add_filter( 'fusion_attr_flickr-shortcode', [ $this, 'attr' ] );

				add_shortcode( 'fusion_flickr', [ $this, 'render' ] );
			}

			/**
			 * Gets the default values.
			 *
			 * @static
			 * @access public
			 * @since 2.0.0
			 * @return array
			 */
			public static function get_element_defaults() {
				$fusion_settings = awb_get_fusion_settings();
				return [
					'api_key'                 => 'c9d2c2fda03a2ff487cb4769dc0781ea',
					'flickr_id'               => '32452368@N05',
					'type'                    => 'photostream',
					'album_id'                => '',
					'count'                   => 10,
					'columns'                 => '',
					'columns_medium'          => '',
					'columns_small'           => '',
					'columns_spacing'         => '',
					'columns_spacing_medium'  => '',
					'columns_spacing_small'   => '',

					// aspect ratio.
					'aspect_ratio'            => '',
					'custom_aspect_ratio'     => '',
					'aspect_ratio_position_x' => '',
					'aspect_ratio_position_y' => '',

					'hover_type'              => '',
					'link_type'               => '',
					'link_target'             => '',

					// margin.
					'margin_top'              => '',
					'margin_right'            => '',
					'margin_bottom'           => '',
					'margin_left'             => '',
					'margin_top_medium'       => '',
					'margin_right_medium'     => '',
					'margin_bottom_medium'    => '',
					'margin_left_medium'      => '',
					'margin_top_small'        => '',
					'margin_right_small'      => '',
					'margin_bottom_small'     => '',
					'margin_left_small'       => '',

					// css.
					'class'                   => '',
					'id'                      => '',
					'id'                      => '',

					// animation.
					'animation_direction'     => 'left',
					'animation_offset'        => $fusion_settings->get( 'animation_offset' ),
					'animation_speed'         => '',
					'animation_type'          => '',

					// visibility.
					'hide_on_mobile'          => fusion_builder_default_visibility( 'string' ),
				];
			}

			/**
			 * Sets the args from the attributes.
			 *
			 * @access public
			 * @since 3.0
			 * @param array $args Element attributes.
			 * @return void
			 */
			public function set_args( $args ) {
				$this->defaults = self::get_element_defaults();
				$this->args     = FusionBuilder::set_shortcode_defaults( $this->defaults, $args, 'fusion_flickr' );
			}

			/**
			 * Render the shortcode
			 *
			 * @access public
			 * @since 1.0
			 * @param  array  $args    Shortcode paramters.
			 * @param  string $content Content between shortcode.
			 * @return string          HTML output.
			 */
			public function render( $args, $content = '' ) {

				$this->set_element_id( $this->flickr_counter );

				$this->set_args( $args );

				$element_styles = '';
				// Aspect ratio.
				$element_styles .= $this->generate_aspect_ratio_styles();

				// Margins.
				$element_styles .= $this->build_margin_styles();

				// Margins.
				$element_styles .= $this->build_columns_styles();

				// Output styles.
				if ( '' !== $element_styles ) {
					$element_styles = '<style>' . $element_styles . '</style>';
				}

				$html = $element_styles . '<div ' . FusionBuilder::attributes( 'flickr-shortcode' ) . '>
					<div class="fusion-loading-container fusion-clearfix">
						<div class="fusion-loading-spinner">
							<div class="fusion-spinner-1"></div>
							<div class="fusion-spinner-2"></div>
							<div class="fusion-spinner-3"></div>
						</div>
					</div>
				</div>';

				$this->flickr_counter++;

				$this->on_render();

				return apply_filters( 'fusion_element_flickr_content', $html, $args );

			}

			/**
			 * Builds the attributes array.
			 *
			 * @access public
			 * @since 1.0
			 * @return array
			 */
			public function attr() {
				$fusion_settings = awb_get_fusion_settings();

				$attr = [
					'class' => '',
					'style' => '',
				];

				$attr['id']     = $this->args['id'];
				$attr['class'] .= 'fusion-flickr-element loading flickr-' . $this->flickr_counter . ' ' . $this->args['class'];

				$attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], $attr );

				if ( '' !== $this->args['hover_type'] ) {
					$attr['class'] .= ' hover-' . $this->args['hover_type'];
				}

				if ( '' !== $this->args['api_key'] ) {
					$attr['data-api_key'] = $this->args['api_key'];
				}
				if ( '' !== $this->args['flickr_id'] ) {
					$attr['data-id'] = $this->args['flickr_id'];
				}
				if ( '' !== $this->args['type'] ) {
					$attr['data-type'] = $this->args['type'];
				}
				if ( '' !== $this->args['album_id'] ) {
					$attr['data-album_id'] = $this->args['album_id'];
				}
				if ( '' !== $this->args['count'] ) {
					$attr['data-count'] = $this->args['count'];
				}
				if ( 'lightbox' !== $this->args['link_type'] ) {
					$attr['data-lightbox'] = 'true';
				}
				if ( '' !== $this->args['link_type'] ) {
					$attr['data-link_type'] = $this->args['link_type'];
				}
				if ( 'page' === $this->args['link_type'] && '_blank' === $this->args['link_target'] ) {
					$attr['data-link_target'] = $this->args['link_target'];
				}
				if ( '' !== $fusion_settings->get( 'lazy_load' ) ) {
					$attr['data-lazy'] = $fusion_settings->get( 'lazy_load' );
				}

				if ( $this->args['animation_type'] ) {
					$attr = Fusion_Builder_Animation_Helper::add_animation_attributes( $this->args, $attr );
				}

				return $attr;
			}
			/**
			 * Generate aspect ratio styles.
			 *
			 * @access public
			 * @since 3.6
			 * @return string CSS output.
			 */
			public function generate_aspect_ratio_styles() {
				if ( '' === $this->args['aspect_ratio'] ) {
					return '';
				}

				$this->dynamic_css   = [];
				$this->base_selector = '.fusion-flickr-element.flickr-' . $this->element_id . ' .flickr-image';

				$selectors = [ $this->base_selector ];

				// Calc Ratio.
				if ( 'custom' === $this->args['aspect_ratio'] && '' !== $this->args['custom_aspect_ratio'] ) {
					$this->add_css_property( $selectors, 'padding-top', $this->args['custom_aspect_ratio'] . '%' );
				} else {
					$aspect_ratio = explode( '-', $this->args['aspect_ratio'] );
					$width        = isset( $aspect_ratio[0] ) ? $aspect_ratio[0] : '';
					$height       = isset( $aspect_ratio[1] ) ? $aspect_ratio[1] : '';
					$padding      = '' !== $width && '' !== $height ? ( $height / $width ) * 100 : '';

					$this->add_css_property( $selectors, 'padding-top', $padding . '%' );
				}

				// Set Image Postion.
				$selectors = [ $this->base_selector . ' img' ];

				$x = '' !== $this->args['aspect_ratio_position_x'] ? intval( $this->args['aspect_ratio_position_x'] ) . '%' : '50%';
				$y = '' !== $this->args['aspect_ratio_position_y'] ? intval( $this->args['aspect_ratio_position_y'] ) . '%' : '50%';

				$this->add_css_property( $selectors, 'object-position', $x . ' ' . $y );

				return $this->parse_css();
			}
			/**
			 * Builds margin styles.
			 *
			 * @access public
			 * @since 1.0
			 * @return string
			 */
			public function build_margin_styles() {
				// Responsive Margin.
				$fusion_settings = awb_get_fusion_settings();
				$styles          = '';

				foreach ( [ 'large', 'medium', 'small' ] as $size ) {
					$margin_styles = '';
					foreach ( [ 'top', 'right', 'bottom', 'left' ] as $direction ) {

						$margin_key = 'large' === $size ? 'margin_' . $direction : 'margin_' . $direction . '_' . $size;
						if ( '' !== $this->args[ $margin_key ] ) {
							$margin_styles .= 'margin-' . $direction . ' : ' . fusion_library()->sanitize->get_value_with_unit( $this->args[ $margin_key ] ) . ';';
						}
					}

					if ( '' === $margin_styles ) {
						continue;
					}

					$margin_styles = '.fusion-flickr-element.flickr-' . $this->flickr_counter . '{ ' . $margin_styles . '}';

					// Large styles, no wrapping needed.
					if ( 'large' === $size ) {
						$styles .= $margin_styles;
					} else {
						// Medium and Small size screen styles.
						$styles .= '@media only screen and (max-width:' . $fusion_settings->get( 'visibility_' . $size ) . 'px) {' . $margin_styles . '}';
					}
				}

				return $styles;
			}
			/**
			 * Build Responsive columns.
			 *
			 * @access public
			 * @since 1.0
			 * @return string
			 */
			public function build_columns_styles() {

				$fusion_settings = awb_get_fusion_settings();
				$styles          = '';

				foreach ( [ 'large', 'medium', 'small' ] as $size ) {
					$selector        = '.fusion-flickr-element.flickr-' . $this->flickr_counter;
					$columns         = 'large' === $size ? $this->args['columns'] : $this->args[ 'columns_' . $size ];
					$columns_spacing = 'large' === $size ? $this->args['columns_spacing'] : $this->args[ 'columns_spacing_' . $size ];

					$columns_style = '';

					if ( '' !== $columns ) {
						$columns_style .= 'grid-template-columns: repeat(' . $columns . ', 1fr);';
					}
					if ( '' !== $columns_spacing ) {
						$columns_style .= 'grid-gap:' . fusion_library()->sanitize->get_value_with_unit( $columns_spacing ) . ';';
					}

					if ( '' !== $columns_style ) {
						$columns_style = $selector . '{' . $columns_style . '}';
					}

					// Large styles, no wrapping needed.
					if ( 'large' === $size ) {
						$styles .= $columns_style;
					} else {
						// Medium and Small size screen styles.
						$styles .= '@media only screen and (max-width:' . $fusion_settings->get( 'visibility_' . $size ) . 'px) {' . $columns_style . '}';
					}
				}

				return $styles;
			}
			/**
			 * Load base CSS.
			 *
			 * @access public
			 * @since 3.0
			 * @return void
			 */
			public function add_css_files() {
				FusionBuilder()->add_element_css( FUSION_BUILDER_PLUGIN_DIR . 'assets/css/shortcodes/flickr.min.css' );
			}

			/**
			 * Sets the necessary scripts.
			 *
			 * @access public
			 * @since 3.2
			 * @return void
			 */
			public function on_first_render() {
				Fusion_Dynamic_JS::enqueue_script( 'fusion-flickr' );
			}
		}
	}

	new FusionSC_Flickr();

}

/**
 * Map shortcode to Avada Builder.
 *
 * @since 1.0
 */
function fusion_flickr_element() {

	fusion_builder_map(
		fusion_builder_frontend_data(
			'FusionSC_Flickr',
			[
				'name'      => esc_attr__( 'Flickr', 'fusion-builder' ),
				'shortcode' => 'fusion_flickr',
				'icon'      => 'fusiona-flickr-feed',
				'params'    => [
					[
						'type'        => 'textfield',
						'param_name'  => 'api_key',
						'heading'     => esc_attr__( 'API Key', 'fusion-builder' ),
						/* translators: Flickr API Link. */
						'description' => sprintf( __( 'Use default API key or get your own from <a href="%s" target="_blank">Flickr APP Garden</a>.', 'fusion-builder' ), 'http://www.flickr.com/services/apps/create/apply' ),
						'value'       => 'c9d2c2fda03a2ff487cb4769dc0781ea',
					],
					[
						'type'        => 'textfield',
						'heading'     => esc_attr__( 'Flickr ID', 'fusion-builder' ),
						/* translators: Flickr ID Service. */
						'description' => sprintf( __( 'Enter your Flickr ID to display your own feed. <a href="%s" target="_blank">Get your flickr ID</a>.', 'fusion-builder' ), 'https://www.webfx.com/tools/idgettr/' ),
						'param_name'  => 'flickr_id',
					],
					[
						'type'        => 'radio_button_set',
						'heading'     => esc_attr__( 'Type', 'fusion-builder' ),
						'description' => esc_attr__( 'Select your flickr feed type.', 'fusion-builder' ),
						'param_name'  => 'type',
						'default'     => 'photostream',
						'value'       => [
							'photostream' => esc_attr__( 'Photostream', 'fusion-builder' ),
							'album'       => esc_attr__( 'Album', 'fusion-builder' ),
						],
					],
					[
						'type'        => 'textfield',
						'heading'     => esc_attr__( 'Album ID', 'fusion-builder' ),
						'description' => esc_attr__( 'Enter your Flickr Album ID. The album ID is the last, numerical part of your album URL. ', 'fusion-builder' ),
						'param_name'  => 'album_id',
						'dependency'  => [
							[
								'element'  => 'type',
								'value'    => 'album',
								'operator' => '==',
							],
						],
					],
					[
						'type'        => 'range',
						'param_name'  => 'count',
						'heading'     => esc_attr__( 'Number Of Images', 'fusion-builder' ),
						'description' => esc_attr__( 'Choose the number of images you want to display.', 'fusion-builder' ),
						'value'       => 10,
						'min'         => 1,
						'max'         => 50,
					],
					[
						'type'        => 'select',
						'heading'     => esc_attr__( 'Images Aspect Ratio', 'fusion-builder' ),
						'description' => esc_attr__( 'Select the aspect ratio of the images. Images will be cropped.', 'fusion-builder' ),
						'param_name'  => 'aspect_ratio',
						'value'       => [
							''       => esc_attr__( 'Automatic', 'fusion-builder' ),
							'1-1'    => esc_attr__( '1:1', 'fusion-builder' ),
							'2-1'    => esc_attr__( '2:1', 'fusion-builder' ),
							'2-3'    => esc_attr__( '2:3', 'fusion-builder' ),
							'3-1'    => esc_attr__( '3:1', 'fusion-builder' ),
							'3-2'    => esc_attr__( '3:2', 'fusion-builder' ),
							'4-1'    => esc_attr__( '4:1', 'fusion-builder' ),
							'4-3'    => esc_attr__( '4:3', 'fusion-builder' ),
							'5-4'    => esc_attr__( '5:4', 'fusion-builder' ),
							'16-9'   => esc_attr__( '16:9', 'fusion-builder' ),
							'9-16'   => esc_attr__( '9:16', 'fusion-builder' ),
							'21-9'   => esc_attr__( '21:9', 'fusion-builder' ),
							'9-21'   => esc_attr__( '9:21', 'fusion-builder' ),
							'custom' => esc_attr__( 'Custom', 'fusion-builder' ),
						],
					],
					[
						'type'        => 'range',
						'heading'     => esc_attr__( 'Custom Aspect Ratio', 'fusion-builder' ),
						'description' => esc_attr__( 'Set a custom aspect ratio for the images.', 'fusion-builder' ),
						'param_name'  => 'custom_aspect_ratio',
						'min'         => 0,
						'max'         => 500,
						'value'       => 100,
						'dependency'  => [
							[
								'element'  => 'aspect_ratio',
								'value'    => 'custom',
								'operator' => '==',
							],
						],
					],
					[
						'type'        => 'radio_button_set',
						'heading'     => esc_attr__( 'Hover Type', 'fusion-builder' ),
						'description' => esc_attr__( 'Select the hover effect type.', 'fusion-builder' ),
						'param_name'  => 'hover_type',
						'value'       => [
							'none'    => esc_attr__( 'None', 'fusion-builder' ),
							'zoomin'  => esc_attr__( 'Zoom In', 'fusion-builder' ),
							'zoomout' => esc_attr__( 'Zoom Out', 'fusion-builder' ),
							'liftup'  => esc_attr__( 'Lift Up', 'fusion-builder' ),
						],
						'default'     => 'none',
					],
					[
						'type'        => 'radio_button_set',
						'param_name'  => 'link_type',
						'heading'     => esc_attr__( 'Image Link', 'fusion-builder' ),
						'description' => esc_attr__( 'Choose where the image should link to.', 'fusion-builder' ),
						'default'     => '',
						'value'       => [
							''         => esc_html__( 'None', 'fusion-builder' ),
							'lightbox' => esc_html__( 'Lightbox', 'fusion-builder' ),
							'page'     => esc_html__( 'Flickr Page', 'fusion-builder' ),
						],
					],
					[
						'type'        => 'radio_button_set',
						'param_name'  => 'link_target',
						'heading'     => esc_attr__( 'Image Link Target', 'fusion-builder' ),
						'description' => __( '_self = open in same window<br />_blank = open in new window.', 'fusion-builder' ),
						'default'     => '',
						'value'       => [
							''       => esc_html__( '_self', 'fusion-builder' ),
							'_blank' => esc_html__( '_blank', 'fusion-builder' ),
						],
						'dependency'  => [
							[
								'element'  => 'link_type',
								'value'    => 'page',
								'operator' => '==',
							],
						],
					],
					[
						'type'        => 'range',
						'param_name'  => 'columns',
						'heading'     => esc_attr__( 'Number Of Columns', 'fusion-builder' ),
						'description' => esc_attr__( 'Select the number of columns to display.', 'fusion-builder' ),
						'value'       => 4,
						'min'         => 1,
						'max'         => 10,
						'responsive'  => [
							'state' => 'large',
						],
						'group'       => esc_attr__( 'Design', 'fusion-builder' ),
					],
					[
						'type'        => 'range',
						'param_name'  => 'columns_spacing',
						'heading'     => esc_attr__( 'Column Spacing', 'fusion-builder' ),
						'description' => esc_attr__( 'Choose the spacing between columns.', 'fusion-builder' ),
						'value'       => 10,
						'min'         => 0,
						'max'         => 100,
						'responsive'  => [
							'state' => 'large',
						],
						'group'       => esc_attr__( 'Design', 'fusion-builder' ),
					],
					'fusion_margin_placeholder'            => [
						'param_name' => 'margin',
						'value'      => [
							'margin_top'    => '',
							'margin_right'  => '',
							'margin_bottom' => '',
							'margin_left'   => '',
						],
						'responsive' => [
							'state' => 'large',
						],
					],
					'fusion_animation_placeholder'         => [
						'preview_selector' => '.fusion-flickr-element',
					],
					[
						'type'        => 'checkbox_button_set',
						'heading'     => esc_attr__( 'Element Visibility', 'fusion-builder' ),
						'param_name'  => 'hide_on_mobile',
						'value'       => fusion_builder_visibility_options( 'full' ),
						'default'     => fusion_builder_default_visibility( 'array' ),
						'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ),
					],
					'fusion_sticky_visibility_placeholder' => [],
					[
						'type'        => 'textfield',
						'heading'     => esc_attr__( 'CSS Class', 'fusion-builder' ),
						'param_name'  => 'class',
						'value'       => '',
						'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ),
					],
					[
						'type'        => 'textfield',
						'heading'     => esc_attr__( 'CSS ID', 'fusion-builder' ),
						'param_name'  => 'id',
						'value'       => '',
						'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ),
					],

				],
			]
		)
	);

}
add_action( 'fusion_builder_before_init', 'fusion_flickr_element' );