*/ private const SETTING_KEYS = array( ContactForm7Integration::KEY => ContactForm7Integration::SETTINGS_ENABLED_KEY, WPFormsIntegration::KEY => WPFormsIntegration::SETTINGS_ENABLED_KEY, ElementorFormLiteIntegration::KEY => ElementorFormLiteIntegration::SETTINGS_ENABLED_KEY, CommentsIntegration::KEY => CommentsIntegration::SETTINGS_ENABLED_KEY, LoginIntegration::KEY => LoginIntegration::SETTINGS_ENABLED_KEY, RegistrationIntegration::KEY => RegistrationIntegration::SETTINGS_ENABLED_KEY, ); /** * Integration manager. * * @var IntegrationManager */ private $integration_manager; /** * Settings repository. * * @var SettingsRepository */ private $settings_repository; /** * Constructor. * * @param IntegrationManager $integration_manager Integration manager. * @param SettingsRepository $settings_repository Settings repository. */ public function __construct( IntegrationManager $integration_manager, SettingsRepository $settings_repository ) { $this->integration_manager = $integration_manager; $this->settings_repository = $settings_repository; } /** * Get safe admin status rows. * * @return array */ public function get_statuses(): array { $settings = $this->settings_repository->get_settings(); $statuses = array(); foreach ( $this->integration_manager->get_integration_statuses() as $status ) { $key = $status['key']; $setting_key = isset( self::SETTING_KEYS[ $key ] ) ? self::SETTING_KEYS[ $key ] : ''; $statuses[] = array( 'key' => $key, 'label' => $status['label'], 'slug' => $status['slug'], 'setting_key' => $setting_key, 'available' => (bool) $status['available'], 'enabled' => '' !== $setting_key && ! empty( $settings[ $setting_key ] ), ); } return $statuses; } /** * Get integration setting keys. * * @return array */ public function get_setting_keys(): array { return self::SETTING_KEYS; } }