Add Mobile Detect #65
7 changed files with 2771 additions and 1192 deletions
79
.gitignore
vendored
79
.gitignore
vendored
|
@ -1,2 +1,81 @@
|
||||||
vendor
|
vendor
|
||||||
composer.lock
|
composer.lock
|
||||||
|
### Example user template template
|
||||||
|
### Example user template
|
||||||
|
|
||||||
|
# IntelliJ project files
|
||||||
|
.idea
|
||||||
|
*.iml
|
||||||
|
out
|
||||||
|
gen### OSX template
|
||||||
|
*.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
### JetBrains template
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff:
|
||||||
|
.idea/workspace.xml
|
||||||
|
.idea/tasks.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/vcs.xml
|
||||||
|
.idea/jsLibraryMappings.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files:
|
||||||
|
.idea/dataSources.ids
|
||||||
|
.idea/dataSources.xml
|
||||||
|
.idea/dataSources.local.xml
|
||||||
|
.idea/sqlDataSources.xml
|
||||||
|
.idea/dynamic.xml
|
||||||
|
.idea/uiDesigner.xml
|
||||||
|
|
||||||
|
# Gradle:
|
||||||
|
.idea/gradle.xml
|
||||||
|
.idea/libraries
|
||||||
|
|
||||||
|
# Mongo Explorer plugin:
|
||||||
|
.idea/mongoSettings.xml
|
||||||
|
|
||||||
|
## File-based project format:
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,7 @@ Many thanks for donations, contributors, supporters, testers & bug reporters:
|
||||||
* 7th Veil, LLC
|
* 7th Veil, LLC
|
||||||
* Julia Harsch
|
* Julia Harsch
|
||||||
* Grant Berntsen
|
* Grant Berntsen
|
||||||
|
* [Glaydston Veloso](https://github.com/glaydston)
|
||||||
|
|
||||||
== Installation ==
|
== Installation ==
|
||||||
|
|
||||||
|
@ -135,6 +136,12 @@ Version numbering logic:
|
||||||
* every .B version indicates new features.
|
* every .B version indicates new features.
|
||||||
* every ..C indicates bugfixes for A.B version.
|
* every ..C indicates bugfixes for A.B version.
|
||||||
|
|
||||||
|
= 1.12.0 =
|
||||||
|
*2016-11-09*
|
||||||
|
|
||||||
|
* Add new class to detect mobile devices
|
||||||
|
* Create a cache to mobile and desktop version
|
||||||
|
|
||||||
= 1.11.1 =
|
= 1.11.1 =
|
||||||
*2016-04-21*
|
*2016-04-21*
|
||||||
|
|
1453
backends/mobile-detect.php
Normal file
1453
backends/mobile-detect.php
Normal file
File diff suppressed because one or more lines are too long
|
@ -227,7 +227,7 @@ abstract class WP_FFPC_ABSTRACT {
|
||||||
* callback function to add settings link to plugins page
|
* callback function to add settings link to plugins page
|
||||||
*
|
*
|
||||||
* @param array $links Current links to add ours to
|
* @param array $links Current links to add ours to
|
||||||
*
|
* @return array $links Current links
|
||||||
*/
|
*/
|
||||||
public function plugin_settings_link ( $links ) {
|
public function plugin_settings_link ( $links ) {
|
||||||
$settings_link = '<a href="' . $this->settings_link . '">' . __translate__( 'Settings', 'wp-ffpc') . '</a>';
|
$settings_link = '<a href="' . $this->settings_link . '">' . __translate__( 'Settings', 'wp-ffpc') . '</a>';
|
||||||
|
@ -359,7 +359,7 @@ abstract class WP_FFPC_ABSTRACT {
|
||||||
*
|
*
|
||||||
* @param mixed $var Variable to dump
|
* @param mixed $var Variable to dump
|
||||||
* @param boolean $ret Return text instead of printing if true
|
* @param boolean $ret Return text instead of printing if true
|
||||||
*
|
* @return mixed $var Variable to dump
|
||||||
*/
|
*/
|
||||||
protected function print_var ( $var , $ret = false ) {
|
protected function print_var ( $var , $ret = false ) {
|
||||||
if ( @is_array ( $var ) || @is_object( $var ) || @is_bool( $var ) )
|
if ( @is_array ( $var ) || @is_object( $var ) || @is_bool( $var ) )
|
||||||
|
@ -401,7 +401,7 @@ abstract class WP_FFPC_ABSTRACT {
|
||||||
* @param $print
|
* @param $print
|
||||||
* boolean: is true, the options will be printed, otherwise the string will be returned
|
* boolean: is true, the options will be printed, otherwise the string will be returned
|
||||||
*
|
*
|
||||||
* @return
|
* @return mixed
|
||||||
* prints or returns the options string
|
* prints or returns the options string
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -594,9 +594,9 @@ abstract class WP_FFPC_ABSTRACT {
|
||||||
* display formatted alert message
|
* display formatted alert message
|
||||||
*
|
*
|
||||||
* @param string $msg Error message
|
* @param string $msg Error message
|
||||||
* @param string $error "level" of error
|
* @param mixed $level "level" of error
|
||||||
* @param boolean $network WordPress network or not, DEPRECATED
|
* @param boolean $network WordPress network or not, DEPRECATED
|
||||||
*
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
static public function alert ( $msg, $level=LOG_WARNING, $network=false ) {
|
static public function alert ( $msg, $level=LOG_WARNING, $network=false ) {
|
||||||
if ( empty($msg)) return false;
|
if ( empty($msg)) return false;
|
||||||
|
|
|
@ -70,7 +70,7 @@ else {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no cache for WooCommerce URL patterns */
|
/* no cache for WooCommerce URL patterns */
|
||||||
if ( isset($wp_ffpc_config['nocache_woocommerce']) && !empty($wp_ffpc_config['nocache_woocommerce']) &&
|
if ( isset($wp_ffpc_config['nocache_woocommerce']) && !empty($wp_ffpc_config['nocache_woocommerce']) &&
|
||||||
isset($wp_ffpc_config['nocache_woocommerce_url']) && trim($wp_ffpc_config['nocache_woocommerce_url']) ) {
|
isset($wp_ffpc_config['nocache_woocommerce_url']) && trim($wp_ffpc_config['nocache_woocommerce_url']) ) {
|
||||||
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_woocommerce_url']));
|
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_woocommerce_url']));
|
||||||
if ( preg_match($pattern, $wp_ffpc_uri) ) {
|
if ( preg_match($pattern, $wp_ffpc_uri) ) {
|
||||||
|
@ -145,7 +145,21 @@ if ( $wp_ffpc_backend->status() === false ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* try to get data & meta keys for current page */
|
/* try to get data & meta keys for current page */
|
||||||
$wp_ffpc_keys = array ( 'meta' => $wp_ffpc_config['prefix_meta'], 'data' => $wp_ffpc_config['prefix_data'] );
|
|
||||||
|
/* include the mobile detect */
|
||||||
|
include_once ('backends/mobile-detect.php');
|
||||||
|
$mobile_detect = new Mobile_Detect;
|
||||||
|
$wp_ffpc_keys = array();
|
||||||
|
|
||||||
|
/* verify if mobile device (phones or tablets). */
|
||||||
|
if($mobile_detect->isMobile()){
|
||||||
|
__wp_ffpc_debug__('Set the ffpc keys to the mobile version');
|
||||||
|
$wp_ffpc_keys = array ( 'meta' => $wp_ffpc_config['prefix_meta_mobile'], 'data' => $wp_ffpc_config['prefix_data_mobile'] );
|
||||||
|
} else {
|
||||||
|
__wp_ffpc_debug__('Set the ffpc keys to the desktop version');
|
||||||
|
$wp_ffpc_keys = array( 'meta' => $wp_ffpc_config['prefix_meta'], 'data' => $wp_ffpc_config['prefix_data'] );
|
||||||
|
}
|
||||||
|
|
||||||
$wp_ffpc_values = array();
|
$wp_ffpc_values = array();
|
||||||
|
|
||||||
__wp_ffpc_debug__ ( "Trying to fetch entries");
|
__wp_ffpc_debug__ ( "Trying to fetch entries");
|
||||||
|
@ -259,7 +273,7 @@ if ( isset($wp_ffpc_config['generate_time']) && $wp_ffpc_config['generate_time']
|
||||||
$mtime = explode ( " ", microtime() );
|
$mtime = explode ( " ", microtime() );
|
||||||
$wp_ffpc_gentime = ( $mtime[1] + $mtime[0] ) - $wp_ffpc_gentime;
|
$wp_ffpc_gentime = ( $mtime[1] + $mtime[0] ) - $wp_ffpc_gentime;
|
||||||
|
|
||||||
$insertion = "\n<!-- WP-FFPC cache output stats\n\tcache engine: ". $wp_ffpc_config['cache_type'] ."\n\tUNIX timestamp: ". time() . "\n\tdate: ". date( 'c' ) . "\n\tfrom server: ". $_SERVER['SERVER_ADDR'] . " -->\n";
|
$insertion = "\n<!-- \n\tCache Engine: ". $wp_ffpc_config['cache_type'] ."\n\tDate: ". date( 'c' ) . " -->\n";
|
||||||
$index = stripos( $wp_ffpc_values['data'] , '</body>' );
|
$index = stripos( $wp_ffpc_values['data'] , '</body>' );
|
||||||
|
|
||||||
$wp_ffpc_values['data'] = substr_replace( $wp_ffpc_values['data'], $insertion, $index, 0);
|
$wp_ffpc_values['data'] = substr_replace( $wp_ffpc_values['data'], $insertion, $index, 0);
|
||||||
|
@ -309,6 +323,8 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
global $wp_ffpc_backend;
|
global $wp_ffpc_backend;
|
||||||
/* check is it's a redirect */
|
/* check is it's a redirect */
|
||||||
global $wp_ffpc_redirect;
|
global $wp_ffpc_redirect;
|
||||||
|
/* check is it's a mobile version*/
|
||||||
|
global $mobile_detect;
|
||||||
|
|
||||||
/* no is_home = error, WordPress functions are not availabe */
|
/* no is_home = error, WordPress functions are not availabe */
|
||||||
if (!function_exists('is_home'))
|
if (!function_exists('is_home'))
|
||||||
|
@ -458,10 +474,15 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
/* add generation info is option is set, but only to HTML */
|
/* add generation info is option is set, but only to HTML */
|
||||||
if ( $wp_ffpc_config['generate_time'] == '1' && stripos($buffer, '</body>') ) {
|
if ( $wp_ffpc_config['generate_time'] == '1' && stripos($buffer, '</body>') ) {
|
||||||
global $wp_ffpc_gentime;
|
global $wp_ffpc_gentime;
|
||||||
|
|
||||||
|
/* verify the device type to output into the generation stats */
|
||||||
|
$device_type = $mobile_detect -> isMobile() ? 'mobile': 'desktop';
|
||||||
|
__wp_ffpc_debug__('The device type is: ' . $device_type);
|
||||||
|
|
||||||
$mtime = explode ( " ", microtime() );
|
$mtime = explode ( " ", microtime() );
|
||||||
$wp_ffpc_gentime = ( $mtime[1] + $mtime[0] )- $wp_ffpc_gentime;
|
$wp_ffpc_gentime = ( $mtime[1] + $mtime[0] )- $wp_ffpc_gentime;
|
||||||
|
|
||||||
$insertion = "\n<!-- WP-FFPC cache generation stats" . "\n\tgeneration time: ". round( $wp_ffpc_gentime, 3 ) ." seconds\n\tgeneraton UNIX timestamp: ". time() . "\n\tgeneraton date: ". date( 'c' ) . "\n\tgenerator server: ". $_SERVER['SERVER_ADDR'] . " -->\n";
|
$insertion = "\n<!-- WP-FFPC cache generation stats" . "\n\tgeneration time: ". round( $wp_ffpc_gentime, 3 ) ." seconds\n\tgeneraton UNIX timestamp: ". time() . "\n\tgeneraton date: ". date( 'c' ) . "\n\tDevice Type: " . $device_type . "\n\tgenerator server: ". $_SERVER['SERVER_ADDR'] . " -->\n";
|
||||||
$index = stripos( $buffer , '</body>' );
|
$index = stripos( $buffer , '</body>' );
|
||||||
|
|
||||||
$to_store = substr_replace( $buffer, $insertion, $index, 0);
|
$to_store = substr_replace( $buffer, $insertion, $index, 0);
|
||||||
|
@ -480,10 +501,10 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
*/
|
*/
|
||||||
$to_store = apply_filters( 'wp-ffpc-to-store', $to_store );
|
$to_store = apply_filters( 'wp-ffpc-to-store', $to_store );
|
||||||
|
|
||||||
$prefix_meta = $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_meta'] );
|
$prefix_meta = ($mobile_detect -> isMobile())? $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_meta_mobile'] ): $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_meta'] );
|
||||||
$wp_ffpc_backend->set ( $prefix_meta, $meta );
|
$wp_ffpc_backend->set ( $prefix_meta, $meta );
|
||||||
|
|
||||||
$prefix_data = $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_data'] );
|
$prefix_data = ($mobile_detect -> isMobile())? $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_data_mobile'] ): $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_data'] );
|
||||||
$wp_ffpc_backend->set ( $prefix_data , $to_store );
|
$wp_ffpc_backend->set ( $prefix_data , $to_store );
|
||||||
|
|
||||||
if ( !empty( $meta['status'] ) && $meta['status'] == 404 ) {
|
if ( !empty( $meta['status'] ) && $meta['status'] == 404 ) {
|
||||||
|
|
2375
wp-ffpc-class.php
2375
wp-ffpc-class.php
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
||||||
Plugin Name: WP-FFPC
|
Plugin Name: WP-FFPC
|
||||||
Plugin URI: https://github.com/petermolnar/wp-ffpc
|
Plugin URI: https://github.com/petermolnar/wp-ffpc
|
||||||
Description: WordPress in-memory full page cache plugin
|
Description: WordPress in-memory full page cache plugin
|
||||||
Version: 1.11.1
|
Version: 1.12.0
|
||||||
Author: Peter Molnar <hello@petermolnar.eu>
|
Author: Peter Molnar <hello@petermolnar.eu>
|
||||||
Author URI: http://petermolnar.eu/
|
Author URI: http://petermolnar.eu/
|
||||||
License: GPLv3
|
License: GPLv3
|
||||||
|
@ -44,7 +44,9 @@ $wp_ffpc_defaults = array (
|
||||||
'expire_taxonomy' => 300,
|
'expire_taxonomy' => 300,
|
||||||
'invalidation_method' => 0,
|
'invalidation_method' => 0,
|
||||||
'prefix_meta' => 'meta-',
|
'prefix_meta' => 'meta-',
|
||||||
|
'prefix_meta_mobile' => 'meta-mobile-',
|
||||||
'prefix_data' => 'data-',
|
'prefix_data' => 'data-',
|
||||||
|
'prefix_data_mobile' => 'data-mobile-',
|
||||||
'charset' => 'utf-8',
|
'charset' => 'utf-8',
|
||||||
'log' => true,
|
'log' => true,
|
||||||
'cache_type' => 'memcached',
|
'cache_type' => 'memcached',
|
||||||
|
@ -69,4 +71,4 @@ $wp_ffpc_defaults = array (
|
||||||
'hashkey' => false,
|
'hashkey' => false,
|
||||||
);
|
);
|
||||||
|
|
||||||
$wp_ffpc = new WP_FFPC ( 'wp-ffpc', '1.11.2', 'WP-FFPC', $wp_ffpc_defaults, 'PeterMolnar_WordPressPlugins_wp-ffpc_HU' , 'WP-FFPC' , 'FA3NT7XDVHPWU' );
|
$wp_ffpc = new WP_FFPC ( 'wp-ffpc', '1.12.0', 'WP-FFPC', $wp_ffpc_defaults, 'PeterMolnar_WordPressPlugins_wp-ffpc_HU' , 'WP-FFPC' , 'FA3NT7XDVHPWU' );
|
||||||
|
|
Loading…
Reference in a new issue