function read_notification(MM_Conversation_Model $model)
 {
     $setting = new MM_Setting_Model();
     $setting->load();
     $is_send = $setting->enable_receipt;
     //getting the messegers from this conv belong to this user
     if (!count($model->get_unread())) {
         return;
     }
     $messeger = $model->get_last_message();
     //check if this current user is sender
     if ($messeger->send_from == get_current_user_id()) {
         return;
     }
     if (!$is_send) {
         return;
     }
     if ($setting->user_receipt == true) {
         //check does user enable
         $sender_setting = get_user_meta($messeger->send_from, 'messages_user_setting', true);
         if (!$sender_setting) {
             $sender_setting = array('enable_receipt' => 1, 'prevent_receipt' => 0);
         }
         if ($sender_setting['enable_receipt'] != true) {
             //user don't enable it,
             return;
         }
         //user enable it, checking does the receiver block it
         $reciver_setting = get_user_meta($messeger->send_to, 'messages_user_setting', true);
         if (!$reciver_setting) {
             $reciver_setting = array('enable_receipt' => 1, 'prevent_receipt' => 0);
         }
         if ($reciver_setting['prevent_receipt'] == true) {
             //this user has block it, return
             return;
         }
     }
     //from here, we can send notification
     $data = array('SITE_NAME' => get_bloginfo('name'), 'FROM_NAME' => $messeger->get_name($messeger->send_from), 'POST_LINK' => add_query_arg('message_id', $model->id, get_permalink(mmg()->setting()->inbox_page, true)), 'FROM_MESSAGE' => $messeger->content, 'TO_NAME' => $messeger->get_name($messeger->send_to));
     $data = apply_filters('message_notification_params', $data, $this);
     $subject = stripslashes($setting->receipt_subject);
     $content = stripslashes($setting->receipt_content);
     foreach ($data as $key => $val) {
         $subject = str_replace($key, $val, $subject);
         $content = str_replace($key, $val, $content);
     }
     $sendto = get_userdata($messeger->send_from);
     $headers = array('Content-Type: text/html; charset=UTF-8');
     wp_mail($sendto->user_email, $subject, $content, $headers);
 }
