CRM_Extension_System - Only handle `test.*` extensions on headless test sites
[civicrm-core.git] / CRM / Extension / System.php
index 0a521e77e4f4a69b07f387de6fa8b00b414139af..f9665524d9b9128d9c4afb568b39d6ca39a67298 100644 (file)
@@ -51,7 +51,7 @@ class CRM_Extension_System {
   /**
    * The URL of the remote extensions repository.
    *
-   * @var string|FALSE
+   * @var string|false
    */
   private $_repoUrl = NULL;
 
@@ -89,6 +89,8 @@ class CRM_Extension_System {
   }
 
   /**
+   * Class constructor.
+   *
    * @param array $parameters
    *   List of configuration values required by the extension system.
    *   Missing values will be guessed based on $config.
@@ -109,7 +111,8 @@ class CRM_Extension_System {
     if (!array_key_exists('domain_id', $parameters)) {
       $parameters['domain_id'] = CRM_Core_Config::domainID();
     }
-    ksort($parameters); // guaranteed ordering - useful for md5(serialize($parameters))
+    // guaranteed ordering - useful for md5(serialize($parameters))
+    ksort($parameters);
 
     $this->parameters = $parameters;
   }
@@ -152,6 +155,12 @@ class CRM_Extension_System {
         }
       }
 
+      if (!defined('CIVICRM_TEST')) {
+        foreach ($containers as $container) {
+          $container->addFilter([__CLASS__, 'isNotTestExtension']);
+        }
+      }
+
       $this->fullContainer = new CRM_Extension_Container_Collection($containers, $this->getCache(), 'full');
     }
     return $this->fullContainer;
@@ -243,7 +252,8 @@ class CRM_Extension_System {
       $this->downloader = new CRM_Extension_Downloader(
         $this->getManager(),
         $basedir,
-        CRM_Utils_File::tempdir() // WAS: $config->extensionsDir . DIRECTORY_SEPARATOR . 'tmp';
+        // WAS: $config->extensionsDir . DIRECTORY_SEPARATOR . 'tmp';
+        CRM_Utils_File::tempdir()
       );
     }
     return $this->downloader;
@@ -298,6 +308,10 @@ class CRM_Extension_System {
     return Civi::$statics[__CLASS__]['compatibility'];
   }
 
+  public static function isNotTestExtension(CRM_Extension_Info $info) {
+    return (bool) !preg_match('/^test\./', $info->key);
+  }
+
   /**
    * Take an extension's raw XML info and add information about the
    * extension's status on the local system.
@@ -323,7 +337,8 @@ class CRM_Extension_System {
 
     switch ($extensionRow['status']) {
       case CRM_Extension_Manager::STATUS_UNINSTALLED:
-        $extensionRow['statusLabel'] = ''; // ts('Uninstalled');
+        // ts('Uninstalled');
+        $extensionRow['statusLabel'] = '';
         break;
 
       case CRM_Extension_Manager::STATUS_DISABLED:
@@ -331,7 +346,8 @@ class CRM_Extension_System {
         break;
 
       case CRM_Extension_Manager::STATUS_INSTALLED:
-        $extensionRow['statusLabel'] = ts('Enabled'); // ts('Installed');
+        // ts('Installed');
+        $extensionRow['statusLabel'] = ts('Enabled');
         break;
 
       case CRM_Extension_Manager::STATUS_DISABLED_MISSING:
@@ -339,7 +355,8 @@ class CRM_Extension_System {
         break;
 
       case CRM_Extension_Manager::STATUS_INSTALLED_MISSING:
-        $extensionRow['statusLabel'] = ts('Enabled (Missing)'); // ts('Installed');
+        // ts('Installed');
+        $extensionRow['statusLabel'] = ts('Enabled (Missing)');
         break;
 
       default: