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; }