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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/content-.../inc/freemius/includes
File: class-freemius.php
$common_diff = null;
[9500] Fix | Delete
$is_common_diff = false;
[9501] Fix | Delete
if ( $only_diff ) {
[9502] Fix | Delete
$install_data = $this->get_install_diff_for_api( $install_data, $install, $override );
[9503] Fix | Delete
$common_diff = $this->get_install_diff_for_api( $common, $install, $override );
[9504] Fix | Delete
[9505] Fix | Delete
$is_common_diff = ! empty( $common_diff );
[9506] Fix | Delete
[9507] Fix | Delete
if ( $is_common_diff ) {
[9508] Fix | Delete
foreach ( $common_diff as $k => $v ) {
[9509] Fix | Delete
if ( ! isset( $common_diff_union[ $k ] ) ) {
[9510] Fix | Delete
$common_diff_union[ $k ] = $v;
[9511] Fix | Delete
}
[9512] Fix | Delete
}
[9513] Fix | Delete
}
[9514] Fix | Delete
[9515] Fix | Delete
$is_common_diff_for_any_site = $is_common_diff_for_any_site || $is_common_diff;
[9516] Fix | Delete
}
[9517] Fix | Delete
[9518] Fix | Delete
if ( ! empty( $install_data ) || $is_common_diff || $is_keepalive ) {
[9519] Fix | Delete
// Add install ID and site unique ID.
[9520] Fix | Delete
$install_data['id'] = $install->id;
[9521] Fix | Delete
$install_data['uid'] = $uid;
[9522] Fix | Delete
$install_data['url'] = $url;
[9523] Fix | Delete
[9524] Fix | Delete
$subsite_data_for_api_by_install_id[ $install->id ] = $install_data;
[9525] Fix | Delete
$install_url_by_install_id[ $install->id ] = $install->url;
[9526] Fix | Delete
$subsite_registration_date_by_install_id[ $install->id ] = $registration_date;
[9527] Fix | Delete
}
[9528] Fix | Delete
}
[9529] Fix | Delete
}
[9530] Fix | Delete
[9531] Fix | Delete
restore_current_blog();
[9532] Fix | Delete
[9533] Fix | Delete
$installs_data = array_merge(
[9534] Fix | Delete
$installs_data,
[9535] Fix | Delete
array_values( $subsite_data_for_api_by_install_id )
[9536] Fix | Delete
);
[9537] Fix | Delete
[9538] Fix | Delete
if ( 0 < count( $installs_data ) && ( $is_common_diff_for_any_site || ! $only_diff ) ) {
[9539] Fix | Delete
if ( ! $only_diff ) {
[9540] Fix | Delete
$installs_data[] = $common;
[9541] Fix | Delete
} else if ( ! empty( $common_diff_union ) ) {
[9542] Fix | Delete
$installs_data[] = $common_diff_union;
[9543] Fix | Delete
}
[9544] Fix | Delete
}
[9545] Fix | Delete
[9546] Fix | Delete
foreach ( $installs_data as &$data ) {
[9547] Fix | Delete
$data = (object) $data;
[9548] Fix | Delete
}
[9549] Fix | Delete
[9550] Fix | Delete
return $installs_data;
[9551] Fix | Delete
}
[9552] Fix | Delete
[9553] Fix | Delete
/**
[9554] Fix | Delete
* Compare site actual data to the stored install data and return the differences for an API data sync.
[9555] Fix | Delete
*
[9556] Fix | Delete
* @author Vova Feldman (@svovaf)
[9557] Fix | Delete
* @since 2.0.0
[9558] Fix | Delete
*
[9559] Fix | Delete
* @param array $site
[9560] Fix | Delete
* @param FS_Site $install
[9561] Fix | Delete
* @param string[] string $override
[9562] Fix | Delete
*
[9563] Fix | Delete
* @return array
[9564] Fix | Delete
*/
[9565] Fix | Delete
private function get_install_diff_for_api( $site, $install, $override = array() ) {
[9566] Fix | Delete
$diff = array();
[9567] Fix | Delete
$special = array();
[9568] Fix | Delete
$special_override = false;
[9569] Fix | Delete
[9570] Fix | Delete
foreach ( $site as $p => $v ) {
[9571] Fix | Delete
if ( property_exists( $install, $p ) ) {
[9572] Fix | Delete
if ( ( is_bool( $install->{$p} ) || ! empty( $install->{$p} ) ) &&
[9573] Fix | Delete
$install->{$p} != $v
[9574] Fix | Delete
) {
[9575] Fix | Delete
$val = self::get_api_sanitized_property( $p, $v );
[9576] Fix | Delete
[9577] Fix | Delete
if ( $install->{$p} != $val ) {
[9578] Fix | Delete
$install->{$p} = $val;
[9579] Fix | Delete
$diff[ $p ] = $val;
[9580] Fix | Delete
}
[9581] Fix | Delete
}
[9582] Fix | Delete
} else {
[9583] Fix | Delete
$special[ $p ] = $v;
[9584] Fix | Delete
[9585] Fix | Delete
if ( isset( $override[ $p ] ) ||
[9586] Fix | Delete
'plugins' === $p ||
[9587] Fix | Delete
'themes' === $p
[9588] Fix | Delete
) {
[9589] Fix | Delete
$special_override = true;
[9590] Fix | Delete
}
[9591] Fix | Delete
}
[9592] Fix | Delete
}
[9593] Fix | Delete
[9594] Fix | Delete
if ( $special_override || 0 < count( $diff ) ) {
[9595] Fix | Delete
// Add special params only if has at least one
[9596] Fix | Delete
// standard param, or if explicitly requested to
[9597] Fix | Delete
// override a special param or a param which is not exist
[9598] Fix | Delete
// in the install object.
[9599] Fix | Delete
$diff = array_merge( $diff, $special );
[9600] Fix | Delete
}
[9601] Fix | Delete
[9602] Fix | Delete
return $diff;
[9603] Fix | Delete
}
[9604] Fix | Delete
[9605] Fix | Delete
/**
[9606] Fix | Delete
* @author Leo Fajardo (@leorw)
[9607] Fix | Delete
* @since 2.5.1
[9608] Fix | Delete
*/
[9609] Fix | Delete
private function send_pending_clone_update_once() {
[9610] Fix | Delete
$this->_logger->entrance();
[9611] Fix | Delete
[9612] Fix | Delete
if ( ! empty( $this->_storage->clone_id ) ) {
[9613] Fix | Delete
return;
[9614] Fix | Delete
}
[9615] Fix | Delete
[9616] Fix | Delete
$install_clone = $this->get_api_site_scope()->call(
[9617] Fix | Delete
'/clones',
[9618] Fix | Delete
'post',
[9619] Fix | Delete
array( 'site_url' => self::get_unfiltered_site_url() )
[9620] Fix | Delete
);
[9621] Fix | Delete
[9622] Fix | Delete
if ( $this->is_api_result_entity( $install_clone ) ) {
[9623] Fix | Delete
$this->_storage->clone_id = $install_clone->id;
[9624] Fix | Delete
}
[9625] Fix | Delete
}
[9626] Fix | Delete
[9627] Fix | Delete
/**
[9628] Fix | Delete
* @author Leo Fajardo (@leorw)
[9629] Fix | Delete
* @since 2.5.1
[9630] Fix | Delete
*
[9631] Fix | Delete
* @param string $resolution_type
[9632] Fix | Delete
* @param FS_Site $clone_context_install
[9633] Fix | Delete
*/
[9634] Fix | Delete
function send_clone_resolution_update( $resolution_type, $clone_context_install ) {
[9635] Fix | Delete
$this->_logger->entrance();
[9636] Fix | Delete
[9637] Fix | Delete
if ( empty( $this->_storage->clone_id ) ) {
[9638] Fix | Delete
return;
[9639] Fix | Delete
}
[9640] Fix | Delete
[9641] Fix | Delete
$new_install_id = null;
[9642] Fix | Delete
$current_site = null;
[9643] Fix | Delete
[9644] Fix | Delete
$flush = false;
[9645] Fix | Delete
[9646] Fix | Delete
/**
[9647] Fix | Delete
* If the current site is now different from the context install before the clone resolution, we need to override `$this->_site` so that the API call below will be made with the right install scope entity.
[9648] Fix | Delete
*/
[9649] Fix | Delete
if ( $clone_context_install->id != $this->_site->id ) {
[9650] Fix | Delete
$new_install_id = $this->_site->id;
[9651] Fix | Delete
$current_site = $this->_site;
[9652] Fix | Delete
$this->_site = $clone_context_install;
[9653] Fix | Delete
[9654] Fix | Delete
$flush = true;
[9655] Fix | Delete
}
[9656] Fix | Delete
[9657] Fix | Delete
$this->get_api_site_scope( $flush )->call(
[9658] Fix | Delete
"/clones/{$this->_storage->clone_id}",
[9659] Fix | Delete
'put',
[9660] Fix | Delete
array(
[9661] Fix | Delete
'resolution' => $resolution_type,
[9662] Fix | Delete
'new_install_id' => $new_install_id,
[9663] Fix | Delete
)
[9664] Fix | Delete
);
[9665] Fix | Delete
[9666] Fix | Delete
if ( is_object( $current_site ) ) {
[9667] Fix | Delete
/**
[9668] Fix | Delete
* Ensure that the install scope entity is updated back to the previous install entity.
[9669] Fix | Delete
*/
[9670] Fix | Delete
$this->_site = $current_site;
[9671] Fix | Delete
[9672] Fix | Delete
// Restore the previous install scope entity of the API.
[9673] Fix | Delete
$this->get_api_site_scope( true );
[9674] Fix | Delete
}
[9675] Fix | Delete
}
[9676] Fix | Delete
[9677] Fix | Delete
/**
[9678] Fix | Delete
* Update install only if changed.
[9679] Fix | Delete
*
[9680] Fix | Delete
* @author Vova Feldman (@svovaf)
[9681] Fix | Delete
* @since 1.0.9
[9682] Fix | Delete
*
[9683] Fix | Delete
* @param string[] string $override
[9684] Fix | Delete
* @param bool $flush
[9685] Fix | Delete
* @param bool $is_two_way_sync @since 2.5.0 If true and there's a successful API request, the install sync cron will be cleared.
[9686] Fix | Delete
*
[9687] Fix | Delete
* @return false|object|string
[9688] Fix | Delete
*/
[9689] Fix | Delete
private function send_install_update( $override = array(), $flush = false, $is_two_way_sync = false ) {
[9690] Fix | Delete
$this->_logger->entrance();
[9691] Fix | Delete
[9692] Fix | Delete
$check_properties = $this->get_install_data_for_api( $override );
[9693] Fix | Delete
[9694] Fix | Delete
if ( $flush ) {
[9695] Fix | Delete
$params = $check_properties;
[9696] Fix | Delete
} else {
[9697] Fix | Delete
$params = $this->get_install_diff_for_api( $check_properties, $this->_site, $override );
[9698] Fix | Delete
}
[9699] Fix | Delete
[9700] Fix | Delete
if ( empty( $params ) ) {
[9701] Fix | Delete
$keepalive_only_update = $this->should_send_keepalive_update();
[9702] Fix | Delete
[9703] Fix | Delete
if ( ! $keepalive_only_update ) {
[9704] Fix | Delete
/**
[9705] Fix | Delete
* There are no updates to send including keepalive.
[9706] Fix | Delete
*
[9707] Fix | Delete
* @author Leo Fajardo (@leorw)
[9708] Fix | Delete
* @since 2.2.3
[9709] Fix | Delete
*/
[9710] Fix | Delete
return false;
[9711] Fix | Delete
}
[9712] Fix | Delete
}
[9713] Fix | Delete
[9714] Fix | Delete
if ( $is_two_way_sync ) {
[9715] Fix | Delete
/**
[9716] Fix | Delete
* Update last install sync timestamp during a two-way sync call as we expect that updates are sent during this call.
[9717] Fix | Delete
*
[9718] Fix | Delete
* @author Leo Fajardo (@leorw)
[9719] Fix | Delete
* @since 2.2.3
[9720] Fix | Delete
*/
[9721] Fix | Delete
if ( ! is_multisite() ) {
[9722] Fix | Delete
// Update last install sync timestamp.
[9723] Fix | Delete
$this->set_cron_execution_timestamp( 'install_sync' );
[9724] Fix | Delete
}
[9725] Fix | Delete
[9726] Fix | Delete
$params['uid'] = $this->get_anonymous_id();
[9727] Fix | Delete
}
[9728] Fix | Delete
[9729] Fix | Delete
$this->set_keepalive_timestamp();
[9730] Fix | Delete
[9731] Fix | Delete
// Send updated values to FS.
[9732] Fix | Delete
$site = $this->api_site_call( '/', 'put', $params, true );
[9733] Fix | Delete
[9734] Fix | Delete
if ( $is_two_way_sync && $this->is_api_result_entity( $site ) ) {
[9735] Fix | Delete
/**
[9736] Fix | Delete
* Clear scheduled install sync after a two-way sync call.
[9737] Fix | Delete
*
[9738] Fix | Delete
* @author Leo Fajardo (@leorw)
[9739] Fix | Delete
* @since 2.2.3
[9740] Fix | Delete
*/
[9741] Fix | Delete
if ( ! is_multisite() ) {
[9742] Fix | Delete
// I successfully sent install update, clear scheduled sync if exist.
[9743] Fix | Delete
$this->clear_install_sync_cron();
[9744] Fix | Delete
}
[9745] Fix | Delete
}
[9746] Fix | Delete
[9747] Fix | Delete
return $site;
[9748] Fix | Delete
}
[9749] Fix | Delete
[9750] Fix | Delete
/**
[9751] Fix | Delete
* Update installs only if changed.
[9752] Fix | Delete
*
[9753] Fix | Delete
* @author Vova Feldman (@svovaf)
[9754] Fix | Delete
* @since 2.0.0
[9755] Fix | Delete
*
[9756] Fix | Delete
* @param string[] string $override
[9757] Fix | Delete
* @param bool $flush
[9758] Fix | Delete
* @param bool $is_two_way_sync @since 2.5.0 If true and there's a successful API request, the install sync cron will be cleared.
[9759] Fix | Delete
*
[9760] Fix | Delete
* @return false|object|string
[9761] Fix | Delete
*/
[9762] Fix | Delete
private function send_installs_update( $override = array(), $flush = false, $is_two_way_sync = false ) {
[9763] Fix | Delete
$this->_logger->entrance();
[9764] Fix | Delete
[9765] Fix | Delete
/**
[9766] Fix | Delete
* Pass `true` to use the network level storage since the update is for many installs.
[9767] Fix | Delete
*
[9768] Fix | Delete
* @author Leo Fajardo (@leorw)
[9769] Fix | Delete
* @since 2.2.3
[9770] Fix | Delete
*/
[9771] Fix | Delete
$should_send_keepalive = $this->should_send_keepalive_update( true );
[9772] Fix | Delete
[9773] Fix | Delete
$installs_data = $this->get_installs_data_for_api( $override, ! $flush, $should_send_keepalive );
[9774] Fix | Delete
[9775] Fix | Delete
if ( empty( $installs_data ) ) {
[9776] Fix | Delete
return false;
[9777] Fix | Delete
}
[9778] Fix | Delete
[9779] Fix | Delete
if ( $is_two_way_sync ) {
[9780] Fix | Delete
// Update last install sync timestamp during a two-way sync call as we expect that updates are sent during this call.
[9781] Fix | Delete
$this->set_cron_execution_timestamp( 'install_sync' );
[9782] Fix | Delete
}
[9783] Fix | Delete
[9784] Fix | Delete
/**
[9785] Fix | Delete
* Pass `true` to use the network level storage since the update is for many installs.
[9786] Fix | Delete
*
[9787] Fix | Delete
* @author Leo Fajardo (@leorw)
[9788] Fix | Delete
* @since 2.2.3
[9789] Fix | Delete
*/
[9790] Fix | Delete
$this->set_keepalive_timestamp( true );
[9791] Fix | Delete
[9792] Fix | Delete
// Send updated values to FS.
[9793] Fix | Delete
$result = $this->get_api_user_scope()->call( "/plugins/{$this->_plugin->id}/installs.json", 'put', $installs_data );
[9794] Fix | Delete
[9795] Fix | Delete
if ( $is_two_way_sync && $this->is_api_result_object( $result, 'installs' ) ) {
[9796] Fix | Delete
// I successfully sent a two-way installs update, clear the scheduled install sync if it exists.
[9797] Fix | Delete
$this->clear_install_sync_cron();
[9798] Fix | Delete
}
[9799] Fix | Delete
[9800] Fix | Delete
return $result;
[9801] Fix | Delete
}
[9802] Fix | Delete
[9803] Fix | Delete
/**
[9804] Fix | Delete
* @author Leo Fajardo (@leorw)
[9805] Fix | Delete
*
[9806] Fix | Delete
* @param bool|null $use_network_level_storage
[9807] Fix | Delete
*
[9808] Fix | Delete
* @return bool
[9809] Fix | Delete
*/
[9810] Fix | Delete
private function should_send_keepalive_update( $use_network_level_storage = null ) {
[9811] Fix | Delete
$keepalive_timestamp = $this->_storage->get( 'keepalive_timestamp', 0, $use_network_level_storage );
[9812] Fix | Delete
[9813] Fix | Delete
if ( $keepalive_timestamp < ( time() - WP_FS__TIME_WEEK_IN_SEC ) ) {
[9814] Fix | Delete
// If updated more than 7 days ago, trigger a keepalive and update the time it was triggered.
[9815] Fix | Delete
return true;
[9816] Fix | Delete
} else {
[9817] Fix | Delete
// If updated 7 days ago or less, "flip a coin", if the value is 7 trigger a keepalive and update the last time it was triggered.
[9818] Fix | Delete
return ( 7 == rand( 1, 7 ) );
[9819] Fix | Delete
}
[9820] Fix | Delete
}
[9821] Fix | Delete
[9822] Fix | Delete
/**
[9823] Fix | Delete
* Syncs the install owner's data if needed (i.e., if the install owner is different from the loaded user).
[9824] Fix | Delete
*
[9825] Fix | Delete
* @author Leo Fajardo (@leorw)
[9826] Fix | Delete
* @since 2.3.2
[9827] Fix | Delete
*/
[9828] Fix | Delete
private function maybe_sync_install_user() {
[9829] Fix | Delete
if ( $this->_user->id == $this->_site->user_id ) {
[9830] Fix | Delete
return;
[9831] Fix | Delete
}
[9832] Fix | Delete
[9833] Fix | Delete
// Fetch user data and store if found.
[9834] Fix | Delete
$this->sync_user_by_current_install();
[9835] Fix | Delete
}
[9836] Fix | Delete
[9837] Fix | Delete
/**
[9838] Fix | Delete
* Update install only if changed.
[9839] Fix | Delete
*
[9840] Fix | Delete
* @author Vova Feldman (@svovaf)
[9841] Fix | Delete
* @since 1.0.9
[9842] Fix | Delete
*
[9843] Fix | Delete
* @param string[] string $override
[9844] Fix | Delete
* @param bool $flush
[9845] Fix | Delete
*/
[9846] Fix | Delete
function sync_install( $override = array(), $flush = false ) {
[9847] Fix | Delete
$this->_logger->entrance();
[9848] Fix | Delete
[9849] Fix | Delete
$site = $this->send_install_update( $override, $flush, true );
[9850] Fix | Delete
[9851] Fix | Delete
if ( false === $site ) {
[9852] Fix | Delete
// No sync required.
[9853] Fix | Delete
return;
[9854] Fix | Delete
}
[9855] Fix | Delete
[9856] Fix | Delete
if ( ! $this->is_api_result_entity( $site ) ) {
[9857] Fix | Delete
// Failed to sync, don't update locally.
[9858] Fix | Delete
return;
[9859] Fix | Delete
}
[9860] Fix | Delete
[9861] Fix | Delete
$this->_site = new FS_Site( $site );
[9862] Fix | Delete
[9863] Fix | Delete
$this->_store_site( true );
[9864] Fix | Delete
}
[9865] Fix | Delete
[9866] Fix | Delete
/**
[9867] Fix | Delete
* Update install only if changed.
[9868] Fix | Delete
*
[9869] Fix | Delete
* @author Vova Feldman (@svovaf)
[9870] Fix | Delete
* @since 1.0.9
[9871] Fix | Delete
*
[9872] Fix | Delete
* @param string[] string $override
[9873] Fix | Delete
* @param bool $flush
[9874] Fix | Delete
*/
[9875] Fix | Delete
private function sync_installs( $override = array(), $flush = false ) {
[9876] Fix | Delete
$this->_logger->entrance();
[9877] Fix | Delete
[9878] Fix | Delete
$result = $this->send_installs_update( $override, $flush, true );
[9879] Fix | Delete
[9880] Fix | Delete
if ( false === $result ) {
[9881] Fix | Delete
// No sync required.
[9882] Fix | Delete
return;
[9883] Fix | Delete
}
[9884] Fix | Delete
[9885] Fix | Delete
if ( ! $this->is_api_result_object( $result, 'installs' ) ) {
[9886] Fix | Delete
// Failed to sync, don't update locally.
[9887] Fix | Delete
return;
[9888] Fix | Delete
}
[9889] Fix | Delete
[9890] Fix | Delete
$address_to_blog_map = $this->get_address_to_blog_map();
[9891] Fix | Delete
[9892] Fix | Delete
foreach ( $result->installs as $install ) {
[9893] Fix | Delete
$this->_site = new FS_Site( $install );
[9894] Fix | Delete
[9895] Fix | Delete
$address = trailingslashit( fs_strip_url_protocol( $install->url ) );
[9896] Fix | Delete
$blog_id = $address_to_blog_map[ $address ];
[9897] Fix | Delete
[9898] Fix | Delete
$this->_store_site( true, $blog_id );
[9899] Fix | Delete
}
[9900] Fix | Delete
}
[9901] Fix | Delete
[9902] Fix | Delete
/**
[9903] Fix | Delete
* Track install's custom event.
[9904] Fix | Delete
*
[9905] Fix | Delete
* IMPORTANT:
[9906] Fix | Delete
* Custom event tracking is currently only supported for specific clients.
[9907] Fix | Delete
* If you are not one of them, please don't use this method. If you will,
[9908] Fix | Delete
* the API will simply ignore your request based on the plugin ID.
[9909] Fix | Delete
*
[9910] Fix | Delete
* Need custom tracking for your plugin or theme?
[9911] Fix | Delete
* If you are interested in custom event tracking please contact yo@freemius.com
[9912] Fix | Delete
* for further details.
[9913] Fix | Delete
*
[9914] Fix | Delete
* @author Vova Feldman (@svovaf)
[9915] Fix | Delete
* @since 1.2.1
[9916] Fix | Delete
*
[9917] Fix | Delete
* @param string $name Event name.
[9918] Fix | Delete
* @param array $properties Associative key/value array with primitive values only
[9919] Fix | Delete
* @param bool $process_at A valid future date-time in the following format Y-m-d H:i:s.
[9920] Fix | Delete
* @param bool $once If true, event will be tracked only once. IMPORTANT: Still trigger the API call.
[9921] Fix | Delete
*
[9922] Fix | Delete
* @return object|false Event data or FALSE on failure.
[9923] Fix | Delete
*
[9924] Fix | Delete
* @throws \Freemius_InvalidArgumentException
[9925] Fix | Delete
*/
[9926] Fix | Delete
public function track_event( $name, $properties = array(), $process_at = false, $once = false ) {
[9927] Fix | Delete
$this->_logger->entrance( http_build_query( array( 'name' => $name, 'once' => $once ) ) );
[9928] Fix | Delete
[9929] Fix | Delete
if ( ! $this->is_registered() ) {
[9930] Fix | Delete
return false;
[9931] Fix | Delete
}
[9932] Fix | Delete
[9933] Fix | Delete
$event = array( 'type' => $name );
[9934] Fix | Delete
[9935] Fix | Delete
if ( is_numeric( $process_at ) && $process_at > time() ) {
[9936] Fix | Delete
$event['process_at'] = $process_at;
[9937] Fix | Delete
}
[9938] Fix | Delete
[9939] Fix | Delete
if ( $once ) {
[9940] Fix | Delete
$event['once'] = true;
[9941] Fix | Delete
}
[9942] Fix | Delete
[9943] Fix | Delete
if ( ! empty( $properties ) ) {
[9944] Fix | Delete
// Verify associative array values are primitive.
[9945] Fix | Delete
foreach ( $properties as $k => $v ) {
[9946] Fix | Delete
if ( ! is_scalar( $v ) ) {
[9947] Fix | Delete
throw new Freemius_InvalidArgumentException( 'The $properties argument must be an associative key/value array with primitive values only.' );
[9948] Fix | Delete
}
[9949] Fix | Delete
}
[9950] Fix | Delete
[9951] Fix | Delete
$event['properties'] = $properties;
[9952] Fix | Delete
}
[9953] Fix | Delete
[9954] Fix | Delete
$result = $this->get_api_site_scope()->call( 'events.json', 'post', $event );
[9955] Fix | Delete
[9956] Fix | Delete
return $this->is_api_error( $result ) ?
[9957] Fix | Delete
false :
[9958] Fix | Delete
$result;
[9959] Fix | Delete
}
[9960] Fix | Delete
[9961] Fix | Delete
/**
[9962] Fix | Delete
* Track install's custom event only once, but it still triggers the API call.
[9963] Fix | Delete
*
[9964] Fix | Delete
* IMPORTANT:
[9965] Fix | Delete
* Custom event tracking is currently only supported for specific clients.
[9966] Fix | Delete
* If you are not one of them, please don't use this method. If you will,
[9967] Fix | Delete
* the API will simply ignore your request based on the plugin ID.
[9968] Fix | Delete
*
[9969] Fix | Delete
* Need custom tracking for your plugin or theme?
[9970] Fix | Delete
* If you are interested in custom event tracking please contact yo@freemius.com
[9971] Fix | Delete
* for further details.
[9972] Fix | Delete
*
[9973] Fix | Delete
* @author Vova Feldman (@svovaf)
[9974] Fix | Delete
* @since 1.2.1
[9975] Fix | Delete
*
[9976] Fix | Delete
* @param string $name Event name.
[9977] Fix | Delete
* @param array $properties Associative key/value array with primitive values only
[9978] Fix | Delete
* @param bool $process_at A valid future date-time in the following format Y-m-d H:i:s.
[9979] Fix | Delete
*
[9980] Fix | Delete
* @return object|false Event data or FALSE on failure.
[9981] Fix | Delete
*
[9982] Fix | Delete
* @throws \Freemius_InvalidArgumentException
[9983] Fix | Delete
*
[9984] Fix | Delete
* @user Freemius::track_event()
[9985] Fix | Delete
*/
[9986] Fix | Delete
public function track_event_once( $name, $properties = array(), $process_at = false ) {
[9987] Fix | Delete
return $this->track_event( $name, $properties, $process_at, true );
[9988] Fix | Delete
}
[9989] Fix | Delete
[9990] Fix | Delete
/**
[9991] Fix | Delete
* Plugin uninstall hook.
[9992] Fix | Delete
*
[9993] Fix | Delete
* @author Vova Feldman (@svovaf)
[9994] Fix | Delete
* @since 1.0.1
[9995] Fix | Delete
*
[9996] Fix | Delete
* @param bool $check_user Enforce checking if user have plugins activation privileges.
[9997] Fix | Delete
*/
[9998] Fix | Delete
function _uninstall_plugin_event( $check_user = true ) {
[9999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function