/** * @return NewsletterStatistics */ static function instance() { if (self::$instance == null) { self::$instance = new NewsletterStatistics(); } return self::$instance; }
} 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>
function relink($text, $email_id, $user_id) { return NewsletterStatistics::instance()->relink($text, $email_id, $user_id); }
<?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'); ?> &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'); ?> &id=<?php echo $email->id; ?> "><i class="fa fa-bar-chart"></i></a> </td> </tr> <?php } ?> </table> </div> </div> <!-- END Newsletters --> <!-- START Premium -->
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, '/'); }