| | |
| | | |
| | | class Fields { |
| | | protected array $fields; |
| | | private ?Registrar $registrar = null; |
| | | private ?Registrar $registrar; |
| | | protected ?string $type; |
| | | |
| | | public function __construct(?string $type = null, ?Registrar $registrar = null) { |
| | |
| | | switch ($type) { |
| | | case 'post': |
| | | $this->addPostFields(); |
| | | //TODO: Add fields to post edit screen |
| | | // add_action('add_meta_boxes', [$this, 'registerPostFields']); |
| | | break; |
| | | case 'term': |
| | |
| | | break; |
| | | case 'user': |
| | | $this->addUserFields(); |
| | | if ($registrar->hasAnyIntegrations()) { |
| | | $this->addIntegrationSetupField(); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | |
| | | 'first_name' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'First Name', |
| | | 'section'=> 'your-account' |
| | | ], |
| | | 'last_name' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Last Name', |
| | | 'section'=> 'your-account' |
| | | ], |
| | | 'user_email' => [ |
| | | 'type' => 'email', |
| | | 'label' => 'Your Email', |
| | | 'section'=> 'your-account' |
| | | ], |
| | | 'display_name' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Display Name', |
| | | 'section'=> 'your-account' |
| | | ], |
| | | // 'website' => [ |
| | | // 'type' => 'url', |
| | |
| | | $field->$property($value); |
| | | } |
| | | |
| | | public function getFields():array |
| | | public function getFields(bool $includeDefaults = true):array |
| | | { |
| | | if (!$includeDefaults) { |
| | | $added = array_keys(match($this->type) { |
| | | 'post' => $this->defaultPostFields(), |
| | | 'term' => $this->defaultTermFields(), |
| | | 'user' => $this->defaultUserFields(), |
| | | }); |
| | | $fields = array_filter($this->fields, function($field) use ($added) { |
| | | return !in_array($field, $added); |
| | | }, ARRAY_FILTER_USE_KEY); |
| | | return array_filter($fields, function($field) { |
| | | return !$field->isHidden(); |
| | | }); |
| | | } |
| | | return $this->fields; |
| | | } |
| | | |
| | |
| | | { |
| | | return (new self())->defaultUserFields(); |
| | | } |
| | | |
| | | protected function addIntegrationSetupField():void |
| | | { |
| | | $integrations = $this->registrar->getIntegrations(); |
| | | foreach (array_keys($integrations) as $integration) { |
| | | $this->addField('integration_'.$integration.'_connected', [ |
| | | 'type' => 'true_false', |
| | | 'hidden' => true, |
| | | 'label' => 'Connected to '.$integration, |
| | | 'default' => false, |
| | | ]); |
| | | } |
| | | } |
| | | } |