コード例 #1
0
ファイル: events.php プロジェクト: lorea/Hydra-dev
/**
 * Send push notifications if event is added to the activity river
 * 
 * @param string        $event      name of the event
 * @param string        $type       type of the event
 * @param ElggRiverItem $river_item river item object
 * 
 * @return void
 */
function ws_pack_created_river_event_handler($event, $type, $river_item)
{
    if (!empty($river_item) && $river_item instanceof ElggRiverItem) {
        if (!function_exists('str_get_html')) {
            elgg_load_library("simple_html_dom");
        }
        $message = "";
        $html_view = elgg_view_river_item($river_item);
        if ($res = str_get_html($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);
                $message = trim(elgg_strip_tags($left));
            }
        }
        if (!empty($message)) {
            $user_guids = false;
            switch ($river_item->access_id) {
                case ACCESS_PRIVATE:
                    // do nothing
                    break;
                case ACCESS_PUBLIC:
                case ACCESS_LOGGED_IN:
                    // notify everyone
                    $site_user_options = array("type" => "user", "limit" => false, "relationship" => "member_of_site", "relationship_guid" => elgg_get_site_entity()->getGUID(), "inverse_relationship" => true, "callback" => "ws_pack_row_to_guid");
                    $user_guids = elgg_get_entities_from_relationship($site_user_options);
                    break;
                case ACCESS_FRIENDS:
                    // notify friends of subject_guid
                    $friends_options = array("type" => "user", "limit" => false, "relationship" => "friend", "relationship_guid" => $river_item->subject_guid, "callback" => "ws_pack_row_to_guid", "joins" => array("JOIN " . elgg_get_config("dbprefix") . "entity_relationships r2 ON e.guid = r2.guid_one"), "wheres" => array("(r2.relationship = 'member_of_site' AND r2.guid_two = " . elgg_get_site_entity()->getGUID() . ")"));
                    $user_guids = elgg_get_entities_from_relationship($friends_options);
                    break;
                default:
                    // probably some acl, so notify members of the acl
                    $user_guids = get_members_of_access_collection($river_item->access_id, true);
                    break;
            }
            // we found potential interested users, so push
            if (!empty($user_guids) && is_array($user_guids)) {
                $api_application_options = array("type" => "object", "subtype" => APIApplication::SUBTYPE, "limit" => false, "annotation_name" => "push_notification_service");
                if ($api_applications = elgg_get_entities_from_annotations($api_application_options)) {
                    foreach ($api_applications as $api_application) {
                        $api_application->sendPushNotification($message, $user_guids);
                    }
                }
            }
        }
    }
}
コード例 #2
0
ファイル: views.php プロジェクト: gzachos/elgg_ellak
/**
 * View an item in a list
 *
 * @param ElggEntity|ElggAnnotation $item
 * @param array  $vars Additional parameters for the rendering
 *
 * @return string
 * @since 1.8.0
 * @access private
 */
function elgg_view_list_item($item, array $vars = array())
{
    global $CONFIG;
    $type = $item->getType();
    if (in_array($type, $CONFIG->entity_types)) {
        return elgg_view_entity($item, $vars);
    } else {
        if ($type == 'annotation') {
            return elgg_view_annotation($item, $vars);
        } else {
            if ($type == 'river') {
                return elgg_view_river_item($item, $vars);
            }
        }
    }
    return '';
}
コード例 #3
0
ファイル: views.php プロジェクト: rasul/Elgg
/**
 * View an item in a list
 *
 * @param object $item ElggEntity or ElggAnnotation
 * @param array  $vars Additional parameters for the rendering
 *
 * @return string
 * @since 1.8.0
 * @access private
 */
function elgg_view_list_item($item, array $vars = array())
{
    switch ($item->getType()) {
        case 'user':
        case 'object':
        case 'group':
        case 'site':
            return elgg_view_entity($item, $vars);
        case 'annotation':
            return elgg_view_annotation($item, $vars);
        case 'river':
            return elgg_view_river_item($item, $vars);
        default:
            return false;
            break;
    }
}
コード例 #4
0
ファイル: list.php プロジェクト: adamboardman/Elgg
/**
 *
 * @package Elgg
 * @subpackage Core
 * @author Curverider Ltd
 * @link http://elgg.org/
 *
 */
?>
<div class="river_item_list">
<?php 
if (isset($vars['items']) && is_array($vars['items'])) {
    $i = 0;
    if (!empty($vars['items'])) {
        foreach ($vars['items'] as $item) {
            echo elgg_view_river_item($item);
            $i++;
            if ($i >= $vars['limit']) {
                break;
            }
        }
    }
}
if ($vars['pagination'] !== false) {
    $baseurl = $_SERVER['REQUEST_URI'];
    $nav = '';
    if (sizeof($vars['items']) > $vars['limit']) {
        $newoffset = $vars['offset'] + $vars['limit'];
        $nexturl = elgg_http_add_url_query_elements($baseurl, array('offset' => $newoffset));
        $nav .= '<a class="back" href="' . $nexturl . '">&laquo; ' . elgg_echo('previous') . '</a> ';
    }
コード例 #5
0
ファイル: views.php プロジェクト: thehereward/Elgg
/**
 * View an item in a list
 *
 * @param \ElggEntity|\ElggAnnotation $item
 * @param array  $vars Additional parameters for the rendering
 *      'item_view' Alternative view used to render list items
 * @return string
 * @since 1.8.0
 * @access private
 */
function elgg_view_list_item($item, array $vars = array())
{
    if ($item instanceof \ElggEntity) {
        return elgg_view_entity($item, $vars);
    } else {
        if ($item instanceof \ElggAnnotation) {
            return elgg_view_annotation($item, $vars);
        } else {
            if ($item instanceof \ElggRiverItem) {
                return elgg_view_river_item($item, $vars);
            }
        }
    }
    return '';
}
コード例 #6
0
ファイル: functions.php プロジェクト: lorea/Hydra-dev
/**
 * 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;
}