File "wp_ad_guru.php"
Full Path: /home/fmpomerode/public_html/wp-content/plugins/wp-ad-guru/wp_ad_guru.php
File size: 15.72 KB
MIME-type: text/x-php; charset=us-ascii
Charset: utf-8
<?php
/**
* Plugin Name: WP Ad Guru
* Description: An essential set of advertising and marketing tools. Manage banner ad, modal popup and window popup. Ad zones, ad rotator, GeoLocation tracker, ads carousel-slider, different ads by multiple conditions of visited page.
* Plugin URI: http://wpadguru.com
* Author: oneTarek
* Author URI: http://onetarek.com
* Version: 2.5.4
* License: GPLv2+
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
//Don't allow direct access
if( ! defined( 'ABSPATH' ) ) exit;
if( ! class_exists( 'WP_Ad_Guru' ) ) :
/**
* Main WP_Ad_Guru Class.
*
* @since 2.0.0
*/
final class WP_Ad_Guru{
/** Singleton Class */
/**
* @var WP_Ad_Guru The one true WP_Ad_Guru
* @since 2.0.0
*/
private static $instance;
/**
* ADGURU Modules Object.
*
* @var object|ADGURU_Modules
* @since 2.0.0
*/
public $modules;
/**
* ADGURU HTML Element Helper Object.
*
* @var object|ADGURU_HTML_Elements
* @since 2.0.0
*/
public $html;
/**
* ADGURU Emails Object.
*
* @var object|ADGURU_Emails
* @since 2.0.0
*/
public $emails;
/**
* ADGURU API Object.
*
* @var object|ADGURU_API
* @since 2.0.0
*/
public $api;
/**
* ADGURU Error Object
* @var object|ADGURU_Error
* @since 2.0.0
*/
public $error;
/**
* ADGURU User Object
* @var object|ADGURU_User
* @since 2.0.0
*/
public $user;
/**
* ADGURU Manager Object
* @var object|ADGURU_Manager
* @since 2.0.0
*/
public $manager;
/**
* ADGURU Server Object
* @var object|ADGURU_Server
* @since 2.0.0
*/
public $server;
/**
* ADGURU Post Types Object
* @var object|ADGURU_Post_Types
* @since 2.0.0
*/
public $post_types;
/**
* ADGURU Ad Types Object
* @var object|ADGURU_Ad_Types
* @since 2.0.0
*/
public $ad_types;
/**
* ADGURU Content Types Object
* @var object|ADGURU_Content_Types
* @since 2.0.0
*/
public $content_types;
/**
* ADGURU Menu Object
* @var object|ADGURU_Menu
* @since 2.0.0
*/
public $menu;
/**
* ADGURU Ad Editor Object
* @var object|ADGURU_Ad_Editor
* @since 2.0.0
*/
public $ad_editor;
/**
* ADGURU Settings Object
* @var object|WPAFB_Main
* @since 2.0.0
*/
public $form_builder;
/**
* ADGURU Form Builder Object
* @var object|ADGURU_Settings
* @since 2.0.0
*/
public $settings;
/**
* ADGURU Admin Notice Object
* @var object|ADGURU_Admin_Notice
* @since 2.0.0
*/
public $admin_notice;
/**
* ADGURU Request Handler Object
* @var object|ADGURU_Request_Handler
* @since 2.0.0
*/
public $request_handler;
/**
* ADGURU Migrator
* @var object|ADGURU_Migrator
* @since 2.0.0
*/
public $migrator;
/**
* Flag for migration neded or not
**/
public $migration_needed = false;
/**
* Ad setup manager
* @var object|ADGURU_Ad_Setup_Manager
* @since 2.1.0
*/
public $ad_setup_manager;
/**
* Main WP_Ad_Guru Instance.
*
* Insures that only one instance of WP_Ad_Guru exists in memory at any one
* time. Also prevents needing to define globals all over the place.
*
* @since 2.0.0
* @static
* @staticvar array $instance
* @uses WP_Ad_Guru::load_textdomain() load the language files.
* @see ADGURU()
* @return object|WP_Ad_Guru The one true WP_Ad_Guru
*/
public static function instance(){
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WP_Ad_Guru ) )
{
self::$instance = new self();
}
return self::$instance;
}
/**
* Private constructor so nobody else can instance it
*
*/
private function __construct(){
define( 'ADGURU_OPTIONS_FIELD_NAME', 'adguru_settings' );
global $adguru_options;
$adguru_options = get_option( ADGURU_OPTIONS_FIELD_NAME , array() );
$this->migration_needed = get_option( "adguru_migration_needed", 0 );
$this->define_constants();
add_action( 'plugins_loaded', array( $this , 'plugins_loaded' ) );
$this->includes();
if( $this->migration_needed )
{
$this->migrator = new ADGURU_Migrator();
}
$this->error = new ADGURU_Error();
$this->user = new ADGURU_User();
$this->modules = new ADGURU_Modules();
$this->api = new ADGURU_API();
$this->html = new ADGURU_HTML_Elements();
$this->emails = new ADGURU_Emails();
$this->post_types = new ADGURU_Post_Types();
new ADGURU_Zone_Setup();
$this->ad_types = new ADGURU_Ad_Types();
$this->content_types = new ADGURU_Content_Types();
$this->manager = new ADGURU_Manager();
$this->server = new ADGURU_Server();
if ( is_admin() )
{
$this->menu = new ADGURU_Menu();
$this->admin_notice = new ADGURU_Admin_Notice();
$this->settings = new ADGURU_Settings();
$this->form_builder = wpafb();
$this->ad_setup_manager = new ADGURU_Ad_Setup_Manager();
new ADGURU_Zone_Edit_Manager();
}
#for geo location feature strat session here before outputing anything to the browser.
if( session_id() == "" && !defined( 'DOING_CRON' ) && !isset( $_GET['doing_wp_cron'] ) ){ session_start(); }
$this->request_handler = new ADGURU_Request_Handler();
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
add_action( 'admin_head', array( $this, 'admin_head' ) );
add_action( 'wp_head', array( $this, 'wp_head' ) );
add_action( 'wp_footer', array( $this, 'wp_footer' ) );
add_action( 'deleted_post', array( $this, 'delete_post_action' ) );
add_action( 'init', array( $this, 'init_hook' ) );
// Loaded action
do_action( 'adguru_loaded' );
}
/**
* Throw error on object clone.
*
* The whole idea of the singleton design pattern is that there is a single
* object therefore, we don't want the object to be cloned.
*
* @since 2.0.0
* @access protected
* @return void
*/
public function __clone(){
// Cloning instances of the class is forbidden.
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'adguru' ), '2.0' );
}
/**
* Disable unserializing of the class.
*
* @since 2.0.0
* @access protected
* @return void
*/
public function __wakeup(){
// Unserializing instances of the class is forbidden.
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'adguru' ), '2.0' );
}
/**
* Define plugin constants.
*
* @access private
* @since 2.0.0
* @return void
*/
private function define_constants(){
global $wpdb;
global $adguru_options;
define( 'ADGURU_VERSION', '2.5.4' );
define( 'ADGURU_DOCUMENTAION_URL', 'http://wpadguru.com/documentation/' );
define( 'ADGURU_PLUGIN_FILE', __FILE__ );
define( 'ADGURU_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); // Plugin Directory
define( 'ADGURU_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); // with forward slash (/). Plugin URL (for http requests).
define( 'ADGURU_PLUGIN_SLUG', 'adguru' );
define( 'ADGURU_ADMANAGER_PAGE_SLUG_PREFIX' , ADGURU_PLUGIN_SLUG.'_ad_' );
define( 'ADGURU_COOKIE_PREFIX', "adguru_" );
define( 'ADGURU_POST_TYPE_PREFIX','adg_');
#adguru tables
define( 'ADGURU_LINKS_TABLE',$wpdb->prefix.'adguru_ad_links' );
define('ADGURU_GEO_LOCATION_ENABLED', ( isset( $adguru_options['enable_geo_location'] ) && $adguru_options['enable_geo_location'] == 'on' )? true : false );
}
/**
* Include required files.
*
* @access private
* @since 2.0.0
* @return void
*/
private function includes(){
global $adguru_options;
#INCLUDE REQUIRED FILES
if( $this->migration_needed )
{
require_once( ADGURU_PLUGIN_DIR."includes/migrator/class-adguru-migrator.php" );
}
require_once( ADGURU_PLUGIN_DIR."includes/install/install.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-helper.php" );
require_once( ADGURU_PLUGIN_DIR."includes/functions.php" );
$adguru_options = adguru_get_settings();
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-error.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-user.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-modules.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-api.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-html-elements.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-emails.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-post-types.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-zone.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-zone-setup.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-ad-types.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-content-types.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-content-type.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-ad.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-manager.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-server.php" );
require_once( ADGURU_PLUGIN_DIR."includes/widgets/widget.php" );
require_once( ADGURU_PLUGIN_DIR."includes/shortcodes/shortcode.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-request-handler.php" );
require_once( ADGURU_PLUGIN_DIR."includes/class-adguru-inserter.php" );
if ( is_admin() )
{
#INCLUDE ADMIN RELATED FILES HERE
require_once( ADGURU_PLUGIN_DIR."libs/wp-admin-form-builder/main.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/class-adguru-admin-notice.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/settings/class-adguru-settings.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/class-adguru-menu.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/zone-manager/class-zone-edit-manager.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/links-editor/class-adguru-links-editor.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/links-editor/class-adguru-links-editor-ajax-handler.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/ad-setup-manager/class-adguru-ad-setup-manager.php" );
require_once( ADGURU_PLUGIN_DIR."includes/admin/ad-setup-manager/class-adguru-ad-setup-manager-ajax-handler.php" );
require_once( ADGURU_PLUGIN_DIR."includes/metaboxes/metabox.php" );
require_once( ADGURU_PLUGIN_DIR."includes/functions.php" );
}
}
/**
* Loads the plugin language files.
*
* @access public
* @since 2.0.0
* @return void
*/
public function load_textdomain(){
load_plugin_textdomain( 'adguru', false, ADGURU_PLUGIN_DIR."languages/" );
}
/**
* Run within wp plugins_loaded action
* @since 2.0.0
* @return void
*/
public function plugins_loaded(){
$this->load_textdomain();
#use "adguru_plugins_loaded" hook in extensions or other plugins to load files those are depended on adGuru core files.
do_action( "adguru_plugins_loaded" );
}
/**
* Function to trigger some action hooks
* This function is called on WP init action hook
* @access public
* @since 2.0.0
* @return void
*/
public function init_hook(){
do_action( 'adguru_init' );
do_action( 'adguru_init_process' );
do_action( 'adguru_init_end' );
}
/**
* Enqueue required CSS and JS files in admin area
*
* @access public
* @since 2.0.0
* @return void
*/
public function admin_enqueue_scripts(){
if( strpos( $_SERVER[ 'REQUEST_URI' ], ADGURU_PLUGIN_SLUG ) ) #to ensure that current plugin page is being shown.
{
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui-core', array( 'jquery' ) );
wp_enqueue_script( 'jquery-ui-accordion', array( 'jquery' ) );
wp_enqueue_script( 'jquery-ui-dialog', array( 'jquery' ) );
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'wp-color-picker' );
//$jquery_css_base = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css';
$jquery_css_base = ADGURU_PLUGIN_URL.'assets/css/jquery-ui-themes/smoothness/jquery-ui.min.css';
wp_enqueue_style ( 'jquery-ui-standard-css', $jquery_css_base );
wp_enqueue_media();
wp_enqueue_script( 'adguru-admin', ADGURU_PLUGIN_URL.'assets/js/admin.js', array( 'jquery' ), ADGURU_VERSION );
wp_enqueue_style ( 'adguru-admin-css', ADGURU_PLUGIN_URL.'assets/css/admin.css', array(), ADGURU_VERSION );
// Values to pass into JS script.
//Unfortunately wp_localize_script() casts all scalars (simple types) in the passed-in array to strings. A way around it is to put your arguments in an array within the passed-in array. https://wordpress.stackexchange.com/questions/186155/how-do-you-pass-a-boolean-value-to-wp-localize-script/186191#186191
$js_vars = array(
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'assetsUrl' => ADGURU_PLUGIN_URL.'assets',
'options' => array(
'geoLocationEnabled' => ADGURU_GEO_LOCATION_ENABLED,
),
);
// Pass them in.
wp_localize_script(
'adguru-admin', // script handle
'adGuruAdminVars', // name of JS object that will contain our values
$js_vars
);
do_action( 'adguru_admin_enqueue_scripts' );
}
}
/**
* Enqueue required CSS and JS files in front-end
*
* @access public
* @since 2.0.0
* @return void
*/
public function enqueue_scripts(){
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'adguru-simple-carousel', ADGURU_PLUGIN_URL.'assets/js/simple.carousel_edited.js', array( 'jquery' ), ADGURU_VERSION );
wp_enqueue_script( 'adguru', ADGURU_PLUGIN_URL.'assets/js/adguru.js', array( 'jquery' ), ADGURU_VERSION );
wp_enqueue_style ( 'adguru-css', ADGURU_PLUGIN_URL.'assets/css/adguru.css', array(), ADGURU_VERSION );
// Values to pass into JS script.
$js_vars = array(
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'assetsUrl' => ADGURU_PLUGIN_URL.'assets',
'cookiePrefix' => ADGURU_COOKIE_PREFIX,
'options' => array(
'geoLocationEnabled' => ADGURU_GEO_LOCATION_ENABLED,
),
);
// Pass them in.
wp_localize_script(
'adguru-simple-carousel', // script handle
'adGuruVars', // name of JS object that will contain our values
$js_vars
);
}
/**
* Function to be called in admin_head
*
* @access public
* @since 2.0.0
* @return void
*/
public function admin_head(){ return;
if( strpos( $_SERVER['REQUEST_URI'], ADGURU_PLUGIN_SLUG ) ) #to ensure that current plugin page is being shown.
{
//print something here
}
}
/**
* Function to be called in wp_head
* Print all required scripts for adguru
* Print ad codes those are required to load in <head>
* @access public
* @since 2.0.0
* @return void
*/
public function wp_head(){
do_action( 'adguru_wp_head_top' );
$this->server->print_header_footer_ads( "head" );
do_action( 'adguru_wp_head_bottom' );
}
/**
* Function to be called in wp_footer
* Print ad codes those are required to load in footer before </body> tag
* @access public
* @since 2.0.0
* @return void
*/
public function wp_footer(){
do_action( 'adguru_wp_footer_top' );
$this->server->print_header_footer_ads( "footer" );
adguru_load_styles_in_footer();
do_action( 'adguru_wp_footer_bottom' );
}
/**
* Delete all ad links for post when post is deleted.
* @param int $post_id
* @use_with deleted_post action
* @access public
* @since 2.0.0
* @return void
*/
public function delete_post_action( $post_id ){
global $wpdb;
$wpdb->query( "DELETE FROM ".ADGURU_LINKS_TABLE." WHERE page_type='singular' AND object_id=".$post_id );
}
}//end class
endif;
/**
* The main function for that returns WP_Ad_Guru
*
* The main function responsible for returning the one true WP_Ad_Guru
* Instance to functions everywhere.
*
* Use this function like you would a global variable, except without needing
* to declare the global.
*
* Example: <?php $adguru = adguru(); ?>
*
* @since 2.0.0
* @return object|WP_Ad_Guru The one true WP_Ad_Guru Instance.
*/
function adguru()
{
return WP_Ad_Guru::instance();
}
// Get ADGURU Running.
adguru();