Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/ninja-fo.../lib
File: NF_Tracking.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Tracking functions for reporting plugin usage to the Ninja Forms site for users that have opted in
[2] Fix | Delete
*
[3] Fix | Delete
* @package Ninja Forms
[4] Fix | Delete
* @subpackage Admin
[5] Fix | Delete
* @copyright Copyright (c) 2016, The WP Ninjas
[6] Fix | Delete
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
[7] Fix | Delete
* @since 2.9.52
[8] Fix | Delete
*/
[9] Fix | Delete
[10] Fix | Delete
// Exit if accessed directly
[11] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) exit;
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Class NF_Tracking
[15] Fix | Delete
*/
[16] Fix | Delete
final class NF_Tracking
[17] Fix | Delete
{
[18] Fix | Delete
const OPT_IN = 1;
[19] Fix | Delete
const OPT_OUT = 0;
[20] Fix | Delete
const FLAG = 'ninja_forms_opt_in';
[21] Fix | Delete
[22] Fix | Delete
/**
[23] Fix | Delete
* NF_Tracking constructor.
[24] Fix | Delete
*/
[25] Fix | Delete
public function __construct()
[26] Fix | Delete
{
[27] Fix | Delete
[28] Fix | Delete
// Temporary: Report previously opted-in users that were not already reported. @todo Remove after a couple of versions.
[29] Fix | Delete
// add_action( 'admin_init', array( $this, 'report_optin' ) );
[30] Fix | Delete
[31] Fix | Delete
// Ajax call handled in 'maybe_opt_in' in this file
[32] Fix | Delete
add_action( 'wp_ajax_nf_optin', array( $this, 'maybe_opt_in' ) );
[33] Fix | Delete
add_filter( 'ninja_forms_check_setting_allow_tracking', array( $this, 'check_setting' ) );
[34] Fix | Delete
add_filter( 'ninja_forms_update_setting_allow_tracking', array( $this, 'update_setting' ) );
[35] Fix | Delete
}
[36] Fix | Delete
[37] Fix | Delete
/**
[38] Fix | Delete
* Check if an opt in/out action should be performed.
[39] Fix | Delete
*
[40] Fix | Delete
* @access public
[41] Fix | Delete
* @hook admin_init
[42] Fix | Delete
*/
[43] Fix | Delete
public function maybe_opt_in()
[44] Fix | Delete
{
[45] Fix | Delete
if( $this->can_opt_in() ) {
[46] Fix | Delete
[47] Fix | Delete
$opt_in_action = htmlspecialchars( $_POST[ self::FLAG ] );
[48] Fix | Delete
[49] Fix | Delete
if( self::OPT_IN == $opt_in_action ){
[50] Fix | Delete
$this->opt_in();
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
if( self::OPT_OUT == $opt_in_action ){
[54] Fix | Delete
$this->opt_out();
[55] Fix | Delete
}
[56] Fix | Delete
}
[57] Fix | Delete
die( 1 );
[58] Fix | Delete
}
[59] Fix | Delete
[60] Fix | Delete
/**
[61] Fix | Delete
* Report that a user has opted-in.
[62] Fix | Delete
*
[63] Fix | Delete
* @param array $data Dispatch event data.
[64] Fix | Delete
*/
[65] Fix | Delete
function report_optin($data = array() )
[66] Fix | Delete
{
[67] Fix | Delete
// Only send initial opt-in.
[68] Fix | Delete
if( get_option( 'ninja_forms_optin_reported', 0 ) ) return;
[69] Fix | Delete
[70] Fix | Delete
$data = wp_parse_args( $data, array(
[71] Fix | Delete
'send_email' => 0, // Do not send email by default.
[72] Fix | Delete
'user_email' => ''
[73] Fix | Delete
) );
[74] Fix | Delete
[75] Fix | Delete
Ninja_Forms()->dispatcher()->send( 'optin', $data );
[76] Fix | Delete
Ninja_Forms()->dispatcher()->update_environment_vars();
[77] Fix | Delete
[78] Fix | Delete
// Debounce opt-in dispatch.
[79] Fix | Delete
update_option( 'ninja_forms_optin_reported', 1 );
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
/**
[83] Fix | Delete
* Check if the current user is allowed to opt in on behalf of a site
[84] Fix | Delete
*
[85] Fix | Delete
* @return bool
[86] Fix | Delete
*/
[87] Fix | Delete
private function can_opt_in()
[88] Fix | Delete
{
[89] Fix | Delete
return current_user_can( apply_filters( 'ninja_forms_admin_opt_in_capabilities', 'manage_options' ) );
[90] Fix | Delete
}
[91] Fix | Delete
[92] Fix | Delete
/**
[93] Fix | Delete
* Check if a site is opted in
[94] Fix | Delete
*
[95] Fix | Delete
* @access public
[96] Fix | Delete
* @return bool
[97] Fix | Delete
*/
[98] Fix | Delete
public function is_opted_in()
[99] Fix | Delete
{
[100] Fix | Delete
return (bool) get_option( 'ninja_forms_allow_tracking' );
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
/**
[104] Fix | Delete
* Opt In a site for tracking
[105] Fix | Delete
*
[106] Fix | Delete
* @access private
[107] Fix | Delete
* @return null
[108] Fix | Delete
*/
[109] Fix | Delete
public function opt_in()
[110] Fix | Delete
{
[111] Fix | Delete
if( $this->is_opted_in() ) return;
[112] Fix | Delete
[113] Fix | Delete
/**
[114] Fix | Delete
* Update our tracking options.
[115] Fix | Delete
*/
[116] Fix | Delete
update_option( 'ninja_forms_allow_tracking', true );
[117] Fix | Delete
update_option( 'ninja_forms_do_not_allow_tracking', false );
[118] Fix | Delete
[119] Fix | Delete
/**
[120] Fix | Delete
* Send updated environment variables.
[121] Fix | Delete
*/
[122] Fix | Delete
Ninja_Forms()->dispatcher()->update_environment_vars();
[123] Fix | Delete
[124] Fix | Delete
/**
[125] Fix | Delete
* Send our optin event
[126] Fix | Delete
*/
[127] Fix | Delete
$send_email = 0;
[128] Fix | Delete
$user_email = '';
[129] Fix | Delete
[130] Fix | Delete
if (isset($_REQUEST['send_email'])
[131] Fix | Delete
&& isset($_REQUEST['user_email'])
[132] Fix | Delete
&& is_email($_REQUEST['user_email'])) {
[133] Fix | Delete
$send_email = absint($_REQUEST['send_email']);
[134] Fix | Delete
$user_email = sanitize_email($_REQUEST['user_email']);
[135] Fix | Delete
add_option('ninja_forms_optin_email', $user_email, '', 'no');
[136] Fix | Delete
}
[137] Fix | Delete
[138] Fix | Delete
$this->report_optin( array( 'send_email' => $send_email, 'user_email' => $user_email ) );
[139] Fix | Delete
}
[140] Fix | Delete
[141] Fix | Delete
/**
[142] Fix | Delete
* Check if a site is opted out
[143] Fix | Delete
*
[144] Fix | Delete
* @access public
[145] Fix | Delete
* @return bool
[146] Fix | Delete
*/
[147] Fix | Delete
public function is_opted_out()
[148] Fix | Delete
{
[149] Fix | Delete
return (bool) get_option( 'ninja_forms_do_not_allow_tracking' );
[150] Fix | Delete
}
[151] Fix | Delete
[152] Fix | Delete
/**
[153] Fix | Delete
* Opt Out a site from tracking
[154] Fix | Delete
*
[155] Fix | Delete
* @access private
[156] Fix | Delete
* @return null
[157] Fix | Delete
*/
[158] Fix | Delete
private function opt_out()
[159] Fix | Delete
{
[160] Fix | Delete
if( $this->is_opted_out() ) return;
[161] Fix | Delete
[162] Fix | Delete
$data = array();
[163] Fix | Delete
$user_email = get_option( 'ninja_forms_optin_email' );
[164] Fix | Delete
if ($user_email && is_email($user_email)) {
[165] Fix | Delete
$data['user_email'] = sanitize_email($user_email);
[166] Fix | Delete
}
[167] Fix | Delete
Ninja_Forms()->dispatcher()->send( 'optout', $data );
[168] Fix | Delete
delete_option( 'ninja_forms_optin_email' );
[169] Fix | Delete
[170] Fix | Delete
// Disable tracking.
[171] Fix | Delete
update_option( 'ninja_forms_allow_tracking', false );
[172] Fix | Delete
update_option( 'ninja_forms_do_not_allow_tracking', true );
[173] Fix | Delete
[174] Fix | Delete
// Clear dispatch debounce flag.
[175] Fix | Delete
update_option( 'ninja_forms_optin_reported', 0 );
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
public function check_setting( $setting )
[179] Fix | Delete
{
[180] Fix | Delete
if( $this->is_opted_in() && ! $this->is_opted_out() ) {
[181] Fix | Delete
$setting[ 'value' ] = "1";
[182] Fix | Delete
} else {
[183] Fix | Delete
$setting[ 'value' ] = "0";
[184] Fix | Delete
}
[185] Fix | Delete
return $setting;
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
public function update_setting( $value )
[189] Fix | Delete
{
[190] Fix | Delete
if( "1" == $value ){ // Allow Tracking
[191] Fix | Delete
$this->opt_in();
[192] Fix | Delete
} else {
[193] Fix | Delete
$this->opt_out();
[194] Fix | Delete
}
[195] Fix | Delete
return $value;
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
} // END CLASS NF_Tracking
[199] Fix | Delete
[200] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function