*/ if ( ! function_exists( 'add_action' ) ) { echo "Hi there! I'm just a part of plugin, not much I can do when called directly."; exit; } /** * Class Add_Quicktag_Im_Export */ class Add_Quicktag_Im_Export extends Add_Quicktag_Settings { /** * Post types for the settings * * @var Array */ private static $post_types_for_js; /** * Handler for the action 'init'. Instantiates this class. * * @access public * @since 2.0.0 * @return \Add_Quicktag|\Add_Quicktag_Im_Export|\Add_Quicktag_Settings $instance */ public static function get_object() { static $instance; if ( NULL === $instance ) { $instance = new self(); } return $instance; } /** * Constructor, init on defined hooks of WP and include second class * * @access public * @since 0.0.2 * @uses register_activation_hook, register_uninstall_hook, add_action * @return \Add_Quicktag_Im_Export */ private function __construct() { self::$post_types_for_js = parent::get_post_types_for_js(); if ( isset( $_GET['addquicktag_download'] ) && check_admin_referer( parent :: $nonce_string ) ) { $this->get_export_file(); } //add_action( 'init', array( $this, 'get_export_file' ) ); if ( isset( $_POST['addquicktag_import'] ) && check_admin_referer( parent :: $nonce_string ) ) { $this->import_file(); } //add_action( 'init', array( $this, 'import_file' ) ); add_action( 'addquicktag_settings_page', array( $this, 'get_im_export_part' ) ); } /** * get markup for ex- and import on settings page * * @access public * @since 2.0.0 * @uses wp_nonce_field * @return string */ public function get_im_export_part() { ?>

'; $xml .= "\n" . '' . "\n"; for( $i = 0; $i < count( $options['buttons'] ); $i ++ ) { $xml .= "\t" . '' . "\n"; foreach( $options['buttons'][ $i ] as $name => $value ) { $value = stripslashes( $value ); if ( empty( $value ) ) { $xml .= "\t\t" . '<' . $name . '/>' . "\n"; } elseif ( preg_match( '/^[0-9]*$/', $value ) ) { $xml .= "\t\t" . '<' . $name . '>' . $value . '' . "\n"; } else { $xml .= "\t\t" . '<' . $name . '>' . "\n"; } } $xml .= "\t" . '' . "\n"; } $xml .= ''; } else { $xml = 'We dont find settings in database'; } $filename = urlencode( 'addquicktag.' . date( 'Y-m-d' ) . '.xml' ); $filesize = strlen( $xml ); $this ->export_xml( $filename, $filesize, $filetype = 'text/xml' ); echo $xml; exit; } /** * Create download file * * @access public * @since 2.0.0 * * @param string $filename * @param string $filesize * @param string $filetype * * @uses get_option * @return void */ public function export_xml( $filename, $filesize, $filetype ) { header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $filename ); header( 'Content-Length: ' . $filesize ); header( 'Content-type: ' . $filetype . '; charset=' . get_option( 'blog_charset' ), TRUE ); flush(); } /** * Import XML and update settings * * @access public * @since 2.0.0 * * @param bool|string $filename * * @uses current_user_can, wp_die, is_plugin_active_for_network, update_site_option, update_option * @return void */ public function import_file( $filename = FALSE ) { if ( ! current_user_can( 'manage_options' ) ) { wp_die( __( 'Options not update - you don‘t have the privilidges to do this!', parent::get_textdomain() ) ); } // use tmp file if ( ! $filename ) { $filename = $_FILES['xml']['tmp_name']; } $filename = preg_replace( "/\<\!\[CDATA\[(.*?)\]\]\>/ies", "'[CDATA]' . base64_encode('$1') . '[/CDATA]'", $filename ); $filename = utf8_encode( $filename ); $matches = simplexml_load_file( $filename ); $buttons = ''; // create array from xml $button = array(); /** * @var $matches stdClass */ foreach( $matches->quicktag as $key ) { foreach( $key as $value ) { /* @var $value stdClass */ $buttons[ $value->getName() ] = $value; } $button[] = $buttons; } $options['buttons'] = $button; // validate the values from xml $options = parent::validate_settings( $options ); // update settings in database update_site_option( parent::get_option_string(), $options ); } } // end class $add_quicktag_im_export = Add_Quicktag_Im_Export::get_object();