Current File : //home/getxxhzo/www/xpertbee/wp-content/plugins/hurrytimer/includes/User_Session_Detection.php |
<?php
namespace Hurrytimer;
class User_Session_Detection
{
const TS_META_KEY = '_hurryt_end_ts';
const RESET_META_KEY = '_hurryt_reset_token';
protected $campaignEndTSKey;
protected $campaignResetTokenKey;
protected $campaignId;
public function __construct( $campaignId )
{
$this->campaignId = $campaignId;
$this->campaignEndTSKey = self::TS_META_KEY . '_' . $this->campaignId;
$this->campaignResetTokenKey = self::RESET_META_KEY . '_' . $this->campaignId;
}
/**
* Get end date time timestamp of the campaign and current user.
*/
public function getEndDateTime()
{
if ( is_user_logged_in() ) {
return get_user_meta( get_current_user_id(), $this->campaignEndTSKey, true );
}
}
public function forgetCurrentCampaignOfCurrentUser()
{
if ( is_user_logged_in() ) {
delete_user_meta( get_current_user_id(), $this->campaignEndTSKey );
}
}
public static function forgetAllCampaignsOfCurrentUser()
{
if ( is_user_logged_in() ) {
global $wpdb;
$wpdb->delete( $wpdb->usermeta, [
'meta_key' => self::TS_META_KEY . '%',
'user_id' => get_current_user_id()
], [ '%s', '%d' ] );
$wpdb->delete( $wpdb->usermeta, [
'meta_key' => self::RESET_META_KEY . '%',
'user_id' => get_current_user_id()
], [ '%s', '%d' ] );
}
}
public function forgetCurrentCampaignOfAllUsers()
{
global $wpdb;
$wpdb->delete( $wpdb->usermeta, [ 'meta_key' => $this->campaignEndTSKey ] );
}
public static function forgetAllCampaignsOfAllUsers()
{
global $wpdb;
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE %s", self::TS_META_KEY . '%' ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE %s", self::RESET_META_KEY . '%' ) );
}
public function updateOrCreateCurrentUserEndDateTime( $endDateTimeTS )
{
if ( is_user_logged_in() ) {
if ( empty( $endDateTimeTS ) ) {
delete_user_meta( get_current_user_id(), $this->campaignEndTSKey );
} else {
update_user_meta( get_current_user_id(), $this->campaignEndTSKey, $endDateTimeTS );
}
}
}
public function getCurrentUserResetToken()
{
if ( is_user_logged_in() ) {
$ts = get_user_meta( get_current_user_id(), $this->campaignResetTokenKey, true );
return $ts ?: false;
}
return false;
}
public function updateOrCreateCurrentUserResetToken( $resetToken )
{
if ( is_user_logged_in() ) {
update_user_meta( get_current_user_id(), $this->campaignResetTokenKey, $resetToken );
}
}
// TODO:
// - clean up when campaign is deleted.
}