Example #1
0
        }
        $conversation->messages[$message->msg_id] = $message;
    }
    return $conversations;
}
$dao = new DAO(false);
if (isset($_POST["user_id"])) {
    if ($_POST["user_id"] == "-1") {
        //Get an array of all the conversations
        $conversations_query = "(SELECT user_id2 AS user_id FROM chat_msg WHERE user_id1={$user->user_id} GROUP BY user_id2) \n\t\t\t\t\t\t\t\t\tUNION \n\t\t\t\t\t\t\t\t\t(SELECT user_id1 AS user_id FROM chat_msg WHERE user_id2={$user->user_id} GROUP BY user_id1)";
        $dao->myquery($conversations_query);
        $conversation_requests = $dao->fetch_all_part(array("user_id"));
        $conversations = array();
        foreach ($conversation_requests as $request) {
            $c = get_conversations($dao, $request["user_id"], -1, -1)[$request["user_id"]];
            $conversations[$request["user_id"]] = $c;
        }
        echo json_encode_strip($conversations);
    } else {
        $conversations = get_conversations($dao, $_POST["user_id"], -1, -1)[$_POST["user_id"]];
        echo json_encode_strip($conversations);
    }
} else {
    $conversation_requests = $_POST;
    $conversations = array();
    foreach ($conversation_requests as $request) {
        $c = get_conversations($dao, $request["user_id"], $request["latest_pulled"], $request["latest_seen_by_u2"])[$request["user_id"]];
        $conversations[$request["user_id"]] = $c;
    }
    echo json_encode_strip($conversations);
}
Example #2
0
function codopm_do_route()
{
    if (isset($_GET['do'])) {
        require 'config.php';
        $conf = new Config(codopm::$db);
        codopm::$config = $conf->get_config();
        require 'getmessages.php';
        $do = $_GET['do'];
        if ($do == 'get_config') {
            echo json_encode(codopm::$config);
        } else {
            if ($do == 'send') {
                if (!isset($_POST['to'])) {
                    $resp = new response();
                    $resp->has_error = true;
                    $resp->msg = "file size exceeded maximum post size, please remove some files";
                    echo json_encode($resp);
                    return;
                }
                send_message((int) $_GET['id'], (int) $_POST['to'], strip_tags($_POST['message']));
            } else {
                if ($do == 'get_messages') {
                    $id = (int) $_GET['id'];
                    $my_name = save_my_details($id);
                    $per_page = codopm::$config['msgs_per_page'];
                    $start = (int) $_GET['range']['from'];
                    $end = (int) $_GET['range']['to'];
                    $resp = new response();
                    if ($_GET['type'] == 'default') {
                        $start = 0;
                    } else {
                        if ($_GET['type'] == 'next') {
                            $start += $per_page;
                        } else {
                            if ($_GET['type'] == 'previous') {
                                $start -= $per_page;
                            } else {
                                exit;
                            }
                        }
                    }
                    $messages = get_messages($id, $start);
                    $msg_cnt = count($messages);
                    $count = get_message_count($id);
                    $cnt = $count[0]["count"];
                    if ($msg_cnt < $per_page) {
                        $end = $cnt;
                    } else {
                        $end = $start + $per_page - 1;
                    }
                    if ($start === 0 && $cnt != 0) {
                        $start = 1;
                        $end = $per_page;
                    }
                    if ($end > $cnt || $end < $cnt && $cnt < $per_page) {
                        $end = $cnt;
                    }
                    $resp->has_error = false;
                    $resp->start = $start;
                    $resp->end = $end;
                    $resp->per_page = $per_page;
                    $resp->messages = $messages;
                    $resp->my_name = $my_name;
                    $resp->count = $cnt;
                    echo json_encode($resp);
                } else {
                    if ($do == 'get_conversations') {
                        $to = (int) $_GET['msg_to'];
                        $from = (int) $_GET['msg_from'];
                        $offset = codopm::$config['conv_load_offset'];
                        $res = get_conversations($to, $from, (int) $_GET['id'], codopm::$config['conv_per_page'] + 1);
                        $conversations = $res['conversations'];
                        $count = $res['count'];
                        set_message_read($to, $from, (int) $_GET['id']);
                        $resp = new response();
                        $resp->has_error = false;
                        if ($count > codopm::$config['conv_per_page']) {
                            array_pop($conversations);
                            $resp->read_more = 'yes';
                        } else {
                            $resp->read_more = 'no';
                        }
                        $resp->conversations = $conversations;
                        $resp->offset = $offset;
                        echo json_encode($resp);
                    } else {
                        if ($do == 'delete_conversation') {
                            delete_conversation((int) $_POST['msg_id']);
                            $resp = new response();
                            $resp->has_error = false;
                            echo json_encode($resp);
                        } else {
                            if ($do == 'load_more_conversations') {
                                $to = (int) $_GET['msg_to'];
                                $from = (int) $_GET['msg_from'];
                                $offset = (int) $_GET['msg_offset'];
                                $res = get_conversations($to, $from, (int) $_GET['id'], codopm::$config['conv_load_offset'] + 1, $offset);
                                $conversations = $res['conversations'];
                                $count = $res['count'];
                                $resp = new response();
                                $resp->has_error = false;
                                if ($count > codopm::$config['conv_load_offset']) {
                                    array_pop($conversations);
                                    $resp->read_more = 'yes';
                                } else {
                                    $resp->read_more = 'no';
                                }
                                $resp->conversations = $conversations;
                                $resp->offset = $offset;
                                echo json_encode($resp);
                            } else {
                                if ($do == 'autocomplete') {
                                    $results = array();
                                    if (isset($_GET['term'])) {
                                        $terms = strip_tags($_GET['term']);
                                        if (strpos($terms, ",") !== FALSE) {
                                            $_term = explode(",", $terms);
                                            $term = trim(end($_term));
                                        } else {
                                            $term = $terms;
                                        }
                                        $query = "SELECT name,username FROM " . codopm::$db_prefix . "users " . "WHERE (username LIKE :term1 OR name LIKE :term2)";
                                        $sth = codopm::$db->prepare($query);
                                        $variable_array = array(":term1" => $term . '%', ":term2" => $term . '%');
                                        $sth->execute($variable_array);
                                        $result = $sth->fetchAll();
                                        foreach ($result as $res) {
                                            $label = $res['name'];
                                            if (empty($label)) {
                                                $label = $res['username'];
                                            } else {
                                                if ($res['name'] != $res['username']) {
                                                    $label = $res['name'] . " " . "(" . $res['username'] . ")";
                                                }
                                            }
                                            $results[] = array("id" => $res['username'], "label" => $label, "value" => $res['username']);
                                        }
                                    }
                                    echo json_encode($results);
                                }
                            }
                        }
                    }
                }
            }
        }
    } else {
        die("CODOPM SAYS: Invalid Req");
    }
}