blob: f13b00fe7ac6a4cf481791882c1b28f49e9229aa (
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
|
<?php
/**
* View a feed in a widget
*/
elgg_load_library('simplepie');
$allowed_tags = '<a><p><br><b><i><em><del><pre><strong><ul><ol><li><img>';
$feed_url = $vars['entity']->feed_url;
if ($feed_url) {
// get widget settings
$excerpt = $vars['entity']->excerpt;
$num_items = $vars['entity']->num_items;
$post_date = $vars['entity']->post_date;
$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()) {
echo '<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
echo "<h2 class=\"simplepie-heading\">$feed_link</h2>";
echo '<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 = $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";
}
echo <<<HTML
<li class="mbm">
<h4 class="mbs">$item_link</h4>
<div class="mbs clearfix">$excerpt</div>
<p class="elgg-subtext">$post_date</p>
</li>
HTML;
}
echo "</ul>";
} else {
// display message only to owner
if (elgg_get_logged_in_user_guid() == elgg_get_page_owner_guid()) {
echo '<p>' . elgg_echo('simplepie:notset') . '</p>';
}
}
|