| Conditions | 17 |
| Paths | 42 |
| Total Lines | 78 |
| Lines | 0 |
| Ratio | 0 % |
| 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 // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName |
||
| 66 | private function get_plugins( $plugin_folder = '' ) { |
||
| 67 | $cache_plugins = wp_cache_get( 'monorepo_plugins', 'monorepo_plugins' ); // Updated cache values to not conflict. |
||
| 68 | if ( ! $cache_plugins ) { |
||
| 69 | $cache_plugins = array(); |
||
| 70 | } |
||
| 71 | |||
| 72 | if ( isset( $cache_plugins[ $plugin_folder ] ) ) { |
||
| 73 | return $cache_plugins[ $plugin_folder ]; |
||
| 74 | } |
||
| 75 | |||
| 76 | $wp_plugins = array(); |
||
| 77 | $plugin_root = WP_PLUGIN_DIR; |
||
| 78 | if ( ! empty( $plugin_folder ) ) { |
||
| 79 | $plugin_root = $plugin_folder; // This is what we changed, but it's dangerous. Thus a private function. |
||
| 80 | } |
||
| 81 | |||
| 82 | // Files in wp-content/plugins directory. |
||
| 83 | $plugins_dir = @opendir( $plugin_root ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged |
||
| 84 | $plugin_files = array(); |
||
| 85 | |||
| 86 | if ( $plugins_dir ) { |
||
| 87 | while ( ( $file = readdir( $plugins_dir ) ) !== false ) { // phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition |
||
| 88 | if ( '.' === substr( $file, 0, 1 ) ) { |
||
| 89 | continue; |
||
| 90 | } |
||
| 91 | |||
| 92 | if ( is_dir( $plugin_root . '/' . $file ) ) { |
||
| 93 | $plugins_subdir = @opendir( $plugin_root . '/' . $file ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged |
||
| 94 | |||
| 95 | if ( $plugins_subdir ) { |
||
| 96 | while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) { // phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition |
||
| 97 | if ( '.' === substr( $subfile, 0, 1 ) ) { |
||
| 98 | continue; |
||
| 99 | } |
||
| 100 | |||
| 101 | if ( '.php' === substr( $subfile, -4 ) ) { |
||
| 102 | $plugin_files[] = "$file/$subfile"; |
||
| 103 | } |
||
| 104 | } |
||
| 105 | |||
| 106 | closedir( $plugins_subdir ); |
||
| 107 | } |
||
| 108 | } else { |
||
| 109 | if ( '.php' === substr( $file, -4 ) ) { |
||
| 110 | $plugin_files[] = $file; |
||
| 111 | } |
||
| 112 | } |
||
| 113 | } |
||
| 114 | |||
| 115 | closedir( $plugins_dir ); |
||
| 116 | } |
||
| 117 | |||
| 118 | if ( empty( $plugin_files ) ) { |
||
| 119 | return $wp_plugins; |
||
| 120 | } |
||
| 121 | |||
| 122 | foreach ( $plugin_files as $plugin_file ) { |
||
| 123 | if ( ! is_readable( "$plugin_root/$plugin_file" ) ) { |
||
| 124 | continue; |
||
| 125 | } |
||
| 126 | |||
| 127 | // Do not apply markup/translate as it will be cached. |
||
| 128 | $plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); |
||
| 129 | |||
| 130 | if ( empty( $plugin_data['Name'] ) ) { |
||
| 131 | continue; |
||
| 132 | } |
||
| 133 | |||
| 134 | $wp_plugins[ plugin_basename( $plugin_file ) ] = $plugin_data; |
||
| 135 | } |
||
| 136 | |||
| 137 | uasort( $wp_plugins, '_sort_uname_callback' ); |
||
| 138 | |||
| 139 | $cache_plugins[ $plugin_folder ] = $wp_plugins; |
||
| 140 | wp_cache_set( 'monorepo_plugins', $cache_plugins, 'monorepo_plugins' ); // Updated cache values to not conflict. |
||
| 141 | |||
| 142 | return $wp_plugins; |
||
| 143 | } |
||
| 144 | |||
| 154 |