get_var("SELECT ID FROM $wpdb->posts WHERE guid LIKE '$url';"); return $object; } function jpn_oh_my_glob($dir, $flags = 0) { $files = glob($dir.'/*.{*}', GLOB_BRACE); foreach(glob($dir.'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $glob){ if (substr($glob, -19) != 'jpn-analyse-uploads') { $files = array_merge($files, jpn_oh_my_glob($dir.'/'.basename($glob))); } } return $files; } function jpn_may_glob_have_mercy($dir, $prefix = '') { $dir = rtrim($dir, '/'); $result = array(); foreach (glob("$dir/*", GLOB_MARK) as $f) { if (substr($f, -1) === '/') { $result = array_merge($result, jpn_may_glob_have_mercy($f, $prefix . basename($f) . '/')); } else { $result[] = $prefix . basename($f); } } return $result; } function jpn_one_nation_under_glob($term) { $file = get_option('jpn_au_themefile'); $glob = false; $file_content = file($file); foreach ($file_content as $line) { if(strpos($line, $term) !== false) { $glob = true; } } return $glob; } function jpn_going_postal($url) { global $wpdb; $results = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type != 'revision' AND post_content REGEXP '$url';"); return (!empty($results) ? true : false); //return $results; } function jpn_thats_so_meta($url, $id = false) { global $wpdb; $url = esc_url($url); $id = ($id ? esc_html(sanitize_text_field($id)) : false); $idQuery = ($id ? "OR meta_value LIKE '$id'" : ""); $results = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE post_id != '1' AND (meta_value LIKE '$url' $idQuery);"); return (!empty($results) ? true : false); //return $results; } add_action( 'wp_ajax_nopriv_jpn_where_my_files_at', 'jpn_where_my_files_at' ); add_action( 'wp_ajax_jpn_where_my_files_at', 'jpn_where_my_files_at' ); function jpn_where_my_files_at() { $object = wp_upload_dir(); $url = $object['baseurl']; $dir = $object['basedir']; $glob = jpn_oh_my_glob($dir); echo json_encode($glob); die(); } add_action( 'wp_ajax_nopriv_jpn_do_the_thing', 'jpn_do_the_thing' ); add_action( 'wp_ajax_jpn_do_the_thing', 'jpn_do_the_thing' ); function jpn_do_the_thing() { $time = microtime(true); $val = esc_html(sanitize_text_field($_POST['file'])); $object = wp_upload_dir(); $dir = addslashes($object['basedir']); $url = $object['baseurl']; $path = str_replace($dir, '', $val); $id = jpn_attachment_id($url.$path); $file['id'] = $id; $file['url'] = $val; $file['size'] = jpn_how_big_is_it($val, 'file'); $file['actual'] = filesize($val); $file['theme'] = jpn_one_nation_under_glob($url.$path); $file['posts'] = jpn_going_postal($url.$path); $file['meta'] = jpn_thats_so_meta($url.$path, $id); $file['href'] = esc_url($url.$path); $file['time'] = microtime(true) - $time; echo json_encode($file); die(); } function jpn_hello_is_it_me_youre_looking_for($id) { global $wpdb; $title_exists = false; $title_exists = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = '$id' AND post_type = 'attachment'" ) ); return $title_exists; } add_action( 'wp_ajax_nopriv_jpn_time_to_die', 'jpn_time_to_die' ); add_action( 'wp_ajax_jpn_time_to_die', 'jpn_time_to_die' ); function jpn_time_to_die() { $fileList = $_POST['idlist']; $object = wp_upload_dir(); $dir = $object['basedir']; $files = explode(', ', $fileList); if (!empty($files)) { foreach ($files as $file) { $file = esc_html(sanitize_text_field($file)); if (trim($file) != '') { if (substr( $file, 0, 6 ) === "JPNID:") { $id = (int)str_replace('JPNID:', '', $file); if (trim($id) != '') { if (jpn_hello_is_it_me_youre_looking_for($id)) { wp_delete_attachment($id, true); } } } else { unlink($file); } } } } else { if (trim($fileList) != '') { $fileList = esc_html(sanitize_text_field($fileList)); if (substr( $fileList, 0, 6 ) === "JPNID:") { $id = (int)str_replace('JPNID:', '', $fileList); if (trim($id) != '') { if (jpn_hello_is_it_me_youre_looking_for($id)) { wp_delete_attachment($id, true); } } } else { if (file_exists($fileList)) { unlink($fileList); } } } } echo json_encode($return); die(); } add_action( 'admin_menu', 'jpn_analyse_uploads_menu' ); function jpn_analyse_uploads_menu() { add_menu_page( 'Analyse Uploads', 'Analyse Uploads', 'manage_options', 'jpn-analyse-uploads', 'jpn_analyse_uploads_options_page', 'dashicons-welcome-view-site' ); } function jpn_analyse_uploads_options_page() { ?>
Analyses and allows you to remove unused media upload files.
Saving 0 b