From 60f924386ce9ca878bb579800feaeff371e3f9f4 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Sat, 25 Sep 2021 18:35:31 +0100
Subject: [PATCH] Issue #3190818 by Wim Leers, narendraR, quietone, xjm: Allow
 source counts to be cached: implement ::doCount() instead of ::count()

---
 .../src/Plugin/migrate/source/d7/EntityTranslationSettings.php  | 2 +-
 .../field/src/Plugin/migrate/source/d7/FieldInstance.php        | 2 +-
 .../file/src/Plugin/migrate/source/d6/UploadInstance.php        | 2 +-
 .../migrate/src/Plugin/migrate/source/DummyQueryTrait.php       | 2 +-
 .../migrate/src/Plugin/migrate/source/EmbeddedDataSource.php    | 2 ++
 core/modules/migrate/src/Plugin/migrate/source/EmptySource.php  | 2 +-
 .../migrate_drupal/src/Plugin/migrate/source/Variable.php       | 2 +-
 .../src/Plugin/migrate/source/d6/VariableTranslation.php        | 2 +-
 .../src/Plugin/migrate/source/d7/VariableTranslation.php        | 2 +-
 core/modules/node/src/Plugin/migrate/source/d6/ViewModeBase.php | 2 +-
 core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php | 2 +-
 11 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php b/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php
index f01146159fa8..1723e09708b3 100644
--- a/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php
+++ b/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php
@@ -193,7 +193,7 @@ public function getIds() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     // Since the number of variables we fetch with query() does not match the
     // actual number of rows generated by initializeIterator(), we need to
     // override count() to return the correct count.
diff --git a/core/modules/field/src/Plugin/migrate/source/d7/FieldInstance.php b/core/modules/field/src/Plugin/migrate/source/d7/FieldInstance.php
index d23c1b52c4fc..572f6142b111 100644
--- a/core/modules/field/src/Plugin/migrate/source/d7/FieldInstance.php
+++ b/core/modules/field/src/Plugin/migrate/source/d7/FieldInstance.php
@@ -252,7 +252,7 @@ public function getIds() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return $this->initializeIterator()->count();
   }
 
diff --git a/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php b/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
index f4182a927e19..08b2b3b0a0c4 100644
--- a/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
+++ b/core/modules/file/src/Plugin/migrate/source/d6/UploadInstance.php
@@ -78,7 +78,7 @@ public function fields() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return count($this->initializeIterator());
   }
 
diff --git a/core/modules/migrate/src/Plugin/migrate/source/DummyQueryTrait.php b/core/modules/migrate/src/Plugin/migrate/source/DummyQueryTrait.php
index 51a456a017a7..93509af71ce6 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/DummyQueryTrait.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/DummyQueryTrait.php
@@ -27,7 +27,7 @@ public function query() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return 1;
   }
 
diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
index 2ae9cbd2d429..feca681f59f4 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/EmbeddedDataSource.php
@@ -114,6 +114,8 @@ public function getIds() {
    * {@inheritdoc}
    */
   public function count($refresh = FALSE) {
+    // We do not want this source plugin to have a cacheable count.
+    // @see \Drupal\migrate_cache_counts_test\Plugin\migrate\source\CacheableEmbeddedDataSource
     return count($this->dataRows);
   }
 
diff --git a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
index 04667cb91d10..123eb9c4cbe6 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/EmptySource.php
@@ -63,7 +63,7 @@ public function getIds() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return 1;
   }
 
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
index 1b7679ea0dbc..62f4f6f0249a 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
@@ -134,7 +134,7 @@ protected function values() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     if (empty($this->variablesNoRowIfMissing)) {
       return 1;
     }
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
index eb897ee38580..ad55192bf7b1 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
@@ -88,7 +88,7 @@ protected function values() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return $this->initializeIterator()->count();
   }
 
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/VariableTranslation.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/VariableTranslation.php
index eb71189a442a..fe55c782ec14 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/VariableTranslation.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/VariableTranslation.php
@@ -93,7 +93,7 @@ protected function values() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return $this->initializeIterator()->count();
   }
 
diff --git a/core/modules/node/src/Plugin/migrate/source/d6/ViewModeBase.php b/core/modules/node/src/Plugin/migrate/source/d6/ViewModeBase.php
index 88d84d95249f..a85d49b3008c 100644
--- a/core/modules/node/src/Plugin/migrate/source/d6/ViewModeBase.php
+++ b/core/modules/node/src/Plugin/migrate/source/d6/ViewModeBase.php
@@ -12,7 +12,7 @@ abstract class ViewModeBase extends DrupalSqlBase {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return count($this->initializeIterator());
   }
 
diff --git a/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php b/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php
index 079bfaeb7e71..ca90d9fb51ab 100644
--- a/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php
+++ b/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php
@@ -73,7 +73,7 @@ public function getIds() {
   /**
    * {@inheritdoc}
    */
-  public function count($refresh = FALSE) {
+  protected function doCount() {
     return $this->initializeIterator()->count();
   }
 
-- 
GitLab