Jake Vanderwerf
10 days ago de317675a8069b747cb253ba3e2b5dc394ca36ef
inc/registrar/helpers/AddIntegrationFields.php
@@ -11,13 +11,13 @@
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;
      }
@@ -28,6 +28,7 @@
      $this->config = $registrar->getIntegration($service_name);
      add_action('jvb_define_integrations', [$this, 'addIntegrationFields'],20);
   }
   protected function initAllowed():void
   {
@@ -56,6 +57,7 @@
   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);
      }
@@ -63,11 +65,15 @@
   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()){
@@ -79,7 +85,8 @@
               'field'  => 'share_to_'.$this->service_name,
               'value'  => 1,
               'operator'  => '=='
            ]
            ],
            'default'   => 1,
         ];
         $fields["_{$this->service_name}_item_id"] = [
@@ -116,14 +123,15 @@
      }
      if ($this->config->getCanSchedule()) {
         $fields['schedule_'.$this->service_name] = [
         $fields['_'.$this->service_name.'_scheduled_at'] = [
            'type'   => 'datetime',
            'label'  => 'Schedule for later?',
            'condition' => [
               'field' => 'share_to_'.$this->service_name,
               'operator' => '==',
               'value' => 1
            ]
            ],
            'default'   => 1,
         ];
      }
      $additional = JVB()->connect($this->service_name)->getAdditionalFields($this->config->getContentType());