Completed
Push — master ( 9e6196...c56468 )
by Daryl
02:13
created

Google_Maps::source_dir()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 2
cts 2
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Clubdeuce\WPGoogleMaps;
4
5
/**
6
 * Class Google_Maps
7
 * @package Clubdeuce\WPGoogleMaps
8
 */
9
class Google_Maps {
10
11
	/**
12
	 * @var string
13
	 */
14
	protected static $_version = '0.1.6';
15
16
	/**
17
	 * @var string
18
	 */
19
	protected static $_api_key = '';
20
21
	/**
22
	 * @var Geocoder
23
	 */
24
	protected static $_geocoder;
25
26
	/**
27
	 * These conditions will be used to determine whether to enqueue the Google Maps JS.
28
	 *
29
	 * @var array
30
	 */
31
	protected static $_script_conditions = array();
32
33
	/**
34
	 * The path to this library's directory
35
	 *
36
	 * @var string
37
	 */
38
	protected static $_source_dir;
39
40
	/**
41
	 * The url to this module's directory
42
	 *
43
	 * @var string
44
	 */
45
	protected static $_source_url;
46
47
	/**
48
	 *
49
	 */
50
	static function initialize() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
51
52
		self::$_source_dir = dirname( __DIR__ );
53
54
		add_action( 'wp_enqueue_scripts', array( __CLASS__, '_wp_enqueue_scripts_9' ), 9 );
55
56
	}
57
58
	/**
59
	 * @return string
60
	 */
61 1
	static function api_key() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
62
63 1
		return static::$_api_key;
64
65
	}
66
67
	/**
68
	 * @return Geocoder
69
	 */
70 1
	static function geocoder() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
71
72 1
		if ( ! isset( static::$_geocoder ) ) {
73 1
			static::$_geocoder = new Geocoder( ['api_key' => self::api_key() ] );
74
		}
75
76 1
		return static::$_geocoder;
77
78
	}
79
80
	/**
81
	 * @param  array $args
82
	 * @return Map
83
	 */
84 1
	static function make_new_map( $args = array() ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
85
86 1
		$class = __NAMESPACE__ . '\Map';
87 1
		return new $class( $args );
88
89
	}
90
91
	/**
92
	 * @param string $key
93
	 */
94 1
	static function register_api_key( $key ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
95
96 1
		static::$_api_key = filter_var( $key, FILTER_SANITIZE_STRING );
97
98 1
	}
99
100
	/**
101
	 * @param callable $condition
102
	 */
103 1
	static function register_script_condition( $condition ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
104
105 1
		static::$_script_conditions[] = $condition;
106
107 1
	}
108
109
	static function _wp_enqueue_scripts_9() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
110
111
		$key    = static::api_key();
112
		$source = sprintf( '%1$s/dist/scripts/maps.min.js', self::source_url() );
113
114
		if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
115
			$source = sprintf( '%1$s/assets/maps.js', self::source_url() );
116
		}
117
118
		wp_register_script('google-maps', "https://maps.google.com/maps/api/js?v=3&key={$key}", false, '3.0', true );
119
		wp_register_script('map-control', $source, array( 'jquery', 'google-maps' ), self::version(), true );
120
121
		$conditions = self::script_conditions();
122
123
		foreach( $conditions as $key => $condition ) {
124
125
			if ( is_callable( $condition ) ) {
126
				$conditions[ $key] = call_user_func( $condition );
127
			}
128
		}
129
130
		if ( in_array( true, $conditions ) ) {
131
			wp_enqueue_script( 'map-control' );
132
		}
133
134
	}
135
136 1
	static function script_conditions() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
137
138 1
		return static::$_script_conditions;
139
140
	}
141
142
	/**
143
	 * @param  string $address
144
	 * @param  array  $args
145
	 * @return Marker
146
	 */
147 1
	static function make_marker_by_address( $address, $args = array() ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
148
149 1
		$args = wp_parse_args( $args, array(
150 1
			'address' => $address,
151 1
			'geocoder' => self::geocoder(),
152
		) );
153
154 1
		return new Marker( $args );
155
156
	}
157
158
	/**
159
	 * @param  string $destination
160
	 * @param  array  $args
161
	 * @return string
162
	 */
163 1
	static function driving_directions_href($destination, $args = array() ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
164
165 1
		$args = wp_parse_args( $args, array(
166 1
			'start' => 'My Location',
167
		) );
168
169 1
		return sprintf( 'https://maps.google.com/maps?saddr=%1$s&daddr=%2$s', urlencode( $args['start'] ), urlencode( $destination ) );
170
	}
171
172
	/**
173
	 * @return string
174
	 */
175 1
	static function source_dir() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
176
177 1
		return self::$_source_dir;
178
179
	}
180
181
	/**
182
	 * @return string
183
	 */
184
	static function source_url() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
185
186
		$path = dirname( __DIR__ );
187
188
		$url = str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $path );
189
190
		if ( is_ssl() ) {
191
			$url = preg_replace( '#^https*:\/\/([a-zA-z0-9\.]*)#', 'https://$1', $url );
192
		}
193
194
		return $url;
195
196
	}
197
198 1
	static function version() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
199
200 1
		return self::$_version;
201
202
	}
203
204
}
205