Conditions | 21 |
Paths | 2690 |
Total Lines | 206 |
Code Lines | 66 |
Lines | 56 |
Ratio | 27.18 % |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
55 | static function get_files_array( $value, $gv_class ) { |
||
56 | |||
57 | $gravityview_view = GravityView_View::getInstance(); |
||
58 | |||
59 | extract( $gravityview_view->getCurrentField() ); |
||
60 | |||
61 | $output_arr = array(); |
||
62 | |||
63 | // Get an array of file paths for the field. |
||
64 | $file_paths = rgar( $field , 'multipleFiles' ) ? json_decode( $value ) : array( $value ); |
||
65 | |||
66 | // Process each file path |
||
67 | foreach( $file_paths as $file_path ) { |
||
68 | |||
69 | // If the site is HTTPS, use HTTPS |
||
70 | if(function_exists('set_url_scheme')) { $file_path = set_url_scheme($file_path); } |
||
71 | |||
72 | // This is from Gravity Forms's code |
||
73 | $file_path = esc_attr(str_replace(" ", "%20", $file_path)); |
||
74 | |||
75 | // If the field is set to link to the single entry, link to it. |
||
76 | $link = !empty( $field_settings['show_as_link'] ) ? GravityView_API::entry_link( $entry, $field ) : $file_path; |
||
77 | |||
78 | // Get file path information |
||
79 | $file_path_info = pathinfo($file_path); |
||
80 | |||
81 | $html_format = NULL; |
||
82 | |||
83 | $disable_lightbox = false; |
||
84 | |||
85 | $disable_wrapped_link = false; |
||
86 | |||
87 | // Is this an image? |
||
88 | $image = new GravityView_Image(array( |
||
89 | 'src' => $file_path, |
||
90 | 'class' => 'gv-image gv-field-id-'.$field_settings['id'], |
||
91 | 'alt' => $field_settings['label'], |
||
92 | 'width' => (gravityview_get_context() === 'single' ? NULL : 250) |
||
93 | )); |
||
94 | |||
95 | $content = $image->html(); |
||
96 | |||
97 | // The new default content is the image, if it exists. If not, use the file name as the content. |
||
98 | $content = !empty( $content ) ? $content : $file_path_info['basename']; |
||
99 | |||
100 | // If pathinfo() gave us the extension of the file, run the switch statement using that. |
||
101 | $extension = empty( $file_path_info['extension'] ) ? NULL : strtolower( $file_path_info['extension'] ); |
||
102 | |||
103 | |||
104 | switch( true ) { |
||
105 | |||
106 | // Audio file |
||
107 | View Code Duplication | case in_array( $extension, wp_get_audio_extensions() ): |
|
108 | |||
109 | $disable_lightbox = true; |
||
110 | |||
111 | if( shortcode_exists( 'audio' ) ) { |
||
112 | |||
113 | $disable_wrapped_link = true; |
||
114 | |||
115 | /** |
||
116 | * @filter `gravityview_audio_settings` Modify the settings passed to the `wp_video_shortcode()` function |
||
117 | * @since 1.2 |
||
118 | * @param array $audio_settings Array with `src` and `class` keys |
||
119 | */ |
||
120 | $audio_settings = apply_filters( 'gravityview_audio_settings', array( |
||
121 | 'src' => $file_path, |
||
122 | 'class' => 'wp-audio-shortcode gv-audio gv-field-id-'.$field_settings['id'] |
||
123 | )); |
||
124 | |||
125 | /** |
||
126 | * Generate the audio shortcode |
||
127 | * @see http://codex.wordpress.org/Audio_Shortcode |
||
128 | * @see https://developer.wordpress.org/reference/functions/wp_audio_shortcode/ |
||
129 | */ |
||
130 | $content = wp_audio_shortcode( $audio_settings ); |
||
131 | |||
132 | } |
||
133 | |||
134 | break; |
||
135 | |||
136 | // Video file |
||
137 | View Code Duplication | case in_array( $extension, wp_get_video_extensions() ): |
|
138 | |||
139 | $disable_lightbox = true; |
||
140 | |||
141 | if( shortcode_exists( 'video' ) ) { |
||
142 | |||
143 | $disable_wrapped_link = true; |
||
144 | |||
145 | /** |
||
146 | * @filter `gravityview_video_settings` Modify the settings passed to the `wp_video_shortcode()` function |
||
147 | * @since 1.2 |
||
148 | * @param array $video_settings Array with `src` and `class` keys |
||
149 | */ |
||
150 | $video_settings = apply_filters( 'gravityview_video_settings', array( |
||
151 | 'src' => $file_path, |
||
152 | 'class' => 'wp-video-shortcode gv-video gv-field-id-'.$field_settings['id'] |
||
153 | )); |
||
154 | |||
155 | /** |
||
156 | * Generate the video shortcode |
||
157 | * @see http://codex.wordpress.org/Video_Shortcode |
||
158 | * @see https://developer.wordpress.org/reference/functions/wp_video_shortcode/ |
||
159 | */ |
||
160 | $content = wp_video_shortcode( $video_settings ); |
||
161 | |||
162 | } |
||
163 | |||
164 | break; |
||
165 | |||
166 | |||
167 | case $extension === 'pdf': |
||
168 | |||
169 | // PDF needs to be displayed in an IFRAME |
||
170 | $link = add_query_arg( array( 'TB_iframe' => 'true' ), $link ); |
||
171 | |||
172 | break; |
||
173 | |||
174 | // if not image, do not set the lightbox (@since 1.5.3) |
||
175 | case !in_array( $extension, array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' ) ): |
||
176 | |||
177 | $disable_lightbox = true; |
||
178 | |||
179 | break; |
||
180 | |||
181 | } |
||
182 | |||
183 | // If using Link to File, override the content. |
||
184 | // (We do this here so that the $disable_lightbox can be set. Yes, there's a little more processing time, but oh well.) |
||
185 | if( !empty( $field_settings['link_to_file'] ) ) { |
||
186 | |||
187 | // Force the content to be the file name |
||
188 | $content = $file_path_info["basename"]; |
||
189 | |||
190 | // Restore the wrapped link |
||
191 | $disable_wrapped_link = false; |
||
192 | |||
193 | } |
||
194 | |||
195 | // Whether to use lightbox or not |
||
196 | if( $disable_lightbox || empty( $gravityview_view->atts['lightbox'] ) || !empty( $field_settings['show_as_link'] ) ) { |
||
197 | |||
198 | $link_atts = empty( $field_settings['show_as_link'] ) ? array( 'target' => '_blank' ) : array(); |
||
199 | |||
200 | } else { |
||
201 | |||
202 | $link_atts = array( |
||
203 | 'rel' => sprintf( "%s-%s", $gv_class, $entry['id'] ), |
||
204 | 'target' => '_blank', |
||
205 | 'class' => 'thickbox', |
||
206 | ); |
||
207 | |||
208 | } |
||
209 | |||
210 | /** |
||
211 | * @filter `gravityview/fields/fileupload/link_atts` Modify the link attributes for a file upload field |
||
212 | * @param array|string $link_atts Array or attributes string |
||
213 | * @param array $field Current GravityView field array |
||
214 | */ |
||
215 | $link_atts = apply_filters( 'gravityview/fields/fileupload/link_atts', $link_atts, $gravityview_view->getCurrentField() ); |
||
216 | |||
217 | /** |
||
218 | * @filter `gravityview/fields/fileupload/disable_link` Filter to alter the default behaviour of wrapping images (or image names) with a link to the content object |
||
219 | * @since 1.5.1 |
||
220 | * @param bool $disable_wrapped_link whether to wrap the content with a link to the content object. |
||
221 | * @param array $gravityview_view->field_data |
||
222 | * @see GravityView_API:field_value() for info about $gravityview_view->field_data |
||
223 | */ |
||
224 | $disable_wrapped_link = apply_filters( 'gravityview/fields/fileupload/disable_link', $disable_wrapped_link, $gravityview_view->getCurrentField() ); |
||
225 | |||
226 | // If the HTML output hasn't been overridden by the switch statement above, use the default format |
||
227 | if( !empty( $content ) && empty( $disable_wrapped_link ) ) { |
||
228 | |||
229 | /** |
||
230 | * Modify the link text (defaults to the file name) |
||
231 | * |
||
232 | * @since 1.7 |
||
233 | * |
||
234 | * @param string $content The existing anchor content. Could be `<img>` tag, audio/video embed or the file name |
||
235 | * @param array $field GravityView array of the current field being processed |
||
236 | */ |
||
237 | $content = apply_filters( 'gravityview/fields/fileupload/link_content', $content, $gravityview_view->getCurrentField() ); |
||
238 | |||
239 | $content = gravityview_get_link( $link, $content, $link_atts ); |
||
240 | } |
||
241 | |||
242 | $output_arr[] = array( |
||
243 | 'file_path' => $file_path, |
||
244 | 'content' => $content |
||
245 | ); |
||
246 | |||
247 | } // End foreach loop |
||
248 | |||
249 | /** |
||
250 | * @filter `gravityview/fields/fileupload/files_array` Modify the files array |
||
251 | * @since 1.7 |
||
252 | * @param array $output_arr Associative array of files \n |
||
253 | * @type string $file_path The path to the file as stored in Gravity Forms \n |
||
254 | * @type string $content The generated output for the file \n |
||
255 | * @param array $field GravityView array of the current field being processed |
||
256 | */ |
||
257 | $output_arr = apply_filters( 'gravityview/fields/fileupload/files_array', $output_arr, $gravityview_view->getCurrentField() ); |
||
258 | |||
259 | return $output_arr; |
||
260 | } |
||
261 | |||
265 |
Adding explicit visibility (
private
,protected
, orpublic
) is generally recommend to communicate to other developers how, and from where this method is intended to be used.