Current Path : /storage/v11800/affypharma/public_html/wp-content/plugins/auxin-elements/includes/classes/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/affypharma/public_html/wp-content/plugins/auxin-elements/includes/classes/class-auxels-import.php |
<?php
/**
* Class for importing and exporting theme options
*/
class Auxels_Import {
/**
* Instance of this class.
*
* @var object
*/
protected static $instance = null;
public function __construct(){
// Add a radio option for exporting auxin options to wp export options.
add_action( 'export_filters', array( $this, 'export_filters' ) );
// Process the check field for auxin options while export submitted
add_filter( 'export_args', array( $this, 'export_args' ) );
// adding options to export file
add_action( 'rss2_head', array( $this, 'add_xml_tag_option_in_export' ) );
// Import the options based on parsed data from xml file
add_action( 'import_start', array( $this, 'import_start' ) );
}
/**
* Add a radio option for exporting auxin options to available export options.
*
* @return void
*/
public function export_filters() {
?>
<hr />
<p><label>
<input type="checkbox" name="auxin-options" checked="checked" aria-describedby="all-content-desc" />
<?php esc_html_e( 'Include theme options', 'auxin-elements' ); ?>
</label></p>
<?php
}
/**
* Process the check field for auxin options
*
* @param array $args
* @return mixed
*/
public function export_args( $args ){
if ( ! empty( $_GET['auxin-options'] ) ) {
$args['auxin-options'] = true;
}
return $args;
}
/**
* Generate option page for wp options in xml format
*/
public function add_xml_tag_option_in_export(){
global $wpdb;
$options_ref = $this->get_export_option_list();
foreach ( $options_ref as $option_export_name => $option_import_name ) {
$result = $wpdb->get_results( $wpdb->prepare("SELECT option_name, option_value FROM $wpdb->options WHERE option_name = %s", $option_import_name ) );
if( ! empty( $result[0]->option_value ) ){
?>
<wp:option>
<wp:option_key><?php echo $this->wxr_cdata( $option_export_name ); ?></wp:option_key>
<wp:option_value><?php echo $this->wxr_cdata( $result[0]->option_value ); ?></wp:option_value>
</wp:option>
<?php
}
}
}
/**
* Retrieves the list of options we intended to include in export file
*/
public function get_export_option_list(){
return array(
'theme_options' => THEME_ID . '_theme_options'
);
}
/**
* Import the options based on parsed data from xml file
*/
public function import_start(){
global $wp_import;
$options_ref = $this->get_export_option_list();
$file = get_attached_file( $wp_import->id );
// if export file is not uploaded and is a link to a file in theme files
if( empty( $file ) && property_exists( $wp_import, 'import_file' ) ){
$file = $wp_import->import_file;
}
include 'class-auxels-import-parser.php';
$parser = new Auxels_Import_Parser;
$options = $parser->parse( $file );
foreach ( $options as $option_key => $option_value ){
if( ! empty( $options_ref[ $option_key ] ) ){
update_option( $options_ref[ $option_key ], maybe_unserialize( $option_value ) );
}
}
}
/**
* Print the data in cdata and utf8 format
* @param string $str
* @return string
*/
public function wxr_cdata( $str ) {
if ( ! seems_utf8( $str ) ) {
$str = utf8_encode( $str );
}
$str = '<![CDATA[' . str_replace( ']]>', ']]]]><![CDATA[>', $str ) . ']]>';
return $str;
}
/**
* Return an instance of this class.
*
* @return object A single instance of this class.
*/
public static function get_instance() {
// If the single instance hasn't been set, set it now.
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
}
new Auxels_Import();