| | |
| | | abstract class Integrations |
| | | { |
| | | /** |
| | | * Queue types |
| | | * These types match with IntegrationExecutor |
| | | */ |
| | | protected static string $syncTo = 'sync_to'; |
| | | protected static string $deleteFrom = 'delete_from'; |
| | | protected static string $syncFrom = 'sync_from'; |
| | | protected static string $syncCustomer = 'sync_customer'; |
| | | protected static string $import = 'import'; |
| | | /** |
| | | * API Configuration |
| | | * These properties define how the integration connects to external services |
| | | */ |
| | |
| | | if (!$taxonomies) { |
| | | // Combine both content and taxonomy filtering |
| | | $taxonomies = []; |
| | | foreach (Registrar::getFeatured('is_content', 'term') as $registrar) { |
| | | foreach (Registrar::withFeature('is_content', 'term') as $type) { |
| | | $registrar = Registrar::getInstance($type); |
| | | if ($registrar->hasIntegration($this->service_name)) { |
| | | $taxonomies[] = $registrar->getSlug(); |
| | | } |
| | |
| | | ?> |
| | | <form id="<?=$this->service_name?>" class="integration <?php echo $is_connected ? 'connected' : 'disconnected'; ?>" |
| | | data-service="<?php echo esc_attr($this->service_name); ?>"> |
| | | <div class="header row btw"> |
| | | <div class="header row x-btw"> |
| | | <h3><?php echo esc_html($this->title); ?></h3> |
| | | <div class="setup"> |
| | | <?php if ($is_connected): ?> |
| | |
| | | } |
| | | ?> |
| | | </div> |
| | | <div class="actions row btw wrap"> |
| | | <div class="actions row x-btw wrap"> |
| | | <?php |
| | | foreach ($this->buttons as $action => $label) { |
| | | if (!$is_connected && $action !== 'save_credentials') { |
| | |
| | | return []; |
| | | } |
| | | |
| | | $key = BASE.$this->service_name.'_enabled_content_types'; |
| | | $enabled = get_option($key); |
| | | if (!$enabled) { |
| | | $enabled = []; |
| | | foreach (Registrar::getRegistered() as $registrar) { |
| | | $registrar = Registrar::getInstance($registrar); |
| | | if (!$registrar->hasIntegration($this->service_name)) { |
| | | continue; |
| | | } |
| | | $type = $registrar->getIntegration($this->service_name)->getContent_type(); |
| | | if (!$type) { |
| | | continue; |
| | | } |
| | | |
| | | if (!in_array($type, $enabled)) { |
| | | $enabled[] = $type; |
| | | } |
| | | } |
| | | update_option($key, $enabled); |
| | | } |
| | | return $enabled; |
| | | return array_filter(array_map(function($registrar) { |
| | | $registrar = Registrar::getInstance($registrar); |
| | | return $registrar->getIntegration($this->service_name)->getContentType(); |
| | | }, Registrar::withIntegration($this->service_name))); |
| | | } |
| | | |
| | | protected function getSupportedImage(int $imgID):int |