admin_url( 'admin-ajax.php' ), 'importing' => esc_html__('Importing','acme-demo-setup'), 'imported' => esc_html__('Task Completed, view the log below','acme-demo-setup') ) ); } } /** * @return array */ function mime_types( $mimes ) { $add_mimes = array( 'dat' => 'text/plain', 'xml' => 'application/xml', 'wie' => 'text/html' ); return array_merge( $mimes, $add_mimes ); } /** * Create admin pages in menu * * @return void */ function menu() { add_theme_page( __( 'Acme Demo Setup', 'acme-demo-setup' ), __( 'Acme Demo Setup', 'acme-demo-setup' ), 'upload_files', 'acme-demo-setup', array( $this, 'screen' ) ); } /** * The Admin Screen */ function screen() { echo '
'; echo '

' . __( 'Acme Demo Setup', 'acme-demo-setup' ) . '

'; $this->handler(); $this->import_form(); echo '
'; } /** * Handle the demo content upload and called to process * * @return void */ function handler() { $error = ''; $required_files = array(); if ( isset( $_FILES[ 'upload-zip-archive' ][ 'name' ] ) && ! empty( $_FILES[ 'upload-zip-archive' ][ 'name' ] ) ) { /*check for security*/ if ( ! current_user_can( 'upload_files' ) ) { wp_die( __( 'Sorry, you are not allowed to install demo on this site.', 'acme-demo-setup' ) ); } check_admin_referer( 'acme-demo-setup' ); /*file process*/ esc_html_e('Uploading Zip...','acme-demo-import'); echo "
"; $upload_zip_archive = $_FILES[ 'upload-zip-archive' ]; WP_Filesystem(); global $wp_filesystem; $upload_dir = wp_upload_dir(); $destination = $upload_dir['basedir'] . '/acme-demo-importer/'; /*the zip file shouldn't content greater than 3 files*/ if( function_exists( 'ZipArchive')){ $za = new ZipArchive(); $za->open( $upload_zip_archive['tmp_name'] ); $file_on_zip = $za->numFiles; if( $file_on_zip > 3 ){ $error[] = __( "Invalid ZIP greater than 3 files" ,'acme-demo-importer'); } } /*unzip file*/ esc_html_e('Unzipping File...','acme-demo-import'); echo "
"; $unzipfile = unzip_file( $upload_zip_archive['tmp_name'], $destination); if ( !$unzipfile ) { $error[] = __( "Error on unzipping, Please try again" ,'acme-demo-importer'); } /*get required file*/ $dirlist = $wp_filesystem->dirlist($destination); foreach ( (array) $dirlist as $filename => $fileinfo ) { $filetype = wp_check_filetype($filename); $filetype_alternative = substr($filename, strrpos($filename, '.') + 1); if( 'xml' == $filetype['ext'] || 'xml' == $filetype_alternative){ $required_files['xml'] = $destination.$filename; } elseif ('wie' == $filetype['ext'] || 'wie' == $filetype_alternative){ $required_files['wie'] = $destination.$filename; } elseif ( 'dat' == $filetype['ext'] || 'dat' == $filetype_alternative){ $required_files['dat'] = $destination.$filename; } else{ $error[] = sprintf( __( "Invalid ZIP destination file %s" ,'acme-demo-importer'),$destination.$filename ); } } /*prepare array of files to import*/ if( !isset( $required_files['xml'] ) || empty( $required_files['xml'] )){ $error[] = __( "xml file not included" ,'acme-demo-importer'); } if( !isset( $required_files['wie'] ) && empty( $required_files['wie'] )){ $error[] = __( "wie file not included" ,'acme-demo-importer'); } if( !isset( $required_files['dat'] ) && empty( $required_files['dat'] )){ $error[] = __( "dat file not included" ,'acme-demo-importer'); } if( is_array( $error ) && !empty( $error ) ){ foreach ( $error as $e ){ echo $e; echo "
"; } } /*process import*/ $this->import( $required_files , 0); /*delete demo files*/ $wp_filesystem->rmdir($destination, true ); exit; } } /*import */ function import( $required_files, $exit = 1 ){ /*before import*/ do_action( 'acme_demo_setup_before_import',$required_files ); /*xml demo import*/ if( isset( $required_files['xml'] ) && !empty( $required_files['xml'] ) ){ // Try to update PHP memory limit (so that it does not run out of it). ini_set( 'memory_limit', apply_filters( 'acme_demo_setup_memory_limit', '50M' ) ); $xml_import = new Acme_Demo_Setup_Wp_Import(); $xml_import->fetch_attachments = true; set_time_limit(0); $xml_import -> import( $required_files['xml'] ); esc_html_e('Imported Demo Content xml...','acme-demo-import'); echo "

"; } /*customizer import*/ if( isset( $required_files['dat'] ) && !empty( $required_files['dat'] ) ){ $wie_import = new Acme_Demo_Setup_CEI_Core(); $wie_import -> _import( $required_files['dat'] ); esc_html_e('Imported Customizer Data...','acme-demo-import'); echo "

"; } /*widget import*/ if( isset( $required_files['dat'] ) && !empty( $required_files['dat'] ) ){ acme_demo_setup_wie_process_import_file( $required_files['wie'] ); esc_html_e('Imported Widget Data...','acme-demo-import'); echo "

"; } do_action( 'acme_demo_setup_after_import',$required_files ); printf( esc_html__('All Done Visit your %s site %s','acme-demo-import'),'','' ); echo "

"; if( $exit ){ exit; } } /** * The upload form * * @param null */ function import_form( ) { echo '
'; echo '

'. __( 'Upload a zip file containing demo content', 'acme-demo-setup' ) .'

'; echo '

'; echo '

'. sprintf( __( 'Maximum upload file size: %s','acme-demo-setup' ), size_format( wp_max_upload_size() ) ) .'

'; wp_nonce_field( 'acme-demo-setup' ); submit_button( __( 'Upload and Import', 'acme-demo-setup' ) ); echo ""; echo '
'; echo ""; echo ""; echo ""; echo "
"; } }//end class endif; $Acme_Demo_Setup = new Acme_Demo_Setup();