Completed
Pull Request — develop (#1577)
by Zack
18:22
created

GravityView_Lightbox_Provider::enqueue_styles()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Registers a lightbox provider.
5
 *
6
 * @internal Currently internal; not ready for public usage.
7
 */
8
abstract class GravityView_Lightbox_Provider {
9
10
	public static $slug;
11
12
	public static $script_slug;
13
14
	public static $style_slug;
15
16
	/**
17
	 * Adds actions and that modify GravityView to use this lightbox provider
18
	 */
19
	public function add_hooks() {
20
		add_filter( 'gravityview_lightbox_script', array( $this, 'filter_lightbox_script' ), 1000 );
21
		add_filter( 'gravityview_lightbox_style', array( $this, 'filter_lightbox_style' ), 1000 );
22
23
		add_filter( 'gravityview/fields/fileupload/link_atts', array( $this, 'fileupload_link_atts' ), 10, 4 );
24
		add_filter( 'gravityview/get_link/allowed_atts', array( $this, 'allowed_atts' ) );
25
26
		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts') );
27
		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles') );
28
29
		add_action( 'gravityview/template/after', array( $this, 'print_scripts' ) );
30
31
		add_action( 'wp_footer', array( $this, 'output_footer' ) );
32
	}
33
34
35
	/**
36
	 * Prints scripts for lightbox after a View is rendered
37
	 *
38
	 * @since 2.10.1
39
	 *
40
	 * @param GV\Template_Context $gravityview
41
	 *
42
	 * @return void
43
	 */
44
	public function print_scripts( $gravityview ) {
45
46
		if ( ! self::is_active( $gravityview ) ) {
47
			return;
48
		}
49
50
		wp_print_scripts( static::$script_slug );
51
		wp_print_styles( static::$script_slug );
52
	}
53
54
	/**
55
	 * Returns whether the provider is active for this View
56
	 *
57
	 * @since 2.10.1
58
	 *
59
	 * @param GV\Template_Context $gravityview
60
	 *
61
	 * @return bool true: yes! false: no!
62
	 */
63
	protected static function is_active( $gravityview ) {
64
65
		$lightbox = $gravityview->view->settings->get( 'lightbox' );
66
67
		if ( ! $lightbox ) {
68
			return false;
69
		}
70
71
		$provider = gravityview()->plugin->settings->get( 'lightbox' );
72
73
		if ( static::$slug !== $provider ) {
74
			return false;
75
		}
76
77
		return true;
78
	}
79
80
	/**
81
	 * Removes actions that were added by {@see GravityView_Lightbox_Provider::add_hooks}
82
	 * @internal Do not call directly. Instead, use:
83
	 *
84
	 * <code>
85
	 * do_action( 'gravityview/lightbox/provider', 'slug' );
86
	 * </code>
87
	 */
88
	public function remove_hooks() {
89
		remove_filter( 'gravityview_lightbox_script', array( $this, 'filter_lightbox_script' ), 1000 );
90
		remove_filter( 'gravityview_lightbox_style', array( $this, 'filter_lightbox_style' ), 1000 );
91
92
		remove_filter( 'gravityview/fields/fileupload/link_atts', array( $this, 'fileupload_link_atts' ), 10 );
93
		remove_filter( 'gravityview/get_link/allowed_atts', array( $this, 'allowed_atts' ) );
94
95
		remove_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts') );
96
		remove_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles') );
97
98
		remove_action( 'wp_footer', array( $this, 'output_footer' ) );
99
	}
100
101
	/**
102
	 * Modifies the name of the stylesheet to be enqueued when loading thickbox
103
	 *
104
	 * @param string $script
105
	 *
106
	 * @return string
107
	 */
108
	public function filter_lightbox_script( $script = 'thickbox' ) {
0 ignored issues
show
Unused Code introduced by
The parameter $script 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...
109
		return static::$script_slug;
110
	}
111
112
	/**
113
	 * Modifies the name of the stylesheet to be enqueued when loading thickbox
114
	 *
115
	 * @param string $style
116
	 *
117
	 * @return string
118
	 */
119
	public function filter_lightbox_style( $style = 'thickbox' ) {
0 ignored issues
show
Unused Code introduced by
The parameter $style 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...
120
		return static::$style_slug;
121
	}
122
123
	/**
124
	 * Get default settings for the script
125
	 *
126
	 * @return array
127
	 */
128
	protected function default_settings() {
129
		return array();
130
	}
131
132
	/**
133
	 * Get the settings for the JavaScript, with filter applied
134
	 *
135
	 * @internal
136
	 *
137
	 * @return mixed|void
138
	 */
139
	protected function get_settings() {
140
		$settings = static::default_settings();
141
142
		$provider = gravityview()->plugin->settings->get( 'lightbox' );
143
144
		return apply_filters( 'gravityview/lightbox/provider/' . $provider . '/settings', $settings );
145
	}
146
147
	/**
148
	 * Output raw HTML in the wp_footer()
149
	 *
150
	 * @internal
151
	 */
152
	public function output_footer() {}
153
154
	/**
155
	 * Enqueue scripts for the lightbox
156
	 *
157
	 * @internal
158
	 */
159
	public function enqueue_scripts() {}
160
161
	/**
162
	 * Enqueue styles for the lightbox
163
	 *
164
	 * @internal
165
	 */
166
	public function enqueue_styles() {}
167
168
	/**
169
	 * Modify the attributes allowed in an anchor tag generated by GravityView
170
	 *
171
	 * @internal
172
	 *
173
	 * @param array $atts Attributes allowed in an anchor <a> tag.
174
	 *
175
	 * @return array
176
	 */
177
	public function allowed_atts( $atts = array() ) {
178
		return $atts;
179
	}
180
181
	/**
182
	 * Modified File Upload field links to use lightbox
183
	 *
184
	 * @since 2.10.1 Added $insecure_file_path
185
	 * @internal
186
	 *
187
	 * @param array|string $link_atts Array or attributes string.
188
	 * @param array $field_compat Current GravityView field.
189
	 * @param \GV\Template_Context|null $context The context.
190
	 * @param array $additional_details Array of additional details about the file. {
191
	 * @type string $file_path URL to file.
192
	 * @type string $insecure_file_path URL to insecure file.
193
	 * }
194
	 *
195
	 * @return mixed
196
	 */
197
	public function fileupload_link_atts( $link_atts, $field_compat = array(), $context = null, $additional_details = null ) {
0 ignored issues
show
Unused Code introduced by
The parameter $field_compat 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...
198
		return $link_atts;
199
	}
200
201
}
202