1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* Dynamic hook arg class. |
5
|
|
|
* |
6
|
|
|
* @package wordpoints-hooks-api |
7
|
|
|
* @since 1.0.0 |
8
|
|
|
*/ |
9
|
|
|
|
10
|
|
|
/** |
11
|
|
|
* Represents a hook arg for dynamic entities. |
12
|
|
|
* |
13
|
|
|
* Some hook events are tied to entities which are "dynamic": for example, an entity |
14
|
|
|
* is registered for each post type with a slug of the format "post-{$slug}". The |
15
|
|
|
* $slug portion is dynamic, so we call these entities dynamic entities. |
16
|
|
|
* |
17
|
|
|
* Hook events have to be registered for specific entities, so events registered for |
18
|
|
|
* dynamic entities also need to be dynamic. However, hook actions don't have to be |
19
|
|
|
* tied to specific entities. They can supply generic args that are used by multiple |
20
|
|
|
* different entities (for example, "post"). This fact allows us to register a single |
21
|
|
|
* generic action for each group of dynamic entities, using this class when |
22
|
|
|
* registering the event args for the dynamic entities. |
23
|
|
|
* |
24
|
|
|
* @since 1.0.0 |
25
|
|
|
*/ |
26
|
|
|
class WordPoints_Hook_Arg_Dynamic extends WordPoints_Hook_Arg { |
27
|
|
|
|
28
|
|
|
/** |
29
|
|
|
* The slug of the arg to retrieve from the action. |
30
|
|
|
* |
31
|
|
|
* @since 1.0.0 |
32
|
|
|
* |
33
|
|
|
* @var string |
34
|
|
|
*/ |
35
|
|
|
protected $arg_slug; |
36
|
|
|
|
37
|
|
|
/** |
38
|
|
|
* @since 1.0.0 |
39
|
|
|
*/ |
40
|
|
|
public function __construct( $slug, WordPoints_Hook_ActionI $action = null ) { |
41
|
|
|
|
42
|
|
|
parent::__construct( $slug, $action ); |
43
|
|
|
|
44
|
|
|
$parts = explode( '\\', $this->slug, 2 ); |
45
|
|
|
|
46
|
|
|
if ( isset( $parts[1] ) ) { |
47
|
|
|
$this->arg_slug = $parts[0]; |
48
|
|
|
} else { |
49
|
|
|
$this->arg_slug = $this->slug; |
50
|
|
|
} |
51
|
|
|
} |
52
|
|
|
|
53
|
|
|
/** |
54
|
|
|
* @since 1.0.0 |
55
|
|
|
*/ |
56
|
|
|
public function get_value() { |
57
|
|
|
|
58
|
|
|
// We first check if there is an action arg with the full, dynamic name. |
59
|
|
|
$value = parent::get_value(); |
60
|
|
|
|
61
|
|
|
// If not, then we check for an arg with the generic name. |
62
|
|
|
if ( null === $value && $this->action instanceof WordPoints_Hook_ActionI ) { |
63
|
|
|
$value = $this->action->get_arg_value( $this->arg_slug ); |
64
|
|
|
} |
65
|
|
|
|
66
|
|
|
return $value; |
67
|
|
|
} |
68
|
|
|
} |
69
|
|
|
|
70
|
|
|
// EOF |
71
|
|
|
|