mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
Cron jobs and tracking
This commit is contained in:
@@ -1,5 +1,40 @@
|
||||
<?php
|
||||
|
||||
/***
|
||||
*** @Opt-in tracking
|
||||
***/
|
||||
add_action('um_admin_do_action__opt_into_tracking', 'um_admin_do_action__opt_into_tracking');
|
||||
function um_admin_do_action__opt_into_tracking( $action ){
|
||||
global $ultimatemember;
|
||||
if ( !is_admin() || !current_user_can('manage_options') ) die();
|
||||
|
||||
global $reduxConfig;
|
||||
$reduxConfig->ReduxFramework->set('allow_tracking', 1);
|
||||
|
||||
update_option('um_tracking_notice', 1 );
|
||||
|
||||
$tracking = new UM_Admin_Tracking();
|
||||
$tracking->send_checkin( true );
|
||||
|
||||
exit( wp_redirect( remove_query_arg('um_adm_action') ) );
|
||||
}
|
||||
|
||||
/***
|
||||
*** @Opt-out of tracking
|
||||
***/
|
||||
add_action('um_admin_do_action__opt_out_of_tracking', 'um_admin_do_action__opt_out_of_tracking');
|
||||
function um_admin_do_action__opt_out_of_tracking( $action ){
|
||||
global $ultimatemember;
|
||||
if ( !is_admin() || !current_user_can('manage_options') ) die();
|
||||
|
||||
global $reduxConfig;
|
||||
$reduxConfig->ReduxFramework->set('allow_tracking', 0);
|
||||
|
||||
update_option('um_tracking_notice', 1 );
|
||||
|
||||
exit( wp_redirect( remove_query_arg('um_adm_action') ) );
|
||||
}
|
||||
|
||||
/***
|
||||
*** @Un-install UM completely
|
||||
***/
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
|
||||
class UM_Admin_Tracking {
|
||||
|
||||
private $data;
|
||||
|
||||
public function __construct() {
|
||||
|
||||
$this->schedule_send();
|
||||
|
||||
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
*** @setup info array
|
||||
***/
|
||||
private function setup_data() {
|
||||
|
||||
$data = array();
|
||||
|
||||
// Retrieve current theme info
|
||||
if ( get_bloginfo( 'version' ) < '3.4' ) {
|
||||
$theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
|
||||
$theme = $theme_data['Name'];
|
||||
$theme_ver = $theme_data['Version'];
|
||||
} else {
|
||||
$theme_data = wp_get_theme();
|
||||
$theme = $theme_data->Name;
|
||||
$theme_ver = $theme_data->Version;
|
||||
}
|
||||
|
||||
$data['name'] = get_bloginfo('name');
|
||||
$data['url'] = home_url();
|
||||
$data['theme'] = $theme;
|
||||
$data['theme_version'] = $theme_ver;
|
||||
$data['wp_version'] = get_bloginfo( 'version' );
|
||||
$data['version'] = ULTIMATEMEMBER_VERSION;
|
||||
$data['email'] = get_bloginfo( 'admin_email' );
|
||||
|
||||
$result = count_users();
|
||||
$data['users_count'] = $result['total_users'];
|
||||
|
||||
// Retrieve current plugin information
|
||||
if( ! function_exists( 'get_plugins' ) ) {
|
||||
include ABSPATH . '/wp-admin/includes/plugin.php';
|
||||
}
|
||||
|
||||
$plugins = array_keys( get_plugins() );
|
||||
$active_plugins = get_option( 'active_plugins', array() );
|
||||
|
||||
foreach ( $plugins as $key => $plugin ) {
|
||||
if ( in_array( $plugin, $active_plugins ) ) {
|
||||
// Remove active plugins from list so we can show active and inactive separately
|
||||
unset( $plugins[ $key ] );
|
||||
}
|
||||
}
|
||||
|
||||
$data['active_plugins'] = $active_plugins;
|
||||
$data['inactive_plugins'] = $plugins;
|
||||
|
||||
$this->data = $data;
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
*** @check if tracking is allowed
|
||||
***/
|
||||
private function tracking_allowed() {
|
||||
if ( !um_get_option('allow_tracking') )
|
||||
return 0;
|
||||
|
||||
if( stristr( network_site_url( '/' ), 'dev' ) !== false ||
|
||||
stristr( network_site_url( '/' ), 'localhost' ) !== false ||
|
||||
stristr( network_site_url( '/' ), ':8888' ) !== false // This is common with MAMP on OS X
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/***
|
||||
*** @get last send time
|
||||
***/
|
||||
private function get_last_send() {
|
||||
return get_option( 'um_tracking_last_send' );
|
||||
}
|
||||
|
||||
/***
|
||||
*** @send a report
|
||||
***/
|
||||
public function send_checkin( $override = false ) {
|
||||
|
||||
if( ! $this->tracking_allowed() && ! $override )
|
||||
return;
|
||||
|
||||
// Send a maximum of once per week
|
||||
$last_send = $this->get_last_send();
|
||||
if( $last_send && $last_send > strtotime( '-1 week' ) )
|
||||
return;
|
||||
|
||||
$this->setup_data();
|
||||
|
||||
$request = wp_remote_post( 'http://ultimatemember.com/?um_action=checkin', array(
|
||||
'method' => 'POST',
|
||||
'timeout' => 20,
|
||||
'redirection' => 5,
|
||||
'httpversion' => '1.0',
|
||||
'blocking' => true,
|
||||
'body' => $this->data,
|
||||
'user-agent' => 'UM/' . ULTIMATEMEMBER_VERSION . '; ' . get_bloginfo( 'url' ),
|
||||
) );
|
||||
|
||||
update_option( 'um_tracking_last_send', time() );
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
*** @run a scheduled report
|
||||
***/
|
||||
private function schedule_send() {
|
||||
add_action( 'um_weekly_scheduled_events', array( $this, 'send_checkin' ) );
|
||||
}
|
||||
|
||||
/***
|
||||
*** @show admin notices
|
||||
***/
|
||||
public function admin_notices() {
|
||||
|
||||
if( ! current_user_can( 'manage_options' ) )
|
||||
return;
|
||||
|
||||
$hide_notice = get_option('um_tracking_notice');
|
||||
|
||||
if ( $hide_notice )
|
||||
return;
|
||||
|
||||
$optin_url = add_query_arg( 'um_adm_action', 'opt_into_tracking' );
|
||||
$optout_url = add_query_arg( 'um_adm_action', 'opt_out_of_tracking' );
|
||||
|
||||
echo '<div class="updated"><p style="line-height: 2em">';
|
||||
echo __( 'Help us improve Ultimate Member by allowing us to anonymously track plugin and theme usage. This helps us to improve plugin and theme compatibility. No sensitive data will be tracked.', 'ultimatemember' );
|
||||
echo '<br />';
|
||||
echo '<a href="' . esc_url( $optin_url ) . '" class="button button-primary">' . __( 'Allow tracking', 'ultimatemember' ) . '</a>';
|
||||
echo ' <a href="' . esc_url( $optout_url ) . '" class="button-secondary">' . __( 'Do not allow tracking', 'ultimatemember' ) . '</a>';
|
||||
echo '</p></div>';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,6 +34,7 @@ class UM_Admin_API {
|
||||
require_once um_path . 'admin/core/um-admin-roles.php';
|
||||
require_once um_path . 'admin/core/um-admin-builder.php';
|
||||
require_once um_path . 'admin/core/um-admin-dragdrop.php';
|
||||
require_once um_path . 'admin/core/um-admin-tracking.php';
|
||||
|
||||
require_once um_path . 'admin/core/um-admin-actions-user.php';
|
||||
require_once um_path . 'admin/core/um-admin-actions-modal.php';
|
||||
@@ -54,6 +55,7 @@ class UM_Admin_API {
|
||||
$this->access = new UM_Admin_Access();
|
||||
$this->builder = new UM_Admin_Builder();
|
||||
$this->dragdrop = new UM_Admin_DragDrop();
|
||||
$this->tracking = new UM_Admin_Tracking();
|
||||
|
||||
if ( is_admin() &&
|
||||
current_user_can('manage_options') &&
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
class UM_Cron {
|
||||
|
||||
public function __construct() {
|
||||
add_filter( 'cron_schedules', array( $this, 'add_schedules' ) );
|
||||
add_action( 'wp', array( $this, 'schedule_Events' ) );
|
||||
}
|
||||
|
||||
public function add_schedules( $schedules = array() ) {
|
||||
|
||||
// Adds once weekly to the existing schedules.
|
||||
$schedules['weekly'] = array(
|
||||
'interval' => 604800,
|
||||
'display' => __( 'Once Weekly', 'ultimatemember' )
|
||||
);
|
||||
|
||||
return $schedules;
|
||||
}
|
||||
|
||||
public function schedule_Events() {
|
||||
$this->weekly_events();
|
||||
$this->daily_events();
|
||||
}
|
||||
|
||||
private function weekly_events() {
|
||||
if ( ! wp_next_scheduled( 'um_weekly_scheduled_events' ) ) {
|
||||
wp_schedule_event( current_time( 'timestamp' ), 'weekly', 'um_weekly_scheduled_events' );
|
||||
}
|
||||
}
|
||||
|
||||
private function daily_events() {
|
||||
if ( ! wp_next_scheduled( 'um_daily_scheduled_events' ) ) {
|
||||
wp_schedule_event( current_time( 'timestamp' ), 'daily', 'um_daily_scheduled_events' );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,7 +11,7 @@ class UM_Taxonomies {
|
||||
/***
|
||||
*** @Create taxonomies for use for UM
|
||||
***/
|
||||
function create_taxonomies( $user_id = null ) {
|
||||
function create_taxonomies() {
|
||||
|
||||
register_post_type( 'um_form', array(
|
||||
'labels' => array(
|
||||
|
||||
@@ -1433,6 +1433,16 @@ $this->sections[] = array(
|
||||
'title' => __( 'Advanced'),
|
||||
'fields' => array(
|
||||
|
||||
array(
|
||||
'id' => 'allow_tracking',
|
||||
'type' => 'switch',
|
||||
'title' => __( 'Allow anonymous tracking' ),
|
||||
'default' => 0,
|
||||
'desc' => 'Help us improve Ultimate Member by allowing us to anonymously track plugin and theme usage. This helps us to improve plugin and theme compatibility. No sensitive data will be tracked.',
|
||||
'on' => 'Allow tracking',
|
||||
'off' => 'Do not allow',
|
||||
),
|
||||
|
||||
array(
|
||||
'id' => 'admin_load_time',
|
||||
'type' => 'switch',
|
||||
|
||||
@@ -52,6 +52,7 @@ class UM_API {
|
||||
require_once um_path . 'core/um-members.php';
|
||||
require_once um_path . 'core/um-logout.php';
|
||||
require_once um_path . 'core/um-modal.php';
|
||||
require_once um_path . 'core/um-cron.php';
|
||||
|
||||
require_once um_path . 'core/lib/mobiledetect/Mobile_Detect.php';
|
||||
|
||||
@@ -113,6 +114,8 @@ class UM_API {
|
||||
$this->members = new UM_Members();
|
||||
$this->logout = new UM_Logout();
|
||||
$this->modal = new UM_Modal();
|
||||
$this->cron = new UM_Cron();
|
||||
|
||||
$this->mobile = new Mobile_Detect;
|
||||
|
||||
$this->options = get_option('um_options');
|
||||
|
||||
Reference in New Issue
Block a user