Файловый менеджер - Редактировать - /home/admin/domains/octawebtools.com/public_html/wp-content/plugins/emoji-picker/includes/admin/import-export.php
�азад
<?php if (!defined('ABSPATH')) { exit; } class Emoji_Picker_Import_Export { public function __construct() { add_action('admin_menu', array($this, 'add_import_export_menu')); add_action('admin_init', array($this, 'handle_import')); add_action('admin_init', array($this, 'handle_export')); } public function add_import_export_menu() { add_submenu_page( 'emoji-picker', __('Import Emojis', 'emoji-picker'), __('Import Emojis', 'emoji-picker'), 'manage_options', 'emoji-picker-import', array($this, 'import_page_content') ); add_submenu_page( 'emoji-picker', __('Export Emojis', 'emoji-picker'), __('Export Emojis', 'emoji-picker'), 'manage_options', 'emoji-picker-export', array($this, 'export_page_content') ); } public function import_page_content() { ?> <div class="wrap"> <h1><?php esc_html_e('Import Emojis', 'emoji-picker'); ?></h1> <div class="emoji-import-container"> <div class="emoji-import-form"> <h2><?php esc_html_e('Upload CSV File', 'emoji-picker'); ?></h2> <?php if (isset($_GET['import_result'])) : ?> <?php $result = json_decode(base64_decode($_GET['import_result']), true); ?> <div class="notice notice-<?php echo $result['success'] ? 'success' : 'error'; ?>"> <p> <?php printf( esc_html__('Imported: %d, Skipped: %d', 'emoji-picker'), $result['imported'], $result['skipped'] ); ?> </p> </div> <?php endif; ?> <form method="post" enctype="multipart/form-data"> <?php wp_nonce_field('emoji_picker_import', 'emoji_picker_import_nonce'); ?> <p> <label for="emoji_csv_file"><?php esc_html_e('Select CSV file:', 'emoji-picker'); ?></label> <input type="file" name="emoji_csv_file" id="emoji_csv_file" accept=".csv,.txt"> </p> <p class="description"> <?php esc_html_e('CSV format should be: emoji,name,group,sub_group,codepoints', 'emoji-picker'); ?> </p> <p> <input type="submit" name="emoji_picker_import" class="button button-primary" value="<?php esc_attr_e('Import Emojis', 'emoji-picker'); ?>"> </p> </form> </div> <div class="emoji-import-sample"> <h3><?php esc_html_e('Sample CSV Format', 'emoji-picker'); ?></h3> <textarea class="sample-csv" rows="10" readonly> 😀,grinning face,Smileys & Emotion,face-smiling,1F600 😂,face with tears of joy,Smileys & Emotion,face-smiling,1F602 ❤️,red heart,Smileys & Emotion,emotion,2764 👍,thumbs up,People & Body,hand-fingers-closed,1F44D 🍕,pizza,Food & Drink,food-prepared,1F355 ⚽,soccer ball,Activities,sport,26BD 🐶,dog face,Animals & Nature,animal-mammal,1F436 🌍,globe showing Europe-Africa,Travel & Places,place-map,1F30D 🎉,party popper,Activities,event,1F389 📱,mobile phone,Objects & Gadgets,phone,1F4F1</textarea> <p> <a href="<?php echo esc_url(plugin_dir_url(__FILE__) . '../../assets/sample-emojis.csv'); ?>" class="button" download="sample-emojis.csv"> <?php esc_html_e('Download Sample CSV', 'emoji-picker'); ?> </a> </p> </div> </div> </div> <?php } public function export_page_content() { ?> <div class="wrap"> <h1><?php esc_html_e('Export Emojis', 'emoji-picker'); ?></h1> <div class="emoji-export-container"> <div class="emoji-export-form"> <h2><?php esc_html_e('Export Options', 'emoji-picker'); ?></h2> <form method="post"> <?php wp_nonce_field('emoji_picker_export', 'emoji_picker_export_nonce'); ?> <p> <label for="export_group"><?php esc_html_e('Filter by group:', 'emoji-picker'); ?></label> <select name="export_group" id="export_group"> <option value=""><?php esc_html_e('All Groups', 'emoji-picker'); ?></option> <?php foreach (Emoji_Picker_Database::get_categories()['groups'] as $group) : ?> <option value="<?php echo esc_attr($group); ?>"><?php echo esc_html($group); ?></option> <?php endforeach; ?> </select> </p> <p> <label for="export_sub_group"><?php esc_html_e('Filter by sub-group:', 'emoji-picker'); ?></label> <select name="export_sub_group" id="export_sub_group"> <option value=""><?php esc_html_e('All Sub-groups', 'emoji-picker'); ?></option> <?php foreach (Emoji_Picker_Database::get_categories()['sub_groups'] as $sub_group) : ?> <option value="<?php echo esc_attr($sub_group); ?>"><?php echo esc_html($sub_group); ?></option> <?php endforeach; ?> </select> </p> <p> <label for="export_format"><?php esc_html_e('Export format:', 'emoji-picker'); ?></label> <select name="export_format" id="export_format"> <option value="csv">CSV</option> <option value="json">JSON</option> </select> </p> <p> <input type="submit" name="emoji_picker_export" class="button button-primary" value="<?php esc_attr_e('Export Emojis', 'emoji-picker'); ?>"> </p> </form> </div> </div> </div> <?php } public function handle_import() { if (!isset($_POST['emoji_picker_import']) || !isset($_FILES['emoji_csv_file'])) { return; } check_admin_referer('emoji_picker_import', 'emoji_picker_import_nonce'); if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.', 'emoji-picker')); } $file = $_FILES['emoji_csv_file']; if ($file['error'] !== UPLOAD_ERR_OK) { wp_die(__('Error uploading file.', 'emoji-picker')); } $filetype = wp_check_filetype($file['name']); if (!in_array($filetype['ext'], array('csv', 'txt'))) { wp_die(__('Invalid file type. Please upload a CSV or TXT file.', 'emoji-picker')); } $upload_dir = wp_upload_dir(); $file_path = $upload_dir['path'] . '/' . sanitize_file_name($file['name']); if (!move_uploaded_file($file['tmp_name'], $file_path)) { wp_die(__('Error moving uploaded file.', 'emoji-picker')); } $result = Emoji_Picker_Database::import_from_csv($file_path); unlink($file_path); $redirect_url = add_query_arg( array( 'page' => 'emoji-picker-import', 'import_result' => base64_encode(json_encode($result)) ), admin_url('admin.php') ); wp_redirect($redirect_url); exit; } public function handle_export() { if (!isset($_POST['emoji_picker_export'])) { return; } check_admin_referer('emoji_picker_export', 'emoji_picker_export_nonce'); if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.', 'emoji-picker')); } $group = isset($_POST['export_group']) ? sanitize_text_field($_POST['export_group']) : ''; $sub_group = isset($_POST['export_sub_group']) ? sanitize_text_field($_POST['export_sub_group']) : ''; $format = isset($_POST['export_format']) ? sanitize_text_field($_POST['export_format']) : 'csv'; $args = array(); if ($group) { $args['group'] = $group; } if ($sub_group) { $args['sub_group'] = $sub_group; } $emojis = Emoji_Picker_Database::get_emojis($args); if ($format === 'json') { $this->export_json($emojis, $group, $sub_group); } else { $this->export_csv($emojis, $group, $sub_group); } exit; } private function export_csv($emojis, $group = '', $sub_group = '') { $filename = 'emojis-export-' . ($group ? sanitize_title($group) . '-' : '') . ($sub_group ? sanitize_title($sub_group) . '-' : '') . date('Y-m-d') . '.csv'; header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); $output = fopen('php://output', 'w'); fputcsv($output, array('emoji', 'name', 'group', 'sub_group', 'codepoints')); foreach ($emojis as $emoji) { fputcsv($output, array( $emoji->emoji_char, $emoji->emoji_name, $emoji->emoji_group, $emoji->sub_group, $emoji->codepoints )); } fclose($output); } private function export_json($emojis, $group = '', $sub_group = '') { $filename = 'emojis-export-' . ($group ? sanitize_title($group) . '-' : '') . ($sub_group ? sanitize_title($sub_group) . '-' : '') . date('Y-m-d') . '.json'; header('Content-Type: application/json'); header('Content-Disposition: attachment; filename="' . $filename . '"'); $data = array(); foreach ($emojis as $emoji) { $data[] = array( 'emoji' => $emoji->emoji_char, 'name' => $emoji->emoji_name, 'group' => $emoji->emoji_group, 'sub_group' => $emoji->sub_group, 'codepoints' => $emoji->codepoints ); } echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.32 | Генераци� �траницы: 0 |
proxy
|
phpinfo
|
�а�тройка