Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions includes/class-accepted-actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class Accepted_Actions {
'donation_new' => 'Donation_New',
'donation_subscription_cancelled' => 'Donation_Subscription_Cancelled',
'network_user_updated' => 'User_Updated',
'newsletter_subscribed' => 'Newsletter_Subscribed',
'newsletter_updated' => 'Newsletter_Subscription_Updated',
];

/**
Expand All @@ -50,5 +52,7 @@ class Accepted_Actions {
'donation_new',
'donation_subscription_cancelled',
'network_user_updated',
'newsletter_subscribed',
'newsletter_updated',
];
}
6 changes: 2 additions & 4 deletions includes/incoming-events/class-donation-new.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* Newspack Hub Canonical Url Updated Incoming Event class
* Newspack Hub Donation New Incoming Event class
*
* @package Newspack
*/
Expand All @@ -12,9 +12,7 @@
use Newspack_Network\Utils\Users as User_Utils;

/**
* Class to handle the Canonical Url Updated Event
*
* This event is always sent from the Hub and received by Nodes.
* Class to handle the Donation New Event
*/
class Donation_New extends Abstract_Incoming_Event {

Expand Down
72 changes: 72 additions & 0 deletions includes/incoming-events/class-newsletter-subscribed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php
/**
* Newspack Hub Newsletter Subscribed Incoming Event class
*
* @package Newspack
*/

namespace Newspack_Network\Incoming_Events;

use Newspack_Network\Debugger;
use Newspack_Network\Utils\Users as User_Utils;

/**
* Class to handle the Newsletter Subscribed Event
*/
class Newsletter_Subscribed extends Abstract_Incoming_Event {

/**
* Processes the event
*
* @return void
*/
public function post_process_in_hub() {
$this->process_subscription();
}

/**
* Process event in Node
*
* @return void
*/
public function process_in_node() {
$this->process_subscription();
}

/**
* Process process_subscription
*
* @return void
*/
public function process_subscription() {
$email = $this->get_email();
Debugger::log( 'Processing newsleteter_subscribed with email: ' . $email );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Debugger::log( 'Processing newsleteter_subscribed with email: ' . $email );
Debugger::log( 'Processing newsletter_subscribed with email: ' . $email );

if ( ! $email ) {
return;
}

$existing_user = User_Utils::get_or_create_user_by_email( $email, $this->get_site(), $this->data->user_id ?? '' );

if ( is_wp_error( $existing_user ) ) {
return;
}

$node = $this->get_site();
$network_newsletter_subscriber_data = \Newspack\Reader_Data::get_data( $existing_user->ID, 'network_newsletter_subscriber' );

if ( $network_newsletter_subscriber_data ) {
$network_newsletter_subscriber_data = json_decode( $network_newsletter_subscriber_data, true );
} else {
$network_newsletter_subscriber_data = [];
}
if ( ! isset( $network_newsletter_subscriber_data[ $node ] ) ) {
$network_newsletter_subscriber_data[ $node ] = [];
}
$network_newsletter_subscriber_data[ $node ][ $this->get_timestamp() ] = [
'subscribed' => $this->get_data()->lists,
];
\Newspack\Reader_Data::update_item( $existing_user->ID, 'network_newsletter_subscriber', wp_json_encode( $network_newsletter_subscriber_data ) );
Debugger::log( 'Updated ' . $email . ' network newsletter subscriber status with for node ' . $node );
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php
/**
* Newspack Hub Newsletter Subscription_Updated Incoming Event class
*
* @package Newspack
*/

namespace Newspack_Network\Incoming_Events;

use Newspack_Network\Debugger;
use Newspack_Network\Utils\Users as User_Utils;

/**
* Class to handle the Newsletter Subscription_Updated Event
*/
class Newsletter_Subscription_Updated extends Abstract_Incoming_Event {

/**
* Processes the event
*
* @return void
*/
public function post_process_in_hub() {
$this->process_subscription();
}

/**
* Process event in Node
*
* @return void
*/
public function process_in_node() {
$this->process_subscription();
}

/**
* Process process_subscription
*
* @return void
*/
public function process_subscription() {
$email = $this->get_email();
Debugger::log( 'Processing newsleteter_updated with email: ' . $email );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Debugger::log( 'Processing newsleteter_updated with email: ' . $email );
Debugger::log( 'Processing newsletter_updated with email: ' . $email );

if ( ! $email ) {
return;
}

$existing_user = User_Utils::get_or_create_user_by_email( $email, $this->get_site(), $this->data->user_id ?? '' );

if ( is_wp_error( $existing_user ) ) {
return;
}

$node = $this->get_site();
$network_newsletter_subscriber_data = \Newspack\Reader_Data::get_data( $existing_user->ID, 'network_newsletter_subscriber' );

if ( $network_newsletter_subscriber_data ) {
$network_newsletter_subscriber_data = json_decode( $network_newsletter_subscriber_data, true );
} else {
$network_newsletter_subscriber_data = [];
}
if ( ! isset( $network_newsletter_subscriber_data[ $node ] ) ) {
$network_newsletter_subscriber_data[ $node ] = [];
}
$network_newsletter_subscriber_data[ $node ][ $this->get_timestamp() ] = [
'subscribed' => $this->get_data()->lists_added,
'unsubscribed' => $this->get_data()->lists_removed,
];
\Newspack\Reader_Data::update_item( $existing_user->ID, 'network_newsletter_subscriber', wp_json_encode( $network_newsletter_subscriber_data ) );
Debugger::log( 'Updated ' . $email . ' network newsletter subscriber status with for node ' . $node );
}

}