merchant_metrics = $merchant_metrics; $this->wp = $wp; } /** * Get the note's unique name. * * @return string */ public function get_name(): string { return 'gla-review-after-clicks'; } /** * Get the note entry. * * @throws Exception When unable to get clicks data. */ public function get_entry(): NoteEntry { $clicks_count = $this->get_free_listing_clicks_count(); // Round to nearest 10 $clicks_count_rounded = floor( $clicks_count / 10 ) * 10; $note = new NoteEntry(); $note->set_title( sprintf( /* translators: %s number of clicks */ __( 'You’ve gotten %s+ clicks on your free listings! 🎉', 'google-listings-and-ads' ), $this->wp->number_format_i18n( $clicks_count_rounded ) ) ); $note->set_content( __( 'Congratulations! Tell us what you think about Google for WooCommerce by leaving a review. Your feedback will help us make WooCommerce even better for you.', 'google-listings-and-ads' ) ); $note->set_content_data( (object) [] ); $note->set_type( NoteEntry::E_WC_ADMIN_NOTE_INFORMATIONAL ); $note->set_name( $this->get_name() ); $note->set_source( $this->get_slug() ); $this->add_leave_review_note_action( $note ); return $note; } /** * Checks if a note can and should be added. * * - checks there are more than 10 clicks * * @throws Exception When unable to get clicks data. * * @return bool */ public function should_be_added(): bool { if ( $this->has_been_added() ) { return false; } $clicks_count = $this->get_free_listing_clicks_count(); return $clicks_count > 10; } /** * Get free listing clicks count. * * Will return 0 if account is not connected. * * @return int * * @throws Exception When unable to get data. */ protected function get_free_listing_clicks_count(): int { if ( ! $this->merchant_center->is_connected() ) { return 0; } $metrics = $this->merchant_metrics->get_cached_free_listing_metrics(); return empty( $metrics ) ? 0 : $metrics['clicks']; } }