1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?php /** * Model for the SEO Meta table. * * @package Yoast\YoastSEO\Models */
namespace Yoast\WP\Free\Models;
use Yoast\WP\Free\Loggers\Logger; use Yoast\WP\Free\Yoast_Model;
/** * Table definition for the Indexable Meta table. * * @property int $indexable_id * @property string $meta_key * @property string $meta_value * @property string $created_at * @property string $updated_at */ class Indexable_Meta extends Yoast_Model {
/** * Retrieves a meta value for an indexable. * * @param int $indexable_id The indexable ID. * @param string $meta_key The meta key. * * @return bool|\Yoast\WP\Free\Models\Indexable_Meta Indexable meta object. */ public static function find_meta_for_indexable( $indexable_id, $meta_key ) { return Yoast_Model::of_type( 'Indexable_Meta' ) ->where( 'indexable_id', $indexable_id ) ->where( 'meta_key', $meta_key ) ->find_one(); }
/** * Creates an indexable meta for an indexable. * * @param int $indexable_id The indexable ID. * @param string $meta_key The meta key. * * @return bool|\Yoast\WP\Free\Models\Indexable_Meta Indexable meta object. */ public static function create_meta_for_indexable( $indexable_id, $meta_key ) { /** * Indexable instance for the post. * * @var \Yoast\WP\Free\Models\Indexable_Meta $indexable_meta */ $indexable_meta = Yoast_Model::of_type( 'Indexable_Meta' )->create(); $indexable_meta->indexable_id = $indexable_id; $indexable_meta->meta_key = $meta_key;
Logger::get_logger()->debug( \sprintf( /* translators: 1: ID; 2: value of a meta key. */ \__( 'Indexable meta created for indexable id %1$s with meta key %2$s', 'wordpress-seo' ), $indexable_id, $meta_key ), \get_object_vars( $indexable_meta ) );
return $indexable_meta; }
/** * Returns the indexable object the meta belongs to. * * @return $this|null */ public function indexable() { return $this->belongs_to( 'Indexable' ); }
/** * Enhances the save method. * * @return boolean True on succes. */ public function save() { if ( ! $this->created_at ) { $this->created_at = \gmdate( 'Y-m-d H:i:s' ); }
if ( $this->updated_at ) { $this->updated_at = \gmdate( 'Y-m-d H:i:s' ); }
$saved = parent::save();
if ( $saved ) { Logger::get_logger()->debug( \sprintf( /* translators: 1: ID; 2: value of a meta key. */ \__( 'Indexable meta saved for indexable id %1$s with meta key %2$s', 'wordpress-seo' ), $this->indexable_id, $this->meta_key ), \get_object_vars( $this ) ); }
return $saved; }
/** * Enhances the delete method. * * @return boolean True on succes. */ public function delete() { $deleted = parent::delete();
if ( $deleted ) { Logger::get_logger()->debug( \__( 'Indexable meta deleted.', 'wordpress-seo' ), \get_object_vars( $this ) ); }
return $deleted; } }
|