Conditions | 12 |
Paths | 25 |
Total Lines | 99 |
Code Lines | 45 |
Lines | 6 |
Ratio | 6.06 % |
Changes | 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 |
||
21 | View Code Duplication | function videopress_shortcode_callback( $attr ) { |
|
22 | global $content_width; |
||
23 | |||
24 | /** |
||
25 | * We only accept GUIDs as a first unnamed argument. |
||
26 | */ |
||
27 | $guid = $attr[0]; |
||
28 | |||
29 | /** |
||
30 | * Make sure the GUID passed in matches how actual GUIDs are formatted. |
||
31 | */ |
||
32 | if ( ! videopress_is_valid_guid( $guid ) ) { |
||
33 | return ''; |
||
34 | } |
||
35 | |||
36 | /** |
||
37 | * Set the defaults |
||
38 | */ |
||
39 | $defaults = array( |
||
40 | 'w' => 0, // Width of the video player, in pixels |
||
41 | 'at' => 0, // How many seconds in to initially seek to |
||
42 | 'hd' => false, // Whether to display a high definition version |
||
43 | 'loop' => false, // Whether to loop the video repeatedly |
||
44 | 'freedom' => false, // Whether to use only free/libre codecs |
||
45 | 'autoplay' => false, // Whether to autoplay the video on load |
||
46 | 'permalink' => true, // Whether to display the permalink to the video |
||
47 | 'flashonly' => false, // Whether to support the Flash player exclusively |
||
48 | 'defaultlangcode' => false, // Default language code |
||
49 | ); |
||
50 | |||
51 | $attr = shortcode_atts( $defaults, $attr, 'videopress' ); |
||
52 | |||
53 | /** |
||
54 | * Cast the attributes, post-input. |
||
55 | */ |
||
56 | $attr['width'] = absint( $attr['w'] ); |
||
57 | $attr['hd'] = (bool) $attr['hd']; |
||
58 | $attr['freedom'] = (bool) $attr['freedom']; |
||
59 | |||
60 | /** |
||
61 | * If the provided width is less than the minimum allowed |
||
62 | * width, or greater than `$content_width` ignore. |
||
63 | */ |
||
64 | if ( $attr['width'] < VIDEOPRESS_MIN_WIDTH ) { |
||
65 | $attr['width'] = 0; |
||
66 | } elseif ( isset( $content_width ) && $content_width > VIDEOPRESS_MIN_WIDTH && $attr['width'] > $content_width ) { |
||
67 | $attr['width'] = 0; |
||
68 | } |
||
69 | |||
70 | /** |
||
71 | * If there was an invalid or unspecified width, set the width equal to the theme's `$content_width`. |
||
72 | */ |
||
73 | if ( 0 === $attr['width'] && isset( $content_width ) && $content_width >= VIDEOPRESS_MIN_WIDTH ) { |
||
74 | $attr['width'] = $content_width; |
||
75 | } |
||
76 | |||
77 | /** |
||
78 | * If the width isn't an even number, reduce it by one (making it even). |
||
79 | */ |
||
80 | if ( 1 === ( $attr['width'] % 2 ) ) { |
||
81 | $attr['width'] --; |
||
82 | } |
||
83 | |||
84 | /** |
||
85 | * Filter the default VideoPress shortcode options. |
||
86 | * |
||
87 | * @module videopress |
||
88 | * |
||
89 | * @since 2.5.0 |
||
90 | * |
||
91 | * @param array $args Array of VideoPress shortcode options. |
||
92 | */ |
||
93 | $options = apply_filters( 'videopress_shortcode_options', array( |
||
94 | 'at' => (int) $attr['at'], |
||
95 | 'hd' => $attr['hd'], |
||
96 | 'loop' => $attr['autoplay'] || $attr['loop'], |
||
97 | 'freedom' => $attr['freedom'], |
||
98 | 'autoplay' => $attr['autoplay'], |
||
99 | 'permalink' => $attr['permalink'], |
||
100 | 'force_flash' => (bool) $attr['flashonly'], |
||
101 | 'defaultlangcode' => $attr['defaultlangcode'], |
||
102 | 'forcestatic' => false, // This used to be a displayed option, but now is only |
||
103 | // accessible via the `videopress_shortcode_options` filter. |
||
104 | ) ); |
||
105 | |||
106 | // Register VideoPress scripts |
||
107 | wp_register_script( 'videopress', 'https://v0.wordpress.com/js/videopress.js', array( 'jquery', 'swfobject' ), '1.09' ); |
||
108 | |||
109 | require_once( dirname( __FILE__ ) . '/class.videopress-video.php' ); |
||
110 | require_once( dirname( __FILE__ ) . '/class.videopress-player.php' ); |
||
111 | |||
112 | $player = new VideoPress_Player( $guid, $attr['width'], $options ); |
||
113 | |||
114 | if ( is_feed() ) { |
||
115 | return $player->asXML(); |
||
116 | } else { |
||
117 | return $player->asHTML(); |
||
118 | } |
||
119 | } |
||
120 | add_shortcode( 'videopress', 'videopress_shortcode_callback' ); |
||
191 |
This check looks for functions that have already been defined in other files.
Some Codebases, like WordPress, make a practice of defining functions multiple times. This may lead to problems with the detection of function parameters and types. If you really need to do this, you can mark the duplicate definition with the
@ignore
annotation.See also the PhpDoc documentation for @ignore.