示例#2
0
 function index_new_message(MM_Message_Model $model)
 {
     $key = "mm_notification";
     delete_user_meta($model->send_to, $key);
     $cache = array();
     $cache['status'] = 1;
     //clean up messages
     $cache['messages'] = array();
     $unreads = MM_Conversation_Model::get_unread($model->send_to);
     $message = array('id' => $model->id, 'from' => $model->get_name($model->send_from), 'subject' => $model->subject, 'text' => mmg()->trim_text($model->content, 100));
     $cache['messages'][] = $message;
     $cache['count'] = count($unreads);
     add_user_meta($model->send_to, $key, $cache);
 }
    function notification_buttons($wp_admin_bar)
    {
        //create new menu
        $unread = MM_Conversation_Model::count_unread();
        $args = array('id' => 'mm-button', 'title' => __('<div class="ig-container mm-admin-bar"><i class="fa fa-envelope"></i>&nbsp;<span>' . $unread . '</span>
</div>', mmg()->domain), 'href' => '#');
        $wp_admin_bar->add_menu($args);
        //create group
        $args = array('id' => 'mm-buttons-group', 'parent' => 'mm-button');
        $wp_admin_bar->add_group($args);
        //add node send new message
        $args = array('id' => 'mm-compose-button', 'title' => __("Send New Message", mmg()->domain), 'href' => '#compose-form-container-admin-bar', 'parent' => 'mm-buttons-group', 'meta' => array('class' => 'mm-compose-admin-bar'));
        $wp_admin_bar->add_node($args);
        //add node inbox page
        $args = array('id' => 'mm-inbox-button', 'title' => __("View Inbox", mmg()->domain), 'href' => get_permalink(mmg()->setting()->inbox_page), 'parent' => 'mm-buttons-group', 'meta' => array('class' => 'mm-view-inbox-admin-bar'));
        $wp_admin_bar->add_node($args);
    }
 public static function search($s, $per_page = null)
 {
     global $wpdb;
     $model = new MM_Conversation_Model();
     if (!empty($s)) {
         if (!$per_page) {
             $per_page = mmg()->setting()->per_page;
         }
         $paged = mmg()->get('mpaged', 1);
         $offset = ($paged - 1) * $per_page;
         $total_pages = ceil(self::count_all() / $per_page);
         mmg()->global['conversation_total_pages'] = $total_pages;
         if (is_admin()) {
             $sql = "SELECT conversation.id FROM wp_mm_conversation conversation\r\n                    INNER JOIN wp_mm_status mstat ON mstat.conversation_id = conversation.id\r\n                    INNER JOIN wp_postmeta meta ON meta.meta_key='_conversation_id' AND meta.meta_value = conversation.id\r\n                    INNER JOIN wp_posts posts ON posts.ID = meta.post_id\r\n                    INNER JOIN wp_users users ON users.id = posts.post_author\r\n                    WHERE (posts.post_title LIKE %s OR posts.post_content LIKE %s OR users.user_login LIKE %s) AND site_id=%d\r\n                    GROUP BY conversation.id LIMIT %d,%d";
             $sql = $wpdb->prepare($sql, "%{$s}%", "%{$s}%", "%{$s}%", get_current_blog_id(), $offset, $per_page);
         } else {
             $sql = "SELECT conversation.id FROM wp_mm_conversation conversation\r\n                    INNER JOIN wp_mm_status mstat ON mstat.conversation_id = conversation.id\r\n                    INNER JOIN wp_postmeta meta ON meta.meta_key='_conversation_id' AND meta.meta_value = conversation.id\r\n                    INNER JOIN wp_posts posts ON posts.ID = meta.post_id\r\n                    INNER JOIN wp_users users ON users.id = posts.post_author\r\n                    WHERE mstat.user_id= %d AND (posts.post_title LIKE %s OR posts.post_content LIKE %s OR users.user_login LIKE %s) AND site_id=%d\r\n                    GROUP BY conversation.id LIMIT %d,%d";
             $sql = $wpdb->prepare($sql, get_current_user_id(), "%{$s}%", "%{$s}%", "%{$s}%", get_current_blog_id(), $offset, $per_page);
         }
         $ids = $wpdb->get_col($sql);
         $ids = array_filter(array_unique($ids));
         if (empty($ids)) {
             return array();
         }
         $models = $model->find_all_by_ids($ids, false, false, 'date_created DESC');
         return $models;
     } else {
         return self::get_conversation();
     }
 }
示例#5
0
<div id='lean_overlay'></div>
<?php 
$this->render_partial('shortcode/_reply_form', array('message' => $message));
?>
<div class="ig-container">
    <section class="message-content">
        <div class="message-content-actions pull-right">
            <?php 
if (mmg()->get('box') != 'sent' && $render_reply == true) {
    ?>
                <?php 
    $from_data = get_userdata($message->send_from);
    ?>
                <div class="btn-group btn-group-sm">
                    <?php 
    $conversation = MM_Conversation_Model::model()->find($message->conversation_id);
    ?>
                    <?php 
    if ($conversation->is_archive()) {
        ?>
                        <a href="#" title="<?php 
        echo esc_attr(__("Unarchive", mmg()->domain));
        ?>
"
                           data-id="<?php 
        echo esc_attr(mmg()->encrypt($message->conversation_id));
        ?>
"
                           data-type="<?php 
        echo MM_Message_Status_Model::STATUS_READ;
        ?>
示例#6
0
                        </a>
                        <a href="<?php 
    echo add_query_arg('box', 'read', get_permalink(mmg()->setting()->inbox_page));
    ?>
"
                           class="mm-tooltip btn read-count btn-default btn-sm <?php 
    echo mmg()->get('box') == 'read' ? 'active' : null;
    ?>
"

                           data-text="<?php 
    _e("message(s)", mmg()->domain);
    ?>
"
                           title="<?php 
    echo MM_Conversation_Model::count_read();
    ?>
 <?php 
    _e("message(s)", mmg()->domain);
    ?>
">
                            <i class="glyphicon glyphicon-eye-open"></i> <?php 
    _e("Read", mmg()->domain);
    ?>
                        </a>

                        <a href="<?php 
    echo add_query_arg('box', 'sent', get_permalink(mmg()->setting()->inbox_page));
    ?>
"
                           class="btn btn-default btn-sm <?php 
 function render_inbox_message(MM_Conversation_Model $model)
 {
     //get all the message from this conversation
     $messages = $model->get_messages();
     return $this->render_partial('shortcode/_inbox_message', array('messages' => $messages), false);
 }
 function prepare_items()
 {
     global $wpdb;
     $totals = $wpdb->get_var($wpdb->prepare('SELECT COUNT(id) from ' . $wpdb->prefix . 'mm_conversation WHERE site_id=%d', get_current_blog_id()));
     //How many to display per page?
     $perpage = 10;
     //Which page is this?
     $paged = !empty($_GET["paged"]) ? mysql_real_escape_string($_GET["paged"]) : '';
     //Page Number
     if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
         $paged = 1;
     }
     $offset = ($this->get_pagenum() - 1) * $perpage;
     //How many pages do we have in total?
     $totalpages = ceil($totals / $perpage);
     //adjust the query to take pagination into account
     /* -- Register the pagination -- */
     $this->set_pagination_args(array("total_items" => $totals, "total_pages" => $totalpages, "per_page" => $perpage));
     //The pagination links are automatically built according to those parameters
     /* — Register the Columns — */
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     if (isset($_GET['s']) && !empty($_GET['s'])) {
         if (isset($_GET['s'])) {
             $this->items = MM_Conversation_Model::search($_GET['s'], $perpage);
             $totals = mmg()->global['conversation_total_pages'];
             $totalpages = ceil($totals / $perpage);
             $this->set_pagination_args(array("total_items" => $totals, "total_pages" => $totalpages, "per_page" => $perpage));
         }
     } else {
         $this->items = MM_Conversation_Model::model()->find_all('site_id=%d', array(get_current_blog_id()), $perpage, $offset);
     }
 }
 function view()
 {
     $id = mmg()->get('id', 0);
     $model = MM_Conversation_Model::model()->find($id);
     if (is_object($model)) {
         $this->render('backend/view', array('model' => $model));
     } else {
         echo __("Conversation not found!", mmg()->domain);
     }
 }