Guest User

Untitled

a guest
Apr 28th, 2016
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.97 KB | None | 0 0
  1. <?php
  2.  
  3.     class Auto_User extends WP_User {
  4.  
  5.         var $db;
  6.         var $blog_id = false;
  7.         var $site_id = false;
  8.  
  9.         function Auto_User( $id, $name = '' ) {
  10.  
  11.             global $wpdb, $blog_id, $site_id;
  12.  
  13.             if($id != 0) {
  14.                 parent::__construct( $id, $name = '' );
  15.             }
  16.  
  17.  
  18.             $this->db =& $wpdb;
  19.             $this->blog_id = $blog_id;
  20.             $this->site_id = $site_id;
  21.  
  22.         }
  23.  
  24.         function set_blog_id( $blog_id ) {
  25.             $this->blog_id = (int) $blog_id;
  26.  
  27.             update_user_meta($this->ID, '_automessage_on_blog', (int) $blog_id);
  28.  
  29.         }
  30.  
  31.         function set_site_id( $site_id ) {
  32.             $this->site_id = (int) $site_id;
  33.         }
  34.  
  35.         function send_message( $subject, $message ) {
  36.  
  37.             if(!empty($this->user_email)) {
  38.  
  39.                 $blog_id = get_user_meta( $this->ID, '_automessage_on_blog', true );
  40.  
  41.                 if(empty($blog_id)) {
  42.                     $blog_id = $this->blog_id;
  43.                 }
  44.  
  45.                 if(function_exists('get_blog_option')) {
  46.                     $replacements = array(  "/%blogname%/"  =>  get_blog_option( $blog_id,'blogname'),
  47.                                             "/%blogurl%/"   =>  untrailingslashit(get_blog_option( $blog_id,'home')),
  48.                                             "/%username%/"  =>  $this->user_login,
  49.                                             "/%usernicename%/"  =>  $this->user_nicename
  50.                                         );
  51.                 } else {
  52.                     $replacements = array(  "/%blogname%/"  =>  get_option('blogname'),
  53.                                             "/%blogurl%/"   =>  untrailingslashit(get_option('home')),
  54.                                             "/%username%/"  =>  $this->user_login,
  55.                                             "/%usernicename%/"  =>  $this->user_nicename
  56.                                         );
  57.                 }
  58.  
  59.  
  60.  
  61.                 if(function_exists('get_site_details')) {
  62.                     $site = get_site_details($this->site_id);
  63.                     $replacements['/%sitename%/'] = $site->sitename;
  64.                     $replacements['/%siteurl%/'] = 'http://' . $site->domain . $site->path;
  65.                 } else {
  66.                     // Site exists
  67.                     if(!empty($this->db->sitemeta)) {
  68.                         $site = $this->db->get_row( $this->db->prepare("SELECT * FROM {$this->db->site} WHERE id = %d", $this->site_id));
  69.                         $replacements['/%sitename%/'] = $this->db->get_var( $this->db->prepare("SELECT meta_value FROM {$this->db->sitemeta} WHERE meta_key = 'site_name' AND site_id = %d", $this->site_id) );
  70.                         $replacements['/%siteurl%/'] = 'http://' . $site->domain . $site->path;
  71.                     } else {
  72.                         // Not a multisite install
  73.                         $replacements['/%sitename%/'] = $replacements['/%blogname%/'];
  74.                         $replacements['/%siteurl%/'] = $replacements['/%blogurl%/'];
  75.                     }
  76.  
  77.  
  78.                 }
  79.                 $replacements['/%siteurl%/'] = untrailingslashit($replacements['/%siteurl%/']);
  80.  
  81.                 $replacements = apply_filters('automessage_replacements', $replacements);
  82.  
  83.                 if(!empty($message)) {
  84.                     $subject = stripslashes($subject);
  85.                     $msg = stripslashes($message);
  86.  
  87.                     $find = array_keys($replacements);
  88.                     $replace = array_values($replacements);
  89.  
  90.                     $msg = preg_replace($find, $replace, $msg);
  91.                     $subject = preg_replace($find, $replace, $subject);
  92.                    
  93.                     // Add in the unsubscribe text at the bottom of the message
  94.                     $msg .= "\n\n"; // Two blank lines
  95.                     $msg .= "\n"; // Footer marker
  96.                     $msg .= "<p style='font-size:10px;'>Not interested anymore? <a href='".$replacements['/%siteurl%/']."/unsubscribe/".md5( $this->ID . '116224' )."'>Unsubscribe</a></p>";
  97.  
  98.                     // Set up the from address
  99.                     $header = 'From: "' . $replacements['/%sitename%/'] . '" <noreply@' . str_replace('http://', '', $replacements['/%siteurl%/']) . '>';
  100.                     $res = @wp_mail( $this->user_email, $subject, $msg, $header );
  101.  
  102.                     do_action( 'automessage_sent_to', $this->ID);
  103.  
  104.                 }
  105.  
  106.             }
  107.  
  108.         }
  109.  
  110.         function send_unsubscribe() {
  111.  
  112.             $replacements = array(  "/%blogname%/"  =>  get_option('blogname'),
  113.                                     "/%blogurl%/"   =>  untrailingslashit(get_option('home')),
  114.                                     "/%username%/"  =>  $this->user_login,
  115.                                     "/%usernicename%/"  =>  $this->user_nicename
  116.                                 );
  117.  
  118.             if(function_exists('get_site_details')) {
  119.                 $site = get_site_details($this->site_id);
  120.                 $replacements['/%sitename%/'] = $site->sitename;
  121.                 $replacements['/%siteurl%/'] = 'http://' . $site->domain . $site->path;
  122.             } else {
  123.                 // Site exists
  124.                 if(!empty($this->db->sitemeta)) {
  125.                     $site = $this->db->get_row( $this->db->prepare("SELECT * FROM {$this->db->site} WHERE id = %d", $this->site_id));
  126.                     $replacements['/%sitename%/'] = $this->db->get_var( $this->db->prepare("SELECT meta_value FROM {$this->db->sitemeta} WHERE meta_key = 'site_name' AND site_id = %d", $this->site_id) );
  127.                     $replacements['/%siteurl%/'] = 'http://' . $site->domain . $site->path;
  128.                 } else {
  129.                     // Not a multisite install
  130.                     $replacements['/%sitename%/'] = $replacements['/%blogname%/'];
  131.                     $replacements['/%siteurl%/'] = $replacements['/%blogurl%/'];
  132.                 }
  133.             }
  134.             $replacements['/%siteurl%/'] = untrailingslashit($replacements['/%siteurl%/']);
  135.  
  136.             $replacements = apply_filters('automessage_replacements', $replacements);
  137.  
  138.             $header = 'From: "' . $replacements['/%sitename%/'] . '" <noreply@' . str_replace('http://', '', $replacements['/%siteurl%/']) . '>';
  139.             $res = @wp_mail( $this->user_email, __("Unsubscribe request processed", 'automessage'), __("Your unsubscribe request has been processed and you have been removed from our mailing list.\n\nThank you\n\n", 'automessage'), $header );
  140.             return $res;
  141.         }
  142.  
  143.         function current_action( $type = 'user') {
  144.             $blog_id = get_current_blog_id();
  145.             $blog_id = ($type == 'user' && $blog_id != 1 && $blog_id != '') ? '_'.$blog_id : '';
  146.  
  147.             $action = get_user_meta( $this->ID, '_automessage_on_' . $type . '_action'.$blog_id, true );
  148.  
  149.             if(empty($action)) {
  150.                 return false;
  151.             } else {
  152.                 if(is_array($action)) {
  153.                     return array_shift($action);
  154.                 } else {
  155.                     return $action;
  156.                 }
  157.             }
  158.         }
  159.  
  160.         function on_action( $type = 'user', $blog_id = 0) {
  161.             $blog_id = get_current_blog_id();
  162.             $blog_id = ($type == 'user' && $blog_id != 1 && $blog_id != '') ? '_'.$blog_id : '';
  163.  
  164.             $action = get_user_meta( $this->ID, '_automessage_on_' . $type . '_action'.$blog_id, true );
  165.  
  166.             if(empty($action)) {
  167.                 return false;
  168.             } else {
  169.                 return true;
  170.             }
  171.         }
  172.  
  173.         function schedule_message( $message_id, $timestamp, $type = 'user' ) {
  174.             $blog_id = get_current_blog_id();
  175.             $blog_id = ($type == 'user' && $blog_id != 1 && $blog_id != '') ? '_'.$blog_id : '';
  176.  
  177.             update_user_meta($this->ID, '_automessage_on_' . $type . '_action'.$blog_id, (int) $message_id);
  178.             update_user_meta($this->ID, '_automessage_run_' . $type . '_action'.$blog_id, (int) $timestamp);
  179.  
  180.         }
  181.  
  182.         function clear_subscriptions( $type = 'user') {
  183.             $blog_id = get_current_blog_id();
  184.             $blog_id = ($type == 'user' && $blog_id != 1 && $blog_id != '') ? '_'.$blog_id : '';
  185.  
  186.             if($this->current_action( $type )) {
  187.                 delete_user_meta($this->ID, '_automessage_on_' . $type . '_action'.$blog_id);
  188.                 delete_user_meta($this->ID, '_automessage_run_' . $type . '_action'.$blog_id);
  189.             }
  190.  
  191.  
  192.         }
  193.  
  194.         function has_message_scheduled( $message_id ) {
  195.             //return !! get_usermeta($this->ID, '_automessage_on_action');
  196.         }
  197.  
  198.         function on_message( $message_id ) {
  199.             //return !! get_usermeta($this->ID, '_automessage_on_action');
  200.         }
  201.  
  202.         function next_message() {
  203.  
  204.         }
  205.  
  206.  
  207.     }
  208.  
  209. ?>
Add Comment
Please, Sign In to add comment