2003-05-22 12:12:53 +00:00
<? php
2004-04-25 23:57:43 +00:00
require_once ( '../wp-includes/wp-l10n.php' );
$title = __ ( "Template & file editing" );
2003-05-22 12:12:53 +00:00
function add_magic_quotes ( $array ) {
foreach ( $array as $k => $v ) {
if ( is_array ( $v )) {
$array [ $k ] = add_magic_quotes ( $v );
} else {
$array [ $k ] = addslashes ( $v );
}
}
return $array ;
}
2004-03-29 22:43:07 +00:00
function validate_file ( $file ) {
if ( '..' == substr ( $file , 0 , 2 ))
2004-04-25 23:57:43 +00:00
die ( __ ( 'Sorry, can’t edit files with ".." in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' ));
2004-03-29 22:43:07 +00:00
if ( ':' == substr ( $file , 1 , 1 ))
2004-04-25 23:57:43 +00:00
die ( __ ( 'Sorry, can’t call files with their real path.' ));
2004-03-29 22:43:07 +00:00
if ( '/' == substr ( $file , 0 , 1 ))
$file = '.' . $file ;
$file = stripslashes ( $file );
$file = str_replace ( '../' , '' , $file );
return $file ;
}
2003-05-22 12:12:53 +00:00
if ( ! get_magic_quotes_gpc ()) {
2004-04-20 22:56:47 +00:00
$_GET = add_magic_quotes ( $_GET );
$_POST = add_magic_quotes ( $_POST );
$_COOKIE = add_magic_quotes ( $_COOKIE );
2003-05-22 12:12:53 +00:00
}
2003-12-18 09:36:13 +00:00
$wpvarstoreset = array ( 'action' , 'standalone' , 'redirect' , 'profile' , 'error' , 'warning' , 'a' , 'file' );
for ( $i = 0 ; $i < count ( $wpvarstoreset ); $i += 1 ) {
$wpvar = $wpvarstoreset [ $i ];
if ( ! isset ( $$wpvar )) {
2004-04-20 22:56:47 +00:00
if ( empty ( $_POST [ " $wpvar " ])) {
if ( empty ( $_GET [ " $wpvar " ])) {
2003-12-18 09:36:13 +00:00
$$wpvar = '' ;
2003-05-22 12:12:53 +00:00
} else {
2004-04-20 22:56:47 +00:00
$$wpvar = $_GET [ " $wpvar " ];
2003-05-22 12:12:53 +00:00
}
} else {
2004-04-20 22:56:47 +00:00
$$wpvar = $_POST [ " $wpvar " ];
2003-05-22 12:12:53 +00:00
}
}
}
switch ( $action ) {
2003-05-23 00:12:22 +00:00
case 'update' :
2003-05-22 12:12:53 +00:00
2003-05-23 00:12:22 +00:00
$standalone = 1 ;
2004-01-29 05:51:29 +00:00
require_once ( "admin-header.php" );
2003-05-22 12:12:53 +00:00
2004-04-17 18:44:10 +00:00
if ( $user_level < 5 ) {
2004-04-25 23:57:43 +00:00
die ( __ ( '<p>You have do not have sufficient permissions to edit templates for this blog.</p>' ));
2003-05-22 12:12:53 +00:00
}
2004-04-20 22:56:47 +00:00
$newcontent = stripslashes ( $_POST [ 'newcontent' ]);
$file = $_POST [ 'file' ];
2004-03-29 22:43:07 +00:00
$file = validate_file ( $file );
$real_file = '../' . $file ;
if ( is_writeable ( $real_file )) {
$f = fopen ( $real_file , 'w+' );
fwrite ( $f , $newcontent );
fclose ( $f );
header ( "Location: templates.php?file= $file &a=te" );
} else {
header ( "Location: templates.php?file= $file " );
}
2003-05-22 12:12:53 +00:00
exit ();
break ;
default :
2003-12-11 00:22:36 +00:00
require_once ( 'admin-header.php' );
2003-05-22 12:12:53 +00:00
2004-04-17 18:44:10 +00:00
if ( $user_level <= 5 ) {
2004-04-25 23:57:43 +00:00
die ( __ ( '<p>You have do not have sufficient permissions to edit templates for this blog.</p>' ));
2003-05-22 12:12:53 +00:00
}
2003-05-23 00:12:22 +00:00
if ( '' == $file ) {
2004-02-26 16:15:48 +00:00
if ( '' != get_settings ( 'blogfilename' )) {
$file = get_settings ( 'blogfilename' );
2003-05-22 12:12:53 +00:00
} else {
2003-05-23 00:12:22 +00:00
$file = 'index.php' ;
2003-05-22 12:12:53 +00:00
}
}
2004-03-29 22:43:07 +00:00
$file = validate_file ( $file );
$real_file = '../' . $file ;
2003-05-22 12:12:53 +00:00
2004-03-29 22:43:07 +00:00
if ( ! is_file ( $real_file ))
2003-05-22 12:12:53 +00:00
$error = 1 ;
2003-12-16 02:10:52 +00:00
if (( substr ( $file , 0 , 2 ) == 'wp' ) and ( substr ( $file , - 4 , 4 ) == '.php' ) and ( $file != 'wp.php' ))
2004-04-25 23:57:43 +00:00
$warning = __ ( ' — this is a WordPress file, be careful when editing it!' );
2003-05-23 00:12:22 +00:00
2003-05-22 12:12:53 +00:00
if ( ! $error ) {
2004-03-29 22:43:07 +00:00
$f = fopen ( $real_file , 'r' );
$content = fread ( $f , filesize ( $real_file ));
2003-05-22 12:12:53 +00:00
$content = htmlspecialchars ( $content );
// $content = str_replace("</textarea","</textarea",$content);
}
?>
2004-04-17 18:44:10 +00:00
<?php if ('te' == $_GET['a']) : ?>
2004-04-25 23:57:43 +00:00
<div class="updated"><p><?php _e('File edited successfully.') ?></p></div>
2004-04-17 18:44:10 +00:00
<?php endif; ?>
2003-12-08 01:55:38 +00:00
<div class="wrap">
<?php
2004-04-25 23:57:43 +00:00
echo "<p>" . sprintf(__('Editing <strong>%s</strong>'), $file) . " $warning</p>";
2003-05-22 12:12:53 +00:00
if (!$error) {
2003-12-08 01:55:38 +00:00
?>
<form name="template" action="templates.php" method="post">
2004-04-22 16:00:00 +00:00
<textarea cols="80" rows="21" style="width:98%; font-family: 'Courier New', Courier, monopace; font-size:small;" name="newcontent" tabindex="1"><?php echo $content ?></textarea>
2003-12-08 01:55:38 +00:00
<input type="hidden" name="action" value="update" />
<input type="hidden" name="file" value="<?php echo $file ?>" />
2004-04-17 18:44:10 +00:00
<p class="submit">
2003-12-08 01:55:38 +00:00
<?php
2004-03-29 22:43:07 +00:00
if (is_writeable($real_file)) {
2004-04-17 18:44:10 +00:00
echo "<input type='submit' name='submit' value='Update File »' tabindex='2' />";
2003-05-22 12:12:53 +00:00
} else {
2004-04-25 23:57:43 +00:00
echo "<input type='button' name='oops' value='" . __('(You cannot update that file/template: must make it writable, e.g. CHMOD 666)') ."' tabindex='2' />";
2003-05-22 12:12:53 +00:00
}
2003-12-08 01:55:38 +00:00
?>
2004-04-17 18:44:10 +00:00
</p>
2003-12-08 01:55:38 +00:00
</form>
<?php
2003-05-22 12:12:53 +00:00
} else {
2004-04-25 23:57:43 +00:00
echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>';
2003-05-22 12:12:53 +00:00
}
2003-12-08 01:55:38 +00:00
?>
</div>
2004-02-05 14:48:55 +00:00
<div class="wrap">
2004-04-25 23:57:43 +00:00
<p><?php _e('To edit a file, type its name here. You can edit any file <a href="http://wiki.wordpress.org/index.php/MakeWritable" title="Read more about making files writable">writable by the server</a>, e.g. CHMOD 666.') ?></p>
2003-12-08 01:55:38 +00:00
<form name="file" action="templates.php" method="get">
<input type="text" name="file" />
2004-04-25 23:57:43 +00:00
<input type="submit" name="submit" value="<?php _e('Edit file »') ?>" />
2003-12-08 01:55:38 +00:00
</form>
2004-04-25 23:57:43 +00:00
<p><?php _e('Common files: (click to edit)') ?></p>
2004-02-05 14:48:55 +00:00
<ul>
2004-04-25 23:57:43 +00:00
<li><a href="templates.php?file=index.php"><?php _e('Main Index') ?> </a></li>
2004-02-05 14:48:55 +00:00
<li><a href="templates.php?file=wp-comments.php">Comments</a></li>
2004-04-25 23:57:43 +00:00
<li><a href="templates.php?file=wp-comments-popup.php"><?php _e('Popup comments') ?> </a></li>
<li><a href="templates.php?file=.htaccess"><?php _e('.htaccess (for rewrite rules)') ?></a></li>
<li><a href="templates.php?file=my-hacks.php"><?php _e('my-hacks.php (legacy hacks support)') ?></a></li>
2004-04-17 18:44:10 +00:00
</ul>
<?php
$plugins_dir = @ dir(ABSPATH . 'wp-content/plugins');
if ($plugins_dir) {
while(($file = $plugins_dir->read()) !== false) {
if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
$plugin_files[] = $file;
}
}
if ($plugins_dir || $plugin_files) :
?>
<p>Plugin files:</p>
<ul>
<?php foreach($plugin_files as $plugin_file) : ?>
<li><a href="templates.php?file=wp-content/plugins/<?php echo $plugin_file; ?>"><?php echo $plugin_file; ?></a></li>
<?php endforeach; ?>
2004-02-05 14:48:55 +00:00
</ul>
2004-04-17 18:44:10 +00:00
<?php endif; ?>
2004-04-25 23:57:43 +00:00
<p><?php _e('Note: of course, you can also edit the files/templates in your text editor of choice and upload them. This online editor is only meant to be used when you don’t have access to a text editor or FTP client.') ?></p>
2003-12-08 01:55:38 +00:00
</div>
<?php
2003-05-22 12:12:53 +00:00
break;
}
2004-04-25 23:57:43 +00:00
include("admin-footer.php") ?>