コード例 #1
0
ファイル: api.php プロジェクト: ZerGabriel/friendica
function api_direct_messages_box(&$a, $type, $box)
{
    if (api_user() === false) {
        return false;
    }
    // params
    $count = x($_GET, 'count') ? $_GET['count'] : 20;
    $page = x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0;
    if ($page < 0) {
        $page = 0;
    }
    $since_id = x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0;
    $max_id = x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0;
    $user_id = x($_REQUEST, 'user_id') ? $_REQUEST['user_id'] : "";
    $screen_name = x($_REQUEST, 'screen_name') ? $_REQUEST['screen_name'] : "";
    //  caller user info
    unset($_REQUEST["user_id"]);
    unset($_GET["user_id"]);
    unset($_REQUEST["screen_name"]);
    unset($_GET["screen_name"]);
    $user_info = api_get_user($a);
    //$profile_url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
    $profile_url = $user_info["url"];
    // pagination
    $start = $page * $count;
    // filters
    if ($box == "sentbox") {
        $sql_extra = "`mail`.`from-url`='" . dbesc($profile_url) . "'";
    } elseif ($box == "conversation") {
        $sql_extra = "`mail`.`parent-uri`='" . dbesc($_GET["uri"]) . "'";
    } elseif ($box == "all") {
        $sql_extra = "true";
    } elseif ($box == "inbox") {
        $sql_extra = "`mail`.`from-url`!='" . dbesc($profile_url) . "'";
    }
    if ($max_id > 0) {
        $sql_extra .= ' AND `mail`.`id` <= ' . intval($max_id);
    }
    if ($user_id != "") {
        $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id);
    } elseif ($screen_name != "") {
        $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name) . "'";
    }
    $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND {$sql_extra} AND `mail`.`id` > %d ORDER BY `mail`.`id` DESC LIMIT %d,%d", intval(api_user()), intval($since_id), intval($start), intval($count));
    $ret = array();
    foreach ($r as $item) {
        if ($box == "inbox" || $item['from-url'] != $profile_url) {
            $recipient = $user_info;
            $sender = api_get_user($a, normalise_link($item['contact-url']));
        } elseif ($box == "sentbox" || $item['from-url'] == $profile_url) {
            $recipient = api_get_user($a, normalise_link($item['contact-url']));
            $sender = $user_info;
        }
        $ret[] = api_format_messages($item, $recipient, $sender);
    }
    $data = array('$messages' => $ret);
    switch ($type) {
        case "atom":
        case "rss":
            $data = api_rss_extra($a, $data, $user_info);
    }
    return api_apply_template("direct_messages", $type, $data);
}
コード例 #2
0
ファイル: api.php プロジェクト: ridcully/friendica
function api_direct_messages_box(&$a, $type, $box)
{
    if (api_user() === false) {
        return false;
    }
    $user_info = api_get_user($a);
    // params
    $count = x($_GET, 'count') ? $_GET['count'] : 20;
    $page = x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0;
    if ($page < 0) {
        $page = 0;
    }
    $start = $page * $count;
    $profile_url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
    if ($box == "sentbox") {
        $sql_extra = "`from-url`='" . dbesc($profile_url) . "'";
    } elseif ($box == "conversation") {
        $sql_extra = "`parent-uri`='" . dbesc($_GET["uri"]) . "'";
    } elseif ($box == "all") {
        $sql_extra = "true";
    } elseif ($box == "inbox") {
        $sql_extra = "`from-url`!='" . dbesc($profile_url) . "'";
    }
    $r = q("SELECT * FROM `mail` WHERE uid=%d AND {$sql_extra} ORDER BY created DESC LIMIT %d,%d", intval(api_user()), intval($start), intval($count));
    $ret = array();
    foreach ($r as $item) {
        if ($box == "inbox" || $item['from-url'] != $profile_url) {
            $recipient = $user_info;
            $sender = api_get_user($a, $item['contact-id']);
        } elseif ($box == "sentbox" || $item['from-url'] != $profile_url) {
            $recipient = api_get_user($a, $item['contact-id']);
            $sender = $user_info;
        }
        $ret[] = api_format_messages($item, $recipient, $sender);
    }
    $data = array('$messages' => $ret);
    switch ($type) {
        case "atom":
        case "rss":
            $data = api_rss_extra($a, $data, $user_info);
    }
    return api_apply_template("direct_messages", $type, $data);
}