notification_center = $notification_center; $this->short_link_helper = $short_link_helper; $this->product_helper = $product_helper; $this->options_helper = $options_helper; $this->user_helper = $user_helper; } /** * Returns the conditionals based on which this loadable should be active. * * @return array */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * @return void */ public function register_hooks() { \add_action( 'admin_init', [ $this, 'add_notifications' ] ); } /** * Adds notification when user has not installed Yoast SEO themselves and has not resolved the notification yet. * * @return void */ public function add_notifications() { if ( $this->has_user_installed_yoast() ) { $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } if ( $this->has_notification_been_resolved() ) { $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } $notification = $this->get_ping_other_admins_notification(); $this->notification_center->add_notification( $notification ); } /** * Returns whether user has installed Yoast SEO themselves. * * @return bool Whether the user has installed Yoast SEO themselves. */ private function has_user_installed_yoast(): bool { $first_activated_by = $this->options_helper->get( 'first_activated_by', 0 ); if ( $first_activated_by === 0 ) { return true; // We cannot be sure, so we assume they did. } if ( \get_current_user_id() === $first_activated_by ) { return true; } return false; } /** * Returns whether the alert has been resolved before. * * @return bool Whether the alert has been resolved before. */ private function has_notification_been_resolved(): bool { return $this->user_helper->get_meta( \get_current_user_id(), self::NOTIFICATION_ID . '_resolved', true ) === '1'; } /** * Build the ping-other-admins notification. * * @return Yoast_Notification The ping-other-admins notification. */ private function get_ping_other_admins_notification(): Yoast_Notification { $message = $this->get_message(); return new Yoast_Notification( $message, [ 'id' => self::NOTIFICATION_ID, 'type' => Yoast_Notification::WARNING, 'capabilities' => [ 'wpseo_manage_options' ], 'priority' => 20, 'resolve_nonce' => \wp_create_nonce( 'wpseo-resolve-alert-nonce' ), ], ); } /** * Returns the notification as an HTML string. * * @return string The HTML string representation of the notification. */ private function get_message() { $message = \sprintf( /* translators: %1$s expands to "Yoast SEO". */ \esc_html__( 'Looks like you’re new here. %1$s makes it easy to optimize your website for search engines. Want to keep your site healthy and easier to find? Sign up below to receive practical emails to get you started!', 'wordpress-seo' ), 'Yoast SEO', ); $notification_text = '

' . $message . '

'; return $notification_text; } }