PluginProbe
Super RSS Reader – Add attractive RSS Feed Widget / 3.0
Super RSS Reader – Add attractive RSS Feed Widget v3.0
trunk 0.8 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.0 3.1 3.2 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.7 4.8 All 33 releases
super-rss-reader / includes / widget.php

widget.php in Super RSS Reader – Add attractive RSS Feed Widget 3.0, at includes/widget.php

285 lines 10.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Contains core logic for the widget
4 *
5 */
6
7 if( ! defined( 'ABSPATH' ) ) exit;
8
9 class SRR_Widget{
10
11 public static function init(){
12
13 add_action( 'widgets_init', array( __class__, 'init_widget' ) );
14
15 add_action( 'wp_enqueue_scripts', array( __class__, 'public_scripts' ) );
16
17 add_action( 'admin_enqueue_scripts', array( __class__, 'admin_scripts' ) );
18
19 }
20
21 public static function init_widget(){
22
23 register_widget( 'super_rss_reader_widget' );
24
25 }
26
27 public static function public_scripts(){
28
29 wp_enqueue_script( 'jquery-easy-ticker-js', SRR_URL . 'public/js/jquery.easy-ticker.min.js', array( 'jquery', 'super-rss-reader-js' ) );
30 wp_enqueue_script( 'super-rss-reader-js', SRR_URL . 'public/js/script.min.js', array( 'jquery' ) );
31 wp_enqueue_style( 'super-rss-reader-css', SRR_URL . 'public/css/style.min.css' );
32
33 }
34
35 public static function admin_scripts( $hook ){
36
37 if( $hook == 'widgets.php' ){
38 wp_enqueue_style( 'srr_admin_css', SRR_URL . 'admin/css/style.css' );
39 wp_enqueue_script( 'srr_admin_js', SRR_URL . 'admin/js/script.js' );
40 }
41
42 }
43
44 public static function default_settings(){
45 return array(
46 'title' => '',
47 'urls' => '',
48 'tab_titles' => '',
49 'count' => 5,
50 'show_date' => 0,
51 'show_desc' => 1,
52 'show_author' => 0,
53 'show_thumb' => 1,
54 'open_newtab' => 1,
55 'strip_desc' => 100,
56 'add_nofollow' => 1,
57 'read_more' => '[...]',
58 'rich_desc' => 0 ,
59 'color_style' => 'none',
60 'enable_ticker' => 1,
61 'visible_items' => 5,
62 'strip_title' => 0,
63 'ticker_speed' => 4,
64 );
65 }
66
67 public static function color_themes(){
68 return array(
69 'No style' => 'none',
70 'Grey' => 'grey',
71 'Dark' => 'dark',
72 'Orange' => 'orange',
73 'Simple modern' => 'smodern'
74 );
75 }
76
77 public static function render_feed( $settings ){
78
79 $settings = wp_parse_args( $settings, self::default_settings() );
80
81 $urls = stripslashes( $settings['urls'] );
82 $tab_titles = stripslashes( $settings['tab_titles'] );
83 $count = intval( $settings['count'] );
84
85 $show_date = intval( $settings['show_date'] );
86 $show_desc = intval( $settings['show_desc'] );
87 $show_author = intval( $settings['show_author'] );
88 $show_thumb = stripslashes( $settings['show_thumb'] );
89 $open_newtab = intval( $settings['open_newtab'] );
90 $add_nofollow = intval( $settings['add_nofollow'] );
91 $strip_desc = intval( $settings['strip_desc'] );
92 $strip_title = intval( $settings['strip_title'] );
93 $read_more = htmlspecialchars( $settings['read_more'] );
94 $rich_desc = intval( $settings['rich_desc'] );
95
96 $color_theme = stripslashes( $settings['color_style'] );
97 $enable_ticker = intval( $settings['enable_ticker'] );
98 $visible_items = intval( $settings['visible_items'] );
99 $ticker_speed = intval( $settings['ticker_speed'] ) * 1000;
100
101 if( empty( $urls ) ){
102 return '';
103 }
104
105 $url_delim = strpos( $urls, ',' ) !== false ? ',' : "\n";
106 $tab_title_delim = strpos( $tab_titles, ',' ) !== false ? ',' : "\n";
107
108 $rand = array();
109 $url = explode( $url_delim, $urls );
110 $tab_title = explode( $tab_title_delim, $tab_titles );
111 $url_count = count( $url );
112
113 // Generating the tabs
114 if( $url_count > 1 ){
115 echo '<ul class="srr-tab-wrap srr-tab-style-' . $color_theme . ' srr-clearfix">';
116 for( $i=0; $i < $url_count; $i++ ){
117
118 // Get the Feed URL
119 $feed_url = trim( $url[$i] );
120 $rss = fetch_feed( $feed_url );
121 $rand[$i] = rand(100, 999);
122
123 if( !is_wp_error( $rss ) ){
124
125 if( isset( $tab_title[$i] ) && !empty( $tab_title[$i] ) ){
126 $rss_title = $tab_title[$i];
127 }else{
128 $rss_title = esc_attr( strip_tags( $rss->get_title() ) );
129 }
130
131 echo '<li data-tab="srr-tab-' . $rand[$i] . '">' . $rss_title . '</li>';
132 }else{
133 echo '<li data-tab="srr-tab-' . $rand[$i] . '">Error</li>';
134 }
135
136 }
137 echo '</ul>';
138 }
139
140 // Generating the feed items
141 for( $i=0; $i < $url_count; $i++ ){
142
143 // Get the Feed URL
144 $feed_url = trim( $url[$i] );
145 if( isset( $url[$i] ) ){
146 $rss = fetch_feed( $feed_url );
147 }else{
148 return '';
149 }
150
151 if( method_exists( $rss, 'enable_order_by_date' ) ){
152 $rss->enable_order_by_date( false );
153 }
154
155 // Check for feed errors
156 if (!is_wp_error( $rss ) ){
157 $max_items = $rss->get_item_quantity( $count );
158 $rss_items = $rss->get_items( 0, $max_items );
159 $rss_title = esc_attr( strip_tags( $rss->get_title() ) );
160 $rss_desc = esc_attr( strip_tags( $rss->get_description() ) );
161 }else{
162 echo '<div class="srr-wrap srr-style-' . $color_theme .'" data-id="srr-tab-' . $rand[$i] . '"><p>RSS Error: ' . $rss->get_error_message() . '</p></div>';
163 continue;
164 }
165
166 $randAttr = isset($rand[$i]) ? ' data-id="srr-tab-' . $rand[$i] . '" ' : '';
167
168 // Outer Wrap start
169 echo '<div class="srr-wrap ' . (($enable_ticker == 1 ) ? 'srr-vticker' : '' ) . ' srr-style-' . $color_theme . '" data-visible="' . $visible_items . '" data-speed="' . $ticker_speed . '"' . $randAttr . '><div>';
170
171 // Check feed items
172 if ($max_items == 0){
173 echo '<div>No items.</div>';
174 }else{
175 $j=1;
176 // Loop through each feed item
177 foreach ($rss_items as $item){
178
179 // Getting link
180 $link = $item->get_link();
181 while ( stristr( $link, 'http' ) != $link ){ $link = substr( $link, 1 ); }
182 $link = esc_url(strip_tags($link));
183
184 // Getting title
185 $title = esc_attr(strip_tags($item->get_title()));
186 if ( empty($title) )
187 $title = __('No Title');
188
189 if( $strip_title != 0 ){
190 $titleLen = strlen($title);
191 $title = wp_html_excerpt( $title, $strip_title );
192 $title = ($titleLen > $strip_title) ? $title . ' ...' : $title;
193 }
194
195 // Open links in new tab
196 $new_tab = ($open_newtab) ? ' target="_blank"' : '';
197
198 // Add no follow attribute
199 $no_follow = ($add_nofollow) ? ' rel="nofollow"' : '';
200
201 // Getting date
202 $date = $item->get_date('j F Y');
203
204 // Getting thumbnail if present @since v2.2
205 $thumb = '';
206 if ($show_thumb == 1 && $enclosure = $item->get_enclosure()){
207 $thumb_url = $enclosure->get_thumbnail();
208 if(!empty($thumb_url))
209 $thumb = '<img src="' . $thumb_url . '" alt="' . $title . '" class="srr-thumb" align="left"/>';
210 }
211
212 // Getting description
213 $desc = '';
214 if( $rich_desc == 1 ){
215 $desc = strip_tags( str_replace( 'eval', '', $item->get_description() ) , '<p><a><img><em><strong><font><strike><s><u><i>');
216
217 }else{
218 $read_more = '';
219 $desc = str_replace( array("\n", "\r"), ' ', esc_attr( strip_tags( @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option('blog_charset') ) ) ) );
220 if($strip_desc != 0){
221 $desc = wp_html_excerpt( $desc, $strip_desc );
222 $read_more = ( !empty( $read_more ) ) ? '<a href="' . $link . '" title="Read more"' . $new_tab . $no_follow . '>' . $read_more . '</a>' : '';
223
224 if ( '[...]' == substr( $desc, -5 ) )
225 $desc = substr( $desc, 0, -5 );
226 elseif ( '[&hellip;]' != substr( $desc, -10 ) )
227 $desc .= '';
228
229 $desc = esc_html( $desc );
230 }
231
232 $desc = $thumb . $desc . ' ' . $read_more;
233
234 }
235
236 // Getting the author
237 $author = $item->get_author();
238 if ( is_object($author) ) {
239 $author = $author->get_name();
240 $author = esc_html(strip_tags($author));
241 }
242
243 echo "\n\t";
244
245 // Display the feed items
246 echo '<div class="srr-item ' . (($j%2 == 0) ? 'even' : 'odd') . '">';
247 echo '<div class="srr-title"><a href="' . $link . '"' . $new_tab . $no_follow . ' title="Posted on ' . $date . '">' . $title . '</a></div>';
248 echo '<div class="srr-meta">';
249
250 if($show_date && !empty($date))
251 echo '<time class="srr-date">' . $date . '</time>';
252
253 if($show_author && !empty($author))
254 echo ' - <cite class="srr-author">' . $author . '</cite>';
255
256 echo '</div>';
257
258 if($show_desc)
259 echo '<p class="srr-summary srr-clearfix">' . $desc . '</p>';
260
261 echo '</div>';
262 // End display
263
264 $j++;
265 }
266 }
267
268 // Outer wrap end
269 echo "\n\n</div>
270 </div>\n\n" ;
271
272 if ( !is_wp_error($rss) )
273 $rss->__destruct();
274
275 unset($rss);
276
277 }
278
279 }
280
281 }
282
283 SRR_Widget::init();
284
285 ?>