Exemple #1
0
 /**
  * @return NewsletterStatistics
  */
 static function instance()
 {
     if (self::$instance == null) {
         self::$instance = new NewsletterStatistics();
     }
     return self::$instance;
 }
Exemple #2
0
    } else {
        echo $email->status;
    }
    ?>
                    </td>
                    <td><?php 
    if ($email->status == 'sent' || $email->status == 'sending') {
        echo $email->sent . ' of ' . $email->total;
    }
    ?>
</td>
                    <td><?php 
    if ($email->status == 'sent' || $email->status == 'sending') {
        echo $module->format_date($email->send_on);
    }
    ?>
</td>
                    <td>
                        <a class="button" href="<?php 
    echo NewsletterStatistics::instance()->get_statistics_url($email->id);
    ?>
">statistics</a>
                    </td>
                </tr>
            <?php 
}
?>
        </tbody>
    </table>
</div>
Exemple #3
0
 function relink($text, $email_id, $user_id)
 {
     return NewsletterStatistics::instance()->relink($text, $email_id, $user_id);
 }
Exemple #4
0
<?php

require_once NEWSLETTER_INCLUDES_DIR . '/controls.php';
$module = NewsletterStatistics::instance();
$controls = new NewsletterControls();
$email_id = (int) $_GET['id'];
$email = $module->get_email($email_id);
if ($email->send_on == 0) {
    $wpdb->query($wpdb->prepare("update " . NEWSLETTER_EMAILS_TABLE . " set send_on=unix_timestamp(created) where id=%d limit 1", $email->id));
    $email = $module->get_email($email->id);
}
$count = $wpdb->get_var($wpdb->prepare("select count(*) from " . NEWSLETTER_SENT_TABLE . " where email_id=%d", $email_id));
if (true || $count == 0) {
    if (empty($email->query)) {
        $email->query = "select * from " . NEWSLETTER_USERS_TABLE . " where status='C'";
    }
    $query = str_replace('*', 'id, unix_timestamp(created) as created', $email->query);
    $ids = $wpdb->get_results($query . " and unix_timestamp(created)<" . $email->send_on);
    foreach ($ids as $id) {
        $wpdb->query($wpdb->prepare("insert ignore into " . $wpdb->prefix . 'newsletter_sent (user_id, email_id, time, status, error) values (%d, %d, %d, %d, %s)', $id->id, $email->id, $email->send_on, 0, ''));
    }
    $wpdb->query($wpdb->prepare("update " . $wpdb->prefix . "newsletter_sent s1 join " . $wpdb->prefix . "newsletter_stats s2 on s1.user_id=s2.user_id and s1.email_id=s2.email_id and s1.email_id=%d set s1.open=1, s1.ip=s2.ip", $email->id));
    $wpdb->query($wpdb->prepare("update " . $wpdb->prefix . "newsletter_sent s1 join " . $wpdb->prefix . "newsletter_stats s2 on s1.user_id=s2.user_id and s1.email_id=s2.email_id and s2.url<>'' and s1.email_id=%d set s1.open=2, s1.ip=s2.ip", $email->id));
}
$total_count = $total_sent = $email->total;
$open_count = (int) $wpdb->get_var("select count(distinct user_id) from " . NEWSLETTER_STATS_TABLE . " where email_id=" . $email_id);
$click_count = (int) $wpdb->get_var("select count(distinct user_id) from " . NEWSLETTER_STATS_TABLE . " where url<>'' and email_id=" . $email_id);
function percent($value, $total)
{
    if ($total == 0) {
        return '-';
if ($controls->is_action('trigger_followup')) {
    NewsletterFollowup::instance()->send();
    $controls->messages = 'Follow up delivery engine triggered.';
}
if ($controls->is_action('engine_on')) {
    wp_clear_scheduled_hook('newsletter');
    wp_schedule_event(time() + 30, 'newsletter', 'newsletter');
    $controls->messages = 'Delivery engine reactivated.';
}
if ($controls->is_action('upgrade')) {
    // TODO: Compact them in a call to Newsletter which should be able to manage the installed modules
    Newsletter::instance()->upgrade();
    NewsletterUsers::instance()->upgrade();
    NewsletterSubscription::instance()->upgrade();
    NewsletterEmails::instance()->upgrade();
    NewsletterStatistics::instance()->upgrade();
    if (method_exists('NewsletterFollowup', 'upgrade')) {
        NewsletterFollowup::instance()->upgrade();
    }
    $controls->messages = 'Upgrade forced!';
}
if ($controls->is_action('upgrade_old')) {
    $row = $wpdb->get_row("select * from " . NEWSLETTER_USERS_TABLE . " limit 1");
    if (!isset($row->id)) {
        $row = $wpdb->query("alter table " . NEWSLETTER_USERS_TABLE . " drop primary key");
        $row = $wpdb->query("alter table " . NEWSLETTER_USERS_TABLE . " add column id int not null auto_increment primary key");
        $row = $wpdb->query("alter table " . NEWSLETTER_USERS_TABLE . " add unique email (email)");
    }
    $controls->messages = 'Done.';
}
if ($controls->is_action('delete_transient')) {
                                        <td style="white-space:nowrap">
                                            <a class="button" title="<?php 
    _e('Edit', 'newsletter');
    ?>
" href="<?php 
    echo $emails_module->get_admin_page_url('edit');
    ?>
&amp;id=<?php 
    echo $email->id;
    ?>
"><i class="fa fa-pencil"></i></a>
                                            <a class="button" title="<?php 
    _e('Statistics', 'newsletter');
    ?>
" href="<?php 
    echo NewsletterStatistics::instance()->get_admin_page_url('view');
    ?>
&amp;id=<?php 
    echo $email->id;
    ?>
"><i class="fa fa-bar-chart"></i></a>
                                        </td>
                                    </tr>
                                <?php 
}
?>
                                </table>
                            </div>
                        </div>
                        <!-- END Newsletters -->
                        <!-- START Premium -->
Exemple #7
0
global $wpdb;
if (!defined('ABSPATH')) {
    include '../../../../wp-load.php';
}
list($email_id, $user_id, $url, $anchor, $key) = explode(';', base64_decode($_GET['r']), 5);
if (!is_user_logged_in()) {
    if (empty($email_id) || empty($user_id) || empty($url)) {
        header("HTTP/1.0 404 Not Found");
        die;
    }
}
$parts = parse_url($url);
//die($url);
$verified = $parts['host'] == $_SERVER['HTTP_HOST'];
if (!$verified) {
    $options = NewsletterStatistics::instance()->options;
    $verified = $key == md5($email_id . ';' . $user_id . ';' . $url . ';' . $anchor . $options['key']);
}
// For feed by mail tests
if ($verified && empty($email_id) && is_user_logged_in()) {
    header('Location: ' . $url);
    die;
}
$ip = preg_replace('/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR']);
if ($verified) {
    $wpdb->insert(NEWSLETTER_STATS_TABLE, array('email_id' => $email_id, 'user_id' => $user_id, 'url' => $url, 'ip' => $ip));
    $wpdb->query($wpdb->prepare("update " . NEWSLETTER_SENT_TABLE . " set open=2, ip=%s where email_id=%d and user_id=%d limit 1", $ip, $email_id, $user_id));
    $user = Newsletter::instance()->get_user($user_id);
    if ($user) {
        setcookie('newsletter', $user->id . '-' . $user->token, time() + 60 * 60 * 24 * 365, '/');
    }