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.

146 lines
4.3 KiB

<?php
/**
* The File Editor class.
*
* @package All-in-One-SEO-Pack
*/
if ( ! class_exists( 'All_in_One_SEO_Pack_File_Editor' ) ) {
/**
* Class All_in_One_SEO_Pack_File_Editor
*/
class All_in_One_SEO_Pack_File_Editor extends All_in_One_SEO_Pack_Module {
/**
* All_in_One_SEO_Pack_File_Editor constructor.
*/
function __construct() {
$this->name = __( 'File Editor', 'all-in-one-seo-pack' ); // Human-readable name of the plugin
$this->prefix = 'aiosp_file_editor_'; // option prefix
$this->file = __FILE__; // the current file
parent::__construct();
$this->current_tab = 'robots';
if ( isset( $_REQUEST['tab'] ) ) {
$this->current_tab = $_REQUEST['tab'];
}
$help_text = array(
'robotfile' => __( 'Robots.txt editor', 'all-in-one-seo-pack' ),
'htaccfile' => __( '.htaccess editor', 'all-in-one-seo-pack' ),
);
$this->default_options = array(
'robotfile' => array(
'name' => __( 'Edit Robots.txt', 'all-in-one-seo-pack' ),
'save' => false,
'default' => '',
'type' => 'textarea',
'cols' => 70,
'rows' => 25,
'label' => 'top',
),
'htaccfile' => array(
'name' => __( 'Edit .htaccess', 'all-in-one-seo-pack' ),
'save' => false,
'default' => '',
'type' => 'textarea',
'cols' => 70,
'rows' => 25,
'label' => 'top',
),
);
if ( ! empty( $help_text ) ) {
foreach ( $help_text as $k => $v ) {
$this->default_options[ $k ]['help_text'] = $v;
}
}
$this->tabs = array(
'robots' => array( 'name' => __( 'robots.txt' ) ),
'htaccess' => array( 'name' => __( '.htaccess' ) ),
);
$this->layout = array(
'robots' => array(
'name' => __( 'Edit robots.txt', 'all-in-one-seo-pack' ),
'options' => array( 'robotfile' ),
'tab' => 'robots',
),
'htaccess' => array(
'name' => __( 'Edit .htaccess', 'all-in-one-seo-pack' ),
'options' => array( 'htaccfile' ),
'tab' => 'htaccess',
),
);
$this->update_options(); // load initial options / set defaults
}
function settings_page_init() {
add_filter( $this->prefix . 'display_options', array( $this, 'filter_options' ), 10, 2 );
add_filter( $this->prefix . 'submit_options', array( $this, 'filter_submit' ), 10, 2 );
}
function add_page_hooks() {
parent::add_page_hooks();
add_action( $this->prefix . 'settings_update', array( $this, 'do_file_editor' ), 10, 2 );
}
/**
* @param $submit
* @param $location
*
* @return mixed
*/
function filter_submit( $submit, $location ) {
unset( $submit['Submit_Default'] );
$submit['Submit']['type'] = 'hidden';
if ( 'robots' === $this->current_tab ) {
$submit['Submit_File_Editor'] = array(
'type' => 'submit',
'class' => 'button-primary',
'value' => __( 'Update robots.txt', 'all-in-one-seo-pack' ) . ' &raquo;',
);
} elseif ( 'htaccess' === $this->current_tab ) {
$submit['Submit_htaccess'] = array(
'type' => 'submit',
'class' => 'button-primary',
'value' => __( 'Update .htaccess', 'all-in-one-seo-pack' ) . ' &raquo;',
);
}
return $submit;
}
/**
* @param $options
* @param $location
*
* @return mixed
*/
function filter_options( $options, $location ) {
$prefix = $this->get_prefix( $location );
if ( 'robots' === $this->current_tab ) {
$options = $this->load_files( $options, array( 'robotfile' => 'robots.txt' ), $prefix );
} elseif ( 'htaccess' === $this->current_tab ) {
$options = $this->load_files( $options, array( 'htaccfile' => '.htaccess' ), $prefix );
}
return $options;
}
/**
* @param $options This seems to be unused.
* @param $location
*/
function do_file_editor( $options, $location ) {
$prefix = $this->get_prefix( $location );
if ( 'robots' === $this->current_tab && isset( $_POST['Submit_File_Editor'] ) && $_POST['Submit_File_Editor'] ) {
$this->save_files( array( 'robotfile' => 'robots.txt' ), $prefix );
} elseif ( 'htaccess' === $this->current_tab && isset( $_POST['Submit_htaccess'] ) && $_POST['Submit_htaccess'] ) {
$this->save_files( array( 'htaccfile' => '.htaccess' ), $prefix );
}
}
}
}