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 / Deprecated / Hook.php
codepress-admin-columns / classes / Deprecated Last commit date
Hook.php 2 days ago HookCollection.php 2 days ago HookCollectionFactory.php 2 days ago Hooks.php 2 days ago
Hook.php
126 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Deprecated;
6
7 use Closure;
8 use LogicException;
9 use ReflectionFunction;
10
11 class Hook
12 {
13 private string $name;
14
15 private string $version;
16
17 private ?string $replacement;
18
19 public function __construct(string $name, string $version, ?string $replacement = null)
20 {
21 $this->name = $name;
22 $this->version = $version;
23 $this->replacement = $replacement;
24 }
25
26 public function get_name(): string
27 {
28 return $this->name;
29 }
30
31 public function get_version(): string
32 {
33 return $this->version;
34 }
35
36 public function get_replacement(): string
37 {
38 if (null === $this->replacement) {
39 throw new LogicException('Empty replacement');
40 }
41
42 return $this->replacement;
43 }
44
45 public function has_replacement(): bool
46 {
47 return null !== $this->replacement;
48 }
49
50 public function has_hook(): bool
51 {
52 return has_filter($this->name);
53 }
54
55 public function usage_count(): int
56 {
57 return count($this->get_callbacks() ?? []);
58 }
59
60 private function get_filter_callbacks(): array
61 {
62 global $wp_filter;
63
64 return $wp_filter[$this->name]->callbacks ?? [];
65 }
66
67 public function get_callbacks(): ?array
68 {
69 $messages = [];
70
71 foreach ($this->get_filter_callbacks() as $callback) {
72 foreach ($callback as $cb) {
73 $function = $cb['function'];
74
75 // Function
76 if (is_scalar($function)) {
77 $messages[] = sprintf('%s is called %s()', __('Function', 'codepress-admin-columns'), $function);
78 continue;
79 }
80
81 // Method
82 if (is_array($function)) {
83 $class_name = is_object($function[0]) ? get_class($function[0]) : $function[0];
84 $messages[] = sprintf('%s::%s()', $class_name, $function[1]);
85 continue;
86 }
87
88 // Anonymous function
89 if ($function instanceof Closure) {
90 $reflection = new ReflectionFunction($function);
91 $closure = $reflection->getClosureScopeClass();
92
93 $class_name = $closure
94 ? $closure->getName()
95 : null;
96
97 if ($class_name) {
98 $messages[] = sprintf(
99 '%s is called from %s',
100 __('Anonymous function', 'codepress-admin-columns'),
101 $class_name,
102 );
103
104 continue;
105 }
106
107 $messages[] = sprintf(
108 '%s is called from %s',
109 __('Anonymous Function', 'codepress-admin-columns'),
110 $reflection->getFileName(),
111 );
112 }
113 }
114 }
115
116 if (! $messages) {
117 return null;
118 }
119
120 natcasesort($messages);
121
122 return $messages;
123 }
124
125 }
126