diff options
Diffstat (limited to 'mod/simplepie/views/default/widgets')
-rw-r--r-- | mod/simplepie/views/default/widgets/feed_reader/content.php | 81 | ||||
-rw-r--r-- | mod/simplepie/views/default/widgets/feed_reader/edit.php | 62 |
2 files changed, 143 insertions, 0 deletions
diff --git a/mod/simplepie/views/default/widgets/feed_reader/content.php b/mod/simplepie/views/default/widgets/feed_reader/content.php new file mode 100644 index 000000000..f13b00fe7 --- /dev/null +++ b/mod/simplepie/views/default/widgets/feed_reader/content.php @@ -0,0 +1,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>'; + } +} diff --git a/mod/simplepie/views/default/widgets/feed_reader/edit.php b/mod/simplepie/views/default/widgets/feed_reader/edit.php new file mode 100644 index 000000000..83218dcbb --- /dev/null +++ b/mod/simplepie/views/default/widgets/feed_reader/edit.php @@ -0,0 +1,62 @@ +<?php +/** + * Simplepie feed reader widget settings + */ + +// set default value +if (!isset($vars['entity']->num_items)) { + $vars['entity']->num_items = 10; +} + +if (!isset($vars['entity']->excerpt)) { + $vars['entity']->excerpt = false; +} + +if (!isset($vars['entity']->post_date)) { + $vars['entity']->post_date = false; +} + +$url_label = elgg_echo("simplepie:feed_url"); +$url_textbox = elgg_view('input/text', array( + 'name' => 'params[feed_url]', + 'value' => $vars['entity']->feed_url, + 'onclick' => 'this.select();', +)); + +$num_items_label = elgg_echo('simplepie:num_items'); +$num_items_select = elgg_view('input/dropdown', array( + 'name' => 'params[num_items]', + 'value' => $vars['entity']->num_items, + 'options' => array(3, 5, 8, 10, 12, 15, 20), +)); + +$excerpt_label = elgg_echo('simplepie:excerpt'); +$excerpt_checkbox = elgg_view('input/checkbox', array( + 'name' => 'params[excerpt]', + 'value' => true, + 'checked' => $vars['entity']->excerpt ? 'checked' : '', +)); + +$post_date_label = elgg_echo('simplepie:post_date'); +$post_date_checkbox = elgg_view('input/checkbox', array( + 'name' => 'params[post_date]', + 'value' => true, + 'checked' => $vars['entity']->post_date ? 'checked' : '', +)); + +echo <<<HTML +<div> + $url_label + $url_textbox +</div> +<div> + $num_items_label + $num_items_select +</div> +<div> + $excerpt_checkbox $excerpt_label +</div> +<div> + $post_date_checkbox $post_date_label +</div> +HTML; |