File "AbstractSetupCampaign.php"
Full Path: /home/warrior1/public_html/wp-content/plugins/google-listings-and-ads/src/Notes/AbstractSetupCampaign.php
File size: 2.95 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\Notes;
use Automattic\WooCommerce\Admin\Notes\Note as NoteEntry;
use Automattic\WooCommerce\GoogleListingsAndAds\Ads\AdsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Ads\AdsAwareTrait;
use Automattic\WooCommerce\GoogleListingsAndAds\HelperTraits\Utilities;
use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterService;
use Automattic\WooCommerce\GoogleListingsAndAds\PluginHelper;
use Exception;
use stdClass;
defined( 'ABSPATH' ) || exit;
/**
* Abstract Class AbstractSetupCampaign
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\Notes
* @since 1.11.0
*/
abstract class AbstractSetupCampaign extends AbstractNote implements AdsAwareInterface {
use AdsAwareTrait;
use PluginHelper;
use Utilities;
/**
* @var MerchantCenterService
*/
protected $merchant_center_service;
/**
* AbstractSetupCampaign constructor.
*
* @param MerchantCenterService $merchant_center_service
*/
public function __construct( MerchantCenterService $merchant_center_service ) {
$this->merchant_center_service = $merchant_center_service;
}
/**
* Get the note entry.
*/
public function get_entry(): NoteEntry {
$note = new NoteEntry();
$this->set_title_and_content( $note );
$this->add_common_note_settings( $note );
return $note;
}
/**
* @param NoteEntry $note
*
* @return void
*/
protected function add_common_note_settings( NoteEntry $note ): void {
$note->set_content_data( new stdClass() );
$note->set_type( NoteEntry::E_WC_ADMIN_NOTE_INFORMATIONAL );
$note->set_layout( 'plain' );
$note->set_image( '' );
$note->set_name( $this->get_name() );
$note->set_source( $this->get_slug() );
}
/**
* Checks if a note can and should be added.
*
* Check if ads setup IS NOT complete
* Check if it is > $this->get_gla_setup_days() days ago from DATE OF SETUP COMPLETION
* Send notification
*
* @return bool
*/
public function should_be_added(): bool {
if ( $this->has_been_added() ) {
return false;
}
if ( $this->ads_service->is_setup_complete() ) {
return false;
}
if ( ! $this->gla_setup_for( $this->get_gla_setup_days() * DAY_IN_SECONDS ) ) {
return false;
}
// We don't need to process exceptions here, as we're just determining whether to add a note.
try {
if ( $this->merchant_center_service->has_account_issues() ) {
return false;
}
if ( ! $this->merchant_center_service->has_at_least_one_synced_product() ) {
return false;
}
} catch ( Exception $e ) {
return false;
}
return true;
}
/**
* Get the number of days after which to add the note.
*
* @since 1.11.0
*
* @return int
*/
abstract protected function get_gla_setup_days(): int;
/**
* Set the title and content of the Note.
*
* @since 1.11.0
*
* @param NoteEntry $note
*
* @return void
*/
abstract protected function set_title_and_content( NoteEntry $note ): void;
}