Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack/modules
File: infinite-scroll.php
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
[0] Fix | Delete
/**
[1] Fix | Delete
* Module Name: Infinite Scroll
[2] Fix | Delete
* Module Description: Automatically load new posts as visitors scroll down your site.
[3] Fix | Delete
* Sort Order: 26
[4] Fix | Delete
* First Introduced: 2.0
[5] Fix | Delete
* Requires Connection: No
[6] Fix | Delete
* Auto Activate: No
[7] Fix | Delete
* Module Tags: Appearance
[8] Fix | Delete
* Feature: Appearance
[9] Fix | Delete
* Additional Search Queries: scroll, infinite, infinite scroll
[10] Fix | Delete
*/
[11] Fix | Delete
[12] Fix | Delete
use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
[13] Fix | Delete
use Automattic\Jetpack\Stats\Options as Stats_Options;
[14] Fix | Delete
[15] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[16] Fix | Delete
exit( 0 );
[17] Fix | Delete
}
[18] Fix | Delete
[19] Fix | Delete
/**
[20] Fix | Delete
* Jetpack-specific elements of Infinite Scroll
[21] Fix | Delete
*/
[22] Fix | Delete
class Jetpack_Infinite_Scroll_Extras {
[23] Fix | Delete
/**
[24] Fix | Delete
* Class variable singleton.
[25] Fix | Delete
*
[26] Fix | Delete
* @var Jetpack_Infinite_Scroll_Extras
[27] Fix | Delete
*/
[28] Fix | Delete
private static $instance = null;
[29] Fix | Delete
[30] Fix | Delete
/**
[31] Fix | Delete
* Option names.
[32] Fix | Delete
*
[33] Fix | Delete
* @var string
[34] Fix | Delete
*/
[35] Fix | Delete
private $option_name_google_analytics = 'infinite_scroll_google_analytics';
[36] Fix | Delete
[37] Fix | Delete
/**
[38] Fix | Delete
* Singleton implementation
[39] Fix | Delete
*
[40] Fix | Delete
* @return object
[41] Fix | Delete
*/
[42] Fix | Delete
public static function instance() {
[43] Fix | Delete
if ( ! self::$instance instanceof Jetpack_Infinite_Scroll_Extras ) {
[44] Fix | Delete
self::$instance = new Jetpack_Infinite_Scroll_Extras();
[45] Fix | Delete
}
[46] Fix | Delete
[47] Fix | Delete
return self::$instance;
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
/**
[51] Fix | Delete
* Register actions and filters
[52] Fix | Delete
*
[53] Fix | Delete
* @uses add_action, add_filter
[54] Fix | Delete
*/
[55] Fix | Delete
private function __construct() {
[56] Fix | Delete
add_action( 'jetpack_modules_loaded', array( $this, 'action_jetpack_modules_loaded' ) );
[57] Fix | Delete
[58] Fix | Delete
add_action( 'admin_init', array( $this, 'action_admin_init' ), 11 );
[59] Fix | Delete
[60] Fix | Delete
add_action( 'after_setup_theme', array( $this, 'action_after_setup_theme' ), 5 );
[61] Fix | Delete
[62] Fix | Delete
add_filter( 'infinite_scroll_js_settings', array( $this, 'filter_infinite_scroll_js_settings' ) );
[63] Fix | Delete
[64] Fix | Delete
add_action( 'wp_enqueue_scripts', array( $this, 'action_wp_enqueue_scripts' ) );
[65] Fix | Delete
}
[66] Fix | Delete
[67] Fix | Delete
/**
[68] Fix | Delete
* Enable "Configure" button on module card
[69] Fix | Delete
*
[70] Fix | Delete
* @uses Jetpack::enable_module_configurable
[71] Fix | Delete
* @action jetpack_modules_loaded
[72] Fix | Delete
*/
[73] Fix | Delete
public function action_jetpack_modules_loaded() {
[74] Fix | Delete
Jetpack::enable_module_configurable( __FILE__ );
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
/**
[78] Fix | Delete
* Register Google Analytics setting
[79] Fix | Delete
*
[80] Fix | Delete
* @uses add_settings_field, __, register_setting
[81] Fix | Delete
* @action admin_init
[82] Fix | Delete
*/
[83] Fix | Delete
public function action_admin_init() {
[84] Fix | Delete
if ( ! Jetpack_Plan::supports( 'google-analytics' ) ) {
[85] Fix | Delete
return;
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
add_settings_field( $this->option_name_google_analytics, '<span id="infinite-scroll-google-analytics">' . __( 'Use Google Analytics with Infinite Scroll', 'jetpack' ) . '</span>', array( $this, 'setting_google_analytics' ), 'reading' );
[89] Fix | Delete
register_setting( 'reading', $this->option_name_google_analytics, array( $this, 'sanitize_boolean_value' ) );
[90] Fix | Delete
}
[91] Fix | Delete
[92] Fix | Delete
/**
[93] Fix | Delete
* Render Google Analytics option
[94] Fix | Delete
*
[95] Fix | Delete
* @uses checked, get_option, __
[96] Fix | Delete
*/
[97] Fix | Delete
public function setting_google_analytics() {
[98] Fix | Delete
echo '<label><input name="infinite_scroll_google_analytics" type="checkbox" value="1" ' . checked( true, (bool) get_option( $this->option_name_google_analytics, false ), false ) . ' /> ' . esc_html__( 'Track each scroll load (7 posts by default) as a page view in Google Analytics', 'jetpack' ) . '</label>';
[99] Fix | Delete
echo '<p class="description">' . esc_html__( 'Check the box above to record each new set of posts loaded via Infinite Scroll as a page view in Google Analytics.', 'jetpack' ) . '</p>';
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
/**
[103] Fix | Delete
* Sanitize value as a boolean
[104] Fix | Delete
*
[105] Fix | Delete
* @param mixed $value - the value we're sanitizing.
[106] Fix | Delete
* @return bool
[107] Fix | Delete
*/
[108] Fix | Delete
public function sanitize_boolean_value( $value ) {
[109] Fix | Delete
return (bool) $value;
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
/**
[113] Fix | Delete
* Load theme's infinite scroll annotation file, if present in the IS plugin.
[114] Fix | Delete
* The `setup_theme` action is used because the annotation files should be using `after_setup_theme` to register support for IS.
[115] Fix | Delete
*
[116] Fix | Delete
* As released in Jetpack 2.0, a child theme's parent wasn't checked for in the plugin's bundled support, hence the convoluted way the parent is checked for now.
[117] Fix | Delete
*
[118] Fix | Delete
* @uses is_admin, wp_get_theme, apply_filters
[119] Fix | Delete
* @action setup_theme
[120] Fix | Delete
* @return null
[121] Fix | Delete
*/
[122] Fix | Delete
public function action_after_setup_theme() {
[123] Fix | Delete
$theme = wp_get_theme();
[124] Fix | Delete
[125] Fix | Delete
if ( ! $theme instanceof WP_Theme && ! is_array( $theme ) ) {
[126] Fix | Delete
return;
[127] Fix | Delete
}
[128] Fix | Delete
[129] Fix | Delete
/** This filter is already documented in modules/infinite-scroll/infinity.php */
[130] Fix | Delete
$customization_file = apply_filters( 'infinite_scroll_customization_file', __DIR__ . "/infinite-scroll/themes/{$theme['Stylesheet']}.php", $theme['Stylesheet'] );
[131] Fix | Delete
[132] Fix | Delete
if ( is_readable( $customization_file ) ) {
[133] Fix | Delete
require_once $customization_file;
[134] Fix | Delete
} elseif ( ! empty( $theme['Template'] ) ) {
[135] Fix | Delete
$customization_file = __DIR__ . "/infinite-scroll/themes/{$theme['Template']}.php";
[136] Fix | Delete
[137] Fix | Delete
if ( is_readable( $customization_file ) ) {
[138] Fix | Delete
require_once $customization_file;
[139] Fix | Delete
}
[140] Fix | Delete
}
[141] Fix | Delete
}
[142] Fix | Delete
[143] Fix | Delete
/**
[144] Fix | Delete
* Modify Infinite Scroll configuration information
[145] Fix | Delete
*
[146] Fix | Delete
* @uses Jetpack::get_active_modules, is_user_logged_in, stats_get_options, Jetpack_Options::get_option, get_option, JETPACK__API_VERSION, JETPACK__VERSION
[147] Fix | Delete
* @filter infinite_scroll_js_settings
[148] Fix | Delete
*
[149] Fix | Delete
* @param array $settings - the settings.
[150] Fix | Delete
* @return array
[151] Fix | Delete
*/
[152] Fix | Delete
public function filter_infinite_scroll_js_settings( $settings ) {
[153] Fix | Delete
// Provide WP Stats info for tracking Infinite Scroll loads
[154] Fix | Delete
// Abort if Stats module isn't active
[155] Fix | Delete
if ( in_array( 'stats', Jetpack::get_active_modules(), true ) ) {
[156] Fix | Delete
// Abort if user is logged in but logged-in users shouldn't be tracked.
[157] Fix | Delete
if ( is_user_logged_in() ) {
[158] Fix | Delete
$stats_options = Stats_Options::get_options();
[159] Fix | Delete
$track_loggedin_users = isset( $stats_options['count_roles'] ) ? (bool) $stats_options['count_roles'] : false;
[160] Fix | Delete
[161] Fix | Delete
if ( ! $track_loggedin_users ) {
[162] Fix | Delete
return $settings;
[163] Fix | Delete
}
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
// We made it this far, so gather the data needed to track IS views
[167] Fix | Delete
$settings['stats'] = 'blog=' . Jetpack_Options::get_option( 'id' ) . '&host=' . wp_parse_url( get_option( 'home' ), PHP_URL_HOST ) . '&v=ext&j=' . JETPACK__API_VERSION . ':' . JETPACK__VERSION;
[168] Fix | Delete
[169] Fix | Delete
// Pagetype parameter
[170] Fix | Delete
$settings['stats'] .= '&x_pagetype=infinite';
[171] Fix | Delete
if ( 'click' === $settings['type'] ) {
[172] Fix | Delete
$settings['stats'] .= '-click';
[173] Fix | Delete
}
[174] Fix | Delete
[175] Fix | Delete
$settings['stats'] .= '-jetpack';
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
// Check if Google Analytics tracking is requested.
[179] Fix | Delete
$settings['google_analytics'] = Jetpack_Plan::supports( 'google-analytics' ) && Jetpack_Options::get_option_and_ensure_autoload( $this->option_name_google_analytics, 0 );
[180] Fix | Delete
[181] Fix | Delete
return $settings;
[182] Fix | Delete
}
[183] Fix | Delete
[184] Fix | Delete
/**
[185] Fix | Delete
* Always load certain scripts when IS is enabled, as they can't be loaded after `document.ready` fires, meaning they can't leverage IS's script loader.
[186] Fix | Delete
*
[187] Fix | Delete
* @global $videopress
[188] Fix | Delete
* @uses do_action()
[189] Fix | Delete
* @uses apply_filters()
[190] Fix | Delete
* @uses wp_enqueue_style()
[191] Fix | Delete
* @uses wp_enqueue_script()
[192] Fix | Delete
* @action wp_enqueue_scripts
[193] Fix | Delete
* @return null
[194] Fix | Delete
*/
[195] Fix | Delete
public function action_wp_enqueue_scripts() {
[196] Fix | Delete
// Do not load scripts and styles on singular pages and static pages
[197] Fix | Delete
$load_scripts_and_styles = ! ( is_singular() || is_page() );
[198] Fix | Delete
if (
[199] Fix | Delete
/**
[200] Fix | Delete
* Allow plugins to enqueue all Infinite Scroll scripts and styles on singular pages as well.
[201] Fix | Delete
*
[202] Fix | Delete
* @module infinite-scroll
[203] Fix | Delete
*
[204] Fix | Delete
* @since 3.1.0
[205] Fix | Delete
*
[206] Fix | Delete
* @param bool $load_scripts_and_styles Should scripts and styles be loaded on singular pahes and static pages. Default to false.
[207] Fix | Delete
*/
[208] Fix | Delete
! apply_filters( 'jetpack_infinite_scroll_load_scripts_and_styles', $load_scripts_and_styles )
[209] Fix | Delete
) {
[210] Fix | Delete
return;
[211] Fix | Delete
}
[212] Fix | Delete
[213] Fix | Delete
// VideoPress stand-alone plugin
[214] Fix | Delete
global $videopress;
[215] Fix | Delete
if ( ! empty( $videopress ) && The_Neverending_Home_Page::archive_supports_infinity() && is_a( $videopress, 'VideoPress' ) && method_exists( $videopress, 'enqueue_scripts' ) ) {
[216] Fix | Delete
$videopress->enqueue_scripts();
[217] Fix | Delete
}
[218] Fix | Delete
[219] Fix | Delete
// VideoPress Jetpack module
[220] Fix | Delete
if ( Jetpack::is_module_active( 'videopress' ) ) {
[221] Fix | Delete
wp_enqueue_script( 'videopress' );
[222] Fix | Delete
}
[223] Fix | Delete
[224] Fix | Delete
// Fire the post_gallery action early so Carousel scripts are present.
[225] Fix | Delete
if ( Jetpack::is_module_active( 'carousel' ) ) {
[226] Fix | Delete
/** This filter is already documented in core/wp-includes/media.php */
[227] Fix | Delete
do_action( 'post_gallery', '', '', 0 );
[228] Fix | Delete
}
[229] Fix | Delete
[230] Fix | Delete
// Always enqueue Tiled Gallery scripts when both IS and Tiled Galleries are enabled
[231] Fix | Delete
if ( Jetpack::is_module_active( 'tiled-gallery' ) ) {
[232] Fix | Delete
Jetpack_Tiled_Gallery::default_scripts_and_styles();
[233] Fix | Delete
}
[234] Fix | Delete
}
[235] Fix | Delete
}
[236] Fix | Delete
Jetpack_Infinite_Scroll_Extras::instance();
[237] Fix | Delete
[238] Fix | Delete
/**
[239] Fix | Delete
* Load main IS file
[240] Fix | Delete
*/
[241] Fix | Delete
require_once __DIR__ . '/infinite-scroll/infinity.php';
[242] Fix | Delete
[243] Fix | Delete
/**
[244] Fix | Delete
* Remove the IS annotation loading function bundled with the IS plugin in favor of the Jetpack-specific version in Jetpack_Infinite_Scroll_Extras::action_after_setup_theme();
[245] Fix | Delete
*/
[246] Fix | Delete
remove_action( 'after_setup_theme', 'the_neverending_home_page_theme_support', 5 );
[247] Fix | Delete
[248] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function