Chris@0: setCacheBackend($cache_backend, 'image_toolkit_plugins'); Chris@0: $this->configFactory = $config_factory; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the default image toolkit ID. Chris@0: * Chris@0: * @return string|bool Chris@0: * ID of the default toolkit, or FALSE on error. Chris@0: */ Chris@0: public function getDefaultToolkitId() { Chris@0: $toolkit_id = $this->configFactory->get('system.image')->get('toolkit'); Chris@0: $toolkits = $this->getAvailableToolkits(); Chris@0: Chris@0: if (!isset($toolkits[$toolkit_id]) || !class_exists($toolkits[$toolkit_id]['class'])) { Chris@0: // The selected toolkit isn't available so return the first one found. If Chris@0: // none are available this will return FALSE. Chris@0: reset($toolkits); Chris@0: $toolkit_id = key($toolkits); Chris@0: } Chris@0: Chris@0: return $toolkit_id; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the default image toolkit. Chris@0: * Chris@0: * @return \Drupal\Core\ImageToolkit\ImageToolkitInterface Chris@0: * Object of the default toolkit, or FALSE on error. Chris@0: */ Chris@0: public function getDefaultToolkit() { Chris@0: if ($toolkit_id = $this->getDefaultToolkitId()) { Chris@0: return $this->createInstance($toolkit_id); Chris@0: } Chris@0: return FALSE; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets a list of available toolkits. Chris@0: * Chris@0: * @return array Chris@0: * An array with the toolkit names as keys and the descriptions as values. Chris@0: */ Chris@0: public function getAvailableToolkits() { Chris@0: // Use plugin system to get list of available toolkits. Chris@0: $toolkits = $this->getDefinitions(); Chris@0: Chris@0: $output = []; Chris@0: foreach ($toolkits as $id => $definition) { Chris@0: // Only allow modules that aren't marked as unavailable. Chris@0: if (call_user_func($definition['class'] . '::isAvailable')) { Chris@0: $output[$id] = $definition; Chris@0: } Chris@0: } Chris@0: Chris@0: return $output; Chris@0: } Chris@0: Chris@0: }