You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

239 lines
6.7 KiB

<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Admin
*/
if ( ! defined( 'WPSEO_VERSION' ) ) {
header( 'Status: 403 Forbidden' );
header( 'HTTP/1.1 403 Forbidden' );
exit();
}
$yform = Yoast_Form::get_instance();
$robots_file = get_home_path() . 'robots.txt';
$ht_access_file = get_home_path() . '.htaccess';
if ( isset( $_POST['create_robots'] ) ) {
if ( ! current_user_can( 'edit_files' ) ) {
$die_msg = sprintf(
/* translators: %s expands to robots.txt. */
__( 'You cannot create a %s file.', 'wordpress-seo' ),
'robots.txt'
);
die( esc_html( $die_msg ) );
}
check_admin_referer( 'wpseo_create_robots' );
ob_start();
error_reporting( 0 );
do_robots();
$robots_content = ob_get_clean();
$f = fopen( $robots_file, 'x' );
fwrite( $f, $robots_content );
}
if ( isset( $_POST['submitrobots'] ) ) {
if ( ! current_user_can( 'edit_files' ) ) {
$die_msg = sprintf(
/* translators: %s expands to robots.txt. */
__( 'You cannot edit the %s file.', 'wordpress-seo' ),
'robots.txt'
);
die( esc_html( $die_msg ) );
}
check_admin_referer( 'wpseo-robotstxt' );
if ( isset( $_POST['robotsnew'] ) && file_exists( $robots_file ) ) {
$robotsnew = sanitize_textarea_field( wp_unslash( $_POST['robotsnew'] ) );
if ( is_writable( $robots_file ) ) {
$f = fopen( $robots_file, 'w+' );
fwrite( $f, $robotsnew );
fclose( $f );
$msg = sprintf(
/* translators: %s expands to robots.txt. */
__( 'Updated %s', 'wordpress-seo' ),
'robots.txt'
);
}
}
}
if ( isset( $_POST['submithtaccess'] ) ) {
if ( ! current_user_can( 'edit_files' ) ) {
$die_msg = sprintf(
/* translators: %s expands to ".htaccess". */
__( 'You cannot edit the %s file.', 'wordpress-seo' ),
'.htaccess'
);
die( esc_html( $die_msg ) );
}
check_admin_referer( 'wpseo-htaccess' );
if ( isset( $_POST['htaccessnew'] ) && file_exists( $ht_access_file ) ) {
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Writing to .htaccess file and escaping for HTML will break functionality.
$ht_access_new = wp_unslash( $_POST['htaccessnew'] );
if ( is_writable( $ht_access_file ) ) {
$f = fopen( $ht_access_file, 'w+' );
fwrite( $f, $ht_access_new );
fclose( $f );
}
}
}
if ( is_multisite() ) {
$action_url = network_admin_url( 'admin.php?page=wpseo_files' );
$yform->admin_header( false, 'wpseo_ms' );
}
else {
$action_url = admin_url( 'admin.php?page=wpseo_tools&tool=file-editor' );
}
if ( isset( $msg ) && ! empty( $msg ) ) {
echo '<div id="message" class="notice notice-success"><p>', esc_html( $msg ), '</p></div>';
}
// N.B.: "robots.txt" is a fixed file name and should not be translatable.
echo '<h2>robots.txt</h2>';
if ( ! file_exists( $robots_file ) ) {
if ( is_writable( get_home_path() ) ) {
echo '<form action="', esc_url( $action_url ), '" method="post" id="robotstxtcreateform">';
wp_nonce_field( 'wpseo_create_robots', '_wpnonce', true, true );
echo '<p>';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'You don\'t have a %s file, create one here:', 'wordpress-seo' ),
'robots.txt'
);
echo '</p>';
printf(
'<input type="submit" class="button" name="create_robots" value="%s">',
sprintf(
/* translators: %s expands to robots.txt. */
esc_attr__( 'Create %s file', 'wordpress-seo' ),
'robots.txt'
)
);
echo '</form>';
}
else {
echo '<p>';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ),
'robots.txt'
);
echo '</p>';
}
}
else {
$f = fopen( $robots_file, 'r' );
$content = '';
if ( filesize( $robots_file ) > 0 ) {
$content = fread( $f, filesize( $robots_file ) );
}
if ( ! is_writable( $robots_file ) ) {
echo '<p><em>';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ),
'robots.txt'
);
echo '</em></p>';
echo '<textarea class="large-text code" disabled="disabled" rows="15" name="robotsnew">', esc_textarea( $content ), '</textarea><br/>';
}
else {
echo '<form action="', esc_url( $action_url ), '" method="post" id="robotstxtform">';
wp_nonce_field( 'wpseo-robotstxt', '_wpnonce', true, true );
echo '<label for="robotsnew" class="yoast-inline-label">';
printf(
/* translators: %s expands to robots.txt. */
esc_html__( 'Edit the content of your %s:', 'wordpress-seo' ),
'robots.txt'
);
echo '</label>';
echo '<textarea class="large-text code" rows="15" name="robotsnew" id="robotsnew">', esc_textarea( $content ), '</textarea><br/>';
printf(
'<div class="submit"><input class="button" type="submit" name="submitrobots" value="%s" /></div>',
sprintf(
/* translators: %s expands to robots.txt. */
esc_attr__( 'Save changes to %s', 'wordpress-seo' ),
'robots.txt'
)
);
echo '</form>';
}
}
if ( ! WPSEO_Utils::is_nginx() ) {
echo '<h2>';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( '%s file', 'wordpress-seo' ),
'.htaccess'
);
echo '</h2>';
if ( file_exists( $ht_access_file ) ) {
$f = fopen( $ht_access_file, 'r' );
$contentht = '';
if ( filesize( $ht_access_file ) > 0 ) {
$contentht = fread( $f, filesize( $ht_access_file ) );
}
if ( ! is_writable( $ht_access_file ) ) {
echo '<p><em>';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ),
'.htaccess'
);
echo '</em></p>';
echo '<textarea class="large-text code" disabled="disabled" rows="15" name="robotsnew">', esc_textarea( $contentht ), '</textarea><br/>';
}
else {
echo '<form action="', esc_url( $action_url ), '" method="post" id="htaccessform">';
wp_nonce_field( 'wpseo-htaccess', '_wpnonce', true, true );
echo '<label for="htaccessnew" class="yoast-inline-label">';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( 'Edit the content of your %s:', 'wordpress-seo' ),
'.htaccess'
);
echo '</label>';
echo '<textarea class="large-text code" rows="15" name="htaccessnew" id="htaccessnew">', esc_textarea( $contentht ), '</textarea><br/>';
printf(
'<div class="submit"><input class="button" type="submit" name="submithtaccess" value="%s" /></div>',
sprintf(
/* translators: %s expands to ".htaccess". */
esc_attr__( 'Save changes to %s', 'wordpress-seo' ),
'.htaccess'
)
);
echo '</form>';
}
}
else {
echo '<p>';
printf(
/* translators: %s expands to ".htaccess". */
esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ),
'.htaccess'
);
echo '</p>';
}
}
if ( is_multisite() ) {
$yform->admin_footer( false );
}