Exemplo n.º 1
0
/**
 * Returns the logged in user entity
 * 
 * @return SuccessResult|ErrorResult
 */
function ws_pack_users_get_logged_in_user()
{
    $result = false;
    if ($user = elgg_get_logged_in_user_entity()) {
        if ($export = ws_pack_export_entity($user)) {
            $result = new SuccessResult($export);
        }
    }
    if ($result === false) {
        $result = new ErrorResult(elgg_echo("notfound"));
    }
    return $result;
}
Exemplo n.º 2
0
/**
 * Serch members
 * 
 * @param int $guid Member GUID
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_get_member($guid)
{
    $result = false;
    $user = elgg_get_logged_in_user_entity();
    $api_application = ws_pack_get_current_api_application();
    if (!empty($user) && !empty($api_application)) {
        $member_result = get_entity($guid);
        if ($member_result !== false) {
            $member_result = ws_pack_export_entity($member_result);
            $result = new SuccessResult($member_result);
        }
    }
    if ($result === false) {
        $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
    }
    return $result;
}
Exemplo n.º 3
0
/**
 * Get Notifications
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_get_notifications()
{
    $result = false;
    $user = elgg_get_logged_in_user_entity();
    $api_application = ws_pack_get_current_api_application();
    if (!empty($user) && !empty($api_application)) {
        if (!$user_guid) {
            $user_guid = elgg_get_logged_in_user_guid();
        }
        $options = array('type' => 'object', 'subtype' => 'site_notification', 'limit' => 50, 'order_by' => 'e.last_action desc', 'owner_guid' => $user->guid, 'full_view' => false, 'relationship' => 'hasActor', 'no_results' => elgg_echo('site_notifications:empty'));
        $notifications = elgg_get_entities_from_metadata($options);
        if ($notifications === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        } else {
            $notifications["entities"] = ws_pack_export_entities($notifications);
            $guids = array();
            foreach ($notifications["entities"] as $key => $notification) {
                $notification_guid = $notification["guid"];
                if (!in_array($notification_guid, $guids)) {
                    $guids[] = $notification_guid;
                    $notification_entity = get_entity($notification_guid);
                    $owner = get_entity($notification["owner_guid"]);
                    $notification["owner"] = ws_pack_export_entity($owner);
                    $notification["parent_guid"] = $notification_entity->getURL();
                    $notifications["entities"][$key] = $notification;
                } else {
                    unset($notifications["entities"][$key]);
                }
            }
            $result = new SuccessResult($notifications);
        }
        if ($result === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        }
    }
    return $result;
}
Exemplo n.º 4
0
/**
 * Get Last Conversation
 * 
 * @param int $user_guid    User GUID
 * @param int $limit        Limit of Conversations
 * @param int $offset       Offset
 * @param int $count        Count
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_get_last_conversations($user_guid, $limit = 100, $offset = 0, $count = false)
{
    $result = false;
    $user = elgg_get_logged_in_user_entity();
    $api_application = ws_pack_get_current_api_application();
    if (!empty($user) && !empty($api_application)) {
        if (!$user_guid) {
            $user_guid = elgg_get_logged_in_user_guid();
        }
        $db_prefix = elgg_get_config('dbprefix');
        $strings = array('toId', $user_guid, 'msg', 1, 'fromId', $fromto_guid);
        $map = array();
        foreach ($strings as $string) {
            $id = elgg_get_metastring_id($string);
            $map[$string] = $id;
        }
        $options = array('selects' => array("MAX(e.guid) as guid", "MAX(e.time_created) as time_created"), 'joins' => array("JOIN {$db_prefix}metadata msg_toId on e.guid = msg_toId.entity_guid", "JOIN {$db_prefix}metadata msg_msg on e.guid = msg_msg.entity_guid", "JOIN {$db_prefix}metadata msg_fromId on e.guid = msg_fromId.entity_guid"), 'owner_guid' => $user_guid, 'limit' => $limit, 'offset' => $offset, 'count' => $count);
        $options["wheres"] = array("msg_msg.name_id='{$map['msg']}' AND msg_msg.value_id='{$map[1]}'");
        $options["group_by"] = "msg_fromId.value_id, msg_toId.value_id";
        $messages = elgg_get_entities_from_metadata($options);
        if ($messages === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        } else {
            $messages["entities"] = ws_pack_export_entities($messages);
            $guids = array();
            foreach ($messages["entities"] as $key => $message) {
                $message_guid = $message["guid"];
                if (!in_array($message_guid, $guids)) {
                    $guids[] = $message_guid;
                    $message_entity = get_entity($message_guid);
                    $recipient_id = $message_entity->toId;
                    if ($recipient_id === $user_guid) {
                        $recipient_id = $message_entity->fromId;
                    }
                    $recipient = get_entity($recipient_id);
                    $message["recipient"] = ws_pack_export_entity($recipient);
                    $messages["entities"][$key] = $message;
                } else {
                    unset($messages["entities"][$key]);
                }
            }
            $result = new SuccessResult($messages);
        }
    }
    if ($result === false) {
        $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
    }
    return $result;
}
Exemplo n.º 5
0
/**
 * Get Thread
 *
 * @param int $thread_id Thread GUID
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_get_thread($thread_id = false)
{
    $result = false;
    $user = elgg_get_logged_in_user_entity();
    $api_application = ws_pack_get_current_api_application();
    if (!empty($user) && !empty($api_application)) {
        $threads = elgg_get_entities_from_metadata(array("metadata_name" => "wire_thread", "metadata_value" => $thread_id, "type" => "object", "subtype" => "thewire", "limit" => 20));
        // returns guid of wire post
        if ($threads === false) {
            // error
        } else {
            $wires = array();
            $wires["entities"] = ws_pack_export_entities($threads);
            $guids_thread = array();
            foreach ($wires["entities"] as $k => $wt) {
                $wire_guid_th = $wt["guid"];
                if (!in_array($wire_guid_th, $guids_thread)) {
                    $guids_thread[] = $wire_guid_th;
                    $owner_thread = get_entity($wt["owner_guid"]);
                    $wt["owner"] = ws_pack_export_entity($owner_thread);
                    $parent = thewire_get_parent($wire_guid_th);
                    $wt["parent"] = ws_pack_export_entity($parent);
                    if ($parent !== false) {
                        $parent_owner = get_entity($wt["parent"]["owner_guid"]);
                        $wt["parent_owner"] = ws_pack_export_entity($parent_owner);
                    }
                    $wires["entities"][$k] = $wt;
                } else {
                    unset($wires["entities"][$k]);
                }
            }
            $result = new SuccessResult($wires);
        }
        if ($result === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        }
    }
    return $result;
}
Exemplo n.º 6
0
/**
 * Export river items
 * 
 * @param array $items river items to export
 * 
 * @return boolean|array
 */
