| 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/Widgets/ |
Upload File : |
<?php
/**
* Widgets class.
*
* @since 1.7.0
*
* @package Envira_Gallery
* @author Envira Gallery Team
*/
namespace Envira\Widgets;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Widget Class
*/
class Widget extends \WP_Widget {
/**
* Primary class constructor.
*
* @since 1.7.0
*/
public function __construct() {
// Widget Name.
$widget_name = __( 'Envira Gallery', 'envira-gallery' );
$widget_name = apply_filters( 'envira_gallery_widget_name', $widget_name );
// .
$widget_ops = [
'classname' => 'envira-gallery',
'description' => __( 'Place an Envira gallery into a widgetized area.', 'envira-gallery' ),
];
$widget_ops = apply_filters( 'envira_gallery_widget_ops', $widget_ops );
// Control Options.
$control_ops = [
'id_base' => 'envira-gallery',
'height' => 350,
'width' => 225,
];
$control_ops = apply_filters( 'envira_gallery_widget_control_ops', $control_ops );
// Init.
parent::__construct( 'envira-gallery', $widget_name, $widget_ops, $control_ops );
add_action( 'wp_ajax_envira_widget_get_galleries', [ $this, 'widget_get_galleries' ] );
}
/**
* Get galleries for widget.
*
* @since 1.0.0
*/
public function widget_get_galleries() {
$galleries = envira_get_galleries( false );
$gallery_array = [];
if ( is_array( $galleries ) ) {
foreach ( $galleries as $gallery ) {
if ( ! isset( $gallery['id'] ) || ! $gallery['id'] ) {
continue;
}
// Instead of pulling the title from config, attempt to pull it from the gallery post first.
$gallery_post = get_post( $gallery['id'] );
if ( $gallery_post && ! empty( $gallery_post->post_title ) ) {
$title = $gallery_post->post_title;
} elseif ( ! empty( $gallery['config']['title'] ) ) {
$title = wp_specialchars_decode( $gallery['config']['title'], ENT_QUOTES );
} elseif ( ! empty( $gallery['config']['slug'] ) ) {
$title = $gallery['config']['slug'];
} else {
/* translators: %s: Gallery ID */
$title = sprintf( __( 'Gallery ID #%s', 'envira-gallery' ), $gallery['id'] );
}
$gallery_array[] = [
'gallery_title' => $title,
'gallery_id' => '' . $gallery['id'] . '',
];
}
}
$string = [ 'galleries' => $gallery_array ];
echo wp_json_encode( $string );
exit;
}
/**
* Outputs the widget within the widgetized area.
*
* @since 1.7.0
*
* @param array $args The default widget arguments.
* @param array $instance The input settings for the current widget instance.
*/
public function widget( $args, $instance ) {
// Extract arguments into variables.
extract( $args );
$gallery_id = false;
$title = false;
$number_of_images = false;
$gallery_args = false;
if ( isset( $instance['title'] ) ) {
$title = apply_filters( 'widget_title', $instance['title'] );
}
if ( isset( $instance['envira_gallery_id'] ) ) {
$gallery_id = $instance['envira_gallery_id'];
}
if ( ! $gallery_id ) {
return;
}
if ( ! empty( $instance['number_of_images'] ) ) {
$number_of_images = $instance['number_of_images'];
}
do_action( 'envira_gallery_widget_before_output', $args, $instance );
echo $before_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
do_action( 'envira_gallery_widget_before_title', $args, $instance );
// If a title exists, output it.
if ( $title ) {
echo $before_title . $title . $after_title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
do_action( 'envira_gallery_widget_before_gallery', $args, $instance );
if ( $number_of_images ) {
if ( $number_of_images > 50 ) {
$number_of_images = 50; // for performance reasons keep the max limit at 50, even if they manually enter a number in the widget input field.
}
$gallery_args = [ 'limit' => $number_of_images ];
}
// If a gallery has been selected, output it.
if ( $gallery_id ) {
envira_gallery( $gallery_id, 'id', $gallery_args );
}
do_action( 'envira_gallery_widget_after_gallery', $args, $instance );
echo $after_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
do_action( 'envira_gallery_widget_after_output', $args, $instance );
}
/**
* Sanitizes and updates the widget.
*
* @since 1.7.0
*
* @param array $new_instance The new input settings for the current widget instance.
* @param array $old_instance The old input settings for the current widget instance.
*/
public function update( $new_instance, $old_instance ) {
// Set $instance to the old instance in case no new settings have been updated for a particular field.
$instance = $old_instance;
// Sanitize user inputs.
$instance['title'] = trim( $new_instance['title'] );
$instance['envira_gallery_id'] = absint( $new_instance['envira_gallery_id'] );
$instance['number_of_images'] = absint( $new_instance['number_of_images'] ) === 0 ? '' : absint( $new_instance['number_of_images'] );
return apply_filters( 'envira_gallery_widget_update_instance', $instance, $new_instance );
}
/**
* Outputs the widget form where the user can specify settings.
*
* @since 1.7.0
*
* @param array $instance The input settings for the current widget instance.
*/
public function form( $instance ) {
// Get all available galleries and widget properties.
$galleries = _envira_get_galleries( false );
$title = isset( $instance['title'] ) ? $instance['title'] : '';
$gallery_id = isset( $instance['envira_gallery_id'] ) ? $instance['envira_gallery_id'] : false;
$number_of_images = ! empty( $instance['number_of_images'] ) ? intval( $instance['number_of_images'] ) : '';
do_action( 'envira_gallery_widget_before_form', $instance );
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'envira-gallery' ); ?></label>
<input id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%;" />
</p>
<?php do_action( 'envira_gallery_widget_middle_form', $instance ); ?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'envira_gallery_id' ) ); ?>"><?php esc_html_e( 'Gallery', 'envira-gallery' ); ?></label>
<select class="form-control" id="<?php echo esc_attr( $this->get_field_id( 'envira_gallery_id' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'envira_gallery_id' ) ); ?>" style="width: 100%;">
<!--<select class="form-control" name="choices-single-remote-fetch" id="choices-single-remote-fetch">-->
<?php
if ( is_array( $galleries ) ) {
foreach ( $galleries as $gallery ) {
if ( isset( $gallery['id'] ) ) {
$title = get_the_title( $gallery['id'] );
if ( $gallery_id && $gallery['id'] === $gallery_id ) {
echo '<option selected="selected" value="' . absint( $gallery['id'] ) . '">' . esc_html( $title ) . '</option>';
} else {
echo '<option value="' . absint( $gallery['id'] ) . '">' . esc_html( $title ) . '</option>';
}
}
}
}
?>
</select>
</p>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'number_of_images' ) ); ?>">
<?php esc_html_e( 'Number Of Images To Display?', 'envira-gallery' ); ?>
</label>
<input class="envira_widget_number_of_images" value="<?php echo esc_attr( $number_of_images ); ?>" type="text" maxlength="3" name="<?php echo esc_attr( $this->get_field_name( 'number_of_images' ) ); ?>" id="<?php echo esc_attr( $this->get_field_name( 'number_of_images' ) ); ?>" />
<br/><small>Leave blank to display all images in gallery.</small>
</p>
<?php
do_action( 'envira_gallery_widget_after_form', $instance );
}
}