| | |
| | | |
| | | use JVBase\registrar\config\Integration; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\utility\Features; |
| | | use JVBase\base\Site; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | |
| | | |
| | | class AddIntegrationFields { |
| | | protected string $service_name; |
| | | protected Registrar $registrar; |
| | | private Registrar $registrar; |
| | | protected Integration $config; |
| | | protected array $allowed; |
| | | |
| | | public function __construct(string $service_name, ?Registrar $registrar = null) { |
| | | $this->initAllowed(); |
| | | if (!in_array($service_name, $this->allowed)) { |
| | | if (!array_key_exists($service_name, $this->allowed)) { |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | $this->config = $registrar->getIntegration($service_name); |
| | | |
| | | add_action('jvb_define_integrations', [$this, 'addIntegrationFields'],20); |
| | | } |
| | | protected function initAllowed():void |
| | | { |
| | | $allowed = []; |
| | | if (Features::hasIntegration('gmb')) { |
| | | if (Site::hasIntegration('gmb')) { |
| | | $allowed['gmb'] = 'Google My Business'; |
| | | } |
| | | if (Features::hasIntegration('facebook')) { |
| | | if (Site::hasIntegration('facebook')) { |
| | | $allowed['facebook'] = 'Facebook'; |
| | | } |
| | | if (Features::hasIntegration('square')) { |
| | | if (Site::hasIntegration('square')) { |
| | | $allowed['square'] = 'Square'; |
| | | } |
| | | if (Features::hasIntegration('instagram')) { |
| | | if (Site::hasIntegration('instagram')) { |
| | | $allowed['instagram'] = 'Instagram'; |
| | | } |
| | | if (Features::hasIntegration('bluesky')) { |
| | | if (Site::hasIntegration('bluesky')) { |
| | | $allowed['bluesky'] = 'BlueSky'; |
| | | } |
| | | if (Features::hasIntegration('helcim')) { |
| | | if (Site::hasIntegration('helcim')) { |
| | | $allowed['helcim'] = 'Helcim'; |
| | | } |
| | | $this->allowed = $allowed; |
| | |
| | | public function addIntegrationFields():void |
| | | { |
| | | $fields = $this->getIntegrationFields(); |
| | | // error_log('[AddIntegrationFields] adding fields for '.$this->service_name.': '.print_r($fields, true)); |
| | | foreach ($fields as $fieldName => $fieldConfig) { |
| | | $this->registrar->fields()->addField($fieldName, $fieldConfig); |
| | | } |