| Server IP : 104.21.74.147 / Your IP : 216.73.217.154 Web Server : nginx/1.24.0 System : Linux wordpress-sites 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/rebeccaone.com/wp-content/plugins/envira-gallery/src/Utils/ |
Upload File : |
<?php
/**
* Export class.
*
* @since 1.0.0
*
* @package Envira_Gallery
* @author Envira Team
*/
namespace Envira\Utils;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Export class.
*
* @since 1.0.0
*
* @package Envira_Gallery
* @author Envira Team
*/
class Export {
/**
* Path to the file.
*
* @since 1.0.0
*
* @var string
*/
public $file = __FILE__;
/**
* Holds the base class object.
*
* @since 1.0.0
*
* @var object
*/
public $base;
/**
* Primary class constructor.
*
* @since 1.0.0
*/
public function __construct() {
// Export a gallery.
add_action( 'admin_init', [ $this, 'export_gallery' ], 10, 2 );
}
/**
* Exports an Envira gallery.
*
* @since 1.0.0
*
* @return null Return early if failing proper checks to export the gallery.
*/
public function export_gallery() {
if ( ! $this->has_exported_gallery() ) {
return;
}
if ( ! $this->verify_exported_gallery() ) {
return;
}
if ( ! $this->can_export_gallery() ) {
return;
}
// Ignore the user aborting the action.
ignore_user_abort( true );
// Grab the proper data.
$post_id = ( isset( $_POST['envira_post_id'] ) ) ? absint( $_POST['envira_post_id'] ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Missing
$data = get_post_meta( $post_id, '_eg_gallery_data', true );
// Append the in_gallery data checker to the data array.
$data['in_gallery'] = get_post_meta( $post_id, '_eg_in_gallery', true );
// Allow Addons to add to the Gallery export.
$data = apply_filters( 'envira_gallery_export_gallery_data', $data, $post_id );
// Set the proper headers.
nocache_headers();
header( 'Content-Type: application/json; charset=utf-8' );
header( 'Content-Disposition: attachment; filename=envira-gallery-' . $post_id . '-' . gmdate( 'm-d-Y' ) . '.json' );
header( 'Expires: 0' );
// Make the settings downloadable to a JSON file and die.
die( wp_json_encode( $data ) );
}
/**
* Helper method to determine if a gallery export is available.
*
* @since 1.0.0
*
* @return bool True if an exported gallery is available, false otherwise.
*/
public function has_exported_gallery() {
return ! empty( $_POST['envira_export'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}
/**
* Helper method to determine if a gallery export nonce is valid and verified.
*
* @since 1.0.0
*
* @return bool True if the nonce is valid, false otherwise.
*/
public function verify_exported_gallery() {
return isset( $_POST['envira-gallery-export'] ) && wp_verify_nonce( sanitize_key( $_POST['envira-gallery-export'] ), 'envira-gallery-export' );
}
/**
* Helper method to determine if the user can actually export the gallery.
*
* @since 1.0.0
*
* @return bool True if the user can export the gallery, false otherwise.
*/
public function can_export_gallery() {
$manage_options = current_user_can( 'manage_options' );
return apply_filters( 'envira_gallery_export_cap', $manage_options );
}
}