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 / PostProperty.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
PostProperty.php
133 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\Children;
11 use AC\Setting\ComponentCollection;
12 use AC\Setting\ComponentFactory\DateFormat\Date;
13 use AC\Setting\Config;
14 use AC\Setting\Control\Input;
15 use AC\Setting\Control\Input\OptionFactory;
16 use AC\Setting\Control\OptionCollection;
17
18 class PostProperty extends BaseComponentFactory
19 {
20 public const NAME = 'post';
21 public const PROPERTY_AUTHOR = 'author';
22 public const PROPERTY_FEATURED_IMAGE = 'thumbnail';
23 public const PROPERTY_ID = 'id';
24 public const PROPERTY_TITLE = 'title';
25 public const PROPERTY_DATE = 'date';
26 public const PROPERTY_STATUS = 'status';
27
28 protected StringLimit $string_limit;
29
30 protected ImageSize $image_size;
31
32 protected UserProperty $user_property;
33
34 protected PostStatusIcon $post_status_icon;
35
36 protected Date $date;
37
38 public function __construct(
39 StringLimit $string_limit,
40 ImageSize $image_size,
41 UserProperty $user_property,
42 PostStatusIcon $post_status_icon,
43 Date $date
44 ) {
45 $this->string_limit = $string_limit;
46 $this->image_size = $image_size;
47 $this->user_property = $user_property;
48 $this->post_status_icon = $post_status_icon;
49 $this->date = $date;
50 }
51
52 protected function get_label(Config $config): string
53 {
54 return __('Post Display', 'codepress-admin-columns');
55 }
56
57 protected function get_input(Config $config): Input
58 {
59 return OptionFactory::create_select(
60 self::NAME,
61 $this->get_display_options(),
62 $config->get(self::NAME, self::PROPERTY_TITLE)
63 );
64 }
65
66 protected function get_children(Config $config): ?Children
67 {
68 return new Children(
69 new ComponentCollection([
70 $this->string_limit->create(
71 $config,
72 StringComparisonSpecification::equal(self::PROPERTY_TITLE)
73 ),
74 $this->image_size->create(
75 $config,
76 StringComparisonSpecification::equal(self::PROPERTY_FEATURED_IMAGE)
77 ),
78 $this->user_property->create(
79 $config,
80 StringComparisonSpecification::equal(self::PROPERTY_AUTHOR)
81 ),
82 $this->post_status_icon->create(
83 $config,
84 StringComparisonSpecification::equal(self::PROPERTY_STATUS)
85 ),
86 $this->date->create(
87 $config,
88 StringComparisonSpecification::equal(self::PROPERTY_DATE)
89 ),
90 ])
91 );
92 }
93
94 protected function add_formatters(Config $config, FormatterCollection $formatters): void
95 {
96 switch ($this->get_input($config)->get_value()) {
97 case self::PROPERTY_TITLE:
98 $formatters->add(new AC\Formatter\Post\PostTitle());
99 break;
100 case self::PROPERTY_FEATURED_IMAGE:
101 $formatters->add(new AC\Formatter\Post\FeaturedImage());
102 break;
103 case self::PROPERTY_AUTHOR:
104 $formatters->add(new AC\Formatter\Post\Author());
105 break;
106 case self::PROPERTY_STATUS:
107 $formatters->add(new AC\Formatter\Post\PostStatus());
108 break;
109 case self::PROPERTY_DATE:
110 $formatters->add(new AC\Formatter\Post\PostDate());
111 $formatters->add(new AC\Formatter\Date\LocalizedDateFormat('U', 'Y-m-d H:i:s'));
112 break;
113 }
114 }
115
116 protected function get_display_options(): OptionCollection
117 {
118 $options = [
119 self::PROPERTY_TITLE => __('Title'),
120 self::PROPERTY_ID => __('ID'),
121 self::PROPERTY_AUTHOR => __('Author'),
122 self::PROPERTY_FEATURED_IMAGE => _x('Featured Image', 'post'),
123 self::PROPERTY_DATE => __('Date'),
124 self::PROPERTY_STATUS => __('Status'),
125 ];
126
127 natcasesort($options);
128
129 return OptionCollection::from_array($options);
130 }
131
132 }
133