/**
* The URL of the remote extensions repository.
*
- * @var string|FALSE
+ * @var string|false
*/
private $_repoUrl = NULL;
}
/**
+ * Class constructor.
+ *
* @param array $parameters
* List of configuration values required by the extension system.
* Missing values will be guessed based on $config.
}
}
+ 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;
*/
public function getCache() {
if ($this->cache === NULL) {
- $cacheGroup = md5(serialize(['ext', $this->parameters]));
+ $cacheGroup = md5(serialize(['ext', $this->parameters, CRM_Utils_System::version()]));
// Extension system starts before container. Manage our own cache.
$this->cache = CRM_Utils_Cache::create([
'name' => $cacheGroup,
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.
default:
$extensionRow['statusLabel'] = '(' . $extensionRow['status'] . ')';
}
+ if ($manager->isIncompatible($obj->key)) {
+ $extensionRow['statusLabel'] = ts('Obsolete') . ($extensionRow['statusLabel'] ? (' - ' . $extensionRow['statusLabel']) : '');
+ }
return $extensionRow;
}