| 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 |
||
| 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 | View Code Duplication | 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 | View Code Duplication | 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 |
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.