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); } }
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); } }