function prepare_items()
 {
     global $wpdb, $blog_id;
     $columns = $this->get_columns();
     $hidden = $this->get_hidden_columns();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $per_page = 20;
     $per_page = get_user_meta(get_current_user_id(), 'chat_page_chat_session_logs_per_page', true);
     if (!$per_page || $per_page < 1) {
         $per_page = 20;
     }
     $current_page = $this->get_pagenum();
     $page_offset = ($current_page - 1) * intval($per_page);
     if (is_multisite() && is_network_admin()) {
         $_blog_id = 0;
     } else {
         $_blog_id = $blog_id;
     }
     if (!empty($this->filters['search']) || $this->filters['session_type'] == "private") {
         $sql_str_filters = '';
         $sql_str_filters .= " AND (blog_id=" . $_blog_id . " OR blog_id=0) ";
         if (isset($this->filters['search']) && !empty($this->filters['search'])) {
             $sql_str_filters .= " AND `message` like '%" . $this->filters['search'] . "%' ";
         }
         if (isset($this->filters['chat_id']) && !empty($this->filters['chat_id'])) {
             $sql_str_filters .= " AND `chat_id`='" . $this->filters['chat_id'] . "' ";
         }
         if (isset($this->filters['session_type']) && !empty($this->filters['session_type'])) {
             if ($this->filters['session_type'] == "private") {
                 global $current_user;
                 $sql_str_filters .= " AND session_type='" . $this->filters['session_type'] . "' AND `auth_hash`='" . md5($current_user->ID) . "' ";
             } else {
                 $sql_str_filters .= " AND `session_type`='" . $this->filters['session_type'] . "' ";
             }
         } else {
             $sql_str_filters .= " AND `session_type`!='private' ";
         }
         if (isset($this->filters['start']) && !empty($this->filters['start'])) {
             $sql_str_filters .= " AND `timestamp` >='" . $this->filters['start'] . " 00:00:00' ";
         }
         if (isset($this->filters['end']) && !empty($this->filters['end'])) {
             $sql_str_filters .= " AND `timestamp` <='" . $this->filters['end'] . " 23:59:59' ";
         }
         if (isset($this->filters['status']) && !empty($this->filters['status'])) {
             if ($this->filters['status'] == "hidden") {
                 $sql_str_filters .= " AND `deleted` ='yes' ";
             } else {
                 $sql_str_filters .= " AND `archived` ='" . $this->filters['status'] . "' ";
             }
         }
         $sql_str = "SELECT DISTINCT log_id FROM " . WPMUDEV_Chat::tablename('message') . " WHERE 1=1 ";
         $sql_str .= $sql_str_filters;
         $log_ids = $wpdb->get_col($sql_str);
         if ($log_ids && is_array($log_ids) && count($log_ids)) {
             $total_items = count($log_ids);
             $sql_str = "SELECT log.* FROM " . WPMUDEV_Chat::tablename('log') . " as log ";
             $sql_str .= " WHERE 1=1 ";
             $sql_str .= " AND id IN (" . implode(',', $log_ids) . ")";
             $sql_str .= " ORDER BY log.start DESC LIMIT " . $page_offset . ", " . $per_page;
             $items = $wpdb->get_results($sql_str);
         }
     } else {
         $sql_str = "SELECT count(*) as total_items FROM " . WPMUDEV_Chat::tablename('log') . " as log";
         $sql_str .= " WHERE 1=1 ";
         $sql_str_filters = '';
         $sql_str_filters .= " AND blog_id=" . $_blog_id . " ";
         if (isset($this->filters['chat_id']) && !empty($this->filters['chat_id'])) {
             $sql_str_filters .= " AND chat_id='" . $this->filters['chat_id'] . "' ";
         }
         if (isset($this->filters['session_type']) && !empty($this->filters['session_type'])) {
             $sql_str_filters .= " AND session_type='" . $this->filters['session_type'] . "' ";
         }
         if (isset($this->filters['start']) && !empty($this->filters['start'])) {
             $sql_str_filters .= " AND start >='" . $this->filters['start'] . " 00:00:00' ";
         }
         if (isset($this->filters['end']) && !empty($this->filters['end'])) {
             $sql_str_filters .= " AND end <='" . $this->filters['end'] . " 23:59:59' ";
         }
         if (isset($this->filters['status']) && !empty($this->filters['status'])) {
             if ($this->filters['status'] == "hidden") {
                 $sql_str_filters .= " AND `deleted` ='yes' ";
             } else {
                 $sql_str_filters .= " AND `archived` ='" . $this->filters['status'] . "' ";
             }
         }
         $sql_str .= $sql_str_filters;
         //echo "sql_str_filters=[". $sql_str_filters ."]<br />";
         //echo "sql_str=[". $sql_str ."]<br />";
         $result = $wpdb->get_row($sql_str);
         if ($result->total_items) {
             $total_items = $result->total_items;
         } else {
             $total_items = 0;
         }
         //echo "total_items[". $total_items ."]<br />";
         $sql_str = "SELECT log.* FROM " . WPMUDEV_Chat::tablename('log') . " as log ";
         $sql_str .= " WHERE 1=1 AND log.session_type != 'private' ";
         $sql_str .= $sql_str_filters;
         $sql_str .= " ORDER BY log.start DESC LIMIT " . $page_offset . ", " . $per_page;
         $items = $wpdb->get_results($sql_str);
     }
     if (isset($items) && count($items)) {
         $this->items = $items;
         $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => intval($per_page), 'total_pages' => ceil(intval($total_items) / intval($per_page))));
     }
 }
 function prepare_items()
 {
     global $wpdb, $blog_id;
     $columns = $this->get_columns();
     $hidden = $this->get_hidden_columns();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $current_page = $this->get_pagenum();
     $per_page = get_user_meta(get_current_user_id(), 'chat_page_chat_session_messages_per_page', true);
     if (!$per_page || $per_page < 1) {
         $per_page = 20;
     }
     $current_page = $this->get_pagenum();
     $page_offset = ($current_page - 1) * intval($per_page);
     if (empty($this->filters['chat-log-id'])) {
         return;
     }
     //echo "filters<pre>"; print_r($this->filters); echo "</pre>";
     //echo "log_item<pre>"; print_r($this->log_item); echo "</pre>";
     if (is_multisite() && is_network_admin()) {
         $_blog_id = 0;
     } else {
         $_blog_id = $blog_id;
     }
     if ($this->log_item->archived == 'no') {
         $sql_str = $wpdb->prepare("SELECT * FROM " . WPMUDEV_Chat::tablename('message') . " WHERE blog_id = %d AND chat_id = %s AND log_id=%d", $_blog_id, $this->filters['chat_id'], 0);
     } else {
         $sql_str = $wpdb->prepare("SELECT * FROM " . WPMUDEV_Chat::tablename('message') . " WHERE blog_id = %d AND chat_id = %s AND log_id=%d", $_blog_id, $this->filters['chat_id'], $this->filters['chat-log-id']);
     }
     if (!empty($this->filters['search'])) {
         $sql_str .= " AND message like '%" . $this->filters['search'] . "%'";
     }
     if (isset($this->filters['status']) && !empty($this->filters['status'])) {
         if ($this->filters['status'] == "hidden") {
             $sql_str .= " AND `deleted` ='yes' ";
         } else {
             //$sql_str .= " AND `archived` ='". $this->filters['status']."' ";
         }
     }
     //if ($this->log_item->session_type == "private") {
     //	echo "log_item<pre>"; print_r($this->log_item); echo "</pre>";
     //}
     $sql_str .= " AND `session_type` ='" . $this->log_item->session_type . "' ";
     $names_array = array();
     if (isset($this->filters['moderators']) && !empty($this->filters['moderators'])) {
         $names_array = array_merge($names_array, array($this->filters['moderators']));
     } else {
         $names_array = array_merge($this->moderator_names, $names_array);
     }
     if (isset($this->filters['users']) && !empty($this->filters['users'])) {
         $names_array = array_merge($names_array, array($this->filters['users']));
     } else {
         $names_array = array_merge($names_array, $this->user_names);
     }
     $names_array = array_unique($names_array);
     //echo "names_array<pre>"; print_r($names_array); echo "</pre>";
     //echo "moderator_names<pre>"; print_r($this->moderator_names); echo "</pre>";
     if (count($names_array)) {
         $names_str = '';
         foreach ($names_array as $name) {
             if (!empty($names_str)) {
                 $names_str .= ",";
             }
             $names_str .= "'" . $name . "'";
         }
         $sql_str .= " AND name IN(" . $names_str . ") ";
     }
     $sql_str .= " ORDER BY timestamp ASC";
     //echo "sql_str[". $sql_str ."]<br />";
     $items = $wpdb->get_results($sql_str);
     if ($items) {
         if (count($items)) {
             $total_items = count($items);
             //echo "total_items=[". $total_items ."]<br />";
             $this->items = array_slice($items, $per_page * (intval($current_page) - 1), intval($per_page), true);
             $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => intval($per_page), 'total_pages' => ceil(intval($total_items) / intval($per_page))));
         }
         $total_items = count($items);
     }
 }
