PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Setting / ComponentFactory / UserProperty.php
codepress-admin-columns / classes / Setting / ComponentFactory Last commit date
DateFormat 2 days ago FieldTypeConfigurator 2 days ago Media 2 days ago Post 2 days ago Pro 2 days ago ActionIcons.php 2 days ago AttachmentDisplay.php 2 days ago BaseComponentFactory.php 2 days ago BeforeAfter.php 2 days ago BooleanValues.php 2 days ago CharacterLimit.php 2 days ago ColumnInfo.php 2 days ago CommentDisplay.php 2 days ago CommentLink.php 2 days ago CommentStatus.php 2 days ago CustomField.php 2 days ago CustomFieldFactory.php 2 days ago DateFormat.php 2 days ago DateSaveFormat.php 2 days ago ExifData.php 2 days ago FieldType.php 2 days ago FieldTypeFactory.php 2 days ago FieldTypeFactoryBuilder.php 2 days ago FileDisplay.php 2 days ago FileLink.php 2 days ago FilePreviewSize.php 2 days ago HiddenInput.php 2 days ago HiddenLabel.php 2 days ago ImageSize.php 2 days ago ImageSizeBase.php 2 days ago IncludeMissingSizes.php 2 days ago InputNameAware.php 2 days ago IsLink.php 2 days ago IsLinkable.php 2 days ago IsMultiple.php 2 days ago Label.php 2 days ago LinkLabel.php 2 days ago LinkToMenu.php 2 days ago LinkablePostProperty.php 2 days ago MediaLink.php 2 days ago Message.php 2 days ago ModalDisplay.php 2 days ago Name.php 2 days ago NumberFormat.php 2 days ago NumberOfItems.php 2 days ago Password.php 2 days ago PathScope.php 2 days ago PostExtendedProperty.php 2 days ago PostLink.php 2 days ago PostProperty.php 2 days ago PostStatus.php 2 days ago PostStatusIcon.php 2 days ago PostType.php 2 days ago PostTypeFactory.php 2 days ago RelatedUserMetaField.php 2 days ago SelectOptions.php 2 days ago Separator.php 2 days ago SerializedArrayKeys.php 2 days ago SerializedDisplay.php 2 days ago StringLimit.php 2 days ago Taxonomy.php 2 days ago TaxonomyFactory.php 2 days ago TermLink.php 2 days ago TermProperty.php 2 days ago UseIcon.php 2 days ago UserLink.php 2 days ago UserLinkFactory.php 2 days ago UserProperty.php 2 days ago VideoDisplay.php 2 days ago Width.php 2 days ago WordLimit.php 2 days ago WordsPerMinute.php 2 days ago
UserProperty.php
146 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Setting\ComponentFactory;
6
7 use AC;
8 use AC\Expression\StringComparisonSpecification;
9 use AC\FormatterCollection;
10 use AC\Setting\AttributeCollection;
11 use AC\Setting\AttributeFactory;
12 use AC\Setting\Children;
13 use AC\Setting\Component;
14 use AC\Setting\ComponentCollection;
15 use AC\Setting\Config;
16 use AC\Setting\Control\Input;
17 use AC\Setting\Control\Input\Number;
18 use AC\Setting\Control\Input\OptionFactory;
19 use AC\Setting\Control\OptionCollection;
20 use AC\Setting\Control\Type\Option;
21
22 class UserProperty extends BaseComponentFactory
23 {
24 public const KEY = 'display_author_as';
25 public const PROPERTY_DISPLAY_NAME = 'display_name';
26 public const PROPERTY_EMAIL = 'user_email';
27 public const PROPERTY_FULL_NAME = 'first_last_name';
28 public const PROPERTY_FIRST_NAME = 'first_name';
29 public const PROPERTY_ID = 'ID';
30 public const PROPERTY_LAST_NAME = 'last_name';
31 public const PROPERTY_LOGIN = 'user_login';
32 public const PROPERTY_NICENAME = 'user_nicename';
33 public const PROPERTY_URL = 'user_url';
34 public const PROPERTY_NICKNAME = 'nickname';
35 public const PROPERTY_ROLES = 'roles';
36 public const PROPERTY_GRAVATAR = 'gravatar';
37
38 protected function get_label(Config $config): ?string
39 {
40 return __('User Display', 'codepress-admin-columns');
41 }
42
43 protected function get_input(Config $config): ?Input
44 {
45 return OptionFactory::create_select(
46 'display_author_as',
47 $this->get_input_options(),
48 $config->get('display_author_as') ?: 'display_name',
49 null,
50 false,
51 new AttributeCollection([
52 AttributeFactory::create_refresh(),
53 ])
54 );
55 }
56
57 protected function add_formatters(Config $config, FormatterCollection $formatters): void
58 {
59 $property = $config->get('display_author_as', self::PROPERTY_DISPLAY_NAME);
60
61 switch ($property) {
62 case self::PROPERTY_GRAVATAR:
63 $formatters->add(new AC\Formatter\User\Property('user_email'));
64 $formatters->add(new AC\Formatter\Avatar((int)$config->get('gravatar_size', '60')));
65
66 break;
67 case self::PROPERTY_FULL_NAME:
68 $formatters->add(new AC\Formatter\User\FullName());
69 break;
70 case self::PROPERTY_DISPLAY_NAME:
71 case self::PROPERTY_EMAIL:
72 case self::PROPERTY_FIRST_NAME:
73 case self::PROPERTY_ID:
74 case self::PROPERTY_LAST_NAME:
75 case self::PROPERTY_LOGIN:
76 case self::PROPERTY_NICENAME:
77 case self::PROPERTY_URL:
78 case self::PROPERTY_NICKNAME:
79 $formatters->add(new AC\Formatter\User\Property((string)$property));
80 break;
81 case self::PROPERTY_ROLES:
82 $formatters->add(new AC\Formatter\User\TranslatedRoles());
83 break;
84 }
85 }
86
87 protected function get_children(Config $config): ?Children
88 {
89 return new Children(
90 $this->get_children_component_collection($config)
91 );
92 }
93
94 protected function get_children_component_collection(Config $config): ComponentCollection
95 {
96 return new ComponentCollection([
97 new Component(
98 __('Image Size', 'codepress-admin-columns'),
99 null,
100 Number::create_single_step(
101 'gravatar_size',
102 0,
103 100,
104 (int)$config->get('gravatar_size', 60),
105 null,
106 null,
107 'px'
108 ),
109 StringComparisonSpecification::equal('gravatar')
110 ),
111 ]);
112 }
113
114 protected function get_input_options(): OptionCollection
115 {
116 $options = new OptionCollection();
117
118 $default_options = [
119 self::PROPERTY_DISPLAY_NAME => __('Display Name', 'codepress-admin-columns'),
120 self::PROPERTY_FIRST_NAME => __('First Name', 'codepress-admin-columns'),
121 self::PROPERTY_FULL_NAME => __('Full Name', 'codepress-admin-columns'),
122 self::PROPERTY_LAST_NAME => __('Last Name', 'codepress-admin-columns'),
123 self::PROPERTY_NICKNAME => __('Nickname', 'codepress-admin-columns'),
124 self::PROPERTY_LOGIN => __('User Login', 'codepress-admin-columns'),
125 self::PROPERTY_EMAIL => __('User Email', 'codepress-admin-columns'),
126 self::PROPERTY_ID => __('User ID', 'codepress-admin-columns'),
127 self::PROPERTY_NICENAME => __('User Nicename', 'codepress-admin-columns'),
128 self::PROPERTY_URL => __('User Website', 'codepress-admin-columns'),
129 ];
130
131 foreach ($default_options as $key => $label) {
132 $options->add(
133 new Option($label, $key, __('Default', 'codepress-admin-columns'))
134 );
135 }
136
137 $other_group = __('Other', 'codepress-admin-columns');
138
139 $options->add(new Option(__('Roles', 'codepress-admin-columns'), self::PROPERTY_ROLES, $other_group));
140 $options->add(new Option(__('Gravatar', 'codepress-admin-columns'), self::PROPERTY_GRAVATAR, $other_group));
141
142 return $options;
143 }
144
145 }
146