Conditions | 21 |
Paths | 2690 |
Total Lines | 206 |
Code Lines | 66 |
Lines | 0 |
Ratio | 0 % |
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 |
||
53 | static function get_files_array( $value, $gv_class ) { |
||
54 | |||
55 | $gravityview_view = GravityView_View::getInstance(); |
||
56 | |||
57 | extract( $gravityview_view->getCurrentField() ); |
||
58 | |||
59 | $output_arr = array(); |
||
60 | |||
61 | // Get an array of file paths for the field. |
||
62 | $file_paths = rgar( $field , 'multipleFiles' ) ? json_decode( $value ) : array( $value ); |
||
63 | |||
64 | // Process each file path |
||
65 | foreach( $file_paths as $file_path ) { |
||
66 | |||
67 | // If the site is HTTPS, use HTTPS |
||
68 | if(function_exists('set_url_scheme')) { $file_path = set_url_scheme($file_path); } |
||
69 | |||
70 | // This is from Gravity Forms's code |
||
71 | $file_path = esc_attr(str_replace(" ", "%20", $file_path)); |
||
72 | |||
73 | // If the field is set to link to the single entry, link to it. |
||
74 | $link = !empty( $field_settings['show_as_link'] ) ? GravityView_API::entry_link( $entry, $field ) : $file_path; |
||
75 | |||
76 | // Get file path information |
||
77 | $file_path_info = pathinfo($file_path); |
||
78 | |||
79 | $html_format = NULL; |
||
80 | |||
81 | $disable_lightbox = false; |
||
82 | |||
83 | $disable_wrapped_link = false; |
||
84 | |||
85 | // Is this an image? |
||
86 | $image = new GravityView_Image(array( |
||
87 | 'src' => $file_path, |
||
88 | 'class' => 'gv-image gv-field-id-'.$field_settings['id'], |
||
89 | 'alt' => $field_settings['label'], |
||
90 | 'width' => (gravityview_get_context() === 'single' ? NULL : 250) |
||
91 | )); |
||
92 | |||
93 | $content = $image->html(); |
||
94 | |||
95 | // The new default content is the image, if it exists. If not, use the file name as the content. |
||
96 | $content = !empty( $content ) ? $content : $file_path_info['basename']; |
||
97 | |||
98 | // If pathinfo() gave us the extension of the file, run the switch statement using that. |
||
99 | $extension = empty( $file_path_info['extension'] ) ? NULL : strtolower( $file_path_info['extension'] ); |
||
100 | |||
101 | |||
102 | switch( true ) { |
||
103 | |||
104 | // Audio file |
||
105 | case in_array( $extension, wp_get_audio_extensions() ): |
||
106 | |||
107 | $disable_lightbox = true; |
||
108 | |||
109 | if( shortcode_exists( 'audio' ) ) { |
||
110 | |||
111 | $disable_wrapped_link = true; |
||
112 | |||
113 | /** |
||
114 | * @filter `gravityview_audio_settings` Modify the settings passed to the `wp_video_shortcode()` function |
||
115 | * @since 1.2 |
||
116 | * @param array $audio_settings Array with `src` and `class` keys |
||
117 | */ |
||
118 | $audio_settings = apply_filters( 'gravityview_audio_settings', array( |
||
119 | 'src' => $file_path, |
||
120 | 'class' => 'wp-audio-shortcode gv-audio gv-field-id-'.$field_settings['id'] |
||
121 | )); |
||
122 | |||
123 | /** |
||
124 | * Generate the audio shortcode |
||
125 | * @see http://codex.wordpress.org/Audio_Shortcode |
||
126 | * @see https://developer.wordpress.org/reference/functions/wp_audio_shortcode/ |
||
127 | */ |
||
128 | $content = wp_audio_shortcode( $audio_settings ); |
||
129 | |||
130 | } |
||
131 | |||
132 | break; |
||
133 | |||
134 | // Video file |
||
135 | case in_array( $extension, wp_get_video_extensions() ): |
||
136 | |||
137 | $disable_lightbox = true; |
||
138 | |||
139 | if( shortcode_exists( 'video' ) ) { |
||
140 | |||
141 | $disable_wrapped_link = true; |
||
142 | |||
143 | /** |
||
144 | * @filter `gravityview_video_settings` Modify the settings passed to the `wp_video_shortcode()` function |
||
145 | * @since 1.2 |
||
146 | * @param array $video_settings Array with `src` and `class` keys |
||
147 | */ |
||
148 | $video_settings = apply_filters( 'gravityview_video_settings', array( |
||
149 | 'src' => $file_path, |
||
150 | 'class' => 'wp-video-shortcode gv-video gv-field-id-'.$field_settings['id'] |
||
151 | )); |
||
152 | |||
153 | /** |
||
154 | * Generate the video shortcode |
||
155 | * @see http://codex.wordpress.org/Video_Shortcode |
||
156 | * @see https://developer.wordpress.org/reference/functions/wp_video_shortcode/ |
||
157 | */ |
||
158 | $content = wp_video_shortcode( $video_settings ); |
||
159 | |||
160 | } |
||
161 | |||
162 | break; |
||
163 | |||
164 | |||
165 | case $extension === 'pdf': |
||
166 | |||
167 | // PDF needs to be displayed in an IFRAME |
||
168 | $link = add_query_arg( array( 'TB_iframe' => 'true' ), $link ); |
||
169 | |||
170 | break; |
||
171 | |||
172 | // if not image, do not set the lightbox (@since 1.5.3) |
||
173 | case !in_array( $extension, array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' ) ): |
||
174 | |||
175 | $disable_lightbox = true; |
||
176 | |||
177 | break; |
||
178 | |||
179 | } |
||
180 | |||
181 | // If using Link to File, override the content. |
||
182 | // (We do this here so that the $disable_lightbox can be set. Yes, there's a little more processing time, but oh well.) |
||
183 | if( !empty( $field_settings['link_to_file'] ) ) { |
||
184 | |||
185 | // Force the content to be the file name |
||
186 | $content = $file_path_info["basename"]; |
||
187 | |||
188 | // Restore the wrapped link |
||
189 | $disable_wrapped_link = false; |
||
190 | |||
191 | } |
||
192 | |||
193 | // Whether to use lightbox or not |
||
194 | if( $disable_lightbox || empty( $gravityview_view->atts['lightbox'] ) || !empty( $field_settings['show_as_link'] ) ) { |
||
195 | |||
196 | $link_atts = empty( $field_settings['show_as_link'] ) ? array( 'target' => '_blank' ) : array(); |
||
197 | |||
198 | } else { |
||
199 | |||
200 | $link_atts = array( |
||
201 | 'rel' => sprintf( "%s-%s", $gv_class, $entry['id'] ), |
||
202 | 'target' => '_blank', |
||
203 | 'class' => 'thickbox', |
||
204 | ); |
||
205 | |||
206 | } |
||
207 | |||
208 | /** |
||
209 | * @filter `gravityview/fields/fileupload/link_atts` Modify the link attributes for a file upload field |
||
210 | * @param array|string $link_atts Array or attributes string |
||
211 | * @param array $field Current GravityView field array |
||
212 | */ |
||
213 | $link_atts = apply_filters( 'gravityview/fields/fileupload/link_atts', $link_atts, $gravityview_view->getCurrentField() ); |
||
214 | |||
215 | /** |
||
216 | * @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 |
||
217 | * @since 1.5.1 |
||
218 | * @param bool $disable_wrapped_link whether to wrap the content with a link to the content object. |
||
219 | * @param array $gravityview_view->field_data |
||
220 | * @see GravityView_API:field_value() for info about $gravityview_view->field_data |
||
221 | */ |
||
222 | $disable_wrapped_link = apply_filters( 'gravityview/fields/fileupload/disable_link', $disable_wrapped_link, $gravityview_view->getCurrentField() ); |
||
223 | |||
224 | // If the HTML output hasn't been overridden by the switch statement above, use the default format |
||
225 | if( !empty( $content ) && empty( $disable_wrapped_link ) ) { |
||
226 | |||
227 | /** |
||
228 | * Modify the link text (defaults to the file name) |
||
229 | * |
||
230 | * @since 1.7 |
||
231 | * |
||
232 | * @param string $content The existing anchor content. Could be `<img>` tag, audio/video embed or the file name |
||
233 | * @param array $field GravityView array of the current field being processed |
||
234 | */ |
||
235 | $content = apply_filters( 'gravityview/fields/fileupload/link_content', $content, $gravityview_view->getCurrentField() ); |
||
236 | |||
237 | $content = gravityview_get_link( $link, $content, $link_atts ); |
||
238 | } |
||
239 | |||
240 | $output_arr[] = array( |
||
241 | 'file_path' => $file_path, |
||
242 | 'content' => $content |
||
243 | ); |
||
244 | |||
245 | } // End foreach loop |
||
246 | |||
247 | /** |
||
248 | * @filter `gravityview/fields/fileupload/files_array` Modify the files array |
||
249 | * @since 1.7 |
||
250 | * @param array $output_arr Associative array of files \n |
||
251 | * @type string $file_path The path to the file as stored in Gravity Forms \n |
||
252 | * @type string $content The generated output for the file \n |
||
253 | * @param array $field GravityView array of the current field being processed |
||
254 | */ |
||
255 | $output_arr = apply_filters( 'gravityview/fields/fileupload/files_array', $output_arr, $gravityview_view->getCurrentField() ); |
||
256 | |||
257 | return $output_arr; |
||
258 | } |
||
259 | |||
263 |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.