Merged in release/release-1.09 (pull request #10)
Release/release 1.09 * Install missing plugins * rs set to 1 * rebase pantheon for aws * rebase pantheon for aws * prod config change * prod config change * fix campaing issue * revert Approved-by: Jay Sharma
This commit is contained in:
committed by
Jay Sharma
parent
779393381f
commit
22f10a9edd
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Yoast\WP\SEO\Builders;
|
||||
|
||||
use wpdb;
|
||||
use Yoast\WP\SEO\Exceptions\Indexable\Author_Not_Built_Exception;
|
||||
use Yoast\WP\SEO\Helpers\Author_Archive_Helper;
|
||||
use Yoast\WP\SEO\Helpers\Options_Helper;
|
||||
@@ -46,6 +47,13 @@ class Indexable_Author_Builder {
|
||||
*/
|
||||
protected $post_helper;
|
||||
|
||||
/**
|
||||
* The WPDB instance.
|
||||
*
|
||||
* @var wpdb
|
||||
*/
|
||||
protected $wpdb;
|
||||
|
||||
/**
|
||||
* Indexable_Author_Builder constructor.
|
||||
*
|
||||
@@ -53,17 +61,20 @@ class Indexable_Author_Builder {
|
||||
* @param Indexable_Builder_Versions $versions The Indexable version manager.
|
||||
* @param Options_Helper $options_helper The options helper.
|
||||
* @param Post_Helper $post_helper The post helper.
|
||||
* @param wpdb $wpdb The WPDB instance.
|
||||
*/
|
||||
public function __construct(
|
||||
Author_Archive_Helper $author_archive,
|
||||
Indexable_Builder_Versions $versions,
|
||||
Options_Helper $options_helper,
|
||||
Post_Helper $post_helper
|
||||
Post_Helper $post_helper,
|
||||
wpdb $wpdb
|
||||
) {
|
||||
$this->author_archive = $author_archive;
|
||||
$this->version = $versions->get_latest_version_for_type( 'user' );
|
||||
$this->options_helper = $options_helper;
|
||||
$this->post_helper = $post_helper;
|
||||
$this->wpdb = $wpdb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,35 +194,20 @@ class Indexable_Author_Builder {
|
||||
* @return object An object with last_modified and published_at timestamps.
|
||||
*/
|
||||
protected function get_object_timestamps( $author_id ) {
|
||||
global $wpdb;
|
||||
$post_statuses = $this->post_helper->get_public_post_statuses();
|
||||
|
||||
$replacements = [];
|
||||
$replacements[] = 'post_modified_gmt';
|
||||
$replacements[] = 'post_date_gmt';
|
||||
$replacements[] = $wpdb->posts;
|
||||
$replacements[] = 'post_status';
|
||||
$replacements = \array_merge( $replacements, $post_statuses );
|
||||
$replacements[] = 'post_password';
|
||||
$replacements[] = 'post_author';
|
||||
$replacements[] = $author_id;
|
||||
$sql = "
|
||||
SELECT MAX(p.post_modified_gmt) AS last_modified, MIN(p.post_date_gmt) AS published_at
|
||||
FROM {$this->wpdb->posts} AS p
|
||||
WHERE p.post_status IN (" . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.post_password = ''
|
||||
AND p.post_author = %d
|
||||
";
|
||||
|
||||
//phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches.
|
||||
return $wpdb->get_row(
|
||||
$wpdb->prepare(
|
||||
'
|
||||
SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at
|
||||
FROM %i AS p
|
||||
WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.%i = ''
|
||||
AND p.%i = %d
|
||||
",
|
||||
$replacements
|
||||
)
|
||||
);
|
||||
//phpcs:enable
|
||||
$replacements = \array_merge( $post_statuses, [ $author_id ] );
|
||||
|
||||
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- We are using wpdb prepare.
|
||||
return $this->wpdb->get_row( $this->wpdb->prepare( $sql, $replacements ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,6 +46,13 @@ class Indexable_Home_Page_Builder {
|
||||
*/
|
||||
protected $post_helper;
|
||||
|
||||
/**
|
||||
* The WPDB instance.
|
||||
*
|
||||
* @var wpdb
|
||||
*/
|
||||
protected $wpdb;
|
||||
|
||||
/**
|
||||
* Indexable_Home_Page_Builder constructor.
|
||||
*
|
||||
@@ -53,17 +60,20 @@ class Indexable_Home_Page_Builder {
|
||||
* @param Url_Helper $url_helper The url helper.
|
||||
* @param Indexable_Builder_Versions $versions Knows the latest version of each Indexable type.
|
||||
* @param Post_Helper $post_helper The post helper.
|
||||
* @param wpdb $wpdb The WPDB instance.
|
||||
*/
|
||||
public function __construct(
|
||||
Options_Helper $options,
|
||||
Url_Helper $url_helper,
|
||||
Indexable_Builder_Versions $versions,
|
||||
Post_Helper $post_helper
|
||||
Post_Helper $post_helper,
|
||||
wpdb $wpdb
|
||||
) {
|
||||
$this->options = $options;
|
||||
$this->url_helper = $url_helper;
|
||||
$this->version = $versions->get_latest_version_for_type( 'home-page' );
|
||||
$this->post_helper = $post_helper;
|
||||
$this->wpdb = $wpdb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -117,33 +127,17 @@ class Indexable_Home_Page_Builder {
|
||||
* @return object An object with last_modified and published_at timestamps.
|
||||
*/
|
||||
protected function get_object_timestamps() {
|
||||
global $wpdb;
|
||||
$post_statuses = $this->post_helper->get_public_post_statuses();
|
||||
|
||||
$replacements = [];
|
||||
$replacements[] = 'post_modified_gmt';
|
||||
$replacements[] = 'post_date_gmt';
|
||||
$replacements[] = $wpdb->posts;
|
||||
$replacements[] = 'post_status';
|
||||
$replacements = \array_merge( $replacements, $post_statuses );
|
||||
$replacements[] = 'post_password';
|
||||
$replacements[] = 'post_type';
|
||||
$sql = "
|
||||
SELECT MAX(p.post_modified_gmt) AS last_modified, MIN(p.post_date_gmt) AS published_at
|
||||
FROM {$this->wpdb->posts} AS p
|
||||
WHERE p.post_status IN (" . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.post_password = ''
|
||||
AND p.post_type = 'post'
|
||||
";
|
||||
|
||||
//phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches.
|
||||
return $wpdb->get_row(
|
||||
$wpdb->prepare(
|
||||
'
|
||||
SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at
|
||||
FROM %i AS p
|
||||
WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.%i = ''
|
||||
AND p.%i = 'post'
|
||||
",
|
||||
$replacements
|
||||
)
|
||||
);
|
||||
//phpcs:enable
|
||||
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- We are using wpdb prepare.
|
||||
return $this->wpdb->get_row( $this->wpdb->prepare( $sql, $post_statuses ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Yoast\WP\SEO\Builders;
|
||||
|
||||
use wpdb;
|
||||
use Yoast\WP\SEO\Exceptions\Indexable\Post_Type_Not_Built_Exception;
|
||||
use Yoast\WP\SEO\Helpers\Options_Helper;
|
||||
use Yoast\WP\SEO\Helpers\Post_Helper;
|
||||
@@ -44,6 +45,13 @@ class Indexable_Post_Type_Archive_Builder {
|
||||
*/
|
||||
protected $post_type_helper;
|
||||
|
||||
/**
|
||||
* The WPDB instance.
|
||||
*
|
||||
* @var wpdb
|
||||
*/
|
||||
protected $wpdb;
|
||||
|
||||
/**
|
||||
* Indexable_Post_Type_Archive_Builder constructor.
|
||||
*
|
||||
@@ -51,17 +59,20 @@ class Indexable_Post_Type_Archive_Builder {
|
||||
* @param Indexable_Builder_Versions $versions The latest version of each Indexable builder.
|
||||
* @param Post_Helper $post_helper The post helper.
|
||||
* @param Post_Type_Helper $post_type_helper The post type helper.
|
||||
* @param wpdb $wpdb The WPDB instance.
|
||||
*/
|
||||
public function __construct(
|
||||
Options_Helper $options,
|
||||
Indexable_Builder_Versions $versions,
|
||||
Post_Helper $post_helper,
|
||||
Post_Type_Helper $post_type_helper
|
||||
Post_Type_Helper $post_type_helper,
|
||||
wpdb $wpdb
|
||||
) {
|
||||
$this->options = $options;
|
||||
$this->version = $versions->get_latest_version_for_type( 'post-type-archive' );
|
||||
$this->post_helper = $post_helper;
|
||||
$this->post_type_helper = $post_type_helper;
|
||||
$this->wpdb = $wpdb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -135,34 +146,19 @@ class Indexable_Post_Type_Archive_Builder {
|
||||
* @return object An object with last_modified and published_at timestamps.
|
||||
*/
|
||||
protected function get_object_timestamps( $post_type ) {
|
||||
global $wpdb;
|
||||
$post_statuses = $this->post_helper->get_public_post_statuses();
|
||||
|
||||
$replacements = [];
|
||||
$replacements[] = 'post_modified_gmt';
|
||||
$replacements[] = 'post_date_gmt';
|
||||
$replacements[] = $wpdb->posts;
|
||||
$replacements[] = 'post_status';
|
||||
$replacements = \array_merge( $replacements, $post_statuses );
|
||||
$replacements[] = 'post_password';
|
||||
$replacements[] = 'post_type';
|
||||
$replacements[] = $post_type;
|
||||
$sql = "
|
||||
SELECT MAX(p.post_modified_gmt) AS last_modified, MIN(p.post_date_gmt) AS published_at
|
||||
FROM {$this->wpdb->posts} AS p
|
||||
WHERE p.post_status IN (" . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.post_password = ''
|
||||
AND p.post_type = %s
|
||||
";
|
||||
|
||||
//phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- We need to use a direct query here.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches.
|
||||
return $wpdb->get_row(
|
||||
$wpdb->prepare(
|
||||
'
|
||||
SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at
|
||||
FROM %i AS p
|
||||
WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.%i = ''
|
||||
AND p.%i = %s
|
||||
",
|
||||
$replacements
|
||||
)
|
||||
);
|
||||
//phpcs:enable
|
||||
$replacements = \array_merge( $post_statuses, [ $post_type ] );
|
||||
|
||||
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- We are using wpdb prepare.
|
||||
return $this->wpdb->get_row( $this->wpdb->prepare( $sql, $replacements ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Yoast\WP\SEO\Builders;
|
||||
|
||||
use wpdb;
|
||||
use Yoast\WP\SEO\Exceptions\Indexable\Invalid_Term_Exception;
|
||||
use Yoast\WP\SEO\Exceptions\Indexable\Term_Not_Built_Exception;
|
||||
use Yoast\WP\SEO\Exceptions\Indexable\Term_Not_Found_Exception;
|
||||
@@ -40,21 +41,31 @@ class Indexable_Term_Builder {
|
||||
*/
|
||||
protected $post_helper;
|
||||
|
||||
/**
|
||||
* The WPDB instance.
|
||||
*
|
||||
* @var wpdb
|
||||
*/
|
||||
protected $wpdb;
|
||||
|
||||
/**
|
||||
* Indexable_Term_Builder constructor.
|
||||
*
|
||||
* @param Taxonomy_Helper $taxonomy_helper The taxonomy helper.
|
||||
* @param Indexable_Builder_Versions $versions The latest version of each Indexable Builder.
|
||||
* @param Post_Helper $post_helper The post helper.
|
||||
* @param wpdb $wpdb The WPDB instance.
|
||||
*/
|
||||
public function __construct(
|
||||
Taxonomy_Helper $taxonomy_helper,
|
||||
Indexable_Builder_Versions $versions,
|
||||
Post_Helper $post_helper
|
||||
Post_Helper $post_helper,
|
||||
wpdb $wpdb
|
||||
) {
|
||||
$this->taxonomy_helper = $taxonomy_helper;
|
||||
$this->version = $versions->get_latest_version_for_type( 'term' );
|
||||
$this->post_helper = $post_helper;
|
||||
$this->wpdb = $wpdb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -245,47 +256,24 @@ class Indexable_Term_Builder {
|
||||
* @return object An object with last_modified and published_at timestamps.
|
||||
*/
|
||||
protected function get_object_timestamps( $term_id, $taxonomy ) {
|
||||
global $wpdb;
|
||||
$post_statuses = $this->post_helper->get_public_post_statuses();
|
||||
|
||||
$replacements = [];
|
||||
$replacements[] = 'post_modified_gmt';
|
||||
$replacements[] = 'post_date_gmt';
|
||||
$replacements[] = $wpdb->posts;
|
||||
$replacements[] = $wpdb->term_relationships;
|
||||
$replacements[] = 'object_id';
|
||||
$replacements[] = 'ID';
|
||||
$replacements[] = $wpdb->term_taxonomy;
|
||||
$replacements[] = 'term_taxonomy_id';
|
||||
$replacements[] = 'term_taxonomy_id';
|
||||
$replacements[] = 'taxonomy';
|
||||
$replacements[] = $taxonomy;
|
||||
$replacements[] = 'term_id';
|
||||
$replacements[] = $term_id;
|
||||
$replacements[] = 'post_status';
|
||||
$replacements = \array_merge( $replacements, $post_statuses );
|
||||
$replacements[] = 'post_password';
|
||||
$sql = "
|
||||
SELECT MAX(p.post_modified_gmt) AS last_modified, MIN(p.post_date_gmt) AS published_at
|
||||
FROM {$this->wpdb->posts} AS p
|
||||
INNER JOIN {$this->wpdb->term_relationships} AS term_rel
|
||||
ON term_rel.object_id = p.ID
|
||||
INNER JOIN {$this->wpdb->term_taxonomy} AS term_tax
|
||||
ON term_tax.term_taxonomy_id = term_rel.term_taxonomy_id
|
||||
AND term_tax.taxonomy = %s
|
||||
AND term_tax.term_id = %d
|
||||
WHERE p.post_status IN (" . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.post_password = ''
|
||||
";
|
||||
|
||||
//phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way.
|
||||
//phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches.
|
||||
return $wpdb->get_row(
|
||||
$wpdb->prepare(
|
||||
'
|
||||
SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at
|
||||
FROM %i AS p
|
||||
INNER JOIN %i AS term_rel
|
||||
ON term_rel.%i = p.%i
|
||||
INNER JOIN %i AS term_tax
|
||||
ON term_tax.%i = term_rel.%i
|
||||
AND term_tax.%i = %s
|
||||
AND term_tax.%i = %d
|
||||
WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ")
|
||||
AND p.%i = ''
|
||||
",
|
||||
$replacements
|
||||
)
|
||||
);
|
||||
//phpcs:enable
|
||||
$replacements = \array_merge( [ $taxonomy, $term_id ], $post_statuses );
|
||||
|
||||
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- We are using wpdb prepare.
|
||||
return $this->wpdb->get_row( $this->wpdb->prepare( $sql, $replacements ) );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user