| | |
| | | |
| | | 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 |
| | | { |
| | |
| | | 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); |
| | | } |
| | |
| | | |
| | | public function getIntegrationFields():array |
| | | { |
| | | if ($this->registrar && $this->registrar->getType() === 'user' && $this->config->isCustomer()) { |
| | | return JVB()->connect($this->service_name)->getAdditionalFields('customer'); |
| | | } |
| | | $fields = [ |
| | | 'share_to_'.$this->service_name => [ |
| | | 'type' => 'true_false', |
| | | 'label' => 'Share To '.$this->allowed[$this->service_name], |
| | | 'section' => 'sync', |
| | | 'default' => 1 |
| | | ] |
| | | ]; |
| | | if ($this->config->getUpdate()){ |
| | |
| | | 'field' => 'share_to_'.$this->service_name, |
| | | 'value' => 1, |
| | | 'operator' => '==' |
| | | ] |
| | | ], |
| | | 'default' => 1, |
| | | ]; |
| | | |
| | | $fields["_{$this->service_name}_item_id"] = [ |
| | |
| | | 'field' => 'share_to_'.$this->service_name, |
| | | 'operator' => '==', |
| | | 'value' => 1 |
| | | ] |
| | | ], |
| | | 'default' => 1, |
| | | ]; |
| | | } |
| | | $additional = JVB()->connect($this->service_name)->getAdditionalFields($this->config->getContentType()); |