HEX
Server: Apache/2.4.59 (Debian)
System: Linux emory.shared.1984.is 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64
User: u11574 (1020)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,popen,show_source,shell,symlink,proc_open,pcntl_exec,pcntl_fork,pcntl_wait,pcntl_alarm,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,proc_get_status,expect_popen,dl,putenv,mail
Upload Files
File: /var/www/virtual/mariaellingsen.com/htdocs/wp-content/plugins/soliloquy/includes/global/widget.php
<?php
/**
 * Widget class.
 *
 * @since 1.0.0
 *
 * @package Soliloquy
 * @author SoliloquyWP Team <support@soliloquywp.com>
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! class_exists( 'Soliloquy_Widget' ) ) {

	/**
	 * Soliloquy Widget.
	 *
	 * @since 1.0.0
	 */
	class Soliloquy_Widget extends WP_Widget {

		/**
		 * Holds the class object.
		 *
		 * @since 1.0.0
		 *
		 * @var object
		 */
		public static $instance;

		/**
		 * Path to the file.
		 *
		 * @since 1.0.0
		 *
		 * @var string
		 */
		public $file = __FILE__;

		/**
		 * Holds the base class object.
		 *
		 * @since 1.0.0
		 *
		 * @var object
		 */
		public $base;

		/**
		 * Constructor. Sets up and creates the widget with appropriate settings.
		 *
		 * @since 1.0.0
		 */
		public function __construct() {

			// Load the base class object.
			$this->base = Soliloquy::get_instance();

			// Widget options.
			$widget_ops = array(
				'classname'   => 'soliloquy',
				'description' => esc_attr__( 'Place a Soliloquy slider into a widgetized area.', 'soliloquy' ),
			);
			$widget_ops = apply_filters( 'soliloquy_widget_ops', $widget_ops );

			// Control options.
			$control_ops = array(
				'id_base' => 'soliloquy',
				'height'  => 350,
				'width'   => 225,
			);
			$control_ops = apply_filters( 'soliloquy_widget_control_ops', $control_ops );

			parent::__construct( 'soliloquy', apply_filters( 'soliloquy_widget_name', esc_attr__( 'Soliloquy', 'soliloquy' ) ), $widget_ops, $control_ops );
		}

		/**
		 * Outputs the widget within the widgetized area.
		 *
		 * @since 1.0.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 );

			$title     = apply_filters( 'widget_title', $instance['title'] );
			$slider_id = $instance['soliloquy_id'];

			do_action( 'soliloquy_widget_before_output', $args, $instance );

			echo $before_widget;

			do_action( 'soliloquy_widget_before_title', $args, $instance );

			// If a title exists, output it.
			if ( $title ) {
				echo $before_title . $title . $after_title;
			}

			do_action( 'soliloquy_widget_before_slider', $args, $instance );

			// If a slider has been selected, output it.
			if ( $slider_id ) {
				soliloquy( $slider_id );
			}

			do_action( 'soliloquy_widget_after_slider', $args, $instance );

			echo $after_widget;

			do_action( 'soliloquy_widget_after_output', $args, $instance );
		}

		/**
		 * Sanitizes and updates the widget.
		 *
		 * @since 1.0.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['soliloquy_id'] = absint( $new_instance['soliloquy_id'] );

			return apply_filters( 'soliloquy_widget_update_instance', $instance, $new_instance );
		}

		/**
		 * Outputs the widget form where the user can specify settings.
		 *
		 * @since 1.0.0
		 *
		 * @param array $instance The input settings for the current widget instance.
		 */
		public function form( $instance ) {

			// Get all avilable sliders and widget properties.
			$sliders   = Soliloquy::get_instance()->get_sliders( false, true );
			$title     = isset( $instance['title'] ) ? $instance['title'] : '';
			$slider_id = isset( $instance['soliloquy_id'] ) ? $instance['soliloquy_id'] : false;

			do_action( 'soliloquy_widget_before_form', $instance );
			?>
			<p>
				<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php esc_html_e( 'Title', 'soliloquy' ); ?></label>
				<input id="<?php echo $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( 'soliloquy_widget_middle_form', $instance ); ?>
			<p>
				<label for="<?php echo $this->get_field_id( 'soliloquy_id' ); ?>"><?php esc_html_e( 'Slider', 'soliloquy' ); ?></label>
				<select id="<?php echo esc_attr( $this->get_field_id( 'soliloquy_id' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'soliloquy_id' ) ); ?>" style="width: 100%;">
					<?php
					if ( is_array( $sliders ) ) {
						foreach ( $sliders as $slider ) {
							if ( ! empty( $slider['id'] ) ) {
								$title = get_the_title( $slider['id'] );
							} elseif ( ! empty( $slider['config']['slug'] ) ) {
								$title = $slider['config']['title'];
							} else {
								$title = sprintf( esc_attr__( 'Slider ID #%s', 'soliloquy' ), $slider['id'] );
							}

							echo '<option value="' . $slider['id'] . '"' . selected( $slider['id'], $slider_id, false ) . '>' . $title . '</option>';
						}
					}
					?>
				</select>
			</p>
			<?php
			do_action( 'soliloquy_widget_after_form', $instance );
		}
	}

}