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); }
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> <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(); } }
<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; ?>
</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); } }