2004-11-17 04:15:44 +01:00
< ? php
require_once ( 'admin.php' );
2006-11-18 08:31:29 +01:00
$title = __ ( " Edit Plugins " );
$parent_file = 'plugins.php' ;
2006-07-03 21:03:37 +02:00
wp_reset_vars ( array ( 'action' , 'redirect' , 'profile' , 'error' , 'warning' , 'a' , 'file' ));
2004-11-17 04:15:44 +01:00
2008-02-22 04:06:35 +01:00
add_action ( 'admin_head' , 'theme_editor_css' );
function theme_editor_css (){
wp_admin_css ( 'css/theme-editor' );
}
2004-11-28 01:33:04 +01:00
$plugins = get_plugins ();
$plugin_files = array_keys ( $plugins );
2004-11-17 04:15:44 +01:00
if ( empty ( $file )) {
$file = $plugin_files [ 0 ];
}
$file = validate_file_to_edit ( $file , $plugin_files );
2006-09-21 22:46:39 +02:00
$real_file = get_real_file_to_edit ( PLUGINDIR . " / $file " );
2004-11-17 04:15:44 +01:00
switch ( $action ) {
case 'update' :
2006-05-27 01:08:05 +02:00
check_admin_referer ( 'edit-plugin_' . $file );
2006-03-31 01:12:54 +02:00
2005-07-15 04:16:45 +02:00
if ( ! current_user_can ( 'edit_plugins' ) )
2006-07-06 00:00:03 +02:00
wp_die ( '<p>' . __ ( 'You do not have sufficient permissions to edit templates for this blog.' ) . '</p>' );
2004-11-17 04:15:44 +01:00
$newcontent = stripslashes ( $_POST [ 'newcontent' ]);
if ( is_writeable ( $real_file )) {
$f = fopen ( $real_file , 'w+' );
fwrite ( $f , $newcontent );
fclose ( $f );
2007-02-14 07:15:05 +01: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 07:38:56 +02:00
wp_redirect ( " plugin-editor.php?file= $file &a=te " );
2004-11-17 04:15:44 +01:00
} else {
2006-06-27 07:38:56 +02:00
wp_redirect ( " plugin-editor.php?file= $file " );
2004-11-17 04:15:44 +01:00
}
exit ();
break ;
default :
2006-02-12 08:53:23 +01:00
2005-07-15 04:16:45 +02:00
if ( ! current_user_can ( 'edit_plugins' ) )
2006-07-06 00:00:03 +02:00
wp_die ( '<p>' . __ ( 'You do not have sufficient permissions to edit plugins for this blog.' ) . '</p>' );
2004-11-17 04:15:44 +01:00
2007-02-14 07:15:05 +01: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 20:20:00 +02:00
require_once ( 'admin-header.php' );
2006-09-21 22:46:39 +02:00
update_recently_edited ( PLUGINDIR . " / $file " );
2006-02-12 08:53:23 +01:00
2004-11-17 04:15:44 +01:00
if ( ! is_file ( $real_file ))
$error = 1 ;
2006-02-12 08:53:23 +01:00
2004-11-17 04:15:44 +01:00
if ( ! $error ) {
$f = fopen ( $real_file , 'r' );
$content = fread ( $f , filesize ( $real_file ));
2005-02-24 19:13:02 +01:00
$content = htmlspecialchars ( $content );
2004-11-17 04:15:44 +01:00
}
?>
< ? php if ( isset ( $_GET [ 'a' ])) : ?>
2005-08-08 03:13:22 +02:00
< div id = " message " class = " updated fade " >< p >< ? php _e ( 'File edited successfully.' ) ?> </p></div>
2007-02-14 07:15:05 +01: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 04:15:44 +01:00
< ? php endif ; ?>
2006-11-19 08:56:05 +01:00
< div class = " wrap " >
2008-02-22 04:06:35 +01:00
< div class = " bordertitle " >
2008-03-15 00:58:31 +01:00
< h2 >< ? php _e ( 'Plugin Editor' ); ?> </h2>
2008-02-22 04:06:35 +01:00
</ div >
2008-03-15 00:58:31 +01:00
< div class = " tablenav " >
< div class = " alignleft " >
2008-02-22 04:06:35 +01:00
< big >< strong >< ? php
2007-02-14 07:15:05 +01:00
if ( in_array ( $file , ( array ) get_option ( 'active_plugins' )) ) {
if ( is_writeable ( $real_file )) {
2008-02-22 04:06:35 +01:00
echo sprintf ( __ ( 'Editing <strong>%s</strong> (active)' ), $file );
2007-02-14 07:15:05 +01:00
} else {
2008-02-22 04:06:35 +01:00
echo sprintf ( __ ( 'Browsing <strong>%s</strong> (active)' ), $file );
2007-02-14 07:15:05 +01:00
}
2004-11-17 04:15:44 +01:00
} else {
2007-02-14 07:15:05 +01:00
if ( is_writeable ( $real_file )) {
2008-02-22 04:06:35 +01:00
echo sprintf ( __ ( 'Editing <strong>%s</strong> (inactive)' ), $file );
2007-02-14 07:15:05 +01:00
} else {
2008-02-22 04:06:35 +01:00
echo sprintf ( __ ( 'Browsing <strong>%s</strong> (inactive)' ), $file );
2007-02-14 07:15:05 +01:00
}
2004-11-17 04:15:44 +01:00
}
2008-02-22 04:06:35 +01:00
?> </strong></big>
</ div >
2008-03-15 00:58:31 +01:00
< br class = " clear " />
2008-02-22 04:06:35 +01:00
</ div >
2008-03-15 00:58:31 +01:00
< br class = " clear " />
2004-11-17 04:15:44 +01:00
< div id = " templateside " >
2008-03-15 00:58:31 +01:00
< h3 id = " bordertitle " >< ? php _e ( " Plugin Files " ); ?> </h3>
2004-11-17 04:15:44 +01:00
2008-03-15 00:58:31 +01:00
< h4 >< ? php _e ( 'Plugins' ); ?> </h4>
2006-11-19 08:56:05 +01:00
< ul >
2008-02-22 04:06:35 +01:00
< ? php foreach ( $plugin_files as $plugin_file ) : ?>
< li >< a href = " plugin-editor.php?file=<?php echo " $plugin_file " ; ?> " >< ? php echo $plugins [ $plugin_file ][ 'Name' ]; ?> </a></li>
< ? php endforeach ; ?>
2006-11-19 08:56:05 +01:00
</ ul >
2008-02-22 04:06:35 +01:00
</ div >
2006-11-19 08:56:05 +01: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 04:15:44 +01:00
</ div >
< ? php if ( is_writeable ( $real_file ) ) : ?>
2007-02-14 07:15:05 +01: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 08:56:05 +01:00
< p class = " submit " >
< ? php
2007-02-14 07:15:05 +01:00
if ( isset ( $_GET [ 'phperror' ]) )
2008-02-20 20:30:55 +01:00
echo " <input type='hidden' name='phperror' value='1' /><input type='submit' name='submit' value=' " . __ ( 'Update File and Attempt to Reactivate' ) . " ' tabindex='2' /> " ;
2007-02-14 07:15:05 +01:00
else
2008-02-19 21:33:59 +01:00
echo " <input type='submit' name='submit' value=' " . __ ( 'Update File' ) . " ' tabindex='2' /> " ;
2006-11-19 08:56:05 +01:00
?>
</ p >
2004-11-17 04:15:44 +01:00
< ? php else : ?>
2008-02-14 00:58:23 +01:00
< p >< em >< ? php _e ( 'You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.' ); ?> </em></p>
2004-11-17 04:15:44 +01:00
< ? php endif ; ?>
2006-11-19 08:56:05 +01:00
</ form >
< ? php
2004-11-17 04:15:44 +01: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 08:56:05 +01:00
?>
2005-11-14 11:19:22 +01:00
< div class = " clear " > & nbsp ; </ div >
2006-11-19 08:56:05 +01:00
</ div >
2004-11-17 04:15:44 +01:00
< ? php
break ;
}
2008-02-22 04:06:35 +01:00
include ( " admin-footer.php " ) ?>