*/ private $integrations; /** * Registered integration keys. * * @var array */ private $registered_keys = array(); /** * Constructor. * * @param array $integrations Candidate integrations. */ public function __construct( array $integrations ) { $this->integrations = array_values( $integrations ); } /** * Register hooks for integrations that are available. * * @return array */ public function register_available_integrations(): array { $this->registered_keys = array(); foreach ( $this->integrations as $integration ) { if ( ! $integration->is_available() ) { continue; } $integration->register_hooks(); $this->registered_keys[] = $integration->get_key(); } return $this->registered_keys; } /** * Get integration status data without registering hooks. * * @return array */ public function get_integration_statuses(): array { $statuses = array(); foreach ( $this->integrations as $integration ) { $statuses[] = array( 'key' => $integration->get_key(), 'label' => $integration->get_label(), 'slug' => $integration->get_slug(), 'available' => $integration->is_available(), ); } return $statuses; } /** * Get registered integration keys. * * @return array */ public function get_registered_keys(): array { return $this->registered_keys; } /** * Get registered integration slugs. * * @return array */ public function get_registered_slugs(): array { return $this->get_registered_keys(); } }