Current File : //home/getxxhzo/tinyrnd.com/wp-content/plugins/widget-importer-exporter/includes/page.php |
<?php
/**
* Admin Page Functions
*
* @package Widget_Importer_Exporter
* @subpackage Functions
* @copyright Copyright (c) 2013 - 2020, ChurchThemes.com, LLC
* @link https://churchthemes.com/plugins/widget-importer-exporter/
* @license https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0-or-later
* @since 0.1
*/
defined('ABSPATH') || exit; // No direct access.
/**
* Add import/export page under Tools
*
* @since 0.1
*/
function wie_add_import_export_page()
{
// Add page.
$page_hook = add_management_page(
esc_html__('Widget Importer & Exporter', 'widget-importer-exporter'), // Page title.
esc_html__('Widget Importer & Exporter', 'widget-importer-exporter'), // Menu title.
'edit_theme_options', // Capability (can manage Appearance > Widgets).
'widget-importer-exporter', // Menu Slug.
'wie_import_export_page_content' // Callback for displaying page content.
);
}
add_action('admin_menu', 'wie_add_import_export_page');
/**
* Import/export page content
*
* @since 0.1
*/
function wie_import_export_page_content()
{
global $wie_import_results;
?>
<div class="wrap">
<h2><?php esc_html_e('Widget Importer & Exporter', 'widget-importer-exporter'); ?></h2>
<?php
// Show import results if have them.
if (wie_have_import_results()) {
wie_show_import_results();
// Don't show content below.
return;
}
$self = isset($_SERVER['PHP_SELF']) ? wp_unslash(filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL)) : ''; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
$page = isset($_GET['page']) ? wp_unslash(filter_input(INPUT_GET, 'page', FILTER_SANITIZE_URL)) : ''; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
?>
<h3 class="title"><?php echo esc_html_x('Import Widgets', 'heading', 'widget-importer-exporter'); ?></h3>
<form method="post" enctype="multipart/form-data">
<?php wp_nonce_field('wie_import', 'wie_import_nonce'); ?>
<p>
<?php
echo wp_kses(
__('Please select a <b>.wie</b> file generated by this plugin.', 'widget-importer-exporter'),
array(
'b' => array(),
)
);
?>
</p>
<input type="file" name="wie_import_file" id="wie-import-file"/>
<p>
<?php
echo wp_kses(
__('Or, <a href="#" id="wie-content-toggle">copy and paste</a> the contents of your <b>.wie</b> file.', 'widget-importer-exporter'),
array(
'b' => array(),
'a' => array(
'href' => array(),
'id' => array(),
),
)
);
?>
</p>
<textarea name="wie_import_data" id="wie-import-data" cols="80" rows="6"></textarea>
<?php submit_button(esc_html_x('Import Widgets', 'button', 'widget-importer-exporter')); ?>
</form>
<?php if (! empty($wie_import_results)) : ?>
<p id="wie-import-results">
<?php echo wp_kses_post($wie_import_results); ?>
</p>
<br/>
<?php endif; ?>
<h3 class="title"><?php echo esc_html_x('Export Widgets', 'heading', 'widget-importer-exporter'); ?></h3>
<p>
<?php
echo wp_kses(
__('Click below to generate a <b>.wie</b> file for all active widgets.', 'widget-importer-exporter'),
array(
'b' => array(),
)
);
?>
</p>
<p class="submit">
<a href="<?php echo esc_url(admin_url(basename($self) . '?page=' . $page . '&export=1&wie_export_nonce=' . wp_create_nonce('wie_export'))); ?>" id="wie-export-button" class="button button-primary">
<?php echo esc_html_x('Export Widgets', 'button', 'widget-importer-exporter'); ?>
</a>
</p>
</div>
<?php
}
/**
* Have import results to show?
*
* @since 0.3
* @global string $wie_import_results
* @return bool True if have import results to show
*/
function wie_have_import_results()
{
global $wie_import_results;
if (! empty($wie_import_results)) {
return true;
}
return false;
}
/**
* Show import results
*
* This is shown in place of import/export page's regular content.
*
* @since 0.3
* @global string $wie_import_results
*/
function wie_show_import_results()
{
global $wie_import_results;
$self = isset($_SERVER['PHP_SELF']) ? wp_unslash(filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL)) : ''; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
$page = isset($_GET['page']) ? wp_unslash(filter_input(INPUT_GET, 'page', FILTER_SANITIZE_URL)) : ''; //phpcs:ignore WordPress.Security.NonceVerification.Recommended
?>
<h3 class="title"><?php echo esc_html_x('Import Results', 'heading', 'widget-importer-exporter'); ?></h3>
<p>
<?php
printf(
wp_kses(
/* translators: %1$s is URL for widgets screen, %2$s is URL to go back */
__('You can manage your <a href="%1$s">Widgets</a> or <a href="%2$s">Go Back</a>.', 'widget-importer-exporter'),
array(
'a' => array(
'href' => array(),
),
)
),
esc_url(admin_url('widgets.php')),
esc_url(admin_url(basename($self) . '?page=' . $page))
);
?>
</p>
<table id="wie-import-results">
<?php
// Loop sidebars.
$results = $wie_import_results;
foreach ($results as $sidebar) :
?>
<tr class="wie-import-results-sidebar">
<td colspan="2" class="wie-import-results-sidebar-name">
<?php
// Sidebar name if theme supports it; otherwise ID.
echo esc_html($sidebar['name']);
?>
</td>
<td class="wie-import-results-sidebar-message wie-import-results-message wie-import-results-message-<?php echo esc_attr($sidebar['message_type']); ?>">
<?php
// Sidebar may not exist in theme.
echo esc_html($sidebar['message']);
?>
</td>
</tr>
<?php
// Loop widgets.
foreach ($sidebar['widgets'] as $widget) :
?>
<tr class="wie-import-results-widget">
<td class="wie-import-results-widget-name">
<?php
// Widget name or ID if name not available (not supported by site).
echo esc_html($widget['name']);
?>
</td>
<td class="wie-import-results-widget-title">
<?php
// Shows "No Title" if widget instance is untitled.
echo esc_html($widget['title']);
?>
</td>
<td class="wie-import-results-widget-message wie-import-results-message wie-import-results-message-<?php echo esc_attr($widget['message_type']); ?>">
<?php
// Sidebar may not exist in theme.
echo esc_html($widget['message']);
?>
</td>
</tr>
<?php endforeach; ?>
<tr class="wie-import-results-space">
<td colspan="100%"></td>
</tr>
<?php endforeach; ?>
</table>
<?php
}