/** * export_logs function */ public function export_logs() { global $wpdb; if (empty($_GET['dlm_download_logs'])) { return; } $filter_status = isset($_REQUEST['filter_status']) ? sanitize_text_field($_REQUEST['filter_status']) : ''; $filter_month = !empty($_REQUEST['filter_month']) ? sanitize_text_field($_REQUEST['filter_month']) : ''; $items = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->download_log}\n\t\t \tWHERE type = 'download'\n\t\t \t" . ($filter_status ? "AND download_status = '%s'" : "%s") . "\n\t " . ($filter_month ? "AND download_date >= '%s'" : "%s") . "\n\t " . ($filter_month ? "AND download_date <= '%s'" : "%s") . "\n\t\t \tORDER BY download_date DESC", $filter_status ? $filter_status : "", $filter_month ? date('Y-m-01', strtotime($filter_month)) : "", $filter_month ? date('Y-m-t', strtotime($filter_month)) : "")); $rows = array(); $row = array(); $row[] = __('Download ID', 'download_monitor'); $row[] = __('Version ID', 'download_monitor'); $row[] = __('Filename', 'download_monitor'); $row[] = __('User ID', 'download_monitor'); $row[] = __('User Login', 'download_monitor'); $row[] = __('User Email', 'download_monitor'); $row[] = __('User IP', 'download_monitor'); $row[] = __('User Agent', 'download_monitor'); $row[] = __('Date', 'download_monitor'); $row[] = __('Status', 'download_monitor'); $rows[] = '"' . implode('","', $row) . '"'; if (!empty($items)) { foreach ($items as $item) { $row = array(); $row[] = $item->download_id; $row[] = $item->version_id; $download = new DLM_Download($item->download_id); $download->set_version($item->version_id); if ($download->exists() && $download->get_the_filename()) { $row[] = $download->get_the_filename(); } else { $row[] = '-'; } $row[] = $item->user_id; if ($item->user_id) { $user = get_user_by('id', $item->user_id); } if (!isset($user) || !$user) { $row[] = '-'; $row[] = '-'; } else { $row[] = $user->user_login; $row[] = $user->user_email; } $row[] = $item->user_ip; $row[] = $item->user_agent; $row[] = $item->download_date; $row[] = $item->download_status . ($item->download_status_message ? ' - ' : '') . $item->download_status_message; $rows[] = '"' . implode('","', $row) . '"'; } } $log = implode("\n", $rows); header("Content-type: text/csv"); header("Content-Disposition: attachment; filename=download_log.csv"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Length: " . strlen($log)); echo $log; exit; }
/** * column_default function. * * @access public * * @param mixed $log * @param mixed $column_name * * @return void */ function column_default($log, $column_name) { switch ($column_name) { case 'status': switch ($log->download_status) { case 'failed': $download_status = '<span class="failed" title="' . esc_attr($log->download_status_message) . '"> </span>'; break; case 'redirected': $download_status = '<span class="redirected" title="' . esc_attr($log->download_status_message) . '"> </span>'; break; default: $download_status = '<span class="completed" title="' . __('Download Complete', 'download-monitor') . '"> </span>'; break; } return $download_status; break; case 'date': return '<time title="' . date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), strtotime($log->download_date)) . '"">' . sprintf(__('%s ago', 'download-monitor'), human_time_diff(strtotime($log->download_date), current_time('timestamp'))) . '</time>'; break; case 'download': $download = new DLM_Download($log->download_id); $download->set_version($log->version_id); if (!$download->exists()) { $download_string = sprintf(__('Download #%d (no longer exists)', 'download-monitor'), $log->download_id); } else { $download_string = '<a href="' . admin_url('post.php?post=' . $download->id . '&action=edit') . '">'; $download_string .= '#' . $download->id . ' – ' . $download->get_the_title(); $download_string .= '</a>'; } if ($log->version) { $download_string .= ' (' . sprintf(__('v%s', 'download-monitor'), $log->version) . ')'; } return $download_string; break; case 'file': $download = new DLM_Download($log->download_id); $download->set_version($log->version_id); if ($download->exists() && $download->get_the_filename()) { $download_string = '<code>' . $download->get_the_filename() . '</code>'; } else { $download_string = '–'; } return $download_string; break; case 'user': if ($log->user_id) { $user = get_user_by('id', $log->user_id); } if (!isset($user) || !$user) { $user_string = __('Non-member', 'download-monitor'); } else { $user_string = '<a href="' . admin_url('user-edit.php?user_id=' . $user->ID) . '">'; $user_string .= $user->user_login . ' – '; $user_string .= '<a href="mailto:' . $user->user_email . '">'; $user_string .= $user->user_email; $user_string .= '</a>'; } return $user_string; break; case 'user_ip': return '<a href="http://whois.arin.net/rest/ip/' . $log->user_ip . '" target="_blank">' . $log->user_ip . '</a>'; break; case 'user_ua': $ua = $this->uaparser->parse($log->user_agent); return $ua->toFullString; break; } }
/** * download_data function. * * @access public * @param mixed $atts * @param mixed $content * @return void */ public function download_data($atts) { global $download_monitor; extract(shortcode_atts(array('id' => '', 'data' => '', 'version_id' => '', 'version' => ''), $atts)); $id = apply_filters('dlm_shortcode_download_id', $id); if (empty($id) || empty($data)) { return; } $download = new DLM_Download($id); if ($version) { $version_id = $download->get_version_id($version); } if ($version_id) { $download->set_version($version_id); } switch ($data) { // File / Version Info case 'filename': return $download->get_the_filename(); case 'filetype': return $download->get_the_filetype(); case 'filesize': return $download->get_the_filesize(); case 'version': return $download->get_the_version_number(); // Download Info // Download Info case 'title': return $download->get_the_title(); case 'short_description': return $download->get_the_short_description(); case 'download_link': return $download->get_the_download_link(); case 'download_count': return $download->get_the_download_count(); case 'post_content': return wpautop(wptexturize(do_shortcode($download->post->post_content))); case 'post_date': return date_i18n(get_option('date_format', $download->post->post_date)); case 'author': return $download->get_the_author(); // Images // Images case 'image': return $download->get_the_image('full'); case 'thumbnail': return $download->get_the_image('thumbnail'); // Taxonomies // Taxonomies case 'tags': return get_the_term_list($id, 'dlm_download_tags', '', ', ', ''); case 'categories': return get_the_term_list($id, 'dlm_download_category', '', ', ', ''); } }