PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
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 / Formatter / Collection / Separator.php
codepress-admin-columns / classes / Formatter / Collection Last commit date
Implode.php 3 months ago LocalizeSeparator.php 3 months ago Separator.php 3 months ago
Separator.php
109 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\Collection;
6
7 use AC\CollectionFormatter;
8 use AC\Setting\ComponentFactory\Separator as Setting;
9 use AC\Setting\Config;
10 use AC\Type\Value;
11 use AC\Type\ValueCollection;
12
13 class Separator implements CollectionFormatter
14 {
15
16 private string $separator;
17
18 private int $limit;
19
20 public function __construct(?string $separator = null, int $limit = 0)
21 {
22 $this->separator = $separator ?? ', ';
23 $this->limit = $limit;
24 }
25
26 public static function create_from_config(Config $config, int $limit = 20): self
27 {
28 return new self(
29 self::get_separator($config->get('separator', ', ')),
30 (int)$config->get('number_of_items', $limit)
31 );
32 }
33
34 private static function get_separator(string $setting): string
35 {
36 switch ($setting) {
37 case Setting::WHITE_SPACE :
38 return ' ';
39 case Setting::NEW_LINE :
40 return '<br>';
41 case Setting::HORIZONTAL_RULE :
42 return '<hr>';
43 case Setting::NONE:
44 return '';
45 case Setting::COMMA :
46 default :
47 return ', ';
48 }
49 }
50
51 public function format(ValueCollection $collection): Value
52 {
53 $values = [];
54
55 foreach ($collection as $item) {
56 $value = (string)$item;
57
58 if ('' === $value) {
59 continue;
60 }
61
62 $values[] = $value;
63 }
64
65 return new Value(
66 $collection->get_id(),
67 $this->implode($values, $this->limit, $this->separator)
68 );
69 }
70
71 public function implode(array $array, int $limit = 10, string $glue = ', '): string
72 {
73 if ($limit <= 0 || count($array) <= $limit) {
74 return implode($glue, $array);
75 }
76
77 $first_set = array_slice($array, 0, $limit);
78 $last_set = array_slice($array, $limit);
79
80 ob_start();
81
82 if ($first_set) {
83 $first = sprintf('<span class="ac-show-more__part -first">%s</span>', implode($glue, $first_set));
84
85 $more = $last_set
86 ? sprintf(
87 '<span class="ac-show-more__part -more">%s%s</span>',
88 $glue,
89 implode($glue, $last_set)
90 )
91 : '';
92
93 $content = sprintf('<span class="ac-show-more__content">%s%s</span>', $first, $more);
94
95 $toggler = $last_set
96 ? sprintf(
97 '<span class="ac-show-more__divider">|</span><a class="ac-show-more__toggle" data-show-more-toggle data-more="%1$s" data-less="%2$s">%1$s</a>',
98 sprintf(__('%s more', 'codepress-admin-columns'), count($last_set)),
99 strtolower(__('Hide', 'codepress-admin-columns'))
100 )
101 : '';
102
103 echo sprintf('<span class="ac-show-more">%s</span>', $content . $toggler);
104 }
105
106 return ob_get_clean();
107 }
108
109 }