PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 18.1
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v18.1
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / src / services / indexables / indexable-version-manager.php

indexable-version-manager.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 18.1, at src/services/indexables/indexable-version-manager.php

78 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Yoast\WP\SEO\Services\Indexables;
4
5 use Yoast\WP\SEO\Models\Indexable;
6 use Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions;
7
8 /**
9 * Handles version control for Indexables.
10 */
11 class Indexable_Version_Manager {
12
13 /**
14 * Stores the version of each Indexable type.
15 *
16 * @var Indexable_Builder_Versions The current versions of all indexable builders.
17 */
18 protected $indexable_builder_versions;
19
20 /**
21 * Indexable_Version_Manager constructor.
22 *
23 * @param Indexable_Builder_Versions $indexable_builder_versions The current versions of all indexable builders.
24 */
25 public function __construct( Indexable_Builder_Versions $indexable_builder_versions ) {
26 $this->indexable_builder_versions = $indexable_builder_versions;
27 }
28
29 /**
30 * Determines if an Indexable has a lower version than the builder for that Indexable's type.
31 *
32 * @param Indexable $indexable The Indexable to check.
33 *
34 * @return bool True if the given version is older than the current latest version.
35 */
36 public function indexable_needs_upgrade( $indexable ) {
37 if ( ( ! $indexable )
38 || ( ! \is_a( $indexable, Indexable::class ) )
39 ) {
40 return false;
41 }
42
43 return $this->needs_upgrade( $indexable->object_type, $indexable->version );
44 }
45
46 /**
47 * Determines if an Indexable version for the type is lower than the current version for that Indexable type.
48 *
49 * @param string $object_type The Indexable's object type.
50 * @param int $indexable_version The Indexable's version.
51 *
52 * @return bool True if the given version is older than the current latest version.
53 */
54 protected function needs_upgrade( $object_type, $indexable_version ) {
55 $current_indexable_builder_version = $this->indexable_builder_versions->get_latest_version_for_type( $object_type );
56
57 // If the Indexable's version is below the current version, that Indexable needs updating.
58 return $indexable_version < $current_indexable_builder_version;
59 }
60
61 /**
62 * Sets an Indexable's version to the latest version.
63 *
64 * @param Indexable $indexable The Indexable to update.
65 *
66 * @return Indexable
67 */
68 public function set_latest( $indexable ) {
69 if ( ! $indexable ) {
70 return $indexable;
71 }
72
73 $indexable->version = $this->indexable_builder_versions->get_latest_version_for_type( $indexable->object_type );
74
75 return $indexable;
76 }
77 }
78