Issues (87)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

includes/class-metabox-values.php (39 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace DummyPress;
3
4
/**
5
 * Class for handling CMB data
6
 *
7
 * @package    WordPress
8
 * @subpackage Evans
9
 * @author     Mike Selander
10
 */
11
class MetaboxValues {
12
13
	/**
14
	 * Assigns the proper testing data to a custom metabox.
15
	 *
16
	 * Swaps through the possible types of CMB2 supported fields and
17
	 * insert the appropriate data based on type & id.
18
	 * Some types are not yet supported due to low frequency of use.
19
	 *
20
	 * @see TestContent, add_post_meta
21
	 *
22
	 * @param int $post_id Single post ID.
23
	 * @param array $cmb custom metabox array from CMB2.
24
	 */
25
	public function get_values( $post_id, $cmb, $connected ) {
0 ignored issues
show
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
26
		$value = '';
27
28
		// First check that our post ID & cmb array aren't empty
29
		if ( empty( $cmb ) || empty( $post_id ) || ! is_user_logged_in() ) {
30
			return;
31
		}
32
33
		// Fetch the appropriate type of data and return
34
		switch( $cmb['type'] ) {
35
36
			case 'text':
37
			case 'text_small':
38
			case 'text_medium':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
39
40
				$value = $this->text( $cmb );
41
42
				break;
43
44
			case 'text_url':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
45
46
				$value = $this->url( $cmb );
47
48
				break;
49
50
			case 'text_email' :
0 ignored issues
show
There must be no space before the colon in a CASE statement

As per the PSR-2 coding standard, there must not be a space in front of the colon in case statements.

switch ($selector) {
    case "A": //right
        doSomething();
        break;
    case "B" : //wrong
        doSomethingElse();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
51
			case 'email':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
52
53
				$value = $this->email( $cmb );
54
55
				break;
56
57
			case 'number' :
0 ignored issues
show
There must be no space before the colon in a CASE statement

As per the PSR-2 coding standard, there must not be a space in front of the colon in case statements.

switch ($selector) {
    case "A": //right
        doSomething();
        break;
    case "B" : //wrong
        doSomethingElse();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
58
			case 'text_money':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
59
60
				$value = $this->number( $cmb );
61
62
				break;
63
64
			case 'text_time':
65
			case 'time':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
66
67
				$value = $this->time( $cmb );
68
69
				break;
70
71
			case 'select_timezone':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
72
73
				$value = $this->timezone( $cmb );
74
75
				break;
76
77
			case 'text_date':
78
			case 'date':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
79
80
				$value = $this->date( $cmb );
81
82
				break;
83
84
			case 'text_date_timestamp':
85
			case 'text_datetime_timestamp':
86
			case 'date_unix':
87
			case 'datetime_unix':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
88
89
				$value = $this->timestamp( $cmb );
90
91
				break;
92
93
			// case 'text_datetime_timestamp_timezone': break;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
94
95
			case 'test_colorpicker':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
96
97
				$value = $this->color( $cmb );
98
99
				break;
100
101
			case 'textarea':
102
			case 'textarea_small':
103
			case 'textarea_code':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
104
105
				$value = $this->textarea( $cmb );
106
107
				break;
108
109
			case 'select':
110
			case 'radio_inline':
111
			case 'radio':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
112
113
				$value = $this->radio( $cmb );
114
115
				break;
116
117
			// case 'taxonomy_radio': break;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
118
			// case 'taxonomy_select': break;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
119
			// case 'taxonomy_multicheck': break;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
120
121
			case 'checkbox':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
122
123
				if ( isset( $cmb['source'] ) && 'acf' === $cmb['source'] ) {
124
					$value = $this->multicheck( $cmb );
125
				} else {
126
					$value = $this->checkbox( $cmb );
127
				}
128
129
				break;
130
131
			case 'multicheck':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
132
133
				$value = $this->multicheck( $cmb );
134
135
				break;
136
137
			case 'wysiwyg':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
138
139
				$value = $this->wysiwyg( $cmb );
140
141
				break;
142
143
			case 'file':
144
			case 'image':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
145
146
				$value = $this->file( $cmb, $post_id, $connected );
147
148
				break;
149
150
			// case 'file_list': break;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
151
152
			case 'oembed':
0 ignored issues
show
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
153
154
				$value = $this->oembed( $cmb );
155
156
				break;
157
158
		}
159
160
		// Value must exist to attempt to insert
161
		if ( ! empty( $value ) && ! is_wp_error( $value ) ) {
162
163
			$this->update_meta( $post_id, $value, $cmb );
164
165
		// If we're dealing with a WP Error object, just return the message for debugging
166
		} elseif ( is_wp_error( $value ) ) {
167
168
			return $value->get_error_message();
169
170
		}
171
172
	} // end get_values
173
174
175
	/**
176
	 * Pulls a text string for CMB field.
177
	 *
178
	 * @see TestContent
179
	 *
180
	 * @param array $cmb Metabox data
181
	 * @return string cmb value
182
	 */
183
	private function text( $cmb ) {
184
185
		// If phone is in the id, fetch a phone #
186
		if ( stripos( $cmb['id'], 'phone' ) ) {
187
			$value = TestContent::phone();
188
189
		// If email is in the id, fetch an email address
190
		} elseif ( stripos( $cmb['id'], 'email' ) ) {
191
			$value = TestContent::email();
192
193
		// If time is in the id, fetch a time string
194
		} elseif ( stripos( $cmb['id'], 'time' ) ) {
195
			$value = TestContent::time();
196
197
		// If company|organization is in the ID, fetch a company name
198
		} elseif ( stripos( $cmb['id'], 'company' ) || stripos( $cmb['id'], 'organization' ) ) {
199
			$value = TestContent::organization();
200
201
		// Otherwise, just a random text string
202
		} else {
203
			$value = TestContent::title( rand( 10, 50 ) );
204
		}
205
206 View Code Duplication
		if ( 'acf' === $cmb['source'] && ! empty( $cmb['extras']->chars ) ) {
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
207
			$value = substr( $value, 0, $cmb['extras']->chars );
208
		}
209
210
		return $value;
211
212
	}
213
214
215
	/**
216
	 * Pulls a URL value CMB field.
217
	 *
218
	 * @see TestContent
219
	 *
220
	 * @param array $cmb Metabox data
221
	 * @return string cmb value
222
	 */
223
	private function url( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
224
225
		return TestContent::link();
226
227
	}
228
229
230
	/**
231
	 * Pulls an email address for CMB field.
232
	 *
233
	 * @see TestContent
234
	 *
235
	 * @param array $cmb Metabox data
236
	 * @return string cmb value
237
	 */
238
	private function email( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
239
240
		return TestContent::email();
241
242
	}
243
244
245
	/**
246
	 * Pulls a random valnumberue for CMB field.
247
	 *
248
	 * @param array $cmb Metabox data
249
	 * @return int cmb value
250
	 */
251
	private function number( $cmb ) {
252
253
		$min = 1;
254
		$max = 10000000;
255
256 View Code Duplication
		if ( 'acf' == $cmb['source'] && ! empty( $cmb['extras']->min ) ) {
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
257
			$min = $cmb['extras']->min;
258
		}
259
260 View Code Duplication
		if ( 'acf' == $cmb['source'] && ! empty( $cmb['extras']->max ) ) {
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
261
			$max = $cmb['extras']->max;
262
		}
263
264
		return rand( $min, $max );
265
266
	}
267
268
269
	/**
270
	 * Pulls a time of day for CMB field.
271
	 *
272
	 * @see TestContent
273
	 *
274
	 * @param array $cmb Metabox data
275
	 * @return string cmb value
276
	 */
277
	private function time( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
278
279
		return TestContent::time();
280
281
	}
282
283
284
	/**
285
	 * Pulls a timezone for CMB field.
286
	 *
287
	 * @see TestContent
288
	 *
289
	 * @param array $cmb Metabox data
290
	 * @return string cmb value
291
	 */
292
	private function timezone( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
293
294
		return TestContent::timezone();
295
296
	}
297
298
299
	/**
300
	 * Pulls a date for CMB field.
301
	 *
302
	 * @see TestContent
303
	 *
304
	 * @param array $cmb Metabox data
305
	 * @return string cmb value
306
	 */
307
	private function date( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
308
309
		return TestContent::date( 'm/d/Y' );
310
311
	}
312
313
314
	/**
315
	 * Pulls a timestamp for CMB field.
316
	 *
317
	 * @see TestContent
318
	 *
319
	 * @param array $cmb Metabox data
320
	 * @return string cmb value
321
	 */
322
	private function timestamp( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
323
324
		return TestContent::date( 'U' );
325
326
	}
327
328
329
	/**
330
	 * Pulls a random hexadecimal color code for CMB field.
331
	 *
332
	 * @param array $cmb Metabox data
333
	 * @return string cmb value
334
	 */
335
	private function color( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
336
337
		return '#' . str_pad( dechex( mt_rand( 0, 0xFFFFFF ) ), 6, '0', STR_PAD_LEFT );
338
339
	}
340
341
342
	/**
343
	 * Pulls a long text string for CMB field.
344
	 *
345
	 * @see TestContent
346
	 *
347
	 * @param array $cmb Metabox data
348
	 * @return string cmb value
349
	 */
350
	private function textarea( $cmb ) {
351
352
		$value = TestContent::plain_text();
353
354 View Code Duplication
		if ( 'acf' == $cmb['source'] && ! empty( $cmb['extras']->chars ) ) {
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
355
			$value = substr( $value, 0,  $cmb['extras']->chars );
356
		}
357
358
		return $value;
359
360
	}
361
362
363
	/**
364
	 * Pulls a random radio field value for CMB field.
365
	 *
366
	 * @see TestContent
367
	 *
368
	 * @param array $cmb Metabox data
369
	 * @return string cmb value
370
	 */
371
	private function radio( $cmb ) {
372
373
		// Grab a random item out of the array and return the key
374
		$new_val = array_slice( $cmb['options'], rand( 0, count( $cmb['options'] ) ), 1 );
375
		$value = key( $new_val );
376
377
		return $value;
378
379
	}
380
381
382
	/**
383
	 * Pulls a random checkbox field value for CMB field.
384
	 *
385
	 * @see TestContent
386
	 *
387
	 * @param array $cmb Metabox data
388
	 * @return string cmb value
389
	 */
390
	private function checkbox( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
391
		$value = '';
392
393
		// 50/50 odds of being turned on
394
		if ( rand( 0, 1 ) == 1 ) {
395
			$value = 'on';
396
		}
397
398
		return $value;
399
400
	}
401
402
403
	/**
404
	 * Pulls a random multicheck field value for CMB field.
405
	 *
406
	 * @see TestContent
407
	 *
408
	 * @param array $cmb Metabox data
409
	 * @return array cmb value
410
	 */
411
	private function multicheck( $cmb ) {
412
413
		$new_option = array();
414
415
		// Loop through each of our options
416
		foreach ( $cmb['options'] as $key => $value ) {
417
418
			// 50/50 chance of being included
419
			if ( rand( 0, 1 ) ) {
420
				$new_option[] = $key;
421
			}
422
423
		}
424
425
		return $new_option;
426
427
	}
428
429
430
	/**
431
	 * Pulls an HTML paragraph string for CMB field.
432
	 *
433
	 * @see TestContent
434
	 *
435
	 * @param array $cmb Metabox data
436
	 * @return string cmb value
437
	 */
438
	private function wysiwyg( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
439
440
		return TestContent::paragraphs();
441
442
	}
443
444
445
	/**
446
	 * Pulls an image URL for CMB field.
447
	 *
448
	 * @see TestContent
449
	 *
450
	 * @param array $cmb Metabox data
451
	 * @param int $post_id Post ID
452
	 * @param bool $connected Whether we're connected to the Internets or not
453
	 * @return mixed string|object cmb value or WP_Error object
454
	 */
455
	private function file( $cmb, $post_id, $connected ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
456
		$value = '';
457
458
		if ( true === $connected ) {
459
			$value = TestContent::image( $post_id );
460
		}
461
462
		return $value;
463
464
	}
465
466
467
	/**
468
	 * Pulls an Oembed URL for CMB field.
469
	 *
470
	 * @see TestContent
471
	 *
472
	 * @param array $cmb Metabox data
473
	 * @return string cmb value
474
	 */
475
	private function oembed( $cmb ) {
0 ignored issues
show
The parameter $cmb is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
476
477
		return TestContent::oembed();
478
479
	}
480
481
482
	/**
483
	 * Update the metabox with new data.
484
	 *
485
	 * @access private
486
	 *
487
	 * @see add_post_meta
488
	 *
489
	 * @param int $post_id Post ID.
490
	 * @param string $value Value to add into the database.
491
	 * @param array $cmb SMB data.
492
	 */
493
	private function update_meta( $post_id, $value, $cmb ) {
494
495
		$type 	= $cmb['type'];
496
		$id		= $cmb['id'];
497
		$value = apply_filters( "tc_{$type}_metabox", $value );	// Filter by metabox type
498
		$value = apply_filters( "tc_{$id}_metabox", $value ); // Filter by metabox ID
499
500
		// Files must be treated separately - they use the attachment ID
501
		// & url of media for separate cmb values. (only in cmb1 & cmb2 though)
502
		if ( 'file'!== $cmb['type'] || ( 'file' === $cmb['type'] && 'cmb_hm' === $cmb['source'] ) ) {
503
			add_post_meta( $post_id, $cmb['id'], $value, true );
504
		} else {
505
			add_post_meta( $post_id, $cmb['id'].'_id', $value, true );
506
			add_post_meta( $post_id, $cmb['id'], wp_get_attachment_url( $value ), true );
507
		}
508
509
		// Add extra, redundant meta. Because, why not have two rows for the price of one?
510
		if ( isset( $cmb['source'] ) && 'acf' === $cmb['source'] ) {
511
			add_post_meta( $post_id, '_' . $cmb['id'], $cmb['key'], true );
512
		}
513
514
	}
515
516
}
517