Conditions | 22 |
Paths | 2882 |
Total Lines | 107 |
Lines | 9 |
Ratio | 8.41 % |
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 |
||
28 | function slideshare_shortcode( $atts ) { |
||
29 | global $content_width; |
||
30 | |||
31 | $params = shortcode_new_to_old_params( $atts ); |
||
32 | parse_str( $params, $arguments ); |
||
33 | |||
34 | if ( empty( $arguments ) ) { |
||
35 | return '<!-- SlideShare error: no arguments -->'; |
||
36 | } |
||
37 | |||
38 | $attr = shortcode_atts( |
||
39 | array( |
||
40 | 'id' => '', |
||
41 | 'w' => '', |
||
42 | 'h' => '', |
||
43 | 'fb' => '', |
||
44 | 'mw' => '', |
||
45 | 'mh' => '', |
||
46 | 'sc' => '', |
||
47 | 'pro' => '', |
||
48 | 'style' => '', |
||
49 | ), |
||
50 | $arguments |
||
51 | ); |
||
52 | |||
53 | // check that the Slideshare ID contains letters, numbers and query strings. |
||
54 | $pattern = '/[^-_a-zA-Z0-9?=&]/'; |
||
55 | if ( empty( $attr['id'] ) || preg_match( $pattern, $attr['id'] ) ) { |
||
56 | return '<!-- SlideShare error: id is missing or has illegal characters -->'; |
||
57 | } |
||
58 | |||
59 | // check the width/height. |
||
60 | $w = (int) $attr['w']; |
||
61 | |||
62 | // If no width was specified (or uses the wrong format), and if we have a $content_width, use that. |
||
63 | if ( empty( $w ) && ! empty( $content_width ) ) { |
||
64 | $w = (int) $content_width; |
||
65 | } elseif ( $w < 300 || $w > 1600 ) { // If width was specified, but is too small/large, set default value. |
||
66 | $w = 425; |
||
67 | } else { |
||
68 | $w = (int) $w; |
||
69 | } |
||
70 | |||
71 | $h = ceil( $w * 348 / 425 ); // Note: user-supplied height is ignored. |
||
72 | |||
73 | if ( ! empty( $attr['pro'] ) ) { |
||
74 | $source = 'https://www.slideshare.net/slidesharepro/' . $attr['id']; |
||
75 | } else { |
||
76 | $source = 'https://www.slideshare.net/slideshow/embed_code/' . $attr['id']; |
||
77 | } |
||
78 | |||
79 | if ( isset( $attr['rel'] ) ) { |
||
80 | $source = add_query_arg( 'rel', (int) $attr['rel'], $source ); |
||
81 | } |
||
82 | |||
83 | if ( ! empty( $attr['startSlide'] ) ) { |
||
84 | $source = add_query_arg( 'startSlide', (int) $attr['startSlide'], $source ); |
||
85 | } |
||
86 | |||
87 | $player = sprintf( "<iframe src='%s' width='%d' height='%d'", esc_url( $source ), $w, $h ); |
||
88 | |||
89 | // check the frameborder. |
||
90 | View Code Duplication | if ( ! empty( $attr['fb'] ) || '0' === $attr['fb'] ) { |
|
91 | $player .= " frameborder='" . (int) $attr['fb'] . "'"; |
||
92 | } |
||
93 | |||
94 | $is_amp = ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ); |
||
95 | |||
96 | if ( ! $is_amp ) { |
||
97 | // check the margin width; if not empty, cast as int. |
||
98 | View Code Duplication | if ( ( ! empty( $attr['mw'] ) || '0' === $attr['mw'] ) ) { |
|
99 | $player .= " marginwidth='" . (int) $attr['mw'] . "'"; |
||
100 | } |
||
101 | |||
102 | // check the margin height, if not empty, cast as int. |
||
103 | View Code Duplication | if ( ( ! empty( $attr['mh'] ) || '0' === $attr['mh'] ) ) { |
|
104 | $player .= " marginheight='" . (int) $attr['mh'] . "'"; |
||
105 | } |
||
106 | } |
||
107 | |||
108 | if ( ! empty( $attr['style'] ) ) { |
||
109 | $player .= " style='" . esc_attr( $attr['style'] ) . "'"; |
||
110 | } |
||
111 | |||
112 | // check the scrollbar; cast as a lowercase string for comparison. |
||
113 | if ( ! empty( $attr['sc'] ) ) { |
||
114 | $sc = strtolower( $attr['sc'] ); |
||
115 | |||
116 | if ( in_array( $sc, array( 'yes', 'no' ), true ) ) { |
||
117 | $player .= " scrolling='" . $sc . "'"; |
||
118 | } |
||
119 | } |
||
120 | |||
121 | $player .= ' sandbox="allow-popups allow-scripts allow-same-origin allow-presentation" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>'; |
||
122 | |||
123 | /** |
||
124 | * Filter the returned SlideShare shortcode. |
||
125 | * |
||
126 | * @module shortcodes |
||
127 | * |
||
128 | * @since 4.7.0 |
||
129 | * |
||
130 | * @param string $player The iframe to return. |
||
131 | * @param array $atts The attributes specified in the shortcode. |
||
132 | */ |
||
133 | return apply_filters( 'jetpack_slideshare_shortcode', $player, $atts ); |
||
|
|||
134 | } |
||
135 | add_shortcode( 'slideshare', 'slideshare_shortcode' ); |
||
136 |
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.
In this case you can add the
@ignore
PhpDoc annotation to the duplicate definition and it will be ignored.