PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.3-beta
16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 All 507 releases
jetpack / jetpack_vendor / automattic / jetpack-sharing-likes / src / settings / class-section-state.php

class-section-state.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-beta, at jetpack_vendor/automattic/jetpack-sharing-likes/src/settings/class-section-state.php

89 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Resolves which variant a Settings > Sharing section should render.
4 *
5 * @package automattic/jetpack-sharing-likes
6 */
7
8 declare( strict_types = 1 );
9
10 namespace Automattic\Jetpack\Sharing_Likes\Settings;
11
12 /**
13 * Which variant a Settings > Sharing section renders, and whether the shared
14 * placement section renders at all.
15 *
16 * Kept free of WordPress calls so every combination can be asserted directly.
17 * Callers read the environment and pass the result in.
18 */
19 final class Section_State {
20
21 /**
22 * The feature's own configuration options.
23 */
24 public const CONFIGURE = 'configure';
25
26 /**
27 * Configuration options, plus a recommendation to use the block instead.
28 *
29 * The legacy output is still on the site, so the options stay usable.
30 */
31 public const CONFIGURE_WITH_BLOCK_NUDGE = 'configure_with_block_nudge';
32
33 /**
34 * No options: an invitation to add the block, and a link to the Site Editor.
35 */
36 public const BLOCK_CALL_TO_ACTION = 'block_call_to_action';
37
38 /**
39 * No options: a note that the feature is off.
40 */
41 public const OFF = 'off';
42
43 /**
44 * Resolve the variant for one section.
45 *
46 * Both sections follow the same rule; only their contents differ.
47 *
48 * @param bool $can_offer_block Whether the block is a route this site can be sent down.
49 * A block theme is necessary but not sufficient, which is why
50 * callers resolve this rather than passing the theme type.
51 * @param bool $feature_running Whether the legacy feature can still produce output.
52 * Always true on WordPress.com Simple, which has no modules.
53 * @param bool $switched_off Whether the feature's own settings leave it nothing to show,
54 * which is how Simple switches to the block.
55 * @return string One of the class constants.
56 */
57 public static function for_section( bool $can_offer_block, bool $feature_running, bool $switched_off = false ): string {
58 // Only with a block to move to: elsewhere the options are the one way back.
59 if ( $can_offer_block ) {
60 return $feature_running && ! $switched_off ? self::CONFIGURE_WITH_BLOCK_NUDGE : self::BLOCK_CALL_TO_ACTION;
61 }
62
63 return $feature_running ? self::CONFIGURE : self::OFF;
64 }
65
66 /**
67 * Whether a variant shows the feature's own options.
68 *
69 * @param string $state One of the class constants.
70 */
71 public static function configures( string $state ): bool {
72 return self::CONFIGURE === $state || self::CONFIGURE_WITH_BLOCK_NUDGE === $state;
73 }
74
75 /**
76 * Whether the shared "Show buttons on" section renders.
77 *
78 * It only governs legacy output, so it is hidden once nothing on the site reads it.
79 *
80 * @param string $sharing_state Variant the Sharing buttons section renders.
81 * @param string $likes_state Variant the Like buttons section renders.
82 * @param bool $comment_likes_follow Whether Comment Likes read the placement too.
83 * @return bool
84 */
85 public static function shows_placement( string $sharing_state, string $likes_state, bool $comment_likes_follow = false ): bool {
86 return self::configures( $sharing_state ) || self::configures( $likes_state ) || $comment_likes_follow;
87 }
88 }
89