Ticket #3047: 3047.diff

File 3047.diff, 5.1 KB (added by westi, 6 years ago)

Alternative implementation of get_plugin_info

  • wp-includes/plugin.php

     
    165165        add_action('deactivate_' . $file, $function); 
    166166} 
    167167 
     168 
     169function get_plugin_data($plugin_file) { 
     170        $plugin_data = implode('', file($plugin_file)); 
     171        preg_match("|Plugin Name:(.*)|i", $plugin_data, $plugin_name); 
     172        preg_match("|Plugin URI:(.*)|i", $plugin_data, $plugin_uri); 
     173        preg_match("|Description:(.*)|i", $plugin_data, $description); 
     174        preg_match("|Author:(.*)|i", $plugin_data, $author_name); 
     175        preg_match("|Author URI:(.*)|i", $plugin_data, $author_uri); 
     176        if (preg_match("|Version:(.*)|i", $plugin_data, $version)) 
     177                $version = trim($version[1]); 
     178        else 
     179                $version = ''; 
     180 
     181        $description = wptexturize(trim($description[1])); 
     182 
     183        $name = $plugin_name[1]; 
     184        $name = trim($name); 
     185        $plugin = $name; 
     186        if ('' != $plugin_uri[1] && '' != $name) { 
     187                $plugin = '<a href="' . trim($plugin_uri[1]) . '" title="'.__('Visit plugin homepage').'">'.$plugin.'</a>'; 
     188        } 
     189 
     190        if ('' == $author_uri[1]) { 
     191                $author = trim($author_name[1]); 
     192        } else { 
     193                $author = '<a href="' . trim($author_uri[1]) . '" title="'.__('Visit author homepage').'">' . trim($author_name[1]) . '</a>'; 
     194        } 
     195         
     196        $dir_name = dirname($plugin_file); 
     197        if ('.' == $dir_name) { 
     198                $dir_name = ''; 
     199        } 
     200 
     201        $path = ABSPATH . 'wp-content/plugins' . $dir_name; 
     202        $url = get_bloginfo('wpurl'). 'wp-conten/plugins' . $dir_name; 
     203 
     204        return array ('Name' => $name, 'Title' => $plugin, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'PluginURI' => trim($plugin_uri[1]), 'AuthorURI' => trim($author_uri[1]), 'URL' => $url, 'Path' => $path); 
     205} 
     206 
     207function load_activeplugin_info($plugin_file) 
     208{ 
     209        global $wp_active_plugins; 
     210        if (!isset($wp_active_plugins)) { 
     211                $wp_active_plugins = array(); 
     212        } 
     213         
     214        $plugin_data = get_plugin_data($plugin_file); 
     215 
     216        if (!empty($plugin_data['Name'])) { 
     217                $wp_active_plugins[plugin_basename($plugin_file)] = $plugin_data; 
     218        } 
     219} 
     220 
     221function get_plugininfo($plugin_filename,$info) { 
     222        global $wp_active_plugins; 
     223 
     224        if (!isset($wp_active_plugins[$plugin_filename])) { 
     225                return ''; 
     226        } 
     227         
     228        switch($info) { 
     229                case 'url': 
     230                        return $wp_active_plugins[$plugin_filename]['URL']; 
     231                        break; 
     232                case 'version': 
     233                        return $wp_active_plugins[$plugin_filename]['Version']; 
     234                        break; 
     235                case 'path': 
     236                        return $wp_active_plugins[$plugin_filename]['Path']; 
     237                        break; 
     238                case 'name': 
     239                        return $wp_active_plugins[$plugin_filename]['Name']; 
     240                        break; 
     241                case 'title': 
     242                        return $wp_active_plugins[$plugin_filename]['Title']; 
     243                        break; 
     244                case 'description': 
     245                        return $wp_active_plugins[$plugin_filename]['Description']; 
     246                        break; 
     247                case 'author': 
     248                        return $wp_active_plugins[$plugin_filename]['Author']; 
     249                        break; 
     250                case 'authoruri': 
     251                        return $wp_active_plugins[$plugin_filename]['AuthorURI']; 
     252                        break; 
     253                case 'pluginuri': 
     254                        return $wp_active_plugins[$plugin_filename]['PluginURI']; 
     255                        break; 
     256        } 
     257} 
    168258?> 
  • wp-settings.php

     
    168168        $current_plugins = get_settings('active_plugins'); 
    169169        if ( is_array($current_plugins) ) { 
    170170                foreach ($current_plugins as $plugin) { 
    171                         if ('' != $plugin && file_exists(ABSPATH . 'wp-content/plugins/' . $plugin)) 
     171                        if ('' != $plugin && file_exists(ABSPATH . 'wp-content/plugins/' . $plugin)) { 
     172                                load_activeplugin_info(ABSPATH . 'wp-content/plugins/' .$plugin); 
    172173                                include_once(ABSPATH . 'wp-content/plugins/' . $plugin); 
     174                        } 
    173175                } 
    174176        } 
    175177} 
  • wp-admin/admin-functions.php

     
    16581658        update_option('recently_edited', $oldfiles); 
    16591659} 
    16601660 
    1661 function get_plugin_data($plugin_file) { 
    1662         $plugin_data = implode('', file($plugin_file)); 
    1663         preg_match("|Plugin Name:(.*)|i", $plugin_data, $plugin_name); 
    1664         preg_match("|Plugin URI:(.*)|i", $plugin_data, $plugin_uri); 
    1665         preg_match("|Description:(.*)|i", $plugin_data, $description); 
    1666         preg_match("|Author:(.*)|i", $plugin_data, $author_name); 
    1667         preg_match("|Author URI:(.*)|i", $plugin_data, $author_uri); 
    1668         if (preg_match("|Version:(.*)|i", $plugin_data, $version)) 
    1669                 $version = trim($version[1]); 
    1670         else 
    1671                 $version = ''; 
    1672  
    1673         $description = wptexturize(trim($description[1])); 
    1674  
    1675         $name = $plugin_name[1]; 
    1676         $name = trim($name); 
    1677         $plugin = $name; 
    1678         if ('' != $plugin_uri[1] && '' != $name) { 
    1679                 $plugin = '<a href="' . trim($plugin_uri[1]) . '" title="'.__('Visit plugin homepage').'">'.$plugin.'</a>'; 
    1680         } 
    1681  
    1682         if ('' == $author_uri[1]) { 
    1683                 $author = trim($author_name[1]); 
    1684         } else { 
    1685                 $author = '<a href="' . trim($author_uri[1]) . '" title="'.__('Visit author homepage').'">' . trim($author_name[1]) . '</a>'; 
    1686         } 
    1687  
    1688         return array ('Name' => $name, 'Title' => $plugin, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]); 
    1689 } 
    1690  
    16911661function get_plugins() { 
    16921662        global $wp_plugins; 
    16931663