function wpuxss_eml_settings_cleanup()
 {
     global $wpdb;
     if (!isset($_POST['eml-settings-cleanup'])) {
         return;
     }
     if (!wp_verify_nonce($_POST['eml-settings-cleanup-nonce'], 'eml_settings_cleanup_nonce')) {
         return;
     }
     if (!current_user_can('manage_options')) {
         return;
     }
     foreach (get_option('wpuxss_eml_taxonomies', array()) as $taxonomy => $params) {
         $terms = get_terms($taxonomy, array('fields' => 'all', 'get' => 'all'));
         $term_pairs = wpuxss_eml_get_media_term_pairs($terms, 'id=>tt_id');
         if ((bool) $params['eml_media']) {
             foreach ($term_pairs as $id => $tt_id) {
                 wp_delete_term($id, $taxonomy);
             }
             $wpdb->delete($wpdb->term_taxonomy, array('taxonomy' => $taxonomy), array('%s'));
             delete_option($taxonomy . '_children');
         } elseif (!empty($term_pairs)) {
             $deleted_tt_ids = array();
             $rows2remove_format = join(', ', array_fill(0, count($term_pairs), '%d'));
             $results = $wpdb->get_results($wpdb->prepare("\n                        SELECT {$wpdb->term_relationships}.term_taxonomy_id, {$wpdb->term_relationships}.object_id\n                        FROM {$wpdb->term_relationships}\n                        INNER JOIN {$wpdb->posts}\n                        ON {$wpdb->term_relationships}.object_id = {$wpdb->posts}.ID\n                        WHERE {$wpdb->posts}.post_type = 'attachment'\n                        AND {$wpdb->term_relationships}.term_taxonomy_id IN ({$rows2remove_format})\n                \t", $term_pairs));
             foreach ($results as $result) {
                 $deleted_tt_ids[$result->object_id][] = $result->term_taxonomy_id;
             }
             foreach ($deleted_tt_ids as $attachment_id => $tt_ids) {
                 do_action('delete_term_relationships', $attachment_id, $tt_ids);
             }
             $removed = $wpdb->query($wpdb->prepare("\n                        DELETE {$wpdb->term_relationships}.* FROM {$wpdb->term_relationships}\n                        INNER JOIN {$wpdb->posts}\n                        ON {$wpdb->term_relationships}.object_id = {$wpdb->posts}.ID\n                        WHERE {$wpdb->posts}.post_type = 'attachment'\n                        AND {$wpdb->term_relationships}.term_taxonomy_id IN ({$rows2remove_format})\n                \t", $term_pairs));
             if (false !== $removed) {
                 foreach ($deleted_tt_ids as $attachment_id => $tt_ids) {
                     do_action('deleted_term_relationships', $attachment_id, $tt_ids);
                 }
             }
         }
     }
     $options = array('wpuxss_eml_version', 'wpuxss_eml_taxonomies', 'wpuxss_eml_lib_options', 'wpuxss_eml_tax_options', 'wpuxss_eml_mimes_backup', 'wpuxss_eml_mimes', 'wpuxss_eml_backup', 'wpuxss_eml_pro_bulkedit_savebutton_off', 'wpuxss_eml_pro_license_key');
     foreach ($options as $option) {
         delete_option($option);
     }
     deactivate_plugins(wpuxss_get_eml_basename());
     wp_safe_redirect(admin_url('plugins.php'));
     exit;
 }
 function wpuxss_eml_enqueue_media()
 {
     global $wpuxss_eml_version, $wpuxss_eml_dir, $wp_version, $current_screen;
     if (!is_admin()) {
         return;
     }
     $media_library_mode = get_user_option('media_library_mode', get_current_user_id()) ? get_user_option('media_library_mode', get_current_user_id()) : 'grid';
     $wpuxss_eml_lib_options = get_option('wpuxss_eml_lib_options');
     $wpuxss_eml_tax_options = get_option('wpuxss_eml_tax_options');
     $wpuxss_eml_taxonomies = get_option('wpuxss_eml_taxonomies', array());
     $media_taxonomies = get_object_taxonomies('attachment', 'object');
     $media_taxonomy_names = array_keys($media_taxonomies);
     $media_taxonomies_ready_for_script = array();
     $filter_taxonomy_names_ready_for_script = array();
     $compat_taxonomies_to_hide = array();
     $terms = get_terms($media_taxonomy_names, array('fields' => 'all', 'get' => 'all'));
     $terms_id_tt_id_ready_for_script = wpuxss_eml_get_media_term_pairs($terms, 'id=>tt_id');
     $terms_id_name_ready_for_script = wpuxss_eml_get_media_term_pairs($terms, 'id=>name');
     foreach ($media_taxonomies as $taxonomy) {
         $taxonomy_terms = array();
         ob_start();
         wp_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'checked_ontop' => false, 'walker' => new Walker_Media_Taxonomy_Uploader_Filter()));
         $html = '';
         if (ob_get_contents() != false) {
             $html = ob_get_contents();
         }
         ob_end_clean();
         $html = str_replace('}{', '},{', $html);
         $html = '[' . $html . ']';
         $taxonomy_terms = json_decode($html, true);
         $media_taxonomies_ready_for_script[$taxonomy->name] = array('singular_name' => $taxonomy->labels->singular_name, 'plural_name' => $taxonomy->labels->name, 'term_list' => $taxonomy_terms, 'terms' => $terms_id_name_ready_for_script);
         if ((bool) $wpuxss_eml_taxonomies[$taxonomy->name]['media_uploader_filter']) {
             $filter_taxonomy_names_ready_for_script[] = $taxonomy->name;
         }
         if (!(bool) $wpuxss_eml_taxonomies[$taxonomy->name]['media_popup_taxonomy_edit']) {
             $compat_taxonomies_to_hide[] = $taxonomy->name;
         }
     }
     // generic scripts
     wp_enqueue_script('wpuxss-eml-media-models-script', $wpuxss_eml_dir . 'js/eml-media-models.js', array('media-models'), $wpuxss_eml_version, true);
     wp_enqueue_script('wpuxss-eml-media-views-script', $wpuxss_eml_dir . 'js/eml-media-views.js', array('media-views'), $wpuxss_eml_version, true);
     // TODO:
     //        wp_enqueue_script(
     //            'wpuxss-eml-tags-box-script',
     //            '/wp-admin/js/tags-box.js',
     //            array(),
     //            $wpuxss_eml_version,
     //            true
     //        );
     $media_models_l10n = array('media_orderby' => $wpuxss_eml_lib_options['media_orderby'], 'media_order' => $wpuxss_eml_lib_options['media_order'], 'bulk_edit_nonce' => wp_create_nonce('eml-bulk-edit-nonce'));
     wp_localize_script('wpuxss-eml-media-models-script', 'wpuxss_eml_media_models_l10n', $media_models_l10n);
     $media_views_l10n = array('terms' => $terms_id_tt_id_ready_for_script, 'taxonomies' => $media_taxonomies_ready_for_script, 'filter_taxonomies' => $filter_taxonomy_names_ready_for_script, 'compat_taxonomies' => $media_taxonomy_names, 'compat_taxonomies_to_hide' => $compat_taxonomies_to_hide, 'is_tax_compat' => count($media_taxonomy_names) - count($compat_taxonomies_to_hide) > 0 ? 1 : 0, 'force_filters' => $wpuxss_eml_tax_options['force_filters'], 'wp_version' => $wp_version, 'uncategorized' => __('All Uncategorized', 'enhanced-media-library'), 'filter_by' => __('Filter by', 'enhanced-media-library'), 'in' => __('All', 'enhanced-media-library'), 'not_in' => __('Not in', 'enhanced-media-library'), 'reset_filters' => __('Reset All Filters', 'enhanced-media-library'), 'current_screen' => isset($current_screen) ? $current_screen->id : '');
     wp_localize_script('wpuxss-eml-media-views-script', 'wpuxss_eml_media_views_l10n', $media_views_l10n);
     if (wpuxss_eml_enhance_media_shortcodes()) {
         wp_enqueue_script('wpuxss-eml-enhanced-medialist-script', $wpuxss_eml_dir . 'js/eml-enhanced-medialist.js', array('media-views'), $wpuxss_eml_version, true);
         wp_enqueue_script('wpuxss-eml-media-editor-script', $wpuxss_eml_dir . 'js/eml-media-editor.js', array('media-editor', 'media-views', 'wpuxss-eml-enhanced-medialist-script'), $wpuxss_eml_version, true);
         $enhanced_medialist_l10n = array('uploaded_to' => __('Uploaded to post #', 'enhanced-media-library'), 'based_on' => __('Based On', 'enhanced-media-library'));
         wp_localize_script('wpuxss-eml-enhanced-medialist-script', 'wpuxss_eml_enhanced_medialist_l10n', $enhanced_medialist_l10n);
     }
     // scripts for grid view :: /wp-admin/upload.php
     if (isset($current_screen) && 'upload' === $current_screen->base && 'grid' === $media_library_mode) {
         wp_enqueue_script('wpuxss-eml-media-grid-script', $wpuxss_eml_dir . 'js/eml-media-grid.js', array('media'), $wpuxss_eml_version, true);
     }
 }
Esempio n. 3
0
 function wpuxss_eml_delete_post()
 {
     if (empty($action)) {
         $action = 'delete-post';
     }
     $id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
     check_ajax_referer("{$action}_{$id}");
     if (!current_user_can('delete_post', $id)) {
         wp_die(-1);
     }
     if (!($post = get_post($id))) {
         wp_die(1);
     }
     if ('attachment' === $post->post_type) {
         $response = array();
         $wpuxss_eml_tax_options = get_option('wpuxss_eml_tax_options');
         if (wp_delete_post($id)) {
             if ((bool) $wpuxss_eml_tax_options['show_count']) {
                 $terms = get_terms(get_object_taxonomies('attachment', 'names'), array('fields' => 'all', 'get' => 'all'));
                 foreach (wpuxss_eml_get_media_term_pairs($terms, 'id=>tt_id') as $term_id => $tt_id) {
                     $response['tcount'][$term_id] = wpuxss_eml_get_media_term_count($term_id, $tt_id);
                 }
             }
             wp_send_json_success($response);
         } else {
             wp_send_json_error();
         }
     } elseif (wp_delete_post($id)) {
         wp_die(1);
     } else {
         wp_die(0);
     }
 }