示例#3
0
 function chatModerateDelete()
 {
     global $wpdb, $blog_id;
     if (isset($_POST['cid'])) {
         $chat_id = intval($_POST['cid']);
     }
     if (isset($_POST['row_id'])) {
         $row_id = intval($_POST['row_id']);
     }
     if (isset($_POST['moderate_action'])) {
         $moderate_action = esc_attr($_POST['moderate_action']);
     }
     if ($chat_id > 0 && $row_id > 0 && strlen($moderate_action)) {
         $row_date = date('Y-m-d H:i:s', $row_id);
         //echo "row_date=[". $row_date ."]<br />";
         $sql_str = "SELECT id, archived FROM `" . WPMUDEV_Chat::tablename('message') . "` WHERE blog_id = '" . $blog_id . "' AND chat_id = '" . $chat_id . "' AND timestamp = '" . $row_date . "' LIMIT 1;";
         //echo "sql_str=[". $sql_str ."]<br />";
         $chat_row = $wpdb->get_row($sql_str);
         //echo "chat_row<pre>"; print_r($chat_row); echo "</pre>";
         if ($chat_row && isset($chat_row->archived)) {
             $chat_row_archived_new = '';
             if ($moderate_action == "delete") {
                 if ($chat_row->archived == "yes") {
                     $chat_row_archived_new = 'yes-deleted';
                 } else {
                     if ($chat_row->archived == "no") {
                         $chat_row_archived_new = 'no-deleted';
                     }
                 }
             } else {
                 if ($moderate_action == "undelete") {
                     if ($chat_row->archived == "yes-deleted") {
                         $chat_row_archived_new = 'yes';
                     } else {
                         if ($chat_row->archived == "no-deleted") {
                             $chat_row_archived_new = 'no';
                         }
                     }
                 }
             }
             if (strlen($chat_row_archived_new)) {
                 $sql_str = "UPDATE `" . WPMUDEV_Chat::tablename('message') . "` SET archived='" . $chat_row_archived_new . "' WHERE id=" . $chat_row->id . " AND blog_id = '" . $blog_id . "' AND chat_id = '" . $chat_id . "' LIMIT 1;";
                 //echo "sql_str=[". $sql_str ."]<br />";
                 $wpdb->get_results($sql_str);
                 echo 1;
                 die;
             }
         }
     }
 }
 function chat_session_get_log_row_id($chat_session)
 {
     global $wpdb;
     $sql_str = $wpdb->prepare("SELECT id FROM " . WPMUDEV_Chat::tablename('log') . " WHERE blog_id = %d AND chat_id = %s AND archived = %s", $chat_session['blog_id'], $chat_session['id'], 'no');
     $chat_log = $wpdb->get_row($sql_str);
     if (empty($chat_log) || !isset($chat_log->id)) {
         return '0';
     } else {
         return $chat_log->id;
     }
 }
