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 / Formatter / Links.php
codepress-admin-columns / classes / Formatter Last commit date
Collection 4 days ago Comment 4 days ago Date 4 days ago Media 4 days ago Post 4 days ago Term 4 days ago User 4 days ago Wrap 4 days ago Actions.php 4 days ago Aggregate.php 4 days ago Append.php 4 days ago ArrayToCollection.php 4 days ago Avatar.php 4 days ago AvatarUrl.php 4 days ago BeforeAfter.php 4 days ago BooleanLabel.php 4 days ago CharacterLimit.php 4 days ago CodeBlock.php 4 days ago Color.php 4 days ago ColumnFilter.php 4 days ago Composite.php 4 days ago ConditionalValue.php 4 days ago ContentTypeLink.php 4 days ago Count.php 4 days ago CountLabelFormatter.php 4 days ago DottedPassword.php 4 days ago EmptyValue.php 4 days ago ExplodeToCollection.php 4 days ago ExtendedValueLink.php 4 days ago FallBack.php 4 days ago FallBackFormatter.php 4 days ago FileLink.php 4 days ago FileSizeReadable.php 4 days ago ForeignId.php 4 days ago FormattedJson.php 4 days ago GroupedIdsToCollection.php 4 days ago HasValue.php 4 days ago HtmlEntityDecode.php 4 days ago HumanReadableTime.php 4 days ago HumanTimeDifference.php 4 days ago Id.php 4 days ago IdsToCollection.php 4 days ago Image.php 4 days ago ImageSize.php 4 days ago ImageToCollection.php 4 days ago ImageUrl.php 4 days ago ImageUrlsFromContent.php 4 days ago Implode.php 4 days ago ImplodeRecursive.php 4 days ago Kses.php 4 days ago Latest.php 4 days ago Linkable.php 4 days ago Links.php 4 days ago MapOptionLabel.php 4 days ago MapToId.php 4 days ago MapToLabel.php 4 days ago MenuLink.php 4 days ago Message.php 4 days ago Meta.php 4 days ago MetaCollection.php 4 days ago MetaCount.php 4 days ago MetaValueCollection.php 4 days ago NoIcon.php 4 days ago NullFormatter.php 4 days ago NumberFormat.php 4 days ago PathScope.php 4 days ago PregReplace.php 4 days ago Prepend.php 4 days ago ReadingTime.php 4 days ago RelationIdsCollection.php 4 days ago SelectOptionMapper.php 4 days ago SmallBlocks.php 4 days ago StringSanitizer.php 4 days ago StripTags.php 4 days ago Suffix.php 4 days ago TableRender.php 4 days ago ToArray.php 4 days ago ToggleValue.php 4 days ago TotalSum.php 4 days ago Trim.php 4 days ago UrlDecode.php 4 days ago UsedByMenu.php 4 days ago WordCount.php 4 days ago WordLimit.php 4 days ago Wrapper.php 4 days ago YesIcon.php 4 days ago YesNoIcon.php 4 days ago
Links.php
79 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Helper;
10 use AC\Type\Value;
11 use AC\Type\ValueCollection;
12
13 class Links implements Formatter
14 {
15 private ?string $filter_by;
16
17 private ?array $internal_domains;
18
19 public function __construct(?string $filter_by = null, array $internal_domains = null)
20 {
21 $this->filter_by = $filter_by;
22 $this->internal_domains = $internal_domains;
23 }
24
25 public function format(Value $value): ValueCollection
26 {
27 $urls = Helper\Html::create()->get_links(
28 (string)$value
29 );
30
31 if (! $urls) {
32 throw ValueNotFoundException::from_id($value->get_id());
33 }
34
35 switch ($this->filter_by) {
36 case 'internal':
37 $urls = $this->filter_by_internal($urls);
38 break;
39 case 'external':
40 $urls = $this->filter_by_external($urls);
41 }
42
43 $values = [];
44
45 foreach ($urls as $url) {
46 $values[] = new Value($url);
47 }
48
49 return new ValueCollection($value->get_id(), $values);
50 }
51
52 private function filter_by_internal(array $urls): array
53 {
54 return array_filter($urls, [$this, 'is_internal_url']);
55 }
56
57 private function filter_by_external(array $urls): array
58 {
59 return array_filter($urls, [$this, 'is_external_url']);
60 }
61
62 private function is_external_url(string $url): bool
63 {
64 return ! $this->is_internal_url($url);
65 }
66
67 private function is_internal_url(string $url): bool
68 {
69 foreach ($this->internal_domains as $domain) {
70 if (false !== strpos($url, $domain)) {
71 return true;
72 }
73 }
74
75 return false;
76 }
77
78 }
79