aboutsummaryrefslogtreecommitdiff
path: root/views/default/simplepie/group_module.php
blob: 7d0a7bc2ff814a8a45a62137f57e006498fe02b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
 * Group simplepie:rss module
 */
elgg_load_library('simplepie');

$group = elgg_get_page_owner_entity();

if ($group->rss_enable != "yes") {
	return true;
}

elgg_push_context('widgets');

$allowed_tags = '<a><p><br><b><i><em><del><pre><strong><ul><ol><li><img>';
$feed_url = $group->feed_url;
$content = '';

if ($group->canEdit()) {
	$content .= elgg_view_form("simplepie/group_module", array(
		'id' => 'simplepie-form',
		'class' => $feed_url ? 'hidden' : '',
	), $vars);
}

if ($feed_url) {

        // get widget settings
        $excerpt   = true;
        $post_date = true;
	$num_items = 7;

        $cache_location = elgg_get_data_path() . '/simplepie_cache/';
        if (!file_exists($cache_location)) {
                mkdir($cache_location, 0777);
        }

        $feed = new SimplePie($feed_url, $cache_location);

        // doubles timeout if going through a proxy
        //$feed->set_timeout(20);

        // only display errors to profile owner
        $num_posts_in_feed = $feed->get_item_quantity();
        if (!$num_posts_in_feed) {
                if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) {
                        $content .= '<p>' . elgg_echo('simplepie:notfind') . '</p>';
                }
        }

        // don't display more feed items than user requested
        if ($num_items > $num_posts_in_feed) {
                $num_items = $num_posts_in_feed;
        }

        $feed_link = elgg_view('output/url', array(
                'href' => $feed->get_permalink(),
                'text' => $feed->get_title(),
        ));

        // need to center
        $content .= "<h2 class=\"simplepie-heading\">$feed_link</h2>";
        $content .= '<ul class="simplepie-list">';
        foreach ($feed->get_items(0, $num_items) as $item) {
                $item_link = elgg_view('output/url', array(
                        'href' => $item->get_permalink(),
                        'text' => $item->get_title(),
                ));

                if ($excerpt) {
                        $text = strip_tags($item->get_description(true), $allowed_tags);
                        $excerpt = elgg_get_excerpt($text);
                }

                if ($post_date) {
                        $item_date_label = elgg_echo('simplepie:postedon');
                        $item_date = $item->get_date('j F Y | g:i a');
                        $post_date = "$item_date_label $item_date";
                }

                $content .= <<<HTML
<li class="mbm elgg-item">
        <h4 class="mbs">$item_link</h4>
        <p class="elgg-subtext">$post_date</p>
        <div class="elgg-content">$excerpt</div>
</li>
HTML;

        }
        $content .= "</ul>";

}



elgg_pop_context();

if (!$content) {
	$content = '<p>' . elgg_echo('simplepie:none') . '</p>';
}

$edit = elgg_view('output/url', array(
	'href' => '#simplepie-form',
	'text' => elgg_echo('edit'),
	'rel' => 'toggle'
));

echo elgg_view('groups/profile/module', array(
	'title' => elgg_echo('RSS Group'),
	'content' => $content,
	'all_link' => $edit,
));