function ws_pack_export_river_items($items)
{
    elgg_load_library("simple_html_dom");
    $result = false;
    if (!empty($items) && is_array($items)) {
        $result = array();
        foreach ($items as $item) {
            if ($item instanceof ElggRiverItem) {
                $tmp_result = array();
                // default export values
                $export_values = array("id", "subject_guid", "object_guid", "annotation_id", "type", "subtype", "action_type", "posted");
                foreach ($export_values as $field_name) {
                    $tmp_result[$field_name] = $item->{$field_name};
                }
                // add object and subject entities
                $tmp_result["object"] = ws_pack_export_entity($item->getObjectEntity());
                $tmp_result["subject"] = ws_pack_export_entity($item->getSubjectEntity());
                // add some html views
                // set viewtype to default
                $viewtype = elgg_get_viewtype();
                elgg_set_viewtype("default");
                $tmp_result["html_view"] = elgg_view_river_item($item);
                // parse the html to get some usefull information
                if ($res = str_get_html($tmp_result["html_view"])) {
                    // get the river summary
                    if ($summary_element = $res->find("div.elgg-river-summary")) {
                        $summary_element = $summary_element[0];
                        $text = $summary_element->innertext();
                        list($left, $right) = explode("<span class=\"elgg-river-timestamp\">", $text);
                        $tmp_result["summary"] = trim(elgg_strip_tags($left));
                    }
                    // get the river message (optional)
                    if ($message_element = $res->find("div.elgg-river-message")) {
                        $message_element = $message_element[0];
                        $tmp_result["message"] = trim(elgg_strip_tags($message_element->innertext()));
                    }
                    // get river attachments (optional)
                    if ($attachment_element = $res->find("div.elgg-river-attachments")) {
                        $attachment_element = $attachment_element[0];
                        $tmp_result["attachments"] = array();
                        // find images
                        if ($images = $attachment_element->find("img")) {
                            $image_urls = array();
                            foreach ($images as $img) {
                                $image_urls[] = $img->src;
                            }
                            $tmp_result["attachments"]["images"] = $image_urls;
                        }
                        // find links
                        if ($links = $attachment_element->find("a")) {
                            $link_urls = array();
                            foreach ($links as $link) {
                                $link_urls[] = $link->href;
                            }
                            $tmp_result["attachments"]["links"] = $link_urls;
                        }
                    }
                }
                // add friendly time
                $friendly_time = elgg_view_friendly_time($item->posted);
                $tmp_result["friendly_time"] = trim(elgg_strip_tags($friendly_time));
                // restore viewtype
                elgg_set_viewtype($viewtype);
                // add this item to the result set
                $result[] = $tmp_result;
            }
        }
    }
    return $result;
}
Exemplo n.º 7
0
/**
 * Get Discussion
 *
 * @param int $guid   Discussion GUID
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_get_discussion($guid)
{
    $result = false;
    $user = elgg_get_logged_in_user_entity();
    $api_application = ws_pack_get_current_api_application();
    if (!empty($user) && !empty($api_application)) {
        $options = array('type' => 'object', 'order_by' => 'e.last_action desc', 'guid' => $guid, 'full_view' => false, 'no_results' => elgg_echo('discussion:none'));
        $discussions = elgg_get_entities($options);
        // returns guid of wire post
        if ($discussions === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        } else {
            $discussions["entities"] = ws_pack_export_entities($discussions);
            $guids = array();
            foreach ($discussions["entities"] as $key => $discussion) {
                $discussion_guid = $discussion["guid"];
                if (!in_array($discussion_guid, $guids)) {
                    $guids[] = $discussion_guid;
                    $owner = get_entity($discussion["owner_guid"]);
                    $discussion["owner"] = ws_pack_export_entity($owner);
                    $discussions["entities"][$key] = $discussion;
                } else {
                    unset($discussions["entities"][$key]);
                }
            }
            $result = new SuccessResult($discussions);
        }
        if ($result === false) {
            $result = new ErrorResult(elgg_echo("ws_pack:error:notfound"));
        }
    }
    return $result;
}