Completed
Push — update/jitm-test ( 03ced2...c48940 )
by
unknown
212:35 queued 203:56
created

Jetpack_Affiliate::add_code_as_query_arg()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
if ( ! defined( 'ABSPATH' ) ) {
4
	// Exit if accessed directly
5
	exit;
6
}
7
8
/**
9
 * This class introduces routines to get an affiliate code, that might be obtained from:
10
 * - an `jetpack_affiliate_code` option in the WP database
11
 * - an affiliate code returned by a filter bound to the `jetpack_affiliate_code` filter hook
12
 *
13
 * @since 6.9.0
14
 */
15
class Jetpack_Affiliate {
16
17
	/**
18
	 * @since 6.9.0
19
	 * @var Jetpack_Affiliate This class instance.
20
	 **/
21
	private static $instance = null;
22
23
	private function __construct() {
24
		if ( Jetpack::is_development_mode() ) {
25
			return;
26
		}
27
	}
28
29
	/**
30
	 * Initializes the class or returns the singleton
31
	 *
32
	 * @since 6.9.0
33
	 *
34
	 * @return Jetpack_Affiliate | false
35
	 */
36
	public static function init() {
37
		if ( is_null( self::$instance ) ) {
38
			self::$instance = new Jetpack_Affiliate;
39
		}
40
		return self::$instance;
41
	}
42
43
	/**
44
	 * Returns the affiliate code from database after filtering it.
45
	 *
46
	 * @since 6.9.0
47
	 *
48
	 * @return string The affiliate code.
49
	 */
50
	public function get_affiliate_code() {
51
		/**
52
		 * Allow to filter the affiliate code.
53
		 *
54
		 * @since 6.9.0
55
		 *
56
		 * @param string $aff_code The affiliate code, blank by default.
57
		 */
58
		return apply_filters( 'jetpack_affiliate_code', get_option( 'jetpack_affiliate_code', '' ) );
59
	}
60
61
	/**
62
	 * Returns the passed URL with the affiliate code added as a URL query arg.
63
	 *
64
	 * @since 6.9.0
65
	 *
66
	 * @param string $url The URL where the code will be added.
67
	 *
68
	 * @return string The passed URL with the code added.
69
	 */
70
	public function add_code_as_query_arg( $url ) {
71
		if ( '' !== ( $aff = $this->get_affiliate_code() ) ) {
72
			$url = add_query_arg( 'aff', $aff, $url );
73
		}
74
		return $url;
75
	}
76
}
77
78
add_action( 'init', array( 'Jetpack_Affiliate', 'init' ) );
79