WordPress.org

Make WordPress Core

Ticket #6332: 6332.2.diff

File 6332.2.diff, 5.9 KB (added by DD32, 10 years ago)

updates to utilise internal functions

  • wp-admin/plugin-editor.php

     
    1414$plugins = get_plugins();
    1515$plugin_files = array_keys($plugins);
    1616
    17 if (empty($file)) {
     17if (empty($file))
    1818        $file = $plugin_files[0];
    19 }
    2019
    2120$file = validate_file_to_edit($file, $plugin_files);
    2221$real_file = get_real_file_to_edit( PLUGINDIR . "/$file");
     
    3130                wp_die('<p>'.__('You do not have sufficient permissions to edit templates for this blog.').'</p>');
    3231
    3332        $newcontent = stripslashes($_POST['newcontent']);
    34         if (is_writeable($real_file)) {
     33        if ( is_writeable($real_file) ) {
    3534                $f = fopen($real_file, 'w+');
    3635                fwrite($f, $newcontent);
    3736                fclose($f);
    3837
    3938                // Deactivate so we can test it.
    40                 $current = get_option('active_plugins');
    41                 if ( in_array($file, $current) || isset($_POST['phperror']) ) {
    42                         if ( in_array($file, $current) ) {
    43                                 if ( ( $key = array_search( $plugin, $current) ) !== false )
    44                                         array_splice($current, $key, 1 ); // Fixed Array-fu!
    45                                 update_option('active_plugins', $current);
    46                         }
     39                if ( is_plugin_active($file) || isset($_POST['phperror']) ) {
     40                        if ( is_plugin_active($file) )
     41                                deactivate_plugins($file, true);
    4742                        wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1"));
    48                         exit();
     43                        exit;
    4944                }
    5045                wp_redirect("plugin-editor.php?file=$file&a=te");
    5146        } else {
    5247                wp_redirect("plugin-editor.php?file=$file");
    5348        }
     49        exit;
    5450
    55         exit();
    56 
    5751break;
    5852
    5953default:
     
    6155        if ( !current_user_can('edit_plugins') )
    6256                wp_die('<p>'.__('You do not have sufficient permissions to edit plugins for this blog.').'</p>');
    6357
    64         if ( $_GET['liveupdate'] ) {
     58        if ( isset($_GET['liveupdate']) ) {
    6559                check_admin_referer('edit-plugin-test_' . $file);
    66                 $current = get_option('active_plugins');
    67                 $plugin = $file;
    68                 if ( validate_file($plugin) )
    69                         wp_die(__('Invalid plugin.'));
    70                 if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) )
    71                         wp_die(__('Plugin file does not exist.'));
    72                 if (!in_array($plugin, $current)) {
    73                         wp_redirect("plugin-editor.php?file=$file&phperror=1"); // we'll override this later if the plugin can be included without fatal error
    74                         @include(ABSPATH . PLUGINDIR . '/' . $plugin);
    75                         $current[] = $plugin;
    76                         sort($current);
    77                         update_option('active_plugins', $current);
    78                 }
     60
     61                $error = validate_plugin($file);
     62                if( is_wp_error($error) )
     63                        wp_die( $error );
     64
     65                if ( ! is_plugin_active($file) )
     66                        activate_plugin($file, "plugin-editor.php?file=$file&phperror=1");// we'll override this later if the plugin can be included without fatal error
     67
    7968                wp_redirect("plugin-editor.php?file=$file&a=te");
     69                exit;
    8070        }
    8171
    8272        require_once('admin-header.php');
    8373
    8474        update_recently_edited(PLUGINDIR . "/$file");
    8575
    86         if (!is_file($real_file))
     76        if ( ! is_file($real_file) )
    8777                $error = 1;
    8878
    89         if (!$error) {
    90                 $f = fopen($real_file, 'r');
    91                 $content = fread($f, filesize($real_file));
    92                 $content = htmlspecialchars($content);
    93         }
     79        if ( ! $error )
     80                $content = htmlspecialchars(file_get_contents($real_file));
    9481
    9582        ?>
    9683<?php if (isset($_GET['a'])) : ?>
    9784 <div id="message" class="updated fade"><p><?php _e('File edited successfully.') ?></p></div>
    9885<?php elseif (isset($_GET['phperror'])) : ?>
    99  <div id="message" class="updated fade"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p></div>
     86 <div id="message" class="updated fade"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p>
     87        <?php
     88                if ( wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $file) ) { ?>
     89        <iframe style="border:0" width="100%" height="70px" src="<?php bloginfo('wpurl'); ?>/wp-admin/plugins.php?action=error_scrape&amp;plugin=<?php echo attribute_escape($file); ?>&amp;_wpnonce=<?php echo attribute_escape($_GET['_error_nonce']); ?>"></iframe>
     90        <?php } ?>
     91</div>
    10092<?php endif; ?>
    10193 <div class="wrap">
    10294<div class="bordertitle">
     
    10597<div class="tablenav">
    10698<div class="alignleft">
    10799<big><strong><?php
    108         if ( in_array($file, (array) get_option('active_plugins')) ) {
    109                 if (is_writeable($real_file)) {
     100        if ( is_plugin_active($file) ) {
     101                if ( is_writeable($real_file) )
    110102                        echo sprintf(__('Editing <strong>%s</strong> (active)'), $file);
    111                 } else {
    112                 echo sprintf(__('Browsing <strong>%s</strong> (active)'), $file);
    113                 }
     103                else
     104                        echo sprintf(__('Browsing <strong>%s</strong> (active)'), $file);
    114105        } else {
    115                 if (is_writeable($real_file)) {
     106                if ( is_writeable($real_file) )
    116107                        echo sprintf(__('Editing <strong>%s</strong> (inactive)'), $file);
    117                 } else {
    118                 echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file);
    119                 }
     108                else
     109                        echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file);
    120110        }
    121111        ?></strong></big>
    122112</div>
     
    124114</div>
    125115<br class="clear" />
    126116        <div id="templateside">
    127         <h3 id="bordertitle"><?php _e("Plugin Files"); ?></h3>
     117        <h3 id="bordertitle"><?php _e('Plugin Files'); ?></h3>
    128118
    129119        <h4><?php _e('Plugins'); ?></h4>
    130120        <ul>
    131121<?php foreach($plugin_files as $plugin_file) : ?>
    132                 <li><a href="plugin-editor.php?file=<?php echo "$plugin_file"; ?>"><?php echo $plugins[$plugin_file]['Name']; ?></a></li>
     122                <li><a href="plugin-editor.php?file=<?php echo $plugin_file; ?>"><?php echo $plugins[$plugin_file]['Name']; ?></a></li>
    133123<?php endforeach; ?>
    134124        </ul>
    135125        </div>
    136 <?php   if (!$error) { ?>
     126<?php   if ( ! $error ) { ?>
    137127        <form name="template" id="template" action="plugin-editor.php" method="post">
    138128        <?php wp_nonce_field('edit-plugin_' . $file) ?>
    139129                <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
     
    164154<div class="clear"> &nbsp; </div>
    165155</div>
    166156<?php
    167 break;
     157        break;
    168158}
    169159include("admin-footer.php") ?>
     160 No newline at end of file