0 && current_user_can('manage_options') && !Connect::connected() && !get_user_meta($userId, self::META, true); } public static function remember(int $userId): void { if ($userId > 0) { update_user_meta($userId, self::META, '1'); } } public function registerRoutes(): void { register_rest_route(InboxRoutes::NAMESPACE, '/notices/connect/dismiss', [ 'callback' => [$this, 'dismissed'], 'methods' => WP_REST_Server::CREATABLE, 'permission_callback' => static fn (): bool => current_user_can('manage_options'), ]); } public function dismissed(): WP_REST_Response { self::remember(get_current_user_id()); return new WP_REST_Response(null, 204); } public function dismiss(): void { check_admin_referer(self::DISMISS_ACTION); if (!current_user_can('manage_options')) { wp_die(esc_html__('Only an administrator can do this.', 'sarcio'), 403); } self::remember(get_current_user_id()); wp_safe_redirect(wp_get_referer() ?: admin_url()); exit; } public function enqueue(string $hook): void { if (!in_array($hook, ['index.php', 'plugins.php'], true) || !self::shows($hook === 'index.php' ? 'dashboard' : 'plugins', get_current_user_id())) { return; } wp_register_script(self::SCRIPT, false, [], SARCIO_WP_VERSION, true); wp_enqueue_script(self::SCRIPT); wp_add_inline_script(self::SCRIPT, 'var sarcioConnectNotice=' . InlineJson::encode([ 'nonce' => wp_create_nonce('wp_rest'), 'url' => esc_url_raw(rest_url(InboxRoutes::NAMESPACE . '/notices/connect/dismiss')), ]) . ';', 'before'); wp_add_inline_script(self::SCRIPT, self::SCRIPT_SOURCE); } public function render(): void { $screen = function_exists('get_current_screen') ? get_current_screen() : null; if ($screen === null || !self::shows((string) $screen->id, get_current_user_id())) { return; } echo '
'; echo '

' . esc_html__('Sarcio is installed. Connect it to start changing your site by asking — free for 14 days, no card needed.', 'sarcio') . '

'; printf( '

%s %s

', esc_url(admin_url('admin.php?page=' . ReviewPage::SLUG)), esc_html__('Set up Sarcio', 'sarcio'), esc_url(wp_nonce_url(admin_url('admin-post.php?action=' . self::DISMISS_ACTION), self::DISMISS_ACTION)), esc_html__('Don\'t show this again', 'sarcio'), ); echo '
'; } }