automatewoo/includes/DataTypes/Guest.php
fei-source 47d3c9a8b6 Update to v6.2.2
Source: GrootMade/Festinger Vault
2026-03-15 08:31:15 +08:00

73 lines
1.6 KiB
PHP

<?php
// phpcs:ignoreFile
namespace AutomateWoo\DataTypes;
use AutomateWoo\Clean;
use AutomateWoo\Guest as GuestModel;
use AutomateWoo\Guest_Factory;
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* @class Guest
*/
class Guest extends AbstractDataType {
/**
* @param $item
* @return bool
*/
function validate( $item ) {
return $item instanceof GuestModel;
}
/**
* @param GuestModel $item
* @return mixed
*/
function compress( $item ) {
return $item->get_email();
}
/**
* @param $compressed_item
* @param $compressed_data_layer
* @return mixed
*/
function decompress( $compressed_item, $compressed_data_layer ) {
if ( aw_is_email_anonymized( $compressed_item ) ) {
$guest = new GuestModel();
$guest->set_email( Clean::string( $compressed_item ) );
return $guest;
}
// Guests are compressed by their email not their ID
if ( is_email( $compressed_item ) ) {
$guest_email = $compressed_item;
}
elseif ( isset( $compressed_data_layer['comment'] ) ) {
// If there is a comment fetch the guest info from that
$comment = get_comment( $compressed_data_layer['comment'] );
$guest_email = $comment->comment_author_email;
}
else {
return false;
}
$guest_email = Clean::email( $guest_email );
$guest = Guest_Factory::get_by_email( $guest_email );
if ( ! $guest ) {
// still pass the guest object even if it doesn't exist in the database
// In most cases it should have been stored but there is no harm since all we need is an email
$guest = new GuestModel();
$guest->set_email( $guest_email );
}
return $guest;
}
}