PATH:
home
/
letacommog
/
www
/
wp-content
/
plugins
/
popup-maker
/
includes
<?php /** * Popups Query * * @package PUM * @subpackage Classes/Popups * @copyright Copyright (c) 2016, Daniel Iser * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License * @since 1.4 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class PUM_Popup_Query */ class PUM_Popup_Query { /** * The args to pass to the pum_get_popups() query * * @var array * @access public */ public $args = array(); /** * The popups found based on the criteria set * * @var array * @access public */ public $popups = array(); /** * Default query arguments. * * Not all of these are valid arguments that can be passed to WP_Query. The ones that are not, are modified before * the query is run to convert them to the proper syntax. * * @access public * * @param $args array The array of arguments that can be passed in and used for setting up this popup query. */ public function __construct( $args = array() ) { $defaults = array( 'output' => 'popups', // Use 'posts' to get standard post objects 'post_type' => array( 'popup' ), 'start_date' => false, 'end_date' => false, 'number' => 20, 'page' => null, 'orderby' => 'ID', 'order' => 'DESC', 'user' => null, 'status' => 'publish', 'meta_key' => null, 'year' => null, 'month' => null, 'day' => null, 's' => null, 'children' => false, 'fields' => null, ); $this->args = wp_parse_args( $args, $defaults ); $this->init(); } /** * Set a query variable. * * @access public */ public function __set( $query_var, $value ) { if ( in_array( $query_var, array( 'meta_query', 'tax_query' ) ) ) { $this->args[ $query_var ][] = $value; } else { $this->args[ $query_var ] = $value; } } /** * Unset a query variable. * * @access public */ public function __unset( $query_var ) { unset( $this->args[ $query_var ] ); } /** * Modify the query/query arguments before we retrieve popups. * * @access public * @return void */ public function init() { add_action( 'pum_pre_get_popups', array( $this, 'date_filter_pre' ) ); add_action( 'pum_post_get_popups', array( $this, 'date_filter_post' ) ); add_action( 'pum_pre_get_popups', array( $this, 'orderby' ) ); add_action( 'pum_pre_get_popups', array( $this, 'status' ) ); add_action( 'pum_pre_get_popups', array( $this, 'month' ) ); add_action( 'pum_pre_get_popups', array( $this, 'per_page' ) ); add_action( 'pum_pre_get_popups', array( $this, 'page' ) ); } /** * Retrieve popups. * * The query can be modified in two ways; either the action before the * query is run, or the filter on the arguments (existing mainly for backwards * compatibility). * * @access public * @return object */ public function get_popups() { do_action( 'pum_pre_get_popups', $this ); $query = new WP_Query( $this->args ); $custom_output = array( 'popups', 'pum_popups', ); if ( ! in_array( $this->args['output'], $custom_output ) ) { return $query->posts; } if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $popup_id = get_post()->ID; $popup = new PUM_Popup( $popup_id ); $this->popups[] = apply_filters( 'pum_popup', $popup, $popup_id, $this ); } wp_reset_postdata(); } do_action( 'pum_post_get_popups', $this ); return $this->popups; } /** * If querying a specific date, add the proper filters. * * @access public * @return void */ public function date_filter_pre() { if ( ! ( $this->args['start_date'] || $this->args['end_date'] ) ) { return; } $this->setup_dates( $this->args['start_date'], $this->args['end_date'] ); add_filter( 'posts_where', array( $this, 'popups_where' ) ); } /** * If querying a specific date, remove filters after the query has been run * to avoid affecting future queries. * * @access public * @return void */ public function date_filter_post() { if ( ! ( $this->args['start_date'] || $this->args['end_date'] ) ) { return; } remove_filter( 'posts_where', array( $this, 'popups_where' ) ); } /** * Post Status * * @access public * @return void */ public function status() { if ( ! isset ( $this->args['status'] ) ) { return; } $this->__set( 'post_status', $this->args['status'] ); $this->__unset( 'status' ); } /** * Current Page * * @access public * @return void */ public function page() { if ( ! isset ( $this->args['page'] ) ) { return; } $this->__set( 'paged', $this->args['page'] ); $this->__unset( 'page' ); } /** * Posts Per Page * * @access public * @return void */ public function per_page() { if ( ! isset( $this->args['number'] ) ) { return; } if ( $this->args['number'] == - 1 ) { $this->__set( 'nopaging', true ); } else { $this->__set( 'posts_per_page', $this->args['number'] ); } $this->__unset( 'number' ); } /** * Current Month * * @access public * @return void */ public function month() { if ( ! isset ( $this->args['month'] ) ) { return; } $this->__set( 'monthnum', $this->args['month'] ); $this->__unset( 'month' ); } /** * Order * * @access public * @return void */ public function orderby() { switch ( $this->args['orderby'] ) { case 'amount' : $this->__set( 'orderby', 'meta_value_num' ); $this->__set( 'meta_key', '_pum_popup_total' ); break; default : $this->__set( 'orderby', $this->args['orderby'] ); break; } } }
[+]
..
[-] pum-deprecated-v1.7.php
[edit]
[-] pum-template-hooks.php
[edit]
[-] input-options.php
[edit]
[-] general-functions.php
[edit]
[-] migrations.php
[edit]
[-] actions.php
[edit]
[+]
libs
[-] popup-functions.php
[edit]
[-] class-popmake-popup-theme-fields.php
[edit]
[-] pum-general-functions.php
[edit]
[-] google-fonts.php
[edit]
[+]
functions
[-] extension-list.json
[edit]
[-] defaults.php
[edit]
[-] pum-deprecated.php
[edit]
[-] theme-functions.php
[edit]
[-] pum-install-functions.php
[edit]
[+]
pum-sdk
[-] class-pum-fields.php
[edit]
[-] extensions-functions.php
[edit]
[-] license-handler.php
[edit]
[-] class-pum.php
[edit]
[+]
importer
[+]
deprecated
[-] plugin-updater.php
[edit]
[-] pum-popup-functions.php
[edit]
[-] ajax-calls.php
[edit]
[+]
admin
[-] install.php
[edit]
[+]
modules
[-] google-fonts.json
[edit]
[-] class-pum-form.php
[edit]
[-] pum-template-functions.php
[edit]
[-] compat.php
[edit]
[+]
batch
[-] class-popmake-popup-fields.php
[edit]
[-] misc-functions.php
[edit]
[-] pum-misc-functions.php
[edit]
[-] css-functions.php
[edit]
[-] class-popmake-fields.php
[edit]
[-] class-popmake-cron.php
[edit]
[-] templates.php
[edit]
[-] pum-deprecated-v1.4.php
[edit]
[-] class-pum-popup-query.php
[edit]
[+]
compatibility
[-] load-popups.php
[edit]
[+]
integrations