function wpmudev_chat_get_active_sessions_users($chat_sessions = array())
{
    global $wpdb;
    $chat_sessions_users = array();
    foreach ($chat_sessions as $chat_session) {
        $sql_str = $wpdb->prepare("SELECT count(*) FROM " . WPMUDEV_Chat::tablename('users') . " WHERE chat_id=%s AND blog_id=%d", $chat_session['id'], $chat_session['blog_id']);
        //echo "sql_str[". $sql_str ."]<br />";
        $chat_sessions_users[$chat_session['id']] = $wpdb->get_var($sql_str);
    }
    //echo "chat_sessions_users<pre>"; print_r($chat_sessions_users); echo "</pre>";
    return $chat_sessions_users;
}
 function chat_session_logs_messages($table, $action, $ids = array())
 {
     global $wpdb;
     //echo "table[". $table."] action[". $action ."] ids<pre>"; print_r($ids); echo "</pre>";
     $sql_str = '';
     switch ($table) {
         case 'log':
             if ($action == 'hide') {
                 $sql_str = "UPDATE `" . WPMUDEV_Chat::tablename('log') . "` SET `deleted`='yes' WHERE id IN(" . implode(',', $ids) . ")";
                 $ret = $wpdb->query($sql_str);
             } else {
                 if ($action == "unhide") {
                     $sql_str = "UPDATE `" . WPMUDEV_Chat::tablename('log') . "` SET `deleted`='no' WHERE id IN(" . implode(',', $ids) . ")";
                     $ret = $wpdb->query($sql_str);
                 } else {
                     if ($action == "delete") {
                         $sql_str .= "DELETE FROM `" . WPMUDEV_Chat::tablename('log') . "` WHERE id IN(" . implode(',', $ids) . "); ";
                         $ret = $wpdb->query($sql_str);
                         $sql_str = "DELETE FROM `" . WPMUDEV_Chat::tablename('message') . "` WHERE log_id IN(" . implode(',', $ids) . "); ";
                         $ret = $wpdb->query($sql_str);
                     }
                 }
             }
             break;
         case 'message':
             if ($action == 'hide') {
                 $sql_str = "UPDATE `" . WPMUDEV_Chat::tablename('message') . "` SET `deleted`='yes' WHERE id IN(" . implode(',', $ids) . ")";
                 $ret = $wpdb->query($sql_str);
             } else {
                 if ($action == "unhide") {
                     $sql_str = "UPDATE `" . WPMUDEV_Chat::tablename('message') . "` SET `deleted`='no' WHERE id IN(" . implode(',', $ids) . ")";
                     $ret = $wpdb->query($sql_str);
                 } else {
                     if ($action == "delete") {
                         $sql_str = "DELETE FROM `" . WPMUDEV_Chat::tablename('message') . "` WHERE id IN(" . implode(',', $ids) . "); ";
                         $ret = $wpdb->query($sql_str);
                     }
                 }
             }
             break;
         default:
             break;
     }
     return true;
 }