• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Yoast / wordpress-seo / dd6e866a9e6d253114633104d9e3858d807178ba

19 Jun 2024 10:03AM UTC coverage: 48.628% (-4.3%) from 52.936%
dd6e866a9e6d253114633104d9e3858d807178ba

push

github

web-flow
Merge pull request #21431 from Yoast/21429-update-copy-in-the-introduction-and-consent-modals

Updates the copy for the introduction and consent modals

7441 of 13454 branches covered (55.31%)

Branch coverage included in aggregate %.

0 of 3 new or added lines in 2 files covered. (0.0%)

3718 existing lines in 107 files now uncovered.

25100 of 53464 relevant lines covered (46.95%)

62392.47 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/admin/class-database-proxy.php
1
<?php
2
/**
3
 * WPSEO plugin file.
4
 *
5
 * @package WPSEO\Admin
6
 */
7

8
/**
9
 * Represents the proxy for communicating with the database.
10
 */
11
class WPSEO_Database_Proxy {
12

13
        /**
14
         * Holds the table name.
15
         *
16
         * @var string
17
         */
18
        protected $table_name;
19

20
        /**
21
         * Determines whether to suppress errors or not.
22
         *
23
         * @var bool
24
         */
25
        protected $suppress_errors = true;
26

27
        /**
28
         * Determines if this table is multisite.
29
         *
30
         * @var bool
31
         */
32
        protected $is_multisite_table = false;
33

34
        /**
35
         * Holds the last suppressed state.
36
         *
37
         * @var bool
38
         */
39
        protected $last_suppressed_state;
40

41
        /**
42
         * Holds the WordPress database object.
43
         *
44
         * @var wpdb
45
         */
46
        protected $database;
47

48
        /**
49
         * Holds the table prefix.
50
         *
51
         * @var string
52
         */
53
        protected $table_prefix;
54

55
        /**
56
         * Sets the class attributes and registers the table.
57
         *
58
         * @param wpdb   $database           The database object.
59
         * @param string $table_name         The table name that is represented.
60
         * @param bool   $suppress_errors    Should the errors be suppressed.
61
         * @param bool   $is_multisite_table Should the table be global in multisite.
62
         */
63
        public function __construct( $database, $table_name, $suppress_errors = true, $is_multisite_table = false ) {
×
64
                $this->table_name         = $table_name;
×
65
                $this->suppress_errors    = (bool) $suppress_errors;
×
66
                $this->is_multisite_table = (bool) $is_multisite_table;
×
67
                $this->database           = $database;
×
68

69
                // If the table prefix was provided, strip it as it's handled automatically.
70
                $table_prefix = $this->get_table_prefix();
×
71
                if ( ! empty( $table_prefix ) && strpos( $this->table_name, $table_prefix ) === 0 ) {
×
72
                        $this->table_prefix = substr( $this->table_name, strlen( $table_prefix ) );
×
73
                }
74

75
                if ( ! $this->is_table_registered() ) {
×
76
                        $this->register_table();
×
77
                }
78
        }
79

80
        /**
81
         * Inserts data into the database.
82
         *
83
         * @param array             $data   Data to insert.
84
         * @param array|string|null $format Formats for the data.
85
         *
86
         * @return false|int Total amount of inserted rows or false on error.
87
         */
UNCOV
88
        public function insert( array $data, $format = null ) {
×
UNCOV
89
                $this->pre_execution();
×
90

UNCOV
91
                $result = $this->database->insert( $this->get_table_name(), $data, $format );
×
92

UNCOV
93
                $this->post_execution();
×
94

UNCOV
95
                return $result;
×
96
        }
97

98
        /**
99
         * Updates data in the database.
100
         *
101
         * @param array             $data         Data to update on the table.
102
         * @param array             $where        Where condition as key => value array.
103
         * @param array|string|null $format       Optional. Data prepare format.
104
         * @param array|string|null $where_format Optional. Where prepare format.
105
         *
106
         * @return false|int False when the update request is invalid, int on number of rows changed.
107
         */
UNCOV
108
        public function update( array $data, array $where, $format = null, $where_format = null ) {
×
UNCOV
109
                $this->pre_execution();
×
110

UNCOV
111
                $result = $this->database->update( $this->get_table_name(), $data, $where, $format, $where_format );
×
112

UNCOV
113
                $this->post_execution();
×
114

UNCOV
115
                return $result;
×
116
        }
117

118
        /**
119
         * Upserts data in the database.
120
         *
121
         * Performs an insert into and if key is duplicate it will update the existing record.
122
         *
123
         * @param array             $data         Data to update on the table.
124
         * @param array|null        $where        Unused. Where condition as key => value array.
125
         * @param array|string|null $format       Optional. Data prepare format.
126
         * @param array|string|null $where_format Optional. Where prepare format.
127
         *
128
         * @return false|int False when the upsert request is invalid, int on number of rows changed.
129
         */
UNCOV
130
        public function upsert( array $data, ?array $where = null, $format = null, $where_format = null ) {
×
UNCOV
131
                if ( $where_format !== null ) {
×
132
                        _deprecated_argument( __METHOD__, '7.7.0', 'The where_format argument is deprecated' );
×
133
                }
134

UNCOV
135
                $this->pre_execution();
×
136

UNCOV
137
                $update  = [];
×
UNCOV
138
                $keys    = [];
×
UNCOV
139
                $columns = array_keys( $data );
×
UNCOV
140
                foreach ( $columns as $column ) {
×
UNCOV
141
                        $keys[]   = '`' . $column . '`';
×
UNCOV
142
                        $update[] = sprintf( '`%1$s` = VALUES(`%1$s`)', $column );
×
143
                }
144

UNCOV
145
                $query = sprintf(
×
UNCOV
146
                        'INSERT INTO `%1$s` (%2$s) VALUES ( %3$s ) ON DUPLICATE KEY UPDATE %4$s',
×
UNCOV
147
                        $this->get_table_name(),
×
UNCOV
148
                        implode( ', ', $keys ),
×
UNCOV
149
                        implode( ', ', array_fill( 0, count( $data ), '%s' ) ),
×
UNCOV
150
                        implode( ', ', $update )
×
UNCOV
151
                );
×
152

UNCOV
153
                $result = $this->database->query(
×
UNCOV
154
                        $this->database->prepare(
×
UNCOV
155
                                $query,
×
UNCOV
156
                                array_values( $data )
×
UNCOV
157
                        )
×
UNCOV
158
                );
×
159

UNCOV
160
                $this->post_execution();
×
161

UNCOV
162
                return $result;
×
163
        }
164

165
        /**
166
         * Deletes a record from the database.
167
         *
168
         * @param array             $where  Where clauses for the query.
169
         * @param array|string|null $format Formats for the data.
170
         *
171
         * @return false|int
172
         */
UNCOV
173
        public function delete( array $where, $format = null ) {
×
UNCOV
174
                $this->pre_execution();
×
175

UNCOV
176
                $result = $this->database->delete( $this->get_table_name(), $where, $format );
×
177

UNCOV
178
                $this->post_execution();
×
179

UNCOV
180
                return $result;
×
181
        }
182

183
        /**
184
         * Executes the given query and returns the results.
185
         *
186
         * @param string $query The query to execute.
187
         *
188
         * @return array|object|null The resultset
189
         */
UNCOV
190
        public function get_results( $query ) {
×
UNCOV
191
                $this->pre_execution();
×
192

UNCOV
193
                $results = $this->database->get_results( $query );
×
194

UNCOV
195
                $this->post_execution();
×
196

UNCOV
197
                return $results;
×
198
        }
199

200
        /**
201
         * Creates a table to the database.
202
         *
203
         * @param array $columns The columns to create.
204
         * @param array $indexes The indexes to use.
205
         *
206
         * @return bool True when creation is successful.
207
         */
UNCOV
208
        public function create_table( array $columns, array $indexes = [] ) {
×
UNCOV
209
                $create_table = sprintf(
×
UNCOV
210
                        'CREATE TABLE IF NOT EXISTS %1$s ( %2$s ) %3$s',
×
UNCOV
211
                        $this->get_table_name(),
×
UNCOV
212
                        implode( ',', array_merge( $columns, $indexes ) ),
×
UNCOV
213
                        $this->database->get_charset_collate()
×
UNCOV
214
                );
×
215

UNCOV
216
                $this->pre_execution();
×
217

UNCOV
218
                $is_created = (bool) $this->database->query( $create_table );
×
219

UNCOV
220
                $this->post_execution();
×
221

UNCOV
222
                return $is_created;
×
223
        }
224

225
        /**
226
         * Checks if there is an error.
227
         *
228
         * @return bool Returns true when there is an error.
229
         */
UNCOV
230
        public function has_error() {
×
UNCOV
231
                return ( $this->database->last_error !== '' );
×
232
        }
233

234
        /**
235
         * Executed before a query will be ran.
236
         *
237
         * @return void
238
         */
239
        protected function pre_execution() {
×
240
                if ( $this->suppress_errors ) {
×
241
                        $this->last_suppressed_state = $this->database->suppress_errors();
×
242
                }
243
        }
244

245
        /**
246
         * Executed after a query has been ran.
247
         *
248
         * @return void
249
         */
250
        protected function post_execution() {
×
251
                if ( $this->suppress_errors ) {
×
252
                        $this->database->suppress_errors( $this->last_suppressed_state );
×
253
                }
254
        }
255

256
        /**
257
         * Returns the full table name.
258
         *
259
         * @return string Full table name including prefix.
260
         */
UNCOV
261
        public function get_table_name() {
×
UNCOV
262
                return $this->get_table_prefix() . $this->table_name;
×
263
        }
264

265
        /**
266
         * Returns the prefix to use for the table.
267
         *
268
         * @return string The table prefix depending on the database context.
269
         */
270
        protected function get_table_prefix() {
×
271
                if ( $this->is_multisite_table ) {
×
272
                        return $this->database->base_prefix;
×
273
                }
274

275
                return $this->database->get_blog_prefix();
×
276
        }
277

278
        /**
279
         * Registers the table with WordPress.
280
         *
281
         * @return void
282
         */
283
        protected function register_table() {
×
284
                $table_name      = $this->table_name;
×
285
                $full_table_name = $this->get_table_name();
×
286

287
                $this->database->$table_name = $full_table_name;
×
288

289
                if ( $this->is_multisite_table ) {
×
290
                        $this->database->ms_global_tables[] = $table_name;
×
291
                        return;
×
292
                }
293

294
                $this->database->tables[] = $table_name;
×
295
        }
296

297
        /**
298
         * Checks if the table has been registered with WordPress.
299
         *
300
         * @return bool True if the table is registered, false otherwise.
301
         */
302
        protected function is_table_registered() {
×
303
                if ( $this->is_multisite_table ) {
×
304
                        return in_array( $this->table_name, $this->database->ms_global_tables, true );
×
305
                }
306

307
                return in_array( $this->table_name, $this->database->tables, true );
×
308
        }
309
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc