2004-11-17 03:15:44 +00:00
<? php
require_once ( 'admin.php' );
2006-11-18 07:31:29 +00:00
$title = __ ( "Edit Plugins" );
$parent_file = 'plugins.php' ;
2006-07-03 19:03:37 +00:00
wp_reset_vars ( array ( 'action' , 'redirect' , 'profile' , 'error' , 'warning' , 'a' , 'file' ));
2004-11-17 03:15:44 +00:00
2004-11-28 00:33:04 +00:00
$plugins = get_plugins ();
$plugin_files = array_keys ( $plugins );
2004-11-17 03:15:44 +00:00
if ( empty ( $file )) {
$file = $plugin_files [ 0 ];
}
$file = validate_file_to_edit ( $file , $plugin_files );
2006-09-21 20:46:39 +00:00
$real_file = get_real_file_to_edit ( PLUGINDIR . "/ $file " );
2004-11-17 03:15:44 +00:00
switch ( $action ) {
case 'update' :
2006-05-26 23:08:05 +00:00
check_admin_referer ( 'edit-plugin_' . $file );
2006-03-30 23:12:54 +00:00
2005-07-15 02:16:45 +00:00
if ( ! current_user_can ( 'edit_plugins' ) )
2006-07-05 22:00:03 +00:00
wp_die ( '<p>' . __ ( 'You do not have sufficient permissions to edit templates for this blog.' ) . '</p>' );
2004-11-17 03:15:44 +00:00
$newcontent = stripslashes ( $_POST [ 'newcontent' ]);
if ( is_writeable ( $real_file )) {
$f = fopen ( $real_file , 'w+' );
fwrite ( $f , $newcontent );
fclose ( $f );
2007-02-14 06:15:05 +00:00
// Deactivate so we can test it.
$current = get_option ( 'active_plugins' );
if ( in_array ( $file , $current ) || isset ( $_POST [ 'phperror' ]) ) {
if ( in_array ( $file , $current ) ) {
array_splice ( $current , array_search ( $file , $current ), 1 ); // Array-fu!
update_option ( 'active_plugins' , $current );
}
wp_redirect ( add_query_arg ( '_wpnonce' , wp_create_nonce ( 'edit-plugin-test_' . $file ), "plugin-editor.php?file= $file &liveupdate=1" ));
exit ();
}
2006-06-27 05:38:56 +00:00
wp_redirect ( "plugin-editor.php?file= $file &a=te" );
2004-11-17 03:15:44 +00:00
} else {
2006-06-27 05:38:56 +00:00
wp_redirect ( "plugin-editor.php?file= $file " );
2004-11-17 03:15:44 +00:00
}
exit ();
break ;
default :
2006-02-12 07:53:23 +00:00
2005-07-15 02:16:45 +00:00
if ( ! current_user_can ( 'edit_plugins' ) )
2006-07-05 22:00:03 +00:00
wp_die ( '<p>' . __ ( 'You do not have sufficient permissions to edit plugins for this blog.' ) . '</p>' );
2004-11-17 03:15:44 +00:00
2007-02-14 06:15:05 +00:00
if ( $_GET [ 'liveupdate' ] ) {
check_admin_referer ( 'edit-plugin-test_' . $file );
$current = get_option ( 'active_plugins' );
$plugin = $file ;
if ( validate_file ( $plugin ) )
wp_die ( __ ( 'Invalid plugin.' ));
if ( ! file_exists ( ABSPATH . PLUGINDIR . '/' . $plugin ) )
wp_die ( __ ( 'Plugin file does not exist.' ));
if ( ! in_array ( $plugin , $current )) {
wp_redirect ( "plugin-editor.php?file= $file &phperror=1" ); // we'll override this later if the plugin can be included without fatal error
@ include ( ABSPATH . PLUGINDIR . '/' . $plugin );
$current [] = $plugin ;
sort ( $current );
update_option ( 'active_plugins' , $current );
}
wp_redirect ( "plugin-editor.php?file= $file &a=te" );
}
2006-08-22 18:20:00 +00:00
require_once ( 'admin-header.php' );
2006-09-21 20:46:39 +00:00
update_recently_edited ( PLUGINDIR . "/ $file " );
2006-02-12 07:53:23 +00:00
2004-11-17 03:15:44 +00:00
if ( ! is_file ( $real_file ))
$error = 1 ;
2006-02-12 07:53:23 +00:00
2004-11-17 03:15:44 +00:00
if ( ! $error ) {
$f = fopen ( $real_file , 'r' );
$content = fread ( $f , filesize ( $real_file ));
2005-02-24 18:13:02 +00:00
$content = htmlspecialchars ( $content );
2004-11-17 03:15:44 +00:00
}
?>
<?php if (isset($_GET['a'])) : ?>
2005-08-08 01:13:22 +00:00
<div id="message" class="updated fade"><p><?php _e('File edited successfully.') ?></p></div>
2007-02-14 06:15:05 +00:00
<?php elseif (isset($_GET['phperror'])) : ?>
<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>
2004-11-17 03:15:44 +00:00
<?php endif; ?>
2006-11-19 07:56:05 +00:00
<div class="wrap">
<?php
2007-02-14 06:15:05 +00:00
if ( in_array($file, (array) get_option('active_plugins')) ) {
if (is_writeable($real_file)) {
echo '<h2>' . sprintf(__('Editing <strong>%s</strong> (active)'), $file) . '</h2>';
} else {
echo '<h2>' . sprintf(__('Browsing <strong>%s</strong> (active)'), $file) . '</h2>';
}
2004-11-17 03:15:44 +00:00
} else {
2007-02-14 06:15:05 +00:00
if (is_writeable($real_file)) {
echo '<h2>' . sprintf(__('Editing <strong>%s</strong> (inactive)'), $file) . '</h2>';
} else {
echo '<h2>' . sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file) . '</h2>';
}
2004-11-17 03:15:44 +00:00
}
?>
<div id="templateside">
<h3><?php _e('Plugin files') ?></h3>
<?php
if ($plugin_files) :
?>
2006-11-19 07:56:05 +00:00
<ul>
<?php foreach($plugin_files as $plugin_file) : ?>
2004-11-28 00:33:04 +00:00
<li><a href="plugin-editor.php?file=<?php echo "$plugin_file"; ?>"><?php echo $plugins[$plugin_file]['Name']; ?></a></li>
2006-11-19 07:56:05 +00:00
<?php endforeach; ?>
</ul>
2004-11-17 03:15:44 +00:00
<?php endif; ?>
</div>
2006-11-19 07:56:05 +00:00
<?php if (!$error) { ?>
<form name="template" id="template" action="plugin-editor.php" method="post">
<?php wp_nonce_field('edit-plugin_' . $file) ?>
<div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="file" value="<?php echo $file ?>" />
2004-11-17 03:15:44 +00:00
</div>
<?php if ( is_writeable($real_file) ) : ?>
2007-02-14 06:15:05 +00:00
<?php if ( in_array($file, (array) get_option('active_plugins')) ) { ?>
<p><?php _e('<strong>Warning:</strong> Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?></p>
<?php } ?>
2006-11-19 07:56:05 +00:00
<p class="submit">
<?php
2007-02-14 06:15:05 +00:00
if ( isset($_GET['phperror']) )
echo "<input type='hidden' name='phperror' value='1' /><input type='submit' name='submit' value='" . __('Update File and Attempt to Reactivate »') . "' tabindex='2' />";
else
echo "<input type='submit' name='submit' value='" . __('Update File »') . "' tabindex='2' />";
2006-11-19 07:56:05 +00:00
?>
</p>
2004-11-17 03:15:44 +00:00
<?php else : ?>
2006-11-19 07:56:05 +00:00
<p><em><?php _e('If this file were writable you could edit it.'); ?></em></p>
2004-11-17 03:15:44 +00:00
<?php endif; ?>
2006-11-19 07:56:05 +00:00
</form>
<?php
2004-11-17 03:15:44 +00:00
} else {
echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>';
}
2006-11-19 07:56:05 +00:00
?>
2005-11-14 10:19:22 +00:00
<div class="clear"> </div>
2006-11-19 07:56:05 +00:00
</div>
2004-11-17 03:15:44 +00:00
<?php
break;
}
2006-11-19 07:56:05 +00:00
include("admin-footer.php") ?>