Files
medicalalert-web-reloaded/wp/wp-content/plugins/wp-exporter/index.php
Rachit Bhargava 5d0f0734d8 first commit
2023-07-21 17:12:10 -04:00

208 lines
6.4 KiB
PHP

<?php
/**
Plugin Name: WordPress Exporter
Plugin URI: http://www.ground6.com/wordpress-plugins/wordpress-exporter/
Description: Export specific posts, pages, comments, custom fields, categories, tags and more to an export file.
Author: zourbuth
Version: 0.0.6
Author URI: http://zourbuth.com
License: Under GPL2
Copyright 2016 zourbuth.com (email: zourbuth@gmail.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Set constant
* @since 0.0.5
*/
define( 'WP_EXPORTER_VERSION', '0.0.6' );
define( 'WP_EXPORTER_PATH', plugin_dir_path( __FILE__ ) );
define( 'WP_EXPORTER_URL', plugin_dir_url( __FILE__ ) );
define( 'WP_EXPORTER_TEXTDOMAIN', 'wp-exporter' );
/**
* Plugins filters and actions
*/
add_action( 'plugins_loaded', 'wp_exporter_plugin_loaded' );
/**
* Plugins loaded function
*
* @since 0.0.1
*/
function wp_exporter_plugin_loaded() {
add_action( 'export_filters', 'wordpress_exporter_filters' );
add_action( 'wp_ajax_exportform', 'wordpress_exporter_form_ajax' );
add_action( 'wp_exporter_form', 'wordpress_exporter_form' ); // custom action
add_action( 'export_wp', 'export_wp_action' );
add_filter( 'export_post_ids', 'wp_exporter_post_ids', 1, 2 ); // custom filter
remove_action( 'admin_head', 'export_add_js' );
add_action( 'admin_head', 'wordpress_exporter_add_js', 99 );
require_once( WP_EXPORTER_PATH . 'utility.php' );
}
/**
* Export posts id function
* @param $post_ids (int) current posts ids
* @param $args (array) query arguments
* @since 0.0.1
*/
function wp_exporter_post_ids( $post_ids, $args ) {
if ( 'advanced' == $args['content'] && isset( $_GET['query'] ) ) {
$query = esc_attr( $_GET['query'] );
if ( isset( $_GET['post_ids'] ) ) {
$post_ids = (array) $_GET['post_ids'];
$post_ids = apply_filters( 'wp_exporter_post_ids', $post_ids, $query, $args );
}
}
return $post_ids;
}
/**
* Export action using custom query
* @param $args (array) query arguments
* @since 0.0.1
*/
function export_wp_action( $args ) {
if ( 'advanced' == $args['content'] ) {
require_once( plugin_dir_path( __FILE__ ) . 'export.php' );
// Don't use default WP export, instead set parameter for further use
global $wp_query;
$wp_query->wp_exporter = true; // @since 0.0.5
_export_wp( $args );
die();
}
}
/**
* Export AJAX function
* @param (none)
* @since 0.0.1
*/
function wordpress_exporter_form_ajax() {
if ( ! isset( $_POST['nonce'] ) || ! isset( $_POST['query'] ) || ! wp_verify_nonce( $_POST['nonce'], 'wp-exporter' ) )
die();
do_action( 'wp_exporter_form', esc_attr( $_POST['query'] ) );
exit;
}
/**
* Lists all posts/pages
* @param $query (array) query argument
* @since 0.0.1
*/
function wordpress_exporter_form( $query ) {
$posts = get_posts( array(
'posts_per_page' => 9999,
'post_type' => $query
));
echo "<label>". __( 'Select one or more posts', 'wp-exporter' ) ."<br />
<select name='post_ids[]' size='8' multiple='multiple'>";
foreach( $posts as $post )
echo "<option value='{$post->ID}'>{$post->post_title} ({$post->ID})</option>";
echo "</select></label>";
}
/**
* Lists all posts/pages
* @param $query (array) query argument
* @since 0.0.1
*/
function wordpress_exporter_filters() {
// Default queries
$defaults = array(
'' => __( '-', 'wp-exporter' ),
'post' => __( 'Post', 'wp-exporter' ),
'page' => __( 'Page', 'wp-exporter' ),
'attachment' => __( 'Media/attachment', 'wp-exporter' ),
);
// Registered post types
// @since 0.0.6
$post_types = array();
foreach ( get_post_types( array( '_builtin' => false, 'can_export' => true ), 'objects' ) as $post_type )
$post_types[ esc_html( $post_type->name ) ] = esc_attr( $post_type->label );
$export_queries = apply_filters( 'wp_exporter_queries', array_merge( $defaults, $post_types ) );
?>
<p><label><input type="radio" name="content" value="advanced" /> <?php _e( 'Custom Export', 'wp-exporter' ); ?></label></p>
<div class="export-filters" id="advanced-filters" style="margin-left: 23px;">
<p>
<label for="query"><?php _e( 'Select query','wp-exporter' ); ?></label>
<select class="smallfat" id="query" name="query" data-nonce="<?php echo wp_create_nonce( 'wp-exporter' ); ?>">
<?php foreach ( $export_queries as $key => $query ) { ?>
<option value="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $query ); ?></option>
<?php } ?>
</select>
<span style="display: inline-block; vertical-align: middle;"><span class="spinner"></span></span>
</p>
<div><!-- custom form starts here --></div>
</div>
<?php
}
/**
* Remove default WordPress export_js and replace with this
* copy export_add_js() wp-admin\export.php line 24
* @since 0.0.1
*/
function wordpress_exporter_add_js() {
?>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function($){
var form = $('#export-filters'),
filters = form.find('.export-filters');
filters.hide();
form.find('input:radio').off('change').change(function() {
filters.slideUp('fast');
switch ( $(this).val() ) {
case 'posts': $('#post-filters').slideDown(); break;
case 'pages': $('#page-filters').slideDown(); break;
case 'advanced': $('#advanced-filters').slideDown(); break;
}
});
$("#query").on("change", function() {
$('#advanced-filters > div').empty();
$('#advanced-filters .spinner').css("visibility","visible");
$.post( ajaxurl, { action: 'exportform', nonce: $(this).attr("data-nonce"), query : $(this).val() }, function(data){
$('#advanced-filters .spinner').css("visibility","hidden");
$('#advanced-filters > div').append( data );
});
});
});
//]]>
</script>
<?php
}