FEEDZY RSS Feeds Lite - Version 3.0.0

Version Description

  • 10/11/2016 =
  • Refactored code base from 2.8.1 to OOP style
  • Added support for PRO version
  • Added new hooks feedzy_item_filter, feedzy_item_url_filter
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 FEEDZY RSS Feeds Lite
Version 3.0.0
Comparing to
See all releases

Code changes from version 2.8 to 3.0.0

Files changed (44) hide show
  1. CHANGELOG.md +5 -1
  2. LICENSE.txt +339 -0
  3. README.md +116 -0
  4. css/feedzy-rss-feeds.css +426 -47
  5. css/form.css +724 -0
  6. feedzy-rss-feed.php +112 -85
  7. feedzy-rss-feeds-functions.php +0 -335
  8. feedzy-rss-feeds-shortcode.php +0 -277
  9. feedzy-rss-feeds-ui-lang.php +0 -45
  10. feedzy-rss-feeds-ui.php +0 -57
  11. feedzy-rss-feeds-widget.php +0 -245
  12. form/form.php +133 -0
  13. img/feedzy-default-template.jpg +0 -0
  14. img/feedzy-default.jpg +0 -0
  15. img/feedzy-style1-template.jpg +0 -0
  16. img/feedzy-style2-template.jpg +0 -0
  17. img/feedzy.png +0 -0
  18. img/feedzy.svg +11 -11
  19. includes/abstract/feedzy-rss-feeds-admin-abstract.php +740 -0
  20. includes/admin/feedzy-rss-feeds-admin.php +127 -0
  21. includes/admin/feedzy-rss-feeds-ui-lang.php +344 -0
  22. includes/admin/feedzy-rss-feeds-ui.php +146 -0
  23. includes/admin/feedzy-wp-widget.php +249 -0
  24. includes/feedzy-rss-feeds-activator.php +36 -0
  25. includes/feedzy-rss-feeds-deactivator.php +36 -0
  26. includes/feedzy-rss-feeds-i18n.php +47 -0
  27. includes/feedzy-rss-feeds-loader.php +155 -0
  28. includes/feedzy-rss-feeds.php +205 -0
  29. index.php +9 -2
  30. js/feedzy-rss-feeds-ui-mce.js +96 -173
  31. js/feedzy-rss-feeds-ui-scripts.js +0 -49
  32. {langs → languages}/feedzy_rss_translate-de_DE.mo +0 -0
  33. {langs → languages}/feedzy_rss_translate-de_DE.po +141 -141
  34. {langs → languages}/feedzy_rss_translate-es_ES.mo +0 -0
  35. {langs → languages}/feedzy_rss_translate-es_ES.po +0 -0
  36. {langs → languages}/feedzy_rss_translate-fr_FR.mo +0 -0
  37. {langs → languages}/feedzy_rss_translate-fr_FR.po +0 -0
  38. {langs → languages}/feedzy_rss_translate-ja.mo +0 -0
  39. {langs → languages}/feedzy_rss_translate-ja.po +189 -189
  40. {langs → languages}/feedzy_rss_translate-sr_RS.mo +0 -0
  41. {langs → languages}/feedzy_rss_translate-sr_RS.po +204 -204
  42. languages/feedzy_rss_translate.pot +304 -0
  43. readme.txt +313 -298
  44. uninstall.php +24 -0
CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
0
- Release 3.0.0 version
1
+
2
+
3
+
4
+
5
+
LICENSE.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
README.md ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Feedzy RSS Feeds Lite
2
+ [![Build Status](https://travis-ci.org/Codeinwp/feedzy-rss-feeds.svg?branch=production)](https://travis-ci.org/Codeinwp/feedzy-rss-feeds)
3
+ [![Code Climate](https://codeclimate.com/github/Codeinwp/feedzy-rss-feeds/badges/gpa.svg)](https://codeclimate.com/github/Codeinwp/feedzy-rss-feeds)
4
+ [![Issue Count](https://codeclimate.com/github/Codeinwp/feedzy-rss-feeds/badges/issue_count.svg)](https://codeclimate.com/github/Codeinwp/feedzy-rss-feeds)
5
+
6
+ ## Description
7
+ FEEDZY RSS Feeds is a small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
8
+
9
+ > **Time-saving features available in the FULL version:**
10
+ >
11
+ > * Multiple templates for feed items
12
+ > * Automatically build affiliate links
13
+ > * Parse price from product feeds
14
+ > * Priority email support from the developer of the plugin
15
+ > * Support and updates for 12 months
16
+ >
17
+ > **[Learn more about Feedzy Full version]( https://themeisle.com/plugins/feedzy-rss-feeds-lite/ )**
18
+
19
+ The plugin uses the SimplePie php CLASS natively included in WordPress. SimplePie is a RSS parser that can read the information contained in a feed, process it, and finally display it.
20
+
21
+ FEEDZY RSS Feeds therefore supports any additional library and uses only the bare minimum to ensure good performance (minimalistic CSS + cache). This will ensure compatibility with any hosting provider that supports WordPress, but if for any reason it doesn't work for yours feel free to <a href="http://themeisle.com/contact/" rel="nofollow">contact us</a>.
22
+
23
+ You may use this plugin in your widgets and your pages and reuse the shortcode + widget several times within the same page.
24
+
25
+ By activating this plugin, your cover picture will be inserted into your RSS feeds. By doing so, you'll make it will easier for external sites to retrieve images from your feeds.
26
+
27
+ **Please ask for help or report bugs if anything goes wrong. It is the best way to make the community benefit!**
28
+
29
+ ## Shortcode Parameters
30
+
31
+ * feeds
32
+ * max
33
+ * feed_title
34
+ * target
35
+ * title
36
+ * meta
37
+ * summary
38
+ * summarylength
39
+ * thumb
40
+ * default
41
+ * size
42
+ * keywords_title
43
+
44
+ **Plugin is now using the TinyMCE API to improve UI and makes it easy to insert shortcodes!**
45
+
46
+
47
+ ## Basic example
48
+ ```
49
+ [feedzy-rss feeds="http://themeisle.com/feed"]
50
+ ```
51
+
52
+
53
+ ## Advanced example
54
+
55
+ ```
56
+ [feedzy-rss feeds="http://themeisle.com/feed" max="2" feed_title="yes" target="_blank" title="50" meta="yes" summary="yes" summarylength="300" thumb="yes" size="100" default="http://your-site/default-image.jpg" keywords_title="WordPress"]
57
+ ```
58
+
59
+
60
+ ## Available Hooks
61
+
62
+ ```
63
+ feedzy_feed_items
64
+ feedzy_item_keyword
65
+ feedzy_item_attributes
66
+ feedzy_thumb_output
67
+ feedzy_title_output
68
+ feedzy_meta_args
69
+ feedzy_meta_output
70
+ feedzy_summary_input
71
+ feedzy_summary_output
72
+ feedzy_global_output
73
+ feedzy_thumb_sizes
74
+ feedzy_feed_blacklist_images
75
+ feedzy_default_image
76
+ feedzy_default_error
77
+ feedzy_item_filter
78
+ feedzy_item_url_filter
79
+ shortcode_atts_feedzy_default
80
+ ```
81
+
82
+ This plugin is maintained and supported by Themeisle, check out some of the other <a href="http://themeisle.com/wordpress-plugins/" rel="nofollow">WordPress plugins</a> and <a href="http://themeisle.com/wordpress-themes/free/" rel="nofollow">free themes</a> we've developed.
83
+
84
+ # Languages
85
+
86
+ * English
87
+ * French
88
+ * Serbian [Borisa Djuraskovic](http://www.webhostinghub.com/ "Borisa Djuraskovic")
89
+ * Japanese [sama55](http://askive.cmsbox.jp/ "sama55")
90
+ * German [ralfsteck](https://profiles.wordpress.org/ralfsteck/ "ralfsteck")
91
+ * Spanish [Angel Calzado](http://sintaxisweb.es "Angel Calzado")
92
+
93
+ Become a translator and send me your translation! [Contact-me](http://themeisle.com/contact "Contact")
94
+
95
+ ## Installation
96
+
97
+ 1. Upload and activate the plugin (or install it through the WP admin console)
98
+ 2. Insert shortcode ! ;-)
99
+
100
+ ### Frequently Asked Questions
101
+
102
+ #### Is it responsive friendly?
103
+
104
+ Yes it is.
105
+
106
+ #### My feed is not displayed and the following message appears "Sorry, this feed is currently unavailable or does not exists anymore."
107
+
108
+ You have to check first if your feed is valid. Please test it here: https://validator.w3.org/feed/
109
+
110
+
111
+ ### Screenshots
112
+
113
+ 1. Simple example
114
+ 2. Inserting a shortcode in the WYSIWYG
115
+ 3. Widget admin
116
+ 4. Widget render
css/feedzy-rss-feeds.css CHANGED
@@ -1,47 +1,426 @@
1
- /**
2
- * Plugin Name: FEEDZY RSS Feeds by b*web
3
- * Plugin URI: http://b-website.com/
4
- * Author: Brice CAPOBIANCO
5
- */
6
- .feedzy-rss > ul {
7
- margin: 0;
8
- padding: 0;
9
- }
10
- .feedzy-rss .rss_item {
11
- list-style: none;
12
- border-bottom: 1px solid #eee;
13
- }
14
- .feedzy-rss .rss_item .title {
15
- font-weight: bold;
16
- }
17
- .feedzy-rss .rss_item:after{
18
- content:'';
19
- display:block;
20
- clear: both;
21
- }
22
- .feedzy-rss .rss_item .rss_image {
23
- float: left;
24
- text-decoration: none;
25
- border: none;
26
- position:relative;
27
- }
28
- .feedzy-rss .rss_item .rss_image span{
29
- display:inline-block;
30
- background-size: cover;
31
- background-position: 50%;
32
- position: absolute;
33
- }
34
- .feedzy-rss .rss_item .rss_image {
35
- margin: 0.3em 1em 0 0;
36
- }
37
- .feedzy-rss .rss_item .rss_content small {
38
- display: block;
39
- font-size: 0.9em;
40
- font-style:italic;
41
- }
42
-
43
- /*TinyMce UI button*/
44
- i.mce-i-feedzy-icon {
45
- background-image: url('../img/feedzy.png');
46
- background-image: none, url('../img/feedzy.svg'), url('../img/feedzy.png');
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * feedzy-rss-feeds.css
3
+ * Feedzy RSS Feed
4
+ * Copyright: (c) 2016 Themeisle, themeisle.com
5
+ * Version: 3.0.0
6
+ * Plugin Name: FEEDZY RSS Feeds
7
+ * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
+ * Author: Themeisle
9
+ */
10
+ .feedzy-rss > ul {
11
+ margin: 0;
12
+ padding: 0;
13
+ }
14
+
15
+ /*noinspection CssUnusedSymbol*/
16
+ .feedzy-rss .rss_item {
17
+ border-bottom: 1px solid #eee;
18
+ list-style: none;
19
+ }
20
+
21
+ .feedzy-rss .rss_item .title {
22
+ font-weight: bold;
23
+ }
24
+
25
+ /*noinspection CssUnusedSymbol*/
26
+ .feedzy-rss .rss_item:after {
27
+ display: block;
28
+ clear: both;
29
+ content: "";
30
+ }
31
+
32
+ /*noinspection CssUnusedSymbol*/
33
+ .feedzy-rss .rss_item .rss_image {
34
+ float: left;
35
+ position: relative;
36
+ border: none;
37
+ text-decoration: none;
38
+ }
39
+
40
+ .feedzy-rss .rss_item .rss_image span {
41
+ display: inline-block;
42
+ position: absolute;
43
+ width: 100%;
44
+ height: 100%;
45
+ background-position: 50%;
46
+ background-size: cover;
47
+ }
48
+
49
+ /*noinspection CssUnusedSymbol*/
50
+ .feedzy-rss .rss_item .rss_image .fetched {
51
+ z-index: 999;
52
+ }
53
+
54
+ .feedzy-rss .rss_item .rss_image {
55
+ margin: 0.3em 1em 0 0;
56
+ }
57
+
58
+ .feedzy-rss .rss_item .rss_content small {
59
+ display: block;
60
+ font-size: 0.9em;
61
+ font-style: italic;
62
+ }
63
+
64
+ /*TinyMce UI button*/
65
+ /*noinspection CssUnusedSymbol*/
66
+ i.mce-i-feedzy-icon {
67
+ background-image: none, url("../img/feedzy.svg"), url("../img/feedzy.png");
68
+ }
69
+
70
+ #feedzy-rss-button-insert {
71
+ border-color: #4cae4c;
72
+ color: #fff;
73
+ background-color: #5cb85c;
74
+ }
75
+
76
+ #feedzy-rss-button-insert button {
77
+ color: #fff;
78
+ }
79
+
80
+ #feedzy-rss-button-insert:hover,
81
+ #feedzy-rss-button-insert:focus {
82
+ border-color: #398439;
83
+ color: #fff;
84
+ background-color: #449d44;
85
+ }
86
+
87
+ #feedzy-rss-button-cancel {
88
+ border-color: #ccc;
89
+ color: #333;
90
+ background-color: #fff;
91
+ }
92
+
93
+ #feedzy-rss-button-cancel button {
94
+ color: #333;
95
+ }
96
+
97
+ #feedzy-rss-button-cancel:hover,
98
+ #feedzy-rss-button-cancel:focus {
99
+ border-color: #adadad;
100
+ color: #333;
101
+ background-color: #e6e6e6;
102
+ }
103
+
104
+ #feedzy-rss-button-pro {
105
+ position: absolute;
106
+ left: 10px !important;
107
+ border-color: #46b8da;
108
+ color: #fff;
109
+ background-color: #5bc0de;
110
+ }
111
+
112
+ #feedzy-rss-button-pro button {
113
+ color: #fff;
114
+ }
115
+
116
+ #feedzy-rss-button-pro:hover,
117
+ #feedzy-rss-button-pro:focus {
118
+ border-color: #269abc;
119
+ color: #fff;
120
+ background-color: #31b0d5;
121
+ }
122
+
123
+ #feedzy-rss-insert-dialog-title {
124
+ font-weight: 300;
125
+ text-align: center;
126
+ }
127
+
128
+ /* PRO */
129
+ .feedzy-rss ul {
130
+ margin: 0 -2%;
131
+ }
132
+
133
+ .feedzy-rss ul:before,
134
+ .feedzy-rss ul:after {
135
+ display: table;
136
+ content: " ";
137
+ }
138
+
139
+ .feedzy-rss ul:after {
140
+ clear: both;
141
+ }
142
+
143
+ .feedzy-rss .rss_item {
144
+ margin: 2%;
145
+ padding: 0;
146
+ }
147
+
148
+ /* Default */
149
+ /*
150
+ .feedzy-rss .feedzy-default .rss_image,
151
+ .feedzy-rss .feedzy-default .rss_content_wrap {
152
+ display: inline-block;
153
+ width: 100%;
154
+ }
155
+
156
+ .feedzy-rss .feedzy-default .rss_image {
157
+ float: none;
158
+ padding: 0;
159
+ text-align: center;
160
+ width: 100%;
161
+ }
162
+
163
+ .feedzy-rss .feedzy-default .rss_content_wrap {
164
+ margin: 10px 0 0;
165
+ padding: 0;
166
+ }*/
167
+
168
+ /* Style1 */
169
+ .feedzy-rss .feedzy-style1 .rss_image,
170
+ .feedzy-rss .feedzy-style1 .rss_content_wrap {
171
+ display: inline-block;
172
+ width: 100%;
173
+ }
174
+
175
+ .feedzy-rss .feedzy-style1 .rss_item .rss_image span {
176
+ width: 100%;
177
+ }
178
+
179
+ .feedzy-rss .feedzy-style1 .rss_content_wrap {
180
+ text-align: left;
181
+ }
182
+
183
+ .feedzy-rss .feedzy-style1 .rss_item {
184
+ text-align: center;
185
+ }
186
+
187
+ .feedzy-rss .feedzy-style2 .rss_item .rss_image {
188
+ float: none;
189
+ }
190
+
191
+ .feedzy-rss .feedzy-style2 .rss_item .rss_image span {
192
+ width: 100%;
193
+ }
194
+
195
+ .feedzy-rss .feedzy-style2 .rss_content_wrap {
196
+ text-align: left;
197
+ }
198
+
199
+ .feedzy-rss .feedzy-style2 .rss_item {
200
+ text-align: center;
201
+ }
202
+
203
+ .feedzy-rss .feedzy-style1 .rss_image {
204
+ float: none;
205
+ width: 100%;
206
+ padding: 0;
207
+ text-align: center;
208
+ -webkit-transition: 0.75s ease;
209
+ transition: 0.75s ease;
210
+ }
211
+
212
+ .feedzy-rss .feedzy-style1 .rss_image a {
213
+ border: 3px solid transparent;
214
+ border-radius: 50%;
215
+ -webkit-transition: 0.5s ease;
216
+ transition: 0.5s ease;
217
+ }
218
+
219
+ .feedzy-rss .feedzy-style1 .rss_image a span {
220
+ display: inline-block;
221
+ border-radius: 50%;
222
+ left: 0px;
223
+ }
224
+
225
+ .feedzy-rss .feedzy-style1 .rss_item:hover .rss_image a {
226
+ -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.25);
227
+ box-shadow: 0 0 10px rgba(0,0,0,0.25);
228
+ }
229
+
230
+ .feedzy-rss .feedzy-style1 .rss_content_wrap {
231
+ margin: 10px 0 0;
232
+ padding: 0;
233
+ }
234
+
235
+ .feedzy-rss .feedzy-style1 .rss_content_wrap .title a {
236
+ text-decoration: none;
237
+ }
238
+
239
+ .feedzy-rss .feedzy-style1 .rss_content_wrap .title a:hover {
240
+ text-decoration: underline;
241
+ }
242
+
243
+ .feedzy-rss .feedzy-style1 .rss_content .description {
244
+ margin: 0;
245
+ padding: 0;
246
+ font-size: 90%;
247
+ }
248
+
249
+ .feedzy-rss .feedzy-style1 .rss_content .price-wrap {
250
+ margin: 10px 0 0;
251
+ text-align: center;
252
+ }
253
+
254
+ .feedzy-rss .feedzy-style1 .rss_content .price {
255
+ display: inline-block;
256
+ padding: 5px 10px;
257
+ border-radius: 5px;
258
+ color: #fff;
259
+ background: #4f6d8d;
260
+ font-weight: 700;
261
+ }
262
+
263
+ /* Style2 */
264
+ .feedzy-rss .feedzy-style2 .rss_item {
265
+ padding: 0 !important;
266
+ border: 1px solid #e3edeb;
267
+ border-radius: 5px;
268
+ }
269
+
270
+ .feedzy-rss .feedzy-style2 .rss_image span {
271
+ left: 0;
272
+ }
273
+
274
+ .feedzy-rss .feedzy-style2 .rss_image,
275
+ .feedzy-rss .feedzy-style2 .rss_content_wrap {
276
+ display: inline-block;
277
+ width: 100%;
278
+ }
279
+
280
+ .feedzy-rss .feedzy-style2 .rss_image {
281
+ overflow: hidden;
282
+ width: 100%;
283
+ padding: 0;
284
+ border-bottom: 7px solid #355c7d;
285
+ line-height: 0;
286
+ text-align: center;
287
+ }
288
+
289
+ .feedzy-rss .feedzy-style2 .rss_image a span {
290
+ display: inline-block;
291
+ -webkit-transition: 0.3s ease;
292
+ transition: 0.3s ease;
293
+ }
294
+
295
+ .feedzy-rss .feedzy-style2 .rss_item:hover .rss_image a span {
296
+ -webkit-transform: scale(1.2);
297
+ -ms-transform: scale(1.2);
298
+ transform: scale(1.2);
299
+ }
300
+
301
+ .feedzy-rss .feedzy-style2 .rss_content_wrap {
302
+ margin: 0;
303
+ padding: 0;
304
+ letter-spacing: 0;
305
+ }
306
+
307
+ .feedzy-rss .feedzy-style2 .rss_content_wrap .title {
308
+ display: block;
309
+ padding: 10px 15px;
310
+ }
311
+
312
+ .feedzy-rss .feedzy-style2 .rss_content_wrap .title a {
313
+ /*color: #355c7d;*/
314
+ text-decoration: none;
315
+ }
316
+
317
+ .feedzy-rss .feedzy-style2 .rss_content_wrap .title a:hover {
318
+ text-decoration: underline;
319
+ }
320
+
321
+ .feedzy-rss .feedzy-style2 .rss_content .meta {
322
+ padding: 10px 15px;
323
+ border-top: 1px solid #e3edeb;
324
+ border-bottom: 1px solid #e3edeb;
325
+ background-color: #f1f5f4;
326
+ }
327
+
328
+ .feedzy-rss .feedzy-style2 .rss_content .description {
329
+ margin: 0;
330
+ padding: 10px 15px;
331
+ font-size: 90%;
332
+ line-height: 1.5;
333
+ }
334
+
335
+ .feedzy-rss .feedzy-style2 .rss_content .price-wrap {
336
+ margin: 10px 0 15px;
337
+ text-align: center;
338
+ }
339
+
340
+ .feedzy-rss .feedzy-style2 .rss_content .price {
341
+ display: inline-block;
342
+ padding: 8px 15px;
343
+ color: #fff;
344
+ background: #355c7d;
345
+ font-weight: 700;
346
+ }
347
+
348
+ /* Columns */
349
+ .feedzy-rss .feedzy-rss-col-1,
350
+ /* SCHIMBAT DIN ID in CLASA */
351
+ .feedzy-rss .feedzy-rss-col-2,
352
+ .feedzy-rss .feedzy-rss-col-3,
353
+ .feedzy-rss .feedzy-rss-col-4,
354
+ .feedzy-rss .feedzy-rss-col-5,
355
+ .feedzy-rss .feedzy-rss-col-6 {
356
+ float: left;
357
+ width: 96%;
358
+ }
359
+
360
+ @media screen and (min-width: 768px) {
361
+ .feedzy-rss .feedzy-rss-col-2,
362
+ .feedzy-rss .feedzy-rss-col-3,
363
+ .feedzy-rss .feedzy-rss-col-4,
364
+ .feedzy-rss .feedzy-rss-col-5,
365
+ .feedzy-rss .feedzy-rss-col-6 {
366
+ width: 46%;
367
+ }
368
+
369
+ .feedzy-rss .feedzy-rss-col-2:nth-child(2n+1),
370
+ .feedzy-rss .feedzy-rss-col-3:nth-child(2n+1),
371
+ .feedzy-rss .feedzy-rss-col-4:nth-child(2n+1),
372
+ .feedzy-rss .feedzy-rss-col-5:nth-child(2n+1),
373
+ .feedzy-rss .feedzy-rss-col-6:nth-child(2n+1) {
374
+ clear: both;
375
+ }
376
+ }
377
+
378
+ @media screen and (min-width: 992px) {
379
+ .feedzy-rss .feedzy-rss-col-3,
380
+ .feedzy-rss .feedzy-rss-col-4,
381
+ .feedzy-rss .feedzy-rss-col-5,
382
+ .feedzy-rss .feedzy-rss-col-6 {
383
+ width: 29.33333%;
384
+ }
385
+
386
+ .feedzy-rss .feedzy-rss-col-3:nth-child(2n+1),
387
+ .feedzy-rss .feedzy-rss-col-4:nth-child(2n+1),
388
+ .feedzy-rss .feedzy-rss-col-5:nth-child(2n+1),
389
+ .feedzy-rss .feedzy-rss-col-6:nth-child(2n+1) {
390
+ clear: none;
391
+ }
392
+
393
+ .feedzy-rss .feedzy-rss-col-3:nth-child(3n+1),
394
+ .feedzy-rss .feedzy-rss-col-4:nth-child(3n+1),
395
+ .feedzy-rss .feedzy-rss-col-5:nth-child(3n+1),
396
+ .feedzy-rss .feedzy-rss-col-6:nth-child(3n+1) {
397
+ clear: both;
398
+ }
399
+ }
400
+
401
+ @media screen and (min-width: 1200px) {
402
+ .feedzy-rss .feedzy-rss-col-4 {
403
+ width: 21%;
404
+ }
405
+
406
+ .feedzy-rss .feedzy-rss-col-5 {
407
+ width: 16%;
408
+ }
409
+
410
+ .feedzy-rss .feedzy-rss-col-6 {
411
+ width: 12.66666%;
412
+ }
413
+
414
+ .feedzy-rss .feedzy-rss-col-4:nth-child(3n+1),
415
+ .feedzy-rss .feedzy-rss-col-5:nth-child(3n+1),
416
+ .feedzy-rss .feedzy-rss-col-6:nth-child(3n+1) {
417
+ clear: none;
418
+ }
419
+
420
+ .feedzy-rss .feedzy-rss-col-4:nth-child(4n+1),
421
+ .feedzy-rss .feedzy-rss-col-5:nth-child(5n+1),
422
+ .feedzy-rss .feedzy-rss-col-6:nth-child(6n+1) {
423
+ /* PANA AICI INCLUSIV */
424
+ clear: both;
425
+ }
426
+ }
css/form.css ADDED
@@ -0,0 +1,724 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * form.css
3
+ * Feedzy RSS Feeds Form CSS
4
+ */
5
+
6
+ html {
7
+ -webkit-box-sizing: border-box;
8
+ box-sizing: border-box;
9
+ font-size: 62.5%;
10
+ }
11
+
12
+ body {
13
+ color: #606c76;
14
+ font-family: "Roboto", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
15
+ font-size: 1.6em;
16
+ font-weight: 300;
17
+ line-height: 1.6;
18
+ letter-spacing: 0.01em;
19
+ }
20
+
21
+ *,
22
+ *:after,
23
+ *:before {
24
+ -webkit-box-sizing: inherit;
25
+ box-sizing: inherit;
26
+ }
27
+
28
+ .button,
29
+ button,
30
+ input[type="button"],
31
+ input[type="reset"],
32
+ input[type="submit"] {
33
+ display: inline-block;
34
+ height: 3.8rem;
35
+ padding: 0 3.0rem;
36
+ border: 0.1rem solid #31b0d5;
37
+ border-radius: 0.4rem;
38
+ color: #fff;
39
+ background-color: #31b0d5;
40
+ font-size: 1.1rem;
41
+ font-weight: 700;
42
+ line-height: 3.8rem;
43
+ text-align: center;
44
+ white-space: nowrap;
45
+ text-decoration: none;
46
+ letter-spacing: 0.1rem;
47
+ text-transform: uppercase;
48
+ cursor: pointer;
49
+ }
50
+
51
+ .button:focus,
52
+ .button:hover,
53
+ button:focus,
54
+ button:hover,
55
+ input[type="button"]:focus,
56
+ input[type="button"]:hover,
57
+ input[type="reset"]:focus,
58
+ input[type="reset"]:hover,
59
+ input[type="submit"]:focus,
60
+ input[type="submit"]:hover {
61
+ border-color: #606c76;
62
+ outline: 0;
63
+ color: #fff;
64
+ background-color: #606c76;
65
+ }
66
+
67
+ .button[disabled],
68
+ button[disabled],
69
+ input[type="button"][disabled],
70
+ input[type="reset"][disabled],
71
+ input[type="submit"][disabled] {
72
+ opacity: 0.5;
73
+ cursor: default;
74
+ }
75
+
76
+ .button[disabled]:focus,
77
+ .button[disabled]:hover,
78
+ button[disabled]:focus,
79
+ button[disabled]:hover,
80
+ input[type="button"][disabled]:focus,
81
+ input[type="button"][disabled]:hover,
82
+ input[type="reset"][disabled]:focus,
83
+ input[type="reset"][disabled]:hover,
84
+ input[type="submit"][disabled]:focus,
85
+ input[type="submit"][disabled]:hover {
86
+ border-color: #31b0d5;
87
+ background-color: #31b0d5;
88
+ }
89
+
90
+ .button.button-outline,
91
+ button.button-outline,
92
+ input[type="button"].button-outline,
93
+ input[type="reset"].button-outline,
94
+ input[type="submit"].button-outline {
95
+ color: #31b0d5;
96
+ background-color: transparent;
97
+ }
98
+
99
+ .button.button-outline:focus,
100
+ .button.button-outline:hover,
101
+ button.button-outline:focus,
102
+ button.button-outline:hover,
103
+ input[type="button"].button-outline:focus,
104
+ input[type="button"].button-outline:hover,
105
+ input[type="reset"].button-outline:focus,
106
+ input[type="reset"].button-outline:hover,
107
+ input[type="submit"].button-outline:focus,
108
+ input[type="submit"].button-outline:hover {
109
+ border-color: #606c76;
110
+ color: #606c76;
111
+ background-color: transparent;
112
+ }
113
+
114
+ .button.button-outline[disabled]:focus,
115
+ .button.button-outline[disabled]:hover,
116
+ button.button-outline[disabled]:focus,
117
+ button.button-outline[disabled]:hover,
118
+ input[type="button"].button-outline[disabled]:focus,
119
+ input[type="button"].button-outline[disabled]:hover,
120
+ input[type="reset"].button-outline[disabled]:focus,
121
+ input[type="reset"].button-outline[disabled]:hover,
122
+ input[type="submit"].button-outline[disabled]:focus,
123
+ input[type="submit"].button-outline[disabled]:hover {
124
+ border-color: inherit;
125
+ color: #31b0d5;
126
+ }
127
+
128
+ .button.button-clear,
129
+ button.button-clear,
130
+ input[type="button"].button-clear,
131
+ input[type="reset"].button-clear,
132
+ input[type="submit"].button-clear {
133
+ border-color: transparent;
134
+ color: #31b0d5;
135
+ background-color: transparent;
136
+ }
137
+
138
+ .button.button-clear:focus,
139
+ .button.button-clear:hover,
140
+ button.button-clear:focus,
141
+ button.button-clear:hover,
142
+ input[type="button"].button-clear:focus,
143
+ input[type="button"].button-clear:hover,
144
+ input[type="reset"].button-clear:focus,
145
+ input[type="reset"].button-clear:hover,
146
+ input[type="submit"].button-clear:focus,
147
+ input[type="submit"].button-clear:hover {
148
+ border-color: transparent;
149
+ color: #606c76;
150
+ background-color: transparent;
151
+ }
152
+
153
+ .button.button-clear[disabled]:focus,
154
+ .button.button-clear[disabled]:hover,
155
+ button.button-clear[disabled]:focus,
156
+ button.button-clear[disabled]:hover,
157
+ input[type="button"].button-clear[disabled]:focus,
158
+ input[type="button"].button-clear[disabled]:hover,
159
+ input[type="reset"].button-clear[disabled]:focus,
160
+ input[type="reset"].button-clear[disabled]:hover,
161
+ input[type="submit"].button-clear[disabled]:focus,
162
+ input[type="submit"].button-clear[disabled]:hover {
163
+ color: #31b0d5;
164
+ }
165
+
166
+ hr {
167
+ margin: 3.0rem 0;
168
+ border: 0;
169
+ border-top: 0.1rem solid #f4f5f6;
170
+ }
171
+
172
+ input[type="email"],
173
+ input[type="number"],
174
+ input[type="password"],
175
+ input[type="search"],
176
+ input[type="tel"],
177
+ input[type="text"],
178
+ input[type="url"],
179
+ textarea,
180
+ select {
181
+ -webkit-box-sizing: inherit;
182
+ box-sizing: inherit;
183
+ width: 100%;
184
+ height: 3.8rem;
185
+ padding: 0.6rem 1.0rem;
186
+ border: 0.1rem solid #d1d1d1;
187
+ border-radius: 0.4rem;
188
+ background-color: transparent;
189
+ -webkit-box-shadow: none;
190
+ box-shadow: none;
191
+
192
+ -webkit-appearance: none;
193
+ -moz-appearance: none;
194
+ appearance: none;
195
+ }
196
+
197
+ input[type="email"]:focus,
198
+ input[type="number"]:focus,
199
+ input[type="password"]:focus,
200
+ input[type="search"]:focus,
201
+ input[type="tel"]:focus,
202
+ input[type="text"]:focus,
203
+ input[type="url"]:focus,
204
+ textarea:focus,
205
+ select:focus {
206
+ border-color: #31b0d5;
207
+ outline: 0;
208
+ }
209
+
210
+ select {
211
+ padding-right: 3.0rem;
212
+ background: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"14\" viewBox=\"0 0 29 14\" width=\"29\"><path fill=\"#d1d1d1\" d=\"M9.37727 3.625l5.08154 6.93523L19.54036 3.625\"/></svg>") center right no-repeat;
213
+ }
214
+
215
+ select:focus {
216
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"14\" viewBox=\"0 0 29 14\" width=\"29\"><path fill=\"#31b0d5\" d=\"M9.37727 3.625l5.08154 6.93523L19.54036 3.625\"/></svg>");
217
+ }
218
+
219
+ textarea {
220
+ min-height: 6.5rem;
221
+ }
222
+
223
+ label,
224
+ legend {
225
+ display: block;
226
+ margin-bottom: 0.5rem;
227
+ font-size: 1.2rem;
228
+ font-weight: 300;
229
+ }
230
+
231
+ fieldset {
232
+ padding: 0;
233
+ border-width: 0;
234
+ }
235
+
236
+ input[type="checkbox"],
237
+ input[type="radio"] {
238
+ display: inline;
239
+ }
240
+
241
+ .label-inline {
242
+ display: inline-block;
243
+ margin-left: 0.5rem;
244
+ font-weight: normal;
245
+ }
246
+
247
+ .container {
248
+ position: relative;
249
+ width: 100%;
250
+ max-width: 112.0rem;
251
+ margin: 0 auto;
252
+ padding: 0 2.0rem;
253
+ }
254
+
255
+ .row {
256
+ display: -webkit-box;
257
+ display: -webkit-flex;
258
+ display: -ms-flexbox;
259
+ display: flex;
260
+ flex-direction: column;
261
+ width: 100%;
262
+ padding: 0;
263
+
264
+ -webkit-box-direction: normal;
265
+ -webkit-box-orient: vertical;
266
+ -webkit-flex-direction: column;
267
+ -ms-flex-direction: column;
268
+ }
269
+
270
+ .row.row-no-padding {
271
+ padding: 0;
272
+ }
273
+
274
+ .row.row-no-padding > .column {
275
+ padding: 0;
276
+ }
277
+
278
+ .row.row-wrap {
279
+ -webkit-flex-wrap: wrap;
280
+ -ms-flex-wrap: wrap;
281
+ flex-wrap: wrap;
282
+ }
283
+
284
+ .row.row-top {
285
+ -webkit-align-items: flex-start;
286
+ align-items: flex-start;
287
+ -webkit-box-align: start;
288
+ -ms-flex-align: start;
289
+ }
290
+
291
+ .row.row-bottom {
292
+ -webkit-align-items: flex-end;
293
+ align-items: flex-end;
294
+ -webkit-box-align: end;
295
+ -ms-flex-align: end;
296
+ }
297
+
298
+ .row.row-center {
299
+ -webkit-align-items: center;
300
+ align-items: center;
301
+ -webkit-box-align: center;
302
+ -ms-flex-align: center;
303
+ }
304
+
305
+ .row.row-stretch {
306
+ -webkit-align-items: stretch;
307
+ align-items: stretch;
308
+ -webkit-box-align: stretch;
309
+ -ms-flex-align: stretch;
310
+ }
311
+
312
+ .row.row-baseline {
313
+ -webkit-align-items: baseline;
314
+ align-items: baseline;
315
+ -webkit-box-align: baseline;
316
+ -ms-flex-align: baseline;
317
+ }
318
+
319
+ .row .column {
320
+ display: block;
321
+ width: 100%;
322
+ max-width: 100%;
323
+ margin-left: 0;
324
+
325
+ -webkit-box-flex: 1;
326
+ -webkit-flex: 1;
327
+ -ms-flex: 1;
328
+ flex: 1;
329
+ }
330
+
331
+ .row .column.column-offset-10 {
332
+ margin-left: 10%;
333
+ }
334
+
335
+ .row .column.column-offset-20 {
336
+ margin-left: 20%;
337
+ }
338
+
339
+ .row .column.column-offset-25 {
340
+ margin-left: 25%;
341
+ }
342
+
343
+ .row .column.column-offset-33,
344
+ .row .column.column-offset-34 {
345
+ margin-left: 33.3333%;
346
+ }
347
+
348
+ .row .column.column-offset-50 {
349
+ margin-left: 50%;
350
+ }
351
+
352
+ .row .column.column-offset-66,
353
+ .row .column.column-offset-67 {
354
+ margin-left: 66.6666%;
355
+ }
356
+
357
+ .row .column.column-offset-75 {
358
+ margin-left: 75%;
359
+ }
360
+
361
+ .row .column.column-offset-80 {
362
+ margin-left: 80%;
363
+ }
364
+
365
+ .row .column.column-offset-90 {
366
+ margin-left: 90%;
367
+ }
368
+
369
+ .row .column.column-10 {
370
+ max-width: 10%;
371
+
372
+ -webkit-box-flex: 0;
373
+ -webkit-flex: 0 0 10%;
374
+ -ms-flex: 0 0 10%;
375
+ flex: 0 0 10%;
376
+ }
377
+
378
+ .row .column.column-20 {
379
+ max-width: 20%;
380
+
381
+ -webkit-box-flex: 0;
382
+ -webkit-flex: 0 0 20%;
383
+ -ms-flex: 0 0 20%;
384
+ flex: 0 0 20%;
385
+ }
386
+
387
+ .row .column.column-25 {
388
+ max-width: 25%;
389
+
390
+ -webkit-box-flex: 0;
391
+ -webkit-flex: 0 0 25%;
392
+ -ms-flex: 0 0 25%;
393
+ flex: 0 0 25%;
394
+ }
395
+
396
+ .row .column.column-33,
397
+ .row .column.column-34 {
398
+ max-width: 33.3333%;
399
+
400
+ -webkit-box-flex: 0;
401
+ -webkit-flex: 0 0 33.3333%;
402
+ -ms-flex: 0 0 33.3333%;
403
+ flex: 0 0 33.3333%;
404
+ }
405
+
406
+ .row .column.column-40 {
407
+ max-width: 40%;
408
+
409
+ -webkit-box-flex: 0;
410
+ -webkit-flex: 0 0 40%;
411
+ -ms-flex: 0 0 40%;
412
+ flex: 0 0 40%;
413
+ }
414
+
415
+ .row .column.column-50 {
416
+ max-width: 50%;
417
+
418
+ -webkit-box-flex: 0;
419
+ -webkit-flex: 0 0 50%;
420
+ -ms-flex: 0 0 50%;
421
+ flex: 0 0 50%;
422
+ }
423
+
424
+ .row .column.column-60 {
425
+ max-width: 60%;
426
+
427
+ -webkit-box-flex: 0;
428
+ -webkit-flex: 0 0 60%;
429
+ -ms-flex: 0 0 60%;
430
+ flex: 0 0 60%;
431
+ }
432
+
433
+ .row .column.column-66,
434
+ .row .column.column-67 {
435
+ max-width: 66.6666%;
436
+
437
+ -webkit-box-flex: 0;
438
+ -webkit-flex: 0 0 66.6666%;
439
+ -ms-flex: 0 0 66.6666%;
440
+ flex: 0 0 66.6666%;
441
+ }
442
+
443
+ .row .column.column-75 {
444
+ max-width: 75%;
445
+
446
+ -webkit-box-flex: 0;
447
+ -webkit-flex: 0 0 75%;
448
+ -ms-flex: 0 0 75%;
449
+ flex: 0 0 75%;
450
+ }
451
+
452
+ .row .column.column-80 {
453
+ max-width: 80%;
454
+
455
+ -webkit-box-flex: 0;
456
+ -webkit-flex: 0 0 80%;
457
+ -ms-flex: 0 0 80%;
458
+ flex: 0 0 80%;
459
+ }
460
+
461
+ .row .column.column-90 {
462
+ max-width: 90%;
463
+
464
+ -webkit-box-flex: 0;
465
+ -webkit-flex: 0 0 90%;
466
+ -ms-flex: 0 0 90%;
467
+ flex: 0 0 90%;
468
+ }
469
+
470
+ .row .column .column-top {
471
+ -webkit-align-self: flex-start;
472
+ align-self: flex-start;
473
+ -ms-flex-item-align: start;
474
+ }
475
+
476
+ .row .column .column-bottom {
477
+ -webkit-align-self: flex-end;
478
+ align-self: flex-end;
479
+ -ms-flex-item-align: end;
480
+ }
481
+
482
+ .row .column .column-center {
483
+ -webkit-align-self: center;
484
+ align-self: center;
485
+ -ms-flex-item-align: center;
486
+ -ms-grid-row-align: center;
487
+ }
488
+
489
+ @media (min-width: 40rem) {
490
+ .row {
491
+ flex-direction: row;
492
+ width: -webkit-calc(100% + 2.0rem);
493
+ width: calc(100% + 2.0rem);
494
+ margin-left: -1.0rem;
495
+
496
+ -webkit-box-direction: normal;
497
+ -webkit-box-orient: horizontal;
498
+ -webkit-flex-direction: row;
499
+ -ms-flex-direction: row;
500
+ }
501
+
502
+ .row .column {
503
+ margin-bottom: inherit;
504
+ padding: 0 1.0rem;
505
+ }
506
+ }
507
+
508
+ a {
509
+ color: #31b0d5;
510
+ text-decoration: none;
511
+ }
512
+
513
+ a:focus,
514
+ a:hover {
515
+ color: #606c76;
516
+ }
517
+
518
+ dl,
519
+ ol,
520
+ ul {
521
+ margin-top: 0;
522
+ padding-left: 0;
523
+ list-style: none;
524
+ }
525
+
526
+ dl dl,
527
+ dl ol,
528
+ dl ul,
529
+ ol dl,
530
+ ol ol,
531
+ ol ul,
532
+ ul dl,
533
+ ul ol,
534
+ ul ul {
535
+ margin: 1.5rem 0 1.5rem 3.0rem;
536
+ font-size: 90%;
537
+ }
538
+
539
+ ol {
540
+ list-style: decimal inside;
541
+ }
542
+
543
+ ul {
544
+ list-style: circle inside;
545
+ }
546
+
547
+ .button,
548
+ button,
549
+ dd,
550
+ dt,
551
+ li {
552
+ margin-bottom: 1.0rem;
553
+ }
554
+
555
+ fieldset,
556
+ input,
557
+ select,
558
+ textarea {
559
+ margin-bottom: 1.5rem;
560
+ }
561
+
562
+ blockquote,
563
+ dl,
564
+ figure,
565
+ form,
566
+ ol,
567
+ p,
568
+ pre,
569
+ table,
570
+ ul {
571
+ margin-bottom: 2.5rem;
572
+ }
573
+
574
+ table {
575
+ width: 100%;
576
+ }
577
+
578
+ td,
579
+ th {
580
+ padding: 1.2rem 1.5rem;
581
+ border-bottom: 0.1rem solid #e1e1e1;
582
+ text-align: left;
583
+ }
584
+
585
+ td:first-child,
586
+ th:first-child {
587
+ padding-left: 0;
588
+ }
589
+
590
+ td:last-child,
591
+ th:last-child {
592
+ padding-right: 0;
593
+ }
594
+
595
+ p {
596
+ margin-top: 0;
597
+ font-size: 1.4rem;
598
+ }
599
+
600
+ h1,
601
+ h2,
602
+ h3,
603
+ h4,
604
+ h5,
605
+ h6 {
606
+ margin-top: 0;
607
+ margin-bottom: 2.0rem;
608
+ font-weight: 300;
609
+ letter-spacing: -0.1rem;
610
+ }
611
+
612
+ h1 {
613
+ font-size: 4.0rem;
614
+ line-height: 1.2;
615
+ }
616
+
617
+ h2 {
618
+ font-size: 3.6rem;
619
+ line-height: 1.25;
620
+ }
621
+
622
+ h3 {
623
+ font-size: 3.0rem;
624
+ line-height: 1.3;
625
+ }
626
+
627
+ h4 {
628
+ font-size: 2.4rem;
629
+ line-height: 1.35;
630
+ letter-spacing: -0.08rem;
631
+ }
632
+
633
+ h5 {
634
+ border-bottom: 1px solid #31b0d5;
635
+ font-size: 1.8rem;
636
+ line-height: 1.5;
637
+ letter-spacing: -0.05rem;
638
+ }
639
+
640
+ h6 {
641
+ font-size: 1.6rem;
642
+ line-height: 1.4;
643
+ letter-spacing: 0;
644
+ }
645
+
646
+ @media (min-width: 40rem) {
647
+ h1 {
648
+ font-size: 5.0rem;
649
+ }
650
+
651
+ h2 {
652
+ font-size: 4.2rem;
653
+ }
654
+
655
+ h3 {
656
+ font-size: 3.6rem;
657
+ }
658
+
659
+ h4 {
660
+ font-size: 3.0rem;
661
+ }
662
+
663
+ h5 {
664
+ font-size: 2.4rem;
665
+ }
666
+
667
+ h6 {
668
+ font-size: 1.5rem;
669
+ }
670
+ }
671
+
672
+ img {
673
+ max-width: 100%;
674
+ }
675
+
676
+ .clearfix:after {
677
+ display: table;
678
+ clear: both;
679
+ content: " ";
680
+ }
681
+
682
+ .float-left {
683
+ float: left;
684
+ }
685
+
686
+ .float-right {
687
+ float: right;
688
+ }
689
+
690
+ .feedzy_section_pro {
691
+ background-color: #fefefe;
692
+ }
693
+
694
+ .feedzy_section_pro h5 {
695
+ border-bottom-color: #d9a404;
696
+ color: #d9a404;
697
+ }
698
+
699
+ .feedzy_pro_tag {
700
+ margin-left: 10px;
701
+ padding: 3px 6px;
702
+ border-radius: 3px;
703
+ color: #fff;
704
+ background-color: #d9a404;
705
+ }
706
+
707
+ .feedzy-radio-image {
708
+ display: inline-block;
709
+ width: 100px;
710
+ margin-right: 20px;
711
+ padding-bottom: 60px;
712
+ }
713
+
714
+ .feedzy-template-default {
715
+ background: url(../img/feedzy-default-template.jpg) no-repeat bottom center;
716
+ }
717
+
718
+ .feedzy-template-style1 {
719
+ background: url(../img/feedzy-style1-template.jpg) no-repeat bottom center;
720
+ }
721
+
722
+ .feedzy-template-style2 {
723
+ background: url(../img/feedzy-style2-template.jpg) no-repeat bottom center;
724
+ }
feedzy-rss-feed.php CHANGED
@@ -1,85 +1,112 @@
1
- <?php
2
- /**
3
- * Plugin Name: FEEDZY RSS Feeds by b*web
4
- * Plugin URI: http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie
5
- * Description: FEEDZY RSS Feeds is a small and lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your WordPress site through simple shortcodes.
6
- * Author: Brice CAPOBIANCO
7
- * Author URI: http://b-website.com/
8
- * Version: 2.8
9
- * Text Domain: feedzy_rss_translate
10
- * Text Domain Path: /langs
11
- */
12
-
13
- /* Copyright 2016 Brice CAPOBIANCO (contact : http://b-website.com/contact)
14
-
15
- This program is free software; you can redistribute it and/or modify
16
- it under the terms of the GNU General Public License, version 2, as
17
- published by the Free Software Foundation.
18
-
19
- This program is distributed in the hope that it will be useful,
20
- but WITHOUT ANY WARRANTY; without even the implied warranty of
21
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
- GNU General Public License for more details.
23
-
24
- You should have received a copy of the GNU General Public License
25
- along with this program; if not, write to the Free Software
26
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
27
- */
28
-
29
- /***************************************************************
30
- * SECURITY : Exit if accessed directly
31
- ***************************************************************/
32
- if ( !defined( 'ABSPATH' ) ) {
33
-
34
- die( 'Direct access not allowed!' );
35
-
36
- }
37
-
38
-
39
- /***************************************************************
40
- * Define constant
41
- ***************************************************************/
42
- if ( !defined( 'FEEDZY_VERSION' ) ) {
43
-
44
- define( 'FEEDZY_VERSION', '2.8' );
45
-
46
- }
47
-
48
-
49
- /***************************************************************
50
- * Load plugin textdomain
51
- ***************************************************************/
52
- function feedzy_rss_load_textdomain() {
53
-
54
- $path = dirname(plugin_basename( __FILE__ )) . '/langs/';
55
- load_plugin_textdomain( 'feedzy_rss_translate', false, $path );
56
-
57
- }
58
- add_action( 'init', 'feedzy_rss_load_textdomain' );
59
-
60
-
61
- /***************************************************************
62
- * Add custom meta link on plugin list page
63
- ***************************************************************/
64
- function feedzy_meta_links( $links, $file ) {
65
-
66
- if ( $file === 'feedzy-rss-feeds/feedzy-rss-feed.php' ) {
67
- $links[] = '<a href="http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie" target="_blank" title="'. __( 'Documentation and examples', 'feedzy_rss_translate' ) .'">'. __( 'Documentation and examples', 'feedzy_rss_translate' ) .'</a>';
68
- $links[] = '<a href="http://b-website.com/category/plugins" target="_blank" title="'. __( 'More b*web Plugins', 'feedzy_rss_translate' ) .'">'. __( 'More b*web Plugins', 'feedzy_rss_translate' ) .'</a>';
69
- }
70
-
71
- return $links;
72
-
73
- }
74
- add_filter( 'plugin_row_meta', 'feedzy_meta_links', 10, 2 );
75
-
76
-
77
- /***************************************************************
78
- * Load plugin files
79
- ***************************************************************/
80
- $feedzyFiles = array( 'functions', 'shortcode', 'widget','ui' );
81
- foreach( $feedzyFiles as $feedzyFile ){
82
-
83
- require_once( plugin_dir_path( __FILE__ ) . 'feedzy-rss-feeds-' . $feedzyFile . '.php' );
84
-
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The plugin bootstrap file
4
+ *
5
+ * This file is read by WordPress to generate the plugin information in the plugin
6
+ * admin area. This file also includes all of the dependencies used by the plugin,
7
+ * registers the activation and deactivation functions, and defines a function
8
+ * that starts the plugin.
9
+ *
10
+ * @link http://themeisle.com
11
+ * @since 3.0.0
12
+ * @package feedzy-rss-feeds
13
+ *
14
+ * @wordpress-plugin
15
+ * Plugin Name: Feedzy RSS Feeds Lite
16
+ * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
+ * Description: This is a short description of what the plugin does. It's displayed in the WordPress admin area.
18
+ * Version: 3.0.0
19
+ * Author: Themeisle
20
+ * Author URI: http://themeisle.com
21
+ * License: GPL-2.0+
22
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
23
+ * Text Domain: feedzy_rss_translate
24
+ * Domain Path: /languages
25
+ */
26
+
27
+ // If this file is called directly, abort.
28
+ if ( ! defined( 'WPINC' ) ) {
29
+ die;
30
+ }
31
+
32
+ /**
33
+ * The code that runs during plugin activation.
34
+ * This action is documented in includes/feedzy-rss-feeds-activator.php
35
+ */
36
+ function activate_feedzy_rss_feeds() {
37
+ Feedzy_Rss_Feeds_Activator::activate();
38
+ }
39
+
40
+ /**
41
+ * The code that runs during plugin deactivation.
42
+ * This action is documented in includes/feedzy-rss-feeds-deactivator.php
43
+ *
44
+ * @since 3.0.0
45
+ */
46
+ function deactivate_feedzy_rss_feeds() {
47
+ Feedzy_Rss_Feeds_Deactivator::deactivate();
48
+ }
49
+
50
+ register_activation_hook( __FILE__, 'activate_feedzy_rss_feeds' );
51
+ register_deactivation_hook( __FILE__, 'deactivate_feedzy_rss_feeds' );
52
+
53
+ /**
54
+ * The core plugin class that is used to define internationalization,
55
+ * admin-specific hooks, and public-facing site hooks.
56
+ *
57
+ * @since 3.0.0
58
+ */
59
+ function feedzy_rss_feeds_autoload( $class ) {
60
+ $namespaces = array( 'Feedzy_Rss_Feeds' );
61
+
62
+ foreach ( $namespaces as $namespace ) {
63
+ if ( substr( $class, 0, strlen( $namespace ) ) == $namespace ) {
64
+ $filename = plugin_dir_path( __FILE__ ) . 'includes/' . str_replace( '_', '-', strtolower( $class ) ) . '.php';
65
+ if ( is_readable( $filename ) ) {
66
+ require_once $filename;
67
+ return true;
68
+ }
69
+
70
+ $filename = plugin_dir_path( __FILE__ ) . 'includes/abstract/' . str_replace( '_', '-', strtolower( $class ) ) . '.php';
71
+ if ( is_readable( $filename ) ) {
72
+ require_once $filename;
73
+ return true;
74
+ }
75
+
76
+ $filename = plugin_dir_path( __FILE__ ) . 'includes/admin/' . str_replace( '_', '-', strtolower( $class ) ) . '.php';
77
+ if ( is_readable( $filename ) ) {
78
+ require_once $filename;
79
+ return true;
80
+ }
81
+ }
82
+ }
83
+ if ( is_readable( plugin_dir_path( __FILE__ ) . 'includes/admin/feedzy-wp-widget.php' ) ) {
84
+ require_once plugin_dir_path( __FILE__ ) . 'includes/admin/feedzy-wp-widget.php';
85
+ return true;
86
+ }
87
+ return false;
88
+ }
89
+
90
+
91
+ /**
92
+ * Begins execution of the plugin.
93
+ *
94
+ * Since everything within the plugin is registered via hooks,
95
+ * then kicking off the plugin from this point in the file does
96
+ * not affect the page life cycle.
97
+ *
98
+ * @since 3.0.0
99
+ */
100
+ function run_feedzy_rss_feeds() {
101
+ define( 'FEEDZY_BASEFILE', __FILE__ );
102
+ define( 'FEEDZY_ABSURL', plugins_url( '/', __FILE__ ) );
103
+ define( 'FEEDZY_ABSPATH', dirname( __FILE__ ) );
104
+
105
+ $plugin = new Feedzy_Rss_Feeds();
106
+ $plugin->run();
107
+
108
+ }
109
+
110
+ spl_autoload_register( 'feedzy_rss_feeds_autoload' );
111
+
112
+ run_feedzy_rss_feeds();
feedzy-rss-feeds-functions.php DELETED
@@ -1,335 +0,0 @@
1
- <?php
2
- /***************************************************************
3
- * SECURITY : Exit if accessed directly
4
- ***************************************************************/
5
- if ( !defined( 'ABSPATH' ) ) {
6
- die( 'Direct access not allowed!' );
7
- }
8
-
9
-
10
- /***************************************************************
11
- * Define the default image thumbnail
12
- ***************************************************************/
13
- function feedzy_define_default_image( $imageSrc ){
14
- return plugins_url( 'img/feedzy-default.jpg', __FILE__ );
15
- }
16
- add_filter( 'feedzy_default_image', 'feedzy_define_default_image' );
17
-
18
-
19
- /***************************************************************
20
- * Default error message + log errors
21
- ***************************************************************/
22
- function feedzy_default_error_notice( $error, $feedURL ){
23
- //Write in the log file
24
- error_log( 'Feedzy RSS Feeds - related feed: ' .$feedURL . ' - Error message: ' . feedzy_array_obj_string( $error ) );
25
- //Display the error message
26
- return '<div id="message" class="error" data-error"' . esc_attr( feedzy_array_obj_string( $error ) ) . '"><p>' . __('Sorry, this feed is currently unavailable or does not exists anymore.', 'feedzy_rss_translate') . '</p></div>';
27
- }
28
- add_filter( 'feedzy_default_error', 'feedzy_default_error_notice', 9, 2 );
29
-
30
-
31
-
32
- /***************************************************************
33
- * Convert array or object into string
34
- ***************************************************************/
35
- function feedzy_array_obj_string ( $error ){
36
- if ( is_array( $error ) || is_object( $error ) ) {
37
- return print_r( $error, true );
38
- } else {
39
- return $error;
40
- }
41
- }
42
-
43
-
44
- /***************************************************************
45
- * Enqueue feedzy CSS
46
- ***************************************************************/
47
- function feedzy_register_custom_style() {
48
- wp_register_style( 'feedzy-style', plugins_url( 'css/feedzy-rss-feeds.css', __FILE__ ), array(), FEEDZY_VERSION );
49
- }
50
- function feedzy_print_custom_style() {
51
- global $feedzyStyle;
52
- if ( !$feedzyStyle )
53
- return;
54
-
55
- wp_print_styles( 'feedzy-style' );
56
- }
57
- add_action( 'init', 'feedzy_register_custom_style' );
58
- add_action( 'wp_footer', 'feedzy_print_custom_style' );
59
-
60
-
61
- /***************************************************************
62
- * Padding ratio based on image size
63
- ***************************************************************/
64
- function feedzy_add_item_padding( $itemAttr, $sizes ){
65
- $paddinTop = number_format( ( 15 / 150 ) * $sizes[ 'height' ], 0 );
66
- $paddinBottom = number_format( ( 25 / 150 ) * $sizes[ 'height' ], 0 );
67
- $stylePadding = ' style="padding: ' . $paddinTop . 'px 0 ' . $paddinBottom . 'px"';
68
- return $itemAttr . $stylePadding;
69
- }
70
- add_filter( 'feedzy_item_attributes', 'feedzy_add_item_padding', 10, 2 );
71
-
72
-
73
- /***************************************************************
74
- * Feed item container class
75
- ***************************************************************/
76
- function feedzy_classes_item( $itemAttr ){
77
- $classes = array( 'rss_item' );
78
- $classes = apply_filters( 'feedzy_add_classes_item', $classes );
79
- $classes = ' class="' . implode( ' ', $classes ) . '"';
80
- return $itemAttr . $classes;
81
- }
82
- add_filter( 'feedzy_item_attributes', 'feedzy_classes_item' );
83
-
84
-
85
- /***************************************************************
86
- * Retrive image from the item object
87
- ***************************************************************/
88
- function feedzy_retrieve_image( $item ) {
89
- $thethumbnail = "";
90
- if ( $enclosures = $item->get_enclosures() ) {
91
-
92
- foreach( (array) $enclosures as $enclosure ){
93
-
94
-
95
- //item thumb
96
- if ( $thumbnail = $enclosure->get_thumbnail() ) {
97
- $thethumbnail = $thumbnail;
98
- }
99
-
100
- //media:thumbnail
101
- if ( isset( $enclosure->thumbnails ) ) {
102
-
103
- foreach ( (array) $enclosure->thumbnails as $thumbnail ) {
104
- $thethumbnail = $thumbnail;
105
- }
106
-
107
- }
108
-
109
- //enclosure
110
- if ( $thumbnail = $enclosure->embed() ) {
111
-
112
-
113
- $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/iU';
114
-
115
- if ( preg_match( $pattern, $thumbnail, $matches ) ) {
116
- $thethumbnail = $matches[0];
117
- }
118
-
119
- }
120
-
121
- //media:content && strpos( $enclosure->type, 'image' ) !== false
122
- foreach ( (array) $enclosure->get_link() as $thumbnail ) {
123
-
124
- $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/iU';
125
- $imgsrc = $thumbnail;
126
-
127
-
128
- if ( preg_match( $pattern, $imgsrc, $matches ) ) {
129
- $thethumbnail = $matches[0];
130
- break;
131
- }
132
-
133
- }
134
-
135
- //break loop if thumbnail found
136
- if ( ! empty( $thethumbnail ) ) {
137
- break;
138
- }
139
-
140
- }
141
-
142
- }
143
-
144
- //xmlns:itunes podcast
145
- if ( empty( $thethumbnail ) ) {
146
- $data = $item->get_item_tags('http://www.itunes.com/dtds/podcast-1.0.dtd', 'image');
147
- if ( isset( $data['0']['attribs']['']['href'] ) && !empty( $data['0']['attribs']['']['href'] ) ){
148
- $thethumbnail = $data['0']['attribs']['']['href'];
149
- }
150
- }
151
-
152
- //content image
153
- if ( empty( $thethumbnail ) ) {
154
-
155
- $feedDescription = $item->get_content();
156
- $thethumbnail = feedzy_returnImage( $feedDescription );
157
-
158
- }
159
-
160
- //description image
161
- if ( empty( $thethumbnail ) ) {
162
-
163
- $feedDescription = $item->get_description();
164
- $thethumbnail = feedzy_returnImage( $feedDescription );
165
-
166
- }
167
-
168
- return $thethumbnail;
169
- }
170
-
171
-
172
- /***************************************************************
173
- * Get an image from a string
174
- ***************************************************************/
175
- function feedzy_returnImage( $string ) {
176
- $img = html_entity_decode($string, ENT_QUOTES, 'UTF-8');
177
- $pattern = "/<img[^>]+\>/i";
178
- preg_match( $pattern, $img, $matches );
179
- if( isset( $matches[0] ) ){
180
- $blacklistCount = 0;
181
- foreach( $matches as $matche){
182
- $link = feedzy_scrapeImage( $matche );
183
- $blacklist = array();
184
- $blacklist = apply_filters( 'feedzy_feed_blacklist_images', feedzy_blacklist_images( $blacklist ) );
185
- foreach( $blacklist as $string ) {
186
- if ( strpos( (string) $link, $string ) !== false) {
187
- $blacklistCount++;
188
- }
189
- }
190
- if( $blacklistCount == 0) break;
191
- }
192
- if( $blacklistCount == 0) return $link;
193
- }
194
- return;
195
- }
196
-
197
- function feedzy_scrapeImage( $string, $link = '' ) {
198
- $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
199
- preg_match( $pattern, $string, $link );
200
- if( isset( $link[1] ) ){
201
- $link = urldecode( $link[1] );
202
- }
203
- return $link;
204
- }
205
-
206
- /***************************************************************
207
- * List blacklisted images to prevent fetching emoticons
208
- ***************************************************************/
209
- function feedzy_blacklist_images( $blacklist ) {
210
- $blacklist = array(
211
- 'frownie.png',
212
- 'icon_arrow.gif',
213
- 'icon_biggrin.gif',
214
- 'icon_confused.gif',
215
- 'icon_cool.gif',
216
- 'icon_cry.gif',
217
- 'icon_eek.gif',
218
- 'icon_evil.gif',
219
- 'icon_exclaim.gif',
220
- 'icon_idea.gif',
221
- 'icon_lol.gif',
222
- 'icon_mad.gif',
223
- 'icon_mrgreen.gif',
224
- 'icon_neutral.gif',
225
- 'icon_question.gif',
226
- 'icon_razz.gif',
227
- 'icon_redface.gif',
228
- 'icon_rolleyes.gif',
229
- 'icon_sad.gif',
230
- 'icon_smile.gif',
231
- 'icon_surprised.gif',
232
- 'icon_twisted.gif',
233
- 'icon_wink.gif',
234
- 'mrgreen.png',
235
- 'rolleyes.png',
236
- 'simple-smile.png',
237
- );
238
- return $blacklist;
239
- }
240
-
241
-
242
- /***************************************************************
243
- * Image name encode + get image url if in url param
244
- ***************************************************************/
245
- function feedzy_image_encode( $string ) {
246
- //Check if img url is set as an URL parameter
247
- $url_tab = parse_url( $string );
248
- if( isset( $url_tab['query'] ) ){
249
- preg_match_all( '/(http|https):\/\/[^ ]+(\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|\.PNG)/', $url_tab['query'], $imgUrl );
250
- if( isset( $imgUrl[0][0] ) ){
251
- $string = $imgUrl[0][0];
252
- }
253
- }
254
-
255
- //Encode image name only en keep extra parameters
256
- $query = $extention = '';
257
- $url_tab = parse_url( $string );
258
- if( isset( $url_tab['query'] ) ){
259
- $query = '?' . $url_tab['query'];
260
- }
261
- $path_parts = pathinfo( $string );
262
- $path = $path_parts['dirname'];
263
- $file = rawurldecode( $path_parts['filename'] );
264
- $extention = pathinfo( $url_tab['path'], PATHINFO_EXTENSION );
265
- if( !empty( $extention ) ){
266
- $extention = '.' . $extention;
267
- }
268
-
269
- //Return a well encoded image url
270
- return $path . '/' . rawurlencode( $file ) . $extention . $query;
271
- }
272
-
273
- /***************************************************************
274
- * Filter feed description input
275
- ***************************************************************/
276
- function feedzy_summary_input_filter( $description, $content, $feedURL ) {
277
- $description = trim( strip_tags( $description ) );
278
- $description = trim( chop( $description, '[&hellip;]' ) );
279
-
280
- return $description;
281
- }
282
- add_filter('feedzy_summary_input', 'feedzy_summary_input_filter', 9, 3);
283
-
284
-
285
- /***************************************************************
286
- * Check if keywords are in title
287
- ***************************************************************/
288
- function feedzy_feed_item_keywords_title( $continue, $keywords_title, $item, $feedURL ){
289
- if ( !empty( $keywords_title ) ) {
290
- $continue = false;
291
- foreach ( $keywords_title as $keyword ) {
292
- if ( strpos( $item->get_title(), $keyword ) !== false ) {
293
- $continue = true;
294
- }
295
- }
296
- }
297
- return $continue;
298
- }
299
- add_filter( 'feedzy_item_keyword', 'feedzy_feed_item_keywords_title', 9, 4 );
300
-
301
-
302
- /***************************************************************
303
- * Insert cover picture to main rss feed content
304
- ***************************************************************/
305
- function feedzy_insert_thumbnail_RSS( $content ) {
306
- global $post;
307
- if ( has_post_thumbnail( $post->ID ) ){
308
- $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail' ) . '' . $content;
309
- }
310
- return $content;
311
- }
312
- add_filter( 'the_excerpt_rss', 'feedzy_insert_thumbnail_RSS' );
313
- add_filter( 'the_content_feed', 'feedzy_insert_thumbnail_RSS' );
314
-
315
-
316
- /***************************************************************
317
- * Include cover picture (medium) to rss feed enclosure
318
- * and media:content
319
- ***************************************************************/
320
- function feedzy_include_thumbnail_RSS (){
321
- global $post;
322
-
323
- if ( has_post_thumbnail( $post->ID ) ){
324
-
325
- $postThumbnailId = get_post_thumbnail_id( $post->ID );
326
- $attachmentMeta = wp_get_attachment_metadata( $postThumbnailId );
327
- $imageUrl = wp_get_attachment_image_src( $postThumbnailId, 'medium' );
328
-
329
- echo '<enclosure url="' . $imageUrl[0] . '" length="' . filesize( get_attached_file( $postThumbnailId ) ) . '" type="image/jpg" />';
330
- echo '<media:content url="' . $imageUrl[0] . '" width="' . $attachmentMeta['sizes']['medium']['width'] . '" height="' . $attachmentMeta['sizes']['medium']['height'] . '" medium="image" type="' . $attachmentMeta['sizes']['medium']['mime-type'] . '" />';
331
-
332
- }
333
- }
334
- //add_action('rss_item', 'feedzy_include_thumbnail_RSS');
335
- //add_action('rss2_item', 'feedzy_include_thumbnail_RSS');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feedzy-rss-feeds-shortcode.php DELETED
@@ -1,277 +0,0 @@
1
- <?php
2
- /***************************************************************
3
- * SECURITY : Exit if accessed directly
4
- ***************************************************************/
5
- if ( !defined( 'ABSPATH' ) ) {
6
- die( 'Direct access not allowed!' );
7
- }
8
-
9
-
10
- /***************************************************************
11
- * Main shortcode function
12
- ***************************************************************/
13
- function feedzy_rss( $atts, $content = '' ) {
14
-
15
- global $feedzyStyle;
16
- $feedzyStyle = true;
17
- $count = 0;
18
-
19
- //Load SimplePie if not already
20
- if ( !class_exists( 'SimplePie' ) ){
21
- require_once( ABSPATH . WPINC . '/class-feed.php' );
22
- }
23
-
24
- //Retrieve & extract shorcode parameters
25
- extract( shortcode_atts( array(
26
- "feeds" => '', //comma separated feeds url
27
- "max" => '5', //number of feeds items (0 for unlimited)
28
- "feed_title" => 'yes', //display feed title yes/no
29
- "target" => '_blank', //_blank, _self
30
- "title" => '', //strip title after X char
31
- "meta" => 'yes', //yes, no
32
- "summary" => 'yes', //strip title
33
- "summarylength" => '', //strip summary after X char
34
- "thumb" => 'yes', //yes, no, auto
35
- "default" => '', //default thumb URL if no image found (only if thumb is set to yes or auto)
36
- "size" => '', //thumbs pixel size
37
- "keywords_title" => '' //only display item if title contains specific keywords (comma-separated list/case sensitive)
38
- ), $atts, 'feedzy_default' ) );
39
-
40
- //Use "shortcode_atts_feedzy_default" filter to edit shortcode parameters default values or add your owns.
41
-
42
- if ( !empty( $feeds ) ) {
43
- $feeds = rtrim( $feeds, ',' );
44
- $feeds = explode( ',', $feeds );
45
-
46
- //Remove SSL from HTTP request to prevent fetching errors
47
- foreach( $feeds as $feed ){
48
- $feedURL[] = preg_replace("/^https:/i", "http:", $feed);
49
- }
50
-
51
- if ( count( $feedURL ) === 1 ) {
52
- $feedURL = $feedURL[0];
53
- }
54
-
55
- }
56
-
57
- if ( $max == '0' ) {
58
- $max = '999';
59
- } else if ( empty( $max ) || !ctype_digit( $max ) ) {
60
- $max = '5';
61
- }
62
-
63
- if ( empty( $size ) || !ctype_digit( $size ) ){
64
- $size = '150';
65
- }
66
- $sizes = array( 'width' => $size, 'height' => $size );
67
- $sizes = apply_filters( 'feedzy_thumb_sizes', $sizes, $feedURL );
68
-
69
- if ( !empty( $title ) && !ctype_digit( $title ) ){
70
- $title = '';
71
- }
72
-
73
- if ( !empty($keywords_title)){
74
- $keywords_title = rtrim( $keywords_title, ',' );
75
- $keywords_title = array_map( 'trim', explode( ',', $keywords_title ) );
76
- }
77
-
78
- if ( !empty( $summarylength ) && !ctype_digit( $summarylength ) ){
79
- $summarylength = '';
80
- }
81
-
82
- if ( !empty( $default ) ) {
83
- $default = $default;
84
-
85
- } else {
86
- $default = apply_filters( 'feedzy_default_image', $default, $feedURL );
87
- }
88
-
89
- //Load SimplePie Instance
90
- $feed = new SimplePie();
91
- $feed -> set_feed_url( $feedURL );
92
- $feed -> enable_cache( true );
93
- $feed -> enable_order_by_date( true );
94
- $feed -> set_cache_class( 'WP_Feed_Cache' );
95
- $feed -> set_file_class( 'WP_SimplePie_File' );
96
- $feed -> set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 7200, $feedURL ) );
97
- do_action_ref_array( 'wp_feed_options', array( $feed, $feedURL ) );
98
- $feed -> strip_comments( true );
99
- $feed -> strip_htmltags( array( 'base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style' ) );
100
- $feed -> init();
101
- $feed -> handle_content_type();
102
-
103
- // Display the error message
104
- if ( $feed -> error() ) {
105
- $content .= apply_filters( 'feedzy_default_error', $feed -> error(), $feedURL );
106
- }
107
-
108
- $content .= '<div class="feedzy-rss">';
109
-
110
- if ( $feed_title == 'yes' ) {
111
-
112
- $content .= '<div class="rss_header">';
113
- $content .= '<h2><a href="' . $feed->get_permalink() . '" class="rss_title">' . html_entity_decode( $feed->get_title() ) . '</a> <span class="rss_description"> ' . $feed->get_description() . '</span></h2>';
114
- $content .= '</div>';
115
-
116
- }
117
-
118
- $content .= '<ul>';
119
-
120
- //Loop through RSS feed
121
- $items = apply_filters( 'feedzy_feed_items', $feed->get_items(), $feedURL );
122
- foreach ( (array) $items as $item ) {
123
-
124
- $continue = apply_filters( 'feedzy_item_keyword', true, $keywords_title, $item, $feedURL );
125
-
126
- if ( $continue == true ) {
127
-
128
- //Count items
129
- if ( $count >= $max ){
130
- break;
131
- }
132
- $count++;
133
-
134
- //Fetch image thumbnail
135
- if ( $thumb == 'yes' || $thumb == 'auto' ) {
136
- $thethumbnail = feedzy_retrieve_image( $item );
137
- }
138
-
139
-
140
- $itemAttr = apply_filters( 'feedzy_item_attributes', $itemAttr = '', $sizes, $item, $feedURL );
141
-
142
- //Build element DOM
143
- $content .= '<li ' . $itemAttr . '>';
144
-
145
- if ( $thumb == 'yes' || $thumb == 'auto' ) {
146
-
147
- $contentThumb = '';
148
-
149
- if ( ( ! empty( $thethumbnail ) && $thumb == 'auto' ) || $thumb == 'yes' ){
150
-
151
- $contentThumb .= '<div class="rss_image" style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px;">';
152
- $contentThumb .= '<a href="' . $item->get_permalink() . '" target="' . $target . '" title="' . $item->get_title() . '" >';
153
-
154
- if ( !empty( $thethumbnail )) {
155
-
156
- $thethumbnail = feedzy_image_encode( $thethumbnail );
157
- $contentThumb .= '<span class="default" style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image: url(' . $default . ');" alt="' . $item->get_title() . '"></span>';
158
- $contentThumb .= '<span class="fetched" style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image: url(' . $thethumbnail . ');" alt="' . $item->get_title() . '"></span>';
159
-
160
- } else if ( empty( $thethumbnail ) && $thumb == 'yes' ) {
161
-
162
- $contentThumb .= '<span style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image:url(' . $default . ');" alt="' . $item->get_title() . '"></span>';
163
-
164
- }
165
-
166
- $contentThumb .= '</a>';
167
- $contentThumb .= '</div>';
168
-
169
- }
170
-
171
- //Filter: feedzy_thumb_output
172
- $content .= apply_filters( 'feedzy_thumb_output', $contentThumb, $feedURL );
173
-
174
- }
175
-
176
- $contentTitle = '';
177
- $contentTitle .= '<span class="title"><a href="' . $item->get_permalink() . '" target="' . $target . '">';
178
-
179
- if ( is_numeric( $title ) && strlen( $item->get_title() ) > $title ) {
180
-
181
- $contentTitle .= preg_replace( '/\s+?(\S+)?$/', '', substr( $item->get_title(), 0, $title ) ) . '...';
182
-
183
- } else {
184
-
185
- $contentTitle .= $item->get_title();
186
-
187
- }
188
-
189
- $contentTitle .= '</a></span>';
190
-
191
- //Filter: feedzy_title_output
192
- $content .= apply_filters( 'feedzy_title_output', $contentTitle, $feedURL );
193
-
194
- $content .= '<div class="rss_content">';
195
-
196
-
197
- //Define Meta args
198
- $metaArgs = array(
199
- 'author' => true,
200
- 'date' => true,
201
- 'date_format' => get_option( 'date_format' ),
202
- 'time_format' => get_option( 'time_format' )
203
- );
204
-
205
- //Filter: feedzy_meta_args
206
- $metaArgs = apply_filters( 'feedzy_meta_args', $metaArgs, $feedURL );
207
-
208
- if ( $meta == 'yes' && ( $metaArgs[ 'author' ] || $metaArgs[ 'date' ] ) ) {
209
-
210
- $contentMeta = '';
211
- $contentMeta .= '<small>' . __( 'Posted', 'feedzy_rss_translate' ) . ' ';
212
-
213
- if ( $item->get_author() && $metaArgs[ 'author' ] ) {
214
-
215
- $author = $item->get_author();
216
- if ( !$authorName = $author->get_name() ){
217
- $authorName = $author->get_email();
218
- }
219
-
220
- if( $authorName ){
221
- $domain = parse_url( $item->get_permalink() );
222
- $contentMeta .= __( 'by', 'feedzy_rss_translate' ) . ' <a href="http://' . $domain[ 'host' ] . '" target="' . $target . '" title="' . $domain[ 'host' ] . '" >' . $authorName . '</a> ';
223
- }
224
-
225
- }
226
-
227
- if ( $metaArgs[ 'date' ] ) {
228
- $contentMeta .= __( 'on', 'feedzy_rss_translate') . ' ' . date_i18n( $metaArgs[ 'date_format' ], $item->get_date( 'U' ) );
229
- $contentMeta .= ' ';
230
- $contentMeta .= __( 'at', 'feedzy_rss_translate' ) . ' ' . date_i18n( $metaArgs[ 'time_format' ], $item->get_date( 'U' ) );
231
- }
232
-
233
- $contentMeta .= '</small>';
234
-
235
- //Filter: feedzy_meta_output
236
- $content .= apply_filters( 'feedzy_meta_output', $contentMeta, $feedURL );
237
-
238
- }
239
- if ( $summary == 'yes' ) {
240
-
241
-
242
- $contentSummary = '';
243
- $contentSummary .= '<p>';
244
-
245
- //Filter: feedzy_summary_input
246
- $description = $item->get_description();
247
- $description = apply_filters( 'feedzy_summary_input', $description, $item->get_content(), $feedURL );
248
-
249
- if ( is_numeric( $summarylength ) && strlen( $description ) > $summarylength ) {
250
-
251
- $contentSummary .= preg_replace( '/\s+?(\S+)?$/', '', substr( $description, 0, $summarylength ) ) . ' […]';
252
-
253
- } else {
254
-
255
- $contentSummary .= $description . ' […]';
256
- }
257
-
258
- $contentSummary .= '</p>';
259
-
260
- //Filter: feedzy_summary_output
261
- $content .= apply_filters( 'feedzy_summary_output', $contentSummary, $item->get_permalink(), $feedURL );
262
-
263
- }
264
-
265
- $content .= '</div>';
266
- $content .= '</li>';
267
-
268
- } //endContinue
269
-
270
- } //endforeach
271
-
272
- $content .= '</ul>';
273
- $content .= '</div>';
274
- return apply_filters( 'feedzy_global_output', $content, $feedURL );
275
-
276
- }//end of feedzy_rss
277
- add_shortcode( 'feedzy-rss', 'feedzy_rss' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feedzy-rss-feeds-ui-lang.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /***************************************************************
3
- * SECURITY : Exit if accessed directly
4
- ***************************************************************/
5
- if ( !defined( 'ABSPATH' ) ) {
6
- die( 'Direct access not allowed!' );
7
- }
8
-
9
-
10
- /***************************************************************
11
- * Translation for TinyMCE
12
- ***************************************************************/
13
-
14
- if ( ! class_exists( '_WP_Editors' ) )
15
- require( ABSPATH . WPINC . '/class-wp-editor.php' );
16
-
17
- function feedzy_tinymce_translation() {
18
-
19
- $strings = array(
20
- 'plugin_title' => __( 'Insert FEEDZY RSS Feeds Shortcode', 'feedzy_rss_translate' ),
21
- 'feeds' => __( 'The feed(s) URL (comma-separated list).', 'feedzy_rss_translate' ) . ' ' . __( 'If your feed is not valid, it won\'t work.', 'feedzy_rss_translate' ),
22
- 'maximum' => __( 'Number of items to display.', 'feedzy_rss_translate' ),
23
- 'feed_title' => __( 'Should we display the RSS title?', 'feedzy_rss_translate' ),
24
- 'target' => __( 'Links may be opened in the same window or a new tab.', 'feedzy_rss_translate' ),
25
- 'title' => __( 'Trim the title of the item after X characters.', 'feedzy_rss_translate' ),
26
- 'meta' => __( 'Should we display the date of publication and the author name?', 'feedzy_rss_translate' ),
27
- 'summary' => __( 'Should we display a description (abstract) of the retrieved item?', 'feedzy_rss_translate' ),
28
- 'summarylength' => __( 'Crop description (summary) of the element after X characters.', 'feedzy_rss_translate' ),
29
- 'thumb' => __( 'Should we display the first image of the content if it is available?', 'feedzy_rss_translate' ),
30
- 'defaultimg' => __( 'Default thumbnail URL if no image is found.', 'feedzy_rss_translate' ),
31
- 'size' => __( 'Thumblails dimension. Do not include "px". Eg: 150', 'feedzy_rss_translate' ),
32
- 'keywords_title'=> __( 'Only display item if title contains specific keyword(s) (comma-separated list/case sensitive).', 'feedzy_rss_translate' ),
33
- 'text_default' => __( 'Do not specify', 'feedzy_rss_translate' ),
34
- 'text_no' => __( 'No', 'feedzy_rss_translate' ),
35
- 'text_yes' => __( 'Yes', 'feedzy_rss_translate' ),
36
- 'text_auto' => __( 'Auto', 'feedzy_rss_translate' )
37
- );
38
-
39
- $locale = _WP_Editors::$mce_locale;
40
- $translated = 'tinyMCE.addI18n("' . $locale . '.feedzy_tinymce_plugin", ' . json_encode( $strings ) . ");\n";
41
-
42
- return $translated;
43
- }
44
-
45
- $strings = feedzy_tinymce_translation();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feedzy-rss-feeds-ui.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- /***************************************************************
3
- * SECURITY : Exit if accessed directly
4
- ***************************************************************/
5
- if ( !defined( 'ABSPATH' ) ) {
6
- die( 'Direct access not allowed!' );
7
- }
8
-
9
-
10
- /***************************************************************
11
- * Hooks custom TinyMCE button function
12
- ***************************************************************/
13
- function feedzy_add_mce_button() {
14
-
15
- if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) )
16
- return;
17
-
18
- if ( 'true' == get_user_option( 'rich_editing' ) ) {
19
-
20
- add_filter( 'mce_external_plugins', 'feedzy_tinymce_plugin' );
21
- add_filter( 'mce_buttons', 'feedzy_register_mce_button' );
22
-
23
- // Load stylesheet for tinyMCE button only
24
- wp_enqueue_style( 'feedzy-rss-feeds', plugin_dir_url( __FILE__ ) . 'css/feedzy-rss-feeds.css', array(), FEEDZY_VERSION );
25
- wp_enqueue_script( 'feedzy-rss-feeds-ui-scripts', plugin_dir_url( __FILE__ ) . 'js/feedzy-rss-feeds-ui-scripts.js', array( 'jquery' ), FEEDZY_VERSION );
26
- }
27
-
28
- }
29
- add_action( 'init', 'feedzy_add_mce_button' );
30
-
31
-
32
- /***************************************************************
33
- * Load plugin translation for - TinyMCE API
34
- ***************************************************************/
35
- function feedzy_add_tinymce_lang( $arr ){
36
- $arr[] = plugin_dir_path( __FILE__ ) . 'feedzy-rss-feeds-ui-lang.php';
37
- return $arr;
38
- }
39
- add_filter( 'mce_external_languages', 'feedzy_add_tinymce_lang', 10, 1 );
40
-
41
-
42
- /***************************************************************
43
- * Load custom js options - TinyMCE API
44
- ***************************************************************/
45
- function feedzy_tinymce_plugin( $plugin_array ) {
46
- $plugin_array[ 'feedzy_mce_button' ] = plugin_dir_url( __FILE__ ) . '/js/feedzy-rss-feeds-ui-mce.js';
47
- return $plugin_array;
48
- }
49
-
50
-
51
- /***************************************************************
52
- * Register new button in the editor
53
- ***************************************************************/
54
- function feedzy_register_mce_button( $buttons ) {
55
- array_push( $buttons, 'feedzy_mce_button' );
56
- return $buttons;
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feedzy-rss-feeds-widget.php DELETED
@@ -1,245 +0,0 @@
1
- <?php
2
- /***************************************************************
3
- * SECURITY : Exit if accessed directly
4
- ***************************************************************/
5
- if ( !defined( 'ABSPATH' ) ) {
6
-
7
- die( 'Direct access not allowed!' );
8
-
9
- }
10
-
11
-
12
- /***************************************************************
13
- * Load the Widget options
14
- ***************************************************************/
15
- add_action( 'widgets_init', create_function( '', 'return register_widget("feedzy_wp_widget");' ) );
16
- class feedzy_wp_widget extends WP_Widget {
17
-
18
- //Constructor
19
- function __construct() {
20
-
21
- parent::__construct( false, $name = __( 'Feedzy RSS Feeds', 'feedzy_wp_widget' ) );
22
-
23
- }
24
-
25
- //Widget form creation
26
- function form( $instance ) {
27
-
28
- //Check values
29
- if( $instance ) {
30
-
31
- $title = esc_attr( $instance[ 'title' ] );
32
- $textarea = esc_attr( $instance[ 'textarea' ] );
33
- $feeds = esc_attr( $instance[ 'feeds' ] );
34
- $max = esc_attr( $instance[ 'max' ] );
35
- $target = esc_attr( $instance[ 'target' ] );
36
- $titlelength = esc_attr( $instance[ 'titlelength' ] );
37
- $meta = esc_attr( $instance[ 'meta' ] );
38
- $summary = esc_attr( $instance[ 'summary' ] );
39
- $summarylength = esc_attr( $instance[ 'summarylength' ] );
40
- $thumb = esc_attr( $instance[ 'thumb' ] );
41
- $default = esc_attr( $instance[ 'default' ] );
42
- $size = esc_attr( $instance[ 'size' ] );
43
- $keywords_title = esc_attr( $instance[ 'keywords_title' ] );
44
-
45
- } else {
46
-
47
- $title = '';
48
- $textarea = '';
49
- $feeds = '';
50
- $max = '';
51
- $target = '';
52
- $titlelength = '';
53
- $meta = '';
54
- $summary = '';
55
- $summarylength = '';
56
- $thumb = '';
57
- $default = '';
58
- $size = '';
59
- $keywords_title = '';
60
-
61
- }
62
- ?>
63
-
64
- <p>
65
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Widget Title', 'feedzy_rss_translate' ); ?></label>
66
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
67
- </p>
68
- <p>
69
- <label for="<?php echo $this->get_field_id( 'textarea' ); ?>"><?php _e( 'Intro text', 'feedzy_rss_translate' ); ?></label>
70
- <textarea class="widefat" id="<?php echo $this->get_field_id( 'textarea' ); ?>" name="<?php echo $this->get_field_name( 'textarea' ); ?>"><?php echo $textarea; ?></textarea>
71
- </p>
72
- <p>
73
- <label for="<?php echo $this->get_field_id( 'feeds' ); ?>"><?php _e( 'The feed(s) URL (comma-separated list).', 'feedzy_rss_translate' ); ?></label>
74
- <input class="widefat" id="<?php echo $this->get_field_id( 'feeds' ); ?>" name="<?php echo $this->get_field_name( 'feeds' ); ?>" type="text" value="<?php echo $feeds; ?>" />
75
- </p>
76
- <p>
77
- <label for="<?php echo $this->get_field_id( 'max' ); ?>"><?php _e( 'Number of items to display.', 'feedzy_rss_translate' ); ?></label>
78
- <input class="widefat" id="<?php echo $this->get_field_id( 'max' ); ?>" name="<?php echo $this->get_field_name( 'max' ); ?>" type="text" value="<?php echo $max; ?>" />
79
- </p>
80
- <p>
81
- <label for="<?php echo $this->get_field_id( 'target' ); ?>"><?php _e( 'Links may be opened in the same window or a new tab.', 'feedzy_rss_translate' ); ?></label>
82
- <select id="<?php echo $this->get_field_id( 'target' ); ?>" name="<?php echo $this->get_field_name( 'target' ); ?>" class="widefat">
83
- <?php
84
- $options = array( '_blank', '_parent', '_self', '_top', 'framename' );
85
- foreach ( $options as $option) {
86
- echo '<option value="' . $option . '" id="' . $option . '"', $target == $option ? ' selected="selected"' : '', '>', $option, '</option>';
87
- }
88
- ?>
89
- </select>
90
- </p>
91
- <p>
92
- <label for="<?php echo $this->get_field_id( 'titlelength' ); ?>"><?php _e( 'Trim the title of the item after X characters.', 'feedzy_rss_translate' ); ?></label>
93
- <input class="widefat" id="<?php echo $this->get_field_id( 'titlelength' ); ?>" name="<?php echo $this->get_field_name( 'titlelength' ); ?>" type="text" value="<?php echo $titlelength; ?>" />
94
- </p>
95
- <p>
96
- <input id="<?php echo $this->get_field_id( 'meta' ); ?>" name="<?php echo $this->get_field_name( 'meta' ); ?>" type="checkbox" value="1" <?php checked( '1', $meta ); ?> />
97
- <label for="<?php echo $this->get_field_id( 'meta' ); ?>"><?php _e( 'Should we display the date of publication and the author name?', 'feedzy_rss_translate' ); ?></label>
98
- </p>
99
- <p>
100
- <input id="<?php echo $this->get_field_id( 'summary' ); ?>" name="<?php echo $this->get_field_name( 'summary' ); ?>" type="checkbox" value="1" <?php checked( '1', $summary ); ?> />
101
- <label for="<?php echo $this->get_field_id( 'summary' ); ?>"><?php _e( 'Should we display a description (abstract) of the retrieved item?', 'feedzy_rss_translate' ); ?></label>
102
- </p>
103
- <p>
104
- <label for="<?php echo $this->get_field_id( 'summarylength' ); ?>"><?php _e( 'Crop description (summary) of the element after X characters.', 'feedzy_rss_translate' ); ?></label>
105
- <input class="widefat" id="<?php echo $this->get_field_id( 'summarylength' ); ?>" name="<?php echo $this->get_field_name( 'summarylength' ); ?>" type="text" value="<?php echo $summarylength; ?>" />
106
- </p>
107
- <p>
108
- <label for="<?php echo $this->get_field_id( 'thumb' ); ?>"><?php _e( 'Should we display the first image of the content if it is available?', 'feedzy_rss_translate' ); ?></label>
109
- <select id="<?php echo $this->get_field_id( 'thumb' ); ?>" name="<?php echo $this->get_field_name( 'thumb' ); ?>" class="widefat">
110
- <?php
111
- //Fix for versions before 2.3.1
112
- if ( $thumb == '1' ){
113
- $thumb = 'yes';
114
- } else if ( $thumb == '0' ) {
115
- $thumb = 'no';
116
- }
117
-
118
- $options = array(
119
- array( 'no', __( 'No', 'feedzy_rss_translate' ) ),
120
- array( 'yes', __( 'Yes', 'feedzy_rss_translate' ) ),
121
- array( 'auto', __( 'Auto', 'feedzy_rss_translate' ) )
122
- );
123
-
124
- foreach ( $options as $option) {
125
- echo '<option value="' . $option[0] . '" id="' . $option[0] . '"', $thumb == $option[0] ? ' selected="selected"' : '', '>', $option[1], '</option>';
126
- }
127
- ?>
128
- </select>
129
- </p>
130
- <p>
131
- <label for="<?php echo $this->get_field_id( 'default' ); ?>"><?php _e( 'Default thumbnail URL if no image is found.', 'feedzy_rss_translate' ); ?></label>
132
- <input class="widefat" id="<?php echo $this->get_field_id( 'default' ); ?>" name="<?php echo $this->get_field_name( 'default' ); ?>" type="text" value="<?php echo $default; ?>" />
133
- </p>
134
- <p>
135
- <label for="<?php echo $this->get_field_id( 'size' ); ?>"><?php _e( 'Thumblails dimension. Do not include "px". Eg: 150', 'feedzy_rss_translate' ); ?></label>
136
- <input class="widefat" id="<?php echo $this->get_field_id( 'size' ); ?>" name="<?php echo $this->get_field_name( 'size' ); ?>" type="text" value="<?php echo $size; ?>" />
137
- </p>
138
- <p>
139
- <label for="<?php echo $this->get_field_id( 'keywords_title' ); ?>"><?php _e( 'Only display item if title contains specific keyword(s) (comma-separated list/case sensitive).', 'feedzy_rss_translate' ); ?></label>
140
- <input class="widefat" id="<?php echo $this->get_field_id( 'keywords_title' ); ?>" name="<?php echo $this->get_field_name( 'keywords_title' ); ?>" type="text" value="<?php echo $keywords_title; ?>" />
141
- </p>
142
-
143
- <?php
144
-
145
- }
146
-
147
- //Update widget
148
- function update( $new_instance, $old_instance ) {
149
-
150
- $instance = $old_instance;
151
-
152
- $instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
153
-
154
- if ( current_user_can( 'unfiltered_html' ) ) {
155
-
156
- $instance[ 'textarea' ] = $new_instance[ 'textarea' ];
157
-
158
- } else {
159
-
160
- $instance[ 'textarea' ] = stripslashes( wp_filter_post_kses( addslashes( $new_instance[ 'textarea' ] ) ) );
161
-
162
- }
163
-
164
- $instance[ 'feeds' ] = strip_tags( $new_instance[ 'feeds' ] );
165
- $instance[ 'max' ] = strip_tags( $new_instance[ 'max' ] );
166
- $instance[ 'target' ] = strip_tags( $new_instance[ 'target' ] );
167
- $instance[ 'titlelength' ] = strip_tags( $new_instance[ 'titlelength' ] );
168
- $instance[ 'meta' ] = strip_tags( $new_instance[ 'meta' ] );
169
- $instance[ 'summary' ] = strip_tags( $new_instance[ 'summary' ] );
170
- $instance[ 'summarylength' ] = strip_tags( $new_instance[ 'summarylength' ] );
171
- $instance[ 'thumb' ] = strip_tags( $new_instance[ 'thumb' ] );
172
- $instance[ 'default' ] = strip_tags( $new_instance[ 'default' ] );
173
- $instance[ 'size' ] = strip_tags( $new_instance[ 'size' ] );
174
- $instance[ 'keywords_title' ] = strip_tags( $new_instance[ 'keywords_title' ] );
175
-
176
- return $instance;
177
-
178
- }
179
-
180
- //Display widget
181
- function widget( $args, $instance ) {
182
-
183
- extract( $args );
184
-
185
- $title = apply_filters( 'widget_title', $instance[ 'title' ] );
186
- $textarea = apply_filters( 'widget_textarea', empty( $instance[ 'textarea' ] ) ? '' : $instance[ 'textarea' ], $instance );
187
-
188
- //Display the widget body
189
- echo $before_widget;
190
-
191
- //Check if title is set
192
- if ( $title )
193
- echo $before_title . $title . $after_title;
194
-
195
- //Check if text intro is set
196
- if( isset( $instance[ 'textarea' ] ) && !empty( $instance[ 'textarea' ] ) )
197
- echo '<p class="feedzy-widget-intro">' . wpautop( $textarea ) . '</p>';
198
-
199
- $items = array( 'meta', 'summary' );
200
- foreach( $items as $item ){
201
-
202
- if( $instance[ $item ] == true ){
203
-
204
- $instance[ $item ] = 'yes';
205
-
206
- } else {
207
-
208
- $instance[ $item ] = 'no';
209
-
210
- }
211
-
212
- }
213
-
214
- //Fix for versions before 2.3.1
215
- if ( $instance[ 'thumb' ] == '1' ){
216
-
217
- $instance[ 'thumb' ] = 'yes';
218
-
219
- } else if ( $instance[ 'thumb' ] == '0' ) {
220
-
221
- $instance[ 'thumb' ] = 'no';
222
-
223
- }
224
-
225
- //Call the shortcode function
226
- echo feedzy_rss( array(
227
- "feeds" => $instance[ 'feeds' ],
228
- "max" => $instance[ 'max' ],
229
- "feed_title" => 'no',
230
- "target" => $instance[ 'target' ],
231
- "title" => $instance[ 'titlelength' ],
232
- "meta" => $instance[ 'meta' ],
233
- "summary" => $instance[ 'summary' ],
234
- "summarylength" => $instance[ 'summarylength' ],
235
- "thumb" => $instance[ 'thumb' ],
236
- "default" => $instance[ 'default' ],
237
- "size" => $instance[ 'size' ],
238
- "keywords_title" => $instance[ 'keywords_title' ]
239
- ) );
240
-
241
- echo $after_widget;
242
-
243
- }
244
-
245
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
form/form.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The file that defines the core plugin class
4
+ *
5
+ * A class definition that includes attributes and functions used across both the
6
+ * public-facing side of the site and the admin area.
7
+ *
8
+ * @link http://themeisle.com
9
+ * @since 3.0.0
10
+ *
11
+ * @package feedzy-rss-feeds
12
+ * @subpackage feedzy-rss-feeds/form
13
+ */
14
+
15
+ $html_parts = Feedzy_Rss_Feeds_Ui_Lang::get_form_elements();
16
+ ?>
17
+ <!DOCTYPE html>
18
+ <html>
19
+ <head>
20
+ <!-- Disable browser caching of dialog window -->
21
+ <meta http-equiv="cache-control" content="no-cache" />
22
+ <meta http-equiv="expires" content="0" />
23
+ <meta http-equiv="pragma" content="no-cache" />
24
+ <link rel="stylesheet" href="<?php echo FEEDZY_ABSURL . 'css/form.css?h=' . date( 'dmYHis' ); ?>" type="text/css" media="all" />
25
+ </head>
26
+ <body>
27
+ <div class="feedzy-popup-form container">
28
+ <?php
29
+ $output = '';
30
+ if ( ! empty( $html_parts ) ) {
31
+ foreach ( $html_parts as $item => $section ) {
32
+ $output .= '<div class="container feedzy_' . $item . '">';
33
+ $output .= '<h5>' . $section['title'] . '</h5>';
34
+ if ( isset( $section['description'] ) ) {
35
+ $output .= '<p>' . $section['description'] . '</p>';
36
+ }
37
+ if ( ! empty( $section['elements'] ) ) {
38
+ foreach ( $section['elements'] as $name => $props ) {
39
+ $element = '';
40
+ $disabled = '';
41
+ if ( isset( $props['disabled'] ) && $props['disabled'] ) {
42
+ $disabled = 'disabled="true"';
43
+ }
44
+ switch ( $props['type'] ) {
45
+ case 'select':
46
+ $element = '<select name="' . $name . '" data-feedzy="' . $name . '" ' . $disabled . ' >';
47
+ foreach ( $props['opts'] as $opt => $values ) {
48
+ $checked = '';
49
+ if ( $props['value'] == $values['value'] ) {
50
+ $checked = 'selected';
51
+ }
52
+ $element .= '<option value="' . $values['value'] . '" ' . $checked . ' > ' . $values['label'] . '</option>';
53
+ }
54
+ $element .= '</select>';
55
+ break;
56
+ case 'radio':
57
+ foreach ( $props['opts'] as $opt => $values ) {
58
+ $checked = '';
59
+ if ( $props['value'] == $values['value'] ) {
60
+ $checked = 'checked="checked"';
61
+ }
62
+ $element .= '<label class="feedzy-radio-image feedzy-template-' . $values['value']
63
+ . '"><input type="radio" name="' . $name . '" data-feedzy="' . $name . '" value="' . $values['value'] . '" ' . $checked . ' ' . $disabled . ' />' .
64
+ $values['label'] . '</label>';
65
+ }
66
+ break;
67
+ case 'checkbox':
68
+ foreach ( $props['opts'] as $opt => $values ) {
69
+ $checked = '';
70
+ if ( $props['value'] == $values['value'] ) {
71
+ $checked = 'checked="checked"';
72
+ }
73
+ $element .= '<input type="checkbox" name="' . $name . '" data-feedzy="' . $name . '" value="' . $values['value'] . '" ' . $checked . ' ' . $disabled . ' /> ' . $values['label'];
74
+ }
75
+ break;
76
+ case 'file':
77
+ $element = '
78
+ <input type="text" class="column column-50 float-left" name="' . $name . '" data-feedzy="' . $name . '" id="feedzy_image_url" placeholder="' . $props['placeholder'] . '" value="' . $props['value'] . '">
79
+ <input type="button" class="column column-50 float-right button-outline" name="upload-btn" id="feedzy_upload_btn" value="' . $props['button']['button_text'] . '">
80
+ ';
81
+ break;
82
+ default:
83
+ $element = '<input type="text" name="' . $name . '" data-feedzy="' . $name . '" value="' . $props['value'] . '" placeholder="' . $props['placeholder'] . '" ' . $disabled . ' />';
84
+ break;
85
+ }
86
+ $output .= '
87
+ <div class="row feedzy_element_' . $name . '">
88
+ <div class="column column-50">
89
+ <label for="' . $name . '">' . $props['label'] . '</label>
90
+ </div>
91
+ <div class="column column-50">
92
+ ' . $element . '
93
+ </div>
94
+ <hr/>
95
+ </div>
96
+ ';
97
+ }
98
+ }
99
+ $output .= '</div>';
100
+ }
101
+ }
102
+ echo $output;
103
+ ?>
104
+ </div>
105
+ <script type="text/javascript">
106
+ var args = top.tinymce.activeEditor.windowManager.getParams();
107
+ var $ = args.jquery;
108
+ var editor = args.editor;
109
+ var wp = args.wp;
110
+ var custom_uploader;
111
+ $(document).ready(function($) {
112
+ $(document).on('click', '#feedzy_upload_btn', function (e) {
113
+ e.preventDefault();
114
+ var upload_button = $(this);
115
+ custom_uploader = wp.media.frames.file_frame = wp.media({
116
+ title: editor.getLang( 'feedzy_tinymce_plugin.image_button' ),
117
+ button: {
118
+ text: editor.getLang( 'feedzy_tinymce_plugin.image_button' )
119
+ },
120
+ multiple: false
121
+ });
122
+
123
+ custom_uploader.on('select', function () {
124
+ var attachment = custom_uploader.state().get('selection').first().toJSON();
125
+ upload_button.siblings('input[type="text"]').val(attachment.url);
126
+ });
127
+
128
+ custom_uploader.open();
129
+ });
130
+ });
131
+ </script>
132
+ </body>
133
+ </html>
img/feedzy-default-template.jpg ADDED
Binary file
img/feedzy-default.jpg CHANGED
File without changes
img/feedzy-style1-template.jpg ADDED
Binary file
img/feedzy-style2-template.jpg ADDED
Binary file
img/feedzy.png CHANGED
File without changes
img/feedzy.svg CHANGED
@@ -1,11 +1,11 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
- <svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
- width="850.39px" height="850.39px" viewBox="0 0 850.39 850.39" enable-background="new 0 0 850.39 850.39" xml:space="preserve">
6
- <path fill="#DB3939" d="M425.195,2C190.366,2,0,191.918,0,426.195C0,660.472,190.366,850.39,425.195,850.39
7
- c234.828,0,425.195-189.918,425.195-424.195C850.39,191.918,660.023,2,425.195,2z M378.648,670.664L378.648,670.664h-91.578v-57.115
8
- l-49.567-49.451H180.24v-91.236h95.248l103.161,102.797V670.664z M531.175,670.664h-91.576V537.367L313.852,411.931H180.24v-91.362
9
- h171.472l179.463,179.024V670.664z M683.718,670.664h-91.574V461.21L390.063,259.73H180.24v-91.361h247.806l255.672,255.072V670.664
10
- z"/>
11
- </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="850.39px" height="850.39px" viewBox="0 0 850.39 850.39" enable-background="new 0 0 850.39 850.39" xml:space="preserve">
6
+ <path fill="#DB3939" d="M425.195,2C190.366,2,0,191.918,0,426.195C0,660.472,190.366,850.39,425.195,850.39
7
+ c234.828,0,425.195-189.918,425.195-424.195C850.39,191.918,660.023,2,425.195,2z M378.648,670.664L378.648,670.664h-91.578v-57.115
8
+ l-49.567-49.451H180.24v-91.236h95.248l103.161,102.797V670.664z M531.175,670.664h-91.576V537.367L313.852,411.931H180.24v-91.362
9
+ h171.472l179.463,179.024V670.664z M683.718,670.664h-91.574V461.21L390.063,259.73H180.24v-91.361h247.806l255.672,255.072V670.664
10
+ z"/>
11
+ </svg>
includes/abstract/feedzy-rss-feeds-admin-abstract.php ADDED
@@ -0,0 +1,740 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Abstract class with reusable functionality of the plugin.
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes/abstract
10
+ */
11
+ /**
12
+ * The Feedzy RSS functions of the plugin.
13
+ *
14
+ * Abstract class containing functions for the Feedzy Admin Class
15
+ *
16
+ * @package feedzy-rss-feeds
17
+ * @subpackage feedzy-rss-feeds/includes/abstract
18
+ * @author Themeisle <friends@themeisle.com>
19
+ * @abstract
20
+ */
21
+ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
22
+
23
+
24
+ /**
25
+ * Defines the default image to use on RSS Feeds
26
+ *
27
+ * @since 3.0.0
28
+ * @access public
29
+ * @param string $imageSrc The image source, currently not used.
30
+ * @return string
31
+ */
32
+ public function feedzy_define_default_image( $imageSrc ) {
33
+ $defaultImg = FEEDZY_ABSURL . '/img/feedzy-default.jpg';
34
+ return apply_filters( 'feedzy_define_default_image_filter', $defaultImg );
35
+ }
36
+
37
+ /**
38
+ * Defines the default error notice
39
+ *
40
+ * Logs error to the log file
41
+ * Returns the error message
42
+ *
43
+ * @since 3.0.0
44
+ * @access public
45
+ * @param object $error The error Object.
46
+ * @param string $feedURL The feed URL.
47
+ * @return string
48
+ */
49
+ public function feedzy_default_error_notice( $error, $feedURL ) {
50
+ error_log( 'Feedzy RSS Feeds - related feed: ' . print_r( $feedURL ) . ' - Error message: ' . $this->feedzy_array_obj_string( $error ) );
51
+ return '<div id="message" class="error" data-error"' . esc_attr( $this->feedzy_array_obj_string( $error ) ) . '"><p>' . __( 'Sorry, this feed is currently unavailable or does not exists anymore.', 'feedzy_rss_translate' ) . '</p></div>';
52
+ }
53
+
54
+ /**
55
+ * Converts an object to string
56
+ *
57
+ * @since 3.0.0
58
+ * @access public
59
+ * @param object $error The error Object.
60
+ * @return string
61
+ */
62
+ public function feedzy_array_obj_string( $error ) {
63
+ if ( is_array( $error ) || is_object( $error ) ) {
64
+ return print_r( $error, true );
65
+ } else {
66
+ return $error;
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Padding ratio based on image size
72
+ *
73
+ * @since 3.0.0
74
+ * @access public
75
+ * @param string $itemAttr The item attribute.
76
+ * @param array $sizes An array with the current sizes.
77
+ * @return string
78
+ */
79
+ public function feedzy_add_item_padding( $itemAttr, $sizes ) {
80
+ $paddinTop = number_format( ( 15 / 150 ) * $sizes['height'], 0 );
81
+ $paddinBottom = number_format( ( 25 / 150 ) * $sizes['height'], 0 );
82
+ $stylePadding = ' style="padding: ' . $paddinTop . 'px 0 ' . $paddinBottom . 'px"';
83
+ return $itemAttr . $stylePadding;
84
+ }
85
+
86
+ /**
87
+ * Appends classes to the feed item
88
+ *
89
+ * @since 3.0.0
90
+ * @access public
91
+ * @param string $itemAttr The item attribute.
92
+ * @return string
93
+ */
94
+ public function feedzy_classes_item( $itemAttr = '', $sizes = '', $item = '', $feedURL = '', $sc = '' ) {
95
+ $classes = array( 'rss_item' );
96
+ $classes = apply_filters( 'feedzy_add_classes_item', $classes, $sc );
97
+ $classes = ' class="' . implode( ' ', $classes ) . '"';
98
+ return $itemAttr . $classes;
99
+ }
100
+
101
+ /**
102
+ * Retrive image from the item object
103
+ *
104
+ * @since 3.0.0
105
+ * @access public
106
+ * @param object $item The item object.
107
+ * @return string
108
+ */
109
+ public function feedzy_retrieve_image( $item ) {
110
+ $theThumbnail = '';
111
+ if ( $enclosures = $item->get_enclosures() ) {
112
+ foreach ( (array) $enclosures as $enclosure ) {
113
+ // Item thumbnail
114
+ if ( $thumbnail = $enclosure->get_thumbnail() ) {
115
+ $theThumbnail = $thumbnail;
116
+ }
117
+
118
+ if ( isset( $enclosure->thumbnails ) ) {
119
+ foreach ( (array) $enclosure->thumbnails as $thumbnail ) {
120
+ $theThumbnail = $thumbnail;
121
+ }
122
+ }
123
+
124
+ if ( $thumbnail = $enclosure->embed() ) {
125
+ $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/iU';
126
+ if ( preg_match( $pattern, $thumbnail, $matches ) ) {
127
+ $theThumbnail = $matches[0];
128
+ }
129
+ }
130
+
131
+ foreach ( (array) $enclosure->get_link() as $thumbnail ) {
132
+ $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/iU';
133
+ $imgsrc = $thumbnail;
134
+
135
+ if ( preg_match( $pattern, $imgsrc, $matches ) ) {
136
+ $theThumbnail = $matches[0];
137
+ break;
138
+ }
139
+ }
140
+
141
+ // Break loop if thumbnail is found
142
+ if ( ! empty( $theThumbnail ) ) {
143
+ break;
144
+ }
145
+ }
146
+ }
147
+
148
+ // xmlns:itunes podcast
149
+ if ( empty( $theThumbnail ) ) {
150
+ $data = $item->get_item_tags( 'http://www.itunes.com/dtds/podcast-1.0.dtd', 'image' );
151
+ if ( isset( $data['0']['attribs']['']['href'] ) && ! empty( $data['0']['attribs']['']['href'] ) ) {
152
+ $theThumbnail = $data['0']['attribs']['']['href'];
153
+ }
154
+ }
155
+
156
+ // Content image
157
+ if ( empty( $theThumbnail ) ) {
158
+ $feedDescription = $item->get_content();
159
+ $theThumbnail = $this->feedzy_return_image( $feedDescription );
160
+ }
161
+
162
+ // Description image
163
+ if ( empty( $theThumbnail ) ) {
164
+ $feedDescription = $item->get_description();
165
+ $theThumbnail = $this->feedzy_return_image( $feedDescription );
166
+ }
167
+
168
+ return $theThumbnail;
169
+ }
170
+
171
+ /**
172
+ * Get an image from a string
173
+ *
174
+ * @since 3.0.0
175
+ * @access public
176
+ * @param string $string A string with an <img/> tag.
177
+ * @return string
178
+ */
179
+ public function feedzy_return_image( $string ) {
180
+ $img = html_entity_decode( $string, ENT_QUOTES, 'UTF-8' );
181
+ $pattern = '/<img[^>]+\>/i';
182
+ preg_match( $pattern, $img, $matches );
183
+ if ( isset( $matches[0] ) ) {
184
+ $blacklistCount = 0;
185
+ foreach ( $matches as $matche ) {
186
+ $link = $this->feedzy_scrape_image( $matche );
187
+ $blacklist = array();
188
+ $blacklist = apply_filters( 'feedzy_feed_blacklist_images', $this->feedzy_blacklist_images( $blacklist ) );
189
+ foreach ( $blacklist as $string ) {
190
+ if ( strpos( (string) $link, $string ) !== false ) {
191
+ $blacklistCount++;
192
+ }
193
+ }
194
+ if ( $blacklistCount == 0 ) { break;
195
+ }
196
+ }
197
+ if ( $blacklistCount == 0 ) { return $link;
198
+ }
199
+ }
200
+ return '';
201
+ }
202
+
203
+ /**
204
+ * Scrape an image for link from a string with an <img/>
205
+ *
206
+ * @since 3.0.0
207
+ * @access public
208
+ * @param string $string A string with an <img/> tag.
209
+ * @param string $link The link to search for.
210
+ * @return string
211
+ */
212
+ public function feedzy_scrape_image( $string, $link = '' ) {
213
+ $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
214
+ preg_match( $pattern, $string, $link );
215
+ if ( isset( $link[1] ) ) {
216
+ $link = urldecode( $link[1] );
217
+ }
218
+ return $link;
219
+ }
220
+
221
+ /**
222
+ * List blacklisted images to prevent fetching emoticons
223
+ *
224
+ * @since 3.0.0
225
+ * @access public
226
+ * @param array $blacklist An array with blacklisted resources.
227
+ * @return array
228
+ */
229
+ public function feedzy_blacklist_images( $blacklist ) {
230
+ $blacklist = array(
231
+ 'frownie.png',
232
+ 'icon_arrow.gif',
233
+ 'icon_biggrin.gif',
234
+ 'icon_confused.gif',
235
+ 'icon_cool.gif',
236
+ 'icon_cry.gif',
237
+ 'icon_eek.gif',
238
+ 'icon_evil.gif',
239
+ 'icon_exclaim.gif',
240
+ 'icon_idea.gif',
241
+ 'icon_lol.gif',
242
+ 'icon_mad.gif',
243
+ 'icon_mrgreen.gif',
244
+ 'icon_neutral.gif',
245
+ 'icon_question.gif',
246
+ 'icon_razz.gif',
247
+ 'icon_redface.gif',
248
+ 'icon_rolleyes.gif',
249
+ 'icon_sad.gif',
250
+ 'icon_smile.gif',
251
+ 'icon_surprised.gif',
252
+ 'icon_twisted.gif',
253
+ 'icon_wink.gif',
254
+ 'mrgreen.png',
255
+ 'rolleyes.png',
256
+ 'simple-smile.png',
257
+ );
258
+ return $blacklist;
259
+ }
260
+
261
+ /**
262
+ * Image name encoder and url retrive if in url param
263
+ *
264
+ * @since 3.0.0
265
+ * @access public
266
+ * @param string $string A string containing the image URL.
267
+ * @return string
268
+ */
269
+ public function feedzy_image_encode( $string ) {
270
+ // Check if img url is set as an URL parameter
271
+ $url_tab = parse_url( $string );
272
+ if ( isset( $url_tab['query'] ) ) {
273
+ preg_match_all( '/(http|https):\/\/[^ ]+(\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|\.PNG)/', $url_tab['query'], $imgUrl );
274
+ if ( isset( $imgUrl[0][0] ) ) {
275
+ $string = $imgUrl[0][0];
276
+ }
277
+ }
278
+
279
+ // Encode image name only en keep extra parameters
280
+ $query = $extention = '';
281
+ $url_tab = parse_url( $string );
282
+ if ( isset( $url_tab['query'] ) ) {
283
+ $query = '?' . $url_tab['query'];
284
+ }
285
+ $path_parts = pathinfo( $string );
286
+ $path = $path_parts['dirname'];
287
+ $file = rawurldecode( $path_parts['filename'] );
288
+ $extention = pathinfo( $url_tab['path'], PATHINFO_EXTENSION );
289
+ if ( ! empty( $extention ) ) {
290
+ $extention = '.' . $extention;
291
+ }
292
+
293
+ // Return a well encoded image url
294
+ return $path . '/' . rawurlencode( $file ) . $extention . $query;
295
+ }
296
+
297
+ /**
298
+ * Filter feed description input
299
+ *
300
+ * @since 3.0.0
301
+ * @access public
302
+ * @param string $description The feed description.
303
+ * @param string $content The feed description.
304
+ * @param string $feedURL The feed URL.
305
+ * @return string
306
+ */
307
+ public function feedzy_summary_input_filter( $description, $content, $feedURL ) {
308
+ $description = trim( strip_tags( $description ) );
309
+ $description = trim( chop( $description, '[&hellip;]' ) );
310
+
311
+ return $description;
312
+ }
313
+
314
+ /**
315
+ * Check title for keywords
316
+ *
317
+ * @since 3.0.0
318
+ * @access public
319
+ * @param boolean $continue A boolean to stop the script.
320
+ * @param array $keywords_title The keywords for title.
321
+ * @param object $item The feed item.
322
+ * @param string $feedURL The feed URL.
323
+ * @return boolean
324
+ */
325
+ public function feedzy_feed_item_keywords_title( $continue, $keywords_title, $item, $feedURL ) {
326
+ if ( ! empty( $keywords_title ) ) {
327
+ $continue = false;
328
+ foreach ( $keywords_title as $keyword ) {
329
+ if ( strpos( $item->get_title(), $keyword ) !== false ) {
330
+ $continue = true;
331
+ }
332
+ }
333
+ }
334
+ return $continue;
335
+ }
336
+
337
+ /**
338
+ * Insert cover picture to main rss feed content
339
+ *
340
+ * @since 3.0.0
341
+ * @access public
342
+ * @param string $content The item feed content.
343
+ * @return string
344
+ */
345
+ public function feedzy_insert_thumbnail_rss( $content ) {
346
+ global $post;
347
+ if ( has_post_thumbnail( $post->ID ) ) {
348
+ $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail' ) . '' . $content;
349
+ }
350
+ return $content;
351
+ }
352
+
353
+ /**
354
+ * Include cover picture (medium) to rss feed enclosure
355
+ * and media:content
356
+ *
357
+ * @since 3.0.0
358
+ * @access public
359
+ */
360
+ public function feedzy_include_thumbnail_rss() {
361
+ global $post;
362
+
363
+ if ( has_post_thumbnail( $post->ID ) ) {
364
+
365
+ $postThumbnailId = get_post_thumbnail_id( $post->ID );
366
+ $attachmentMeta = wp_get_attachment_metadata( $postThumbnailId );
367
+ $imageUrl = wp_get_attachment_image_src( $postThumbnailId, 'medium' );
368
+
369
+ echo '<enclosure url="' . $imageUrl[0] . '" length="' . filesize( get_attached_file( $postThumbnailId ) ) . '" type="image/jpg" />';
370
+ echo '<media:content url="' . $imageUrl[0] . '" width="' . $attachmentMeta['sizes']['medium']['width'] . '" height="' . $attachmentMeta['sizes']['medium']['height'] . '" medium="image" type="' . $attachmentMeta['sizes']['medium']['mime-type'] . '" />';
371
+
372
+ }
373
+ }
374
+
375
+ /**
376
+ * Returns the attributes of the shortcode
377
+ *
378
+ * @since 3.0.0
379
+ * @access public
380
+ * @param array $atts The attributes passed by WordPress.
381
+ * @return array
382
+ */
383
+ public function get_short_code_attributes( $atts ) {
384
+ // Retrieve & extract shorcode parameters
385
+ $sc = shortcode_atts( array(
386
+ 'feeds' => '', // comma separated feeds url
387
+ 'max' => '5', // number of feeds items (0 for unlimited)
388
+ 'feed_title' => 'yes', // display feed title yes/no
389
+ 'target' => '_blank', // _blank, _self
390
+ 'title' => '', // strip title after X char
391
+ 'meta' => 'yes', // yes, no
392
+ 'summary' => 'yes', // strip title
393
+ 'summarylength' => '', // strip summary after X char
394
+ 'thumb' => 'yes', // yes, no, auto
395
+ 'default' => '', // default thumb URL if no image found (only if thumb is set to yes or auto)
396
+ 'size' => '', // thumbs pixel size
397
+ 'keywords_title' => '', // only display item if title contains specific keywords (comma-separated list/case sensitive)
398
+ ), $atts, 'feedzy_default' );
399
+
400
+ $sc = array_merge( $sc, apply_filters( 'feedzy_get_short_code_attributes_filter', $atts ) );
401
+
402
+ return $sc;
403
+ }
404
+
405
+ /**
406
+ * Get the feed url based on the feeds passed from the shortcode attribute.
407
+ *
408
+ * @since 3.0.0
409
+ * @access public
410
+ * @param string $feeds The feeds from the shortcode attribute.
411
+ * @return array|mixed
412
+ */
413
+ public function get_feed_url( $feeds ) {
414
+ $feedURL = '';
415
+ if ( ! empty( $feeds ) ) {
416
+ $feeds = rtrim( $feeds, ',' );
417
+ $feeds = explode( ',', $feeds );
418
+
419
+ // Remove SSL from HTTP request to prevent fetching errors
420
+ foreach ( $feeds as $feed ) {
421
+ $feedURL[] = preg_replace( '/^https:/i', 'http:', $feed );
422
+ }
423
+
424
+ if ( count( $feedURL ) === 1 ) {
425
+ $feedURL = $feedURL[0];
426
+ }
427
+ }
428
+ return $feedURL;
429
+ }
430
+
431
+ /**
432
+ * Sanitizes the shortcode array and sets the defaults
433
+ *
434
+ * @since 3.0.0
435
+ * @access public
436
+ * @param array $sc The shorcode attributes array.
437
+ * @param string $feedURL The feed url.
438
+ * @return mixed
439
+ */
440
+ public function sanitize_attr( $sc, $feedURL ) {
441
+ if ( $sc['max'] == '0' ) {
442
+ $sc['max'] = '999';
443
+ } elseif ( empty( $sc['max'] ) || ! ctype_digit( $sc['max'] ) ) {
444
+ $sc['max'] = '5';
445
+ }
446
+
447
+ if ( empty( $sc['size'] ) || ! ctype_digit( $sc['size'] ) ) {
448
+ $sc['size'] = '150';
449
+ }
450
+
451
+ if ( ! empty( $sc['title'] ) && ! ctype_digit( $sc['title'] ) ) {
452
+ $sc['title'] = '';
453
+ }
454
+
455
+ if ( ! empty( $sc['keywords_title'] ) ) {
456
+ $sc['keywords_title'] = rtrim( $sc['keywords_title'], ',' );
457
+ $sc['keywords_title'] = array_map( 'trim', explode( ',', $sc['keywords_title'] ) );
458
+ }
459
+
460
+ if ( ! empty( $sc['summarylength'] ) && ! ctype_digit( $sc['summarylength'] ) ) {
461
+ $sc['summarylength'] = '';
462
+ }
463
+
464
+ if ( empty( $sc['default'] ) ) {
465
+ $sc['default'] = apply_filters( 'feedzy_default_image', $sc['default'], $feedURL );
466
+ }
467
+
468
+ return $sc;
469
+ }
470
+
471
+ /**
472
+ * Retrive the filter rss title array
473
+ *
474
+ * @since 3.0.0
475
+ * @access private
476
+ * @param object $feed The feed object.
477
+ * @return array
478
+ */
479
+ private function get_feed_title_filter( $feed ) {
480
+ return array(
481
+ 'rss_url' => $feed->get_permalink(),
482
+ 'rss_title_class' => 'rss_title',
483
+ 'rss_title' => html_entity_decode( $feed->get_title() ),
484
+ 'rss_description_class' => 'rss_description',
485
+ 'rss_description' => $feed->get_description(),
486
+ );
487
+ }
488
+
489
+ /**
490
+ * Retrive the filter item array
491
+ *
492
+ * @since 3.0.0
493
+ * @access private
494
+ * @param array $sc The shorcode attributes array.
495
+ * @param array $sizes The sizes array.
496
+ * @param object $item The feed item object.
497
+ * @param string $feedURL The feed url.
498
+ * @return array
499
+ */
500
+ private function get_feed_item_filter( $sc, $sizes, $item, $feedURL ) {
501
+ $itemLink = $item->get_permalink();
502
+ $newLink = $itemLink;
503
+ $newLink = apply_filters( 'feedzy_item_url_filter', $itemLink, $sc );
504
+
505
+ // Fetch image thumbnail
506
+ if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
507
+ $theThumbnail = $this->feedzy_retrieve_image( $item );
508
+ }
509
+
510
+ if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
511
+ $contentThumb = '';
512
+ if ( ( ! empty( $theThumbnail ) && $sc['thumb'] == 'auto' ) || $sc['thumb'] == 'yes' ) {
513
+ if ( ! empty( $theThumbnail ) ) {
514
+ $theThumbnail = $this->feedzy_image_encode( $theThumbnail );
515
+ $contentThumb .= '<span class="fetched" style="background-image: url(' . $theThumbnail . ');" alt="' . $item->get_title() . '"></span>';
516
+ }
517
+ if ( $sc['thumb'] == 'yes' ) {
518
+ $contentThumb .= '<span style="background-image:url(' . $sc['default'] . ');" alt="' . $item->get_title() . '"></span>';
519
+ }
520
+ } else {
521
+ $contentThumb .= '<span style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image:url(' . $sc['default'] . ');" alt="' . $item->get_title() . '"></span>';
522
+ }
523
+
524
+ $contentThumb = apply_filters( 'feedzy_thumb_output', $contentThumb, $feedURL );
525
+ } else {
526
+ $contentThumb = '';
527
+ $contentThumb .= '<span style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image:url(' . $sc['default'] . ');" alt="' . $item->get_title() . '"></span>';
528
+ $contentThumb = apply_filters( 'feedzy_thumb_output', $contentThumb, $feedURL );
529
+ }
530
+
531
+ $contentTitle = '';
532
+ if ( is_numeric( $sc['title'] ) && strlen( $item->get_title() ) > $sc['title'] ) {
533
+ $contentTitle .= preg_replace( '/\s+?(\S+)?$/', '', substr( $item->get_title(), 0, $sc['title'] ) ) . '...';
534
+ } else {
535
+ $contentTitle .= $item->get_title();
536
+ }
537
+ $contentTitle = apply_filters( 'feedzy_title_output', $contentTitle, $feedURL );
538
+
539
+ // Define Meta args
540
+ $metaArgs = array(
541
+ 'author' => true,
542
+ 'date' => true,
543
+ 'date_format' => get_option( 'date_format' ),
544
+ 'time_format' => get_option( 'time_format' ),
545
+ );
546
+
547
+ // Filter: feedzy_meta_args
548
+ $metaArgs = apply_filters( 'feedzy_meta_args', $metaArgs, $feedURL );
549
+ $contentMeta = '';
550
+ if ( $sc['meta'] == 'yes' && ( $metaArgs['author'] || $metaArgs['date'] ) ) {
551
+ $contentMeta = '';
552
+ if ( $item->get_author() && $metaArgs['author'] ) {
553
+ $author = $item->get_author();
554
+ if ( ! $authorName = $author->get_name() ) {
555
+ $authorName = $author->get_email();
556
+ }
557
+ if ( $authorName ) {
558
+ $domain = parse_url( $newLink );
559
+ $contentMeta .= __( 'by', 'feedzy_rss_translate' ) . ' <a href="http://' . $domain['host'] . '" target="' . $sc['target'] . '" title="' . $domain['host'] . '" >' . $authorName . '</a> ';
560
+ }
561
+ }
562
+
563
+ if ( $metaArgs['date'] ) {
564
+ $contentMeta .= __( 'on', 'feedzy_rss_translate' ) . ' ' . date_i18n( $metaArgs['date_format'], $item->get_date( 'U' ) );
565
+ $contentMeta .= ' ';
566
+ $contentMeta .= __( 'at', 'feedzy_rss_translate' ) . ' ' . date_i18n( $metaArgs['time_format'], $item->get_date( 'U' ) );
567
+ }
568
+ }
569
+ $contentMeta = apply_filters( 'feedzy_meta_output', $contentMeta, $feedURL );
570
+ $contentSummary = '';
571
+ if ( $sc['summary'] == 'yes' ) {
572
+ $contentSummary = '';
573
+ $description = $item->get_description();
574
+ $description = apply_filters( 'feedzy_summary_input', $description, $item->get_content(), $feedURL );
575
+
576
+ if ( is_numeric( $sc['summarylength'] ) && strlen( $description ) > $sc['summarylength'] ) {
577
+ $contentSummary .= preg_replace( '/\s+?(\S+)?$/', '', substr( $description, 0, $sc['summarylength'] ) ) . ' […]';
578
+ } else {
579
+ $contentSummary .= $description . ' […]';
580
+ }
581
+
582
+ $contentSummary = apply_filters( 'feedzy_summary_output', $contentSummary, $newLink, $feedURL );
583
+ }
584
+
585
+ $itemArray = array(
586
+ 'item_img_class' => 'rss_image',
587
+ 'item_img_style' => 'width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px;',
588
+ 'item_url' => $newLink,
589
+ 'item_url_target' => $sc['target'],
590
+ 'item_url_title' => $item->get_title(),
591
+ 'item_img' => $contentThumb,
592
+ 'item_title' => $contentTitle,
593
+ 'item_content_class' => 'rss_content',
594
+ 'item_content_style' => '',
595
+ 'item_meta' => $contentMeta,
596
+ 'item_description' => $contentSummary,
597
+ );
598
+
599
+ $itemArray = apply_filters( 'feedzy_item_filter', $itemArray, $item );
600
+
601
+ return $itemArray;
602
+ }
603
+
604
+ /**
605
+ * Render the content to be displayed
606
+ *
607
+ * @since 3.0.0
608
+ * @access public
609
+ * @param array $sc The shorcode attributes array.
610
+ * @param object $feed The feed object.
611
+ * @param string $content The original content.
612
+ * @param string $feedURL The feed url.
613
+ * @return string
614
+ */
615
+ public function render_content( $sc, $feed, $content = '', $feedURL ) {
616
+ $count = 0;
617
+
618
+ $sizes = array( 'width' => $sc['size'], 'height' => $sc['size'] );
619
+ $sizes = apply_filters( 'feedzy_thumb_sizes', $sizes, $feedURL );
620
+
621
+ // Display the error message
622
+ if ( $feed -> error() ) {
623
+ $content .= apply_filters( 'feedzy_default_error', $feed -> error(), $feedURL );
624
+ }
625
+
626
+ $feed_title['use_title'] = false;
627
+ if ( $sc['feed_title'] == 'yes' ) {
628
+ $feed_title = $this->get_feed_title_filter( $feed );
629
+ $feed_title['use_title'] = true;
630
+ }
631
+
632
+ $count = 0;
633
+ $items = apply_filters( 'feedzy_feed_items', $feed->get_items(), $feedURL );
634
+ $feed_items = array();
635
+ foreach ( (array) $items as $item ) {
636
+ $continue = apply_filters( 'feedzy_item_keyword', true, $sc['keywords_title'], $item, $feedURL );
637
+ if ( $continue == true ) {
638
+ // Count items
639
+ if ( $count >= $sc['max'] ) {
640
+ break;
641
+ }
642
+ $itemAttr = apply_filters( 'feedzy_item_attributes', $itemAttr = '', $sizes, $item, $feedURL, $sc );
643
+ $feed_items[ $count ] = $this->get_feed_item_filter( $sc, $sizes, $item, $feedURL );
644
+ $feed_items[ $count ]['itemAttr'] = $itemAttr;
645
+ $count++;
646
+ }
647
+ }
648
+
649
+ $content = '<div class="feedzy-rss">';
650
+
651
+ if ( $feed_title['use_title'] ) {
652
+ $content .= '<div class="rss_header">';
653
+ $content .= '<h2><a href="' . $feed->get_permalink() . '" class="rss_title">' . html_entity_decode( $feed->get_title() ) . '</a> <span class="rss_description"> ' . $feed->get_description() . '</span></h2>';
654
+ $content .= '</div>';
655
+ }
656
+
657
+ $content .= '<ul>';
658
+ foreach ( $feed_items as $item ) {
659
+ $content .= '
660
+ <li ' . $item['itemAttr'] . '>
661
+ ' . ( ( ! empty( $item['item_img'] ) && $sc['thumb'] != 'no' ) ? '
662
+ <div class="' . $item['item_img_class'] . '" style="' . $item['item_img_style'] . '">
663
+ <a href="' . $item['item_url'] . '" target="' . $item['item_url_target'] . '" title="' . $item['item_url_title'] . '" style="' . $item['item_img_style'] . '">
664
+ ' . $item['item_img'] . '
665
+ </a>
666
+ </div>' : '' ) . '
667
+ <span class="title">
668
+ <a href="' . $item['item_url'] . '" target="' . $item['item_url_target'] . '">
669
+ ' . $item['item_title'] . '
670
+ </a>
671
+ </span>
672
+ <div class="' . $item['item_content_class'] . '" style="' . $item['item_content_style'] . '">
673
+ ' . ( ! empty( $item['item_meta'] ) ? '<small>
674
+ ' . $item['item_meta'] . '
675
+ </small>' : '' ) . '
676
+ ' . ( ! empty( $item['item_description'] ) ? '<p>' . $item['item_description'] . '</p>':'') . '
677
+ </div>
678
+ </li>
679
+ ';
680
+ }
681
+ $content .= '</ul>';
682
+
683
+ $content = apply_filters( 'feedzy_global_output', $content, $sc, $feed_title, $feed_items );
684
+
685
+ return $content;
686
+ }
687
+
688
+ /**
689
+ * Main shortcode function
690
+ *
691
+ * @since 3.0.0
692
+ * @access public
693
+ * @param array $atts Shortcode attributes.
694
+ * @param string $content The item feed content.
695
+ * @return mixed
696
+ */
697
+ public function feedzy_rss( $atts, $content = '' ) {
698
+ // Load SimplePie if not already
699
+ if ( ! class_exists( 'SimplePie' ) ) {
700
+ require_once( ABSPATH . WPINC . '/feed.php' );
701
+ }
702
+
703
+ $sc = $this->get_short_code_attributes( $atts );
704
+ $feedURL = $this->get_feed_url( $sc['feeds'] );
705
+
706
+ // Load SimplePie Instance
707
+ $feed = fetch_feed( $feedURL );
708
+ // TODO report error when is an error loading the feed
709
+ if ( is_wp_error( $feed ) ) { return '';
710
+ }
711
+
712
+ $feed -> enable_cache( true );
713
+ $feed -> enable_order_by_date( true );
714
+ $feed -> set_cache_class( 'WP_Feed_Cache' );
715
+ $feed -> set_file_class( 'WP_SimplePie_File' );
716
+ $feed -> set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 7200, $feedURL ) );
717
+ do_action_ref_array( 'wp_feed_options', array( $feed, $feedURL ) );
718
+ $feed -> strip_comments( true );
719
+ $feed -> strip_htmltags( array( 'base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style' ) );
720
+ $feed -> init();
721
+ $feed -> handle_content_type();
722
+
723
+ $sc = $this->sanitize_attr( $sc, $feedURL );
724
+
725
+ $content = $this->render_content( $sc, $feed, $content, $feedURL );
726
+
727
+ return $content;
728
+ }
729
+
730
+ /**
731
+ * Render the form template for tinyMCE popup.
732
+ * Called via ajax.
733
+ *
734
+ * @since 3.0.0
735
+ * @access public
736
+ */
737
+ public function get_tinymce_form() {
738
+ die( include FEEDZY_ABSPATH . '/form/form.php' );
739
+ }
740
+ }
includes/admin/feedzy-rss-feeds-admin.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The admin-specific functionality of the plugin.
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes/admin
10
+ */
11
+ /**
12
+ * The admin-specific functionality of the plugin.
13
+ *
14
+ * Defines the plugin name, version, and two examples hooks for how to
15
+ * enqueue the admin-specific stylesheet and JavaScript.
16
+ *
17
+ * @package feedzy-rss-feeds
18
+ * @subpackage feedzy-rss-feeds/includes/admin
19
+ * @author Themeisle <friends@themeisle.com>
20
+ */
21
+
22
+ /**
23
+ * Class Feedzy_Rss_Feeds_Admin
24
+ */
25
+ class Feedzy_Rss_Feeds_Admin extends Feedzy_Rss_Feeds_Admin_Abstract {
26
+
27
+ /**
28
+ * The ID of this plugin.
29
+ *
30
+ * @since 3.0.0
31
+ * @access private
32
+ * @var string $plugin_name The ID of this plugin.
33
+ */
34
+ private $plugin_name;
35
+
36
+ /**
37
+ * The version of this plugin.
38
+ *
39
+ * @since 3.0.0
40
+ * @access protected
41
+ * @var string $version The current version of this plugin.
42
+ */
43
+ protected $version;
44
+
45
+ /**
46
+ * Initialize the class and set its properties.
47
+ *
48
+ * @since 3.0.0
49
+ * @access public
50
+ * @param string $plugin_name The name of this plugin.
51
+ * @param string $version The version of this plugin.
52
+ */
53
+ public function __construct( $plugin_name, $version ) {
54
+ $this->plugin_name = $plugin_name;
55
+ $this->version = $version;
56
+ }
57
+
58
+ /**
59
+ * Register the stylesheets for the admin area.
60
+ *
61
+ * @since 3.0.0
62
+ * @access public
63
+ */
64
+ public function enqueue_styles() {
65
+
66
+ /**
67
+ * This function is provided for demonstration purposes only.
68
+ *
69
+ * An instance of this class should be passed to the run() function
70
+ * defined in Feedzy_Rss_Feeds_Loader as all of the hooks are defined
71
+ * in that particular class.
72
+ *
73
+ * The Feedzy_Rss_Feeds_Loader will then create the relationship
74
+ * between the defined hooks and the functions defined in this
75
+ * class.
76
+ */
77
+
78
+ wp_enqueue_style( $this->plugin_name, FEEDZY_ABSURL . 'css/feedzy-rss-feeds.css', array(), $this->version, 'all' );
79
+ }
80
+
81
+ /**
82
+ * Register the JavaScript for the admin area.
83
+ *
84
+ * @since 3.0.0
85
+ * @access public
86
+ */
87
+ public function enqueue_scripts() {
88
+
89
+ /**
90
+ * This function is provided for demonstration purposes only.
91
+ *
92
+ * An instance of this class should be passed to the run() function
93
+ * defined in Feedzy_Rss_Feeds_Loader as all of the hooks are defined
94
+ * in that particular class.
95
+ *
96
+ * The Feedzy_Rss_Feeds_Loader will then create the relationship
97
+ * between the defined hooks and the functions defined in this
98
+ * class.
99
+ */
100
+
101
+ }
102
+
103
+ /**
104
+ * The custom plugin_row_meta function
105
+ * Adds additional links on the plugins page for this plugin
106
+ *
107
+ * @since 3.0.0
108
+ * @access public
109
+ * @param array $links The array having default links for the plugin.
110
+ * @param string $file The name of the plugin file.
111
+ *
112
+ * @return array
113
+ */
114
+ public function feedzy_filter_plugin_row_meta( $links, $file ) {
115
+
116
+ if ( strpos( $file, 'feedzy-rss-feed.php' ) !== false ) {
117
+ $new_links = array(
118
+ 'doc' => '<a href="http://docs.themeisle.com/article/277-feedzy-rss-feeds-hooks" target="_blank" title="' . __( 'Documentation and examples', 'feedzy_rss_translate' ) . '">' . __( 'Documentation and examples', 'feedzy_rss_translate' ) . '</a>',
119
+ 'more_plugins' => '<a href="http://themeisle.com/wordpress-plugins/" target="_blank" title="' . __( 'More Plugins', 'feedzy_rss_translate' ) . '">' . __( 'More Plugins', 'feedzy_rss_translate' ) . '</a>',
120
+ );
121
+
122
+ $links = array_merge( $links, $new_links );
123
+ }
124
+
125
+ return $links;
126
+ }
127
+ }
includes/admin/feedzy-rss-feeds-ui-lang.php ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Language function file for tinymce.
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes/admin
10
+ */
11
+ /**
12
+ *
13
+ * SECURITY : Exit if accessed directly
14
+ */
15
+ if ( ! defined( 'ABSPATH' ) ) {
16
+ die( 'Direct access not allowed!' );
17
+ }
18
+
19
+
20
+ /**
21
+ *
22
+ * Translation for TinyMCE
23
+ */
24
+
25
+ if ( ! class_exists( '_WP_Editors' ) ) {
26
+ require( ABSPATH . WPINC . '/class-wp-editor.php' );
27
+ }
28
+
29
+ /**
30
+ * Class Feedzy_Rss_Feeds_Ui_Lang
31
+ */
32
+ class Feedzy_Rss_Feeds_Ui_Lang {
33
+
34
+ /**
35
+ * The strings for translation.
36
+ *
37
+ * @since 3.0.0
38
+ * @access protected
39
+ * @var array $strings The ID of this plugin.
40
+ */
41
+ protected $strings;
42
+
43
+ /**
44
+ * Initialize the class and set its properties.
45
+ *
46
+ * @since 3.0.0
47
+ * @access public
48
+ */
49
+ public function __construct() {
50
+ $this->strings = array(
51
+ 'popup_url' => wp_nonce_url( 'admin-ajax.php', 'feedzy_ajax_token', 'feedzy_request_form_token' ),
52
+ 'pro_url' => ' https://themeisle.com/plugins/feedzy-rss-feeds/',
53
+ 'plugin_label' => __( 'Feedzy Lite', 'feedzy_rss_translate' ),
54
+ 'plugin_title' => __( 'Insert Feedzy RSS Feeds Shortcode', 'feedzy_rss_translate' ),
55
+ 'image_button' => __( 'Use Image', 'feedzy_rss_translate' ),
56
+ 'insert_button' => __( 'Insert Shortcode', 'feedzy_rss_translate' ),
57
+ 'cancel_button' => __( 'Cancel', 'feedzy_rss_translate' ),
58
+ 'pro_button' => __( 'Get Feedzy RSS Feeds Premium', 'feedzy_rss_translate' ),
59
+ );
60
+ }
61
+
62
+ /**
63
+ *
64
+ * The method that returns the translation array
65
+ *
66
+ * @since 3.0.0
67
+ * @access public
68
+ * @return string
69
+ */
70
+ public function feedzy_tinymce_translation() {
71
+
72
+ $locale = _WP_Editors::$mce_locale;
73
+ $translated = 'tinyMCE.addI18n("' . $locale . '.feedzy_tinymce_plugin", ' . json_encode( $this->strings ) . ");\n";
74
+
75
+ return $translated;
76
+ }
77
+
78
+ /**
79
+ * Return the default values of the forms elements
80
+ *
81
+ * @return array The default values of shortcode elements
82
+ */
83
+ public static function get_form_defaults() {
84
+
85
+ $html_parts = self::get_form_elements();
86
+ $all_options = wp_list_pluck( array_values( $html_parts ),'elements' );
87
+ $all_options = call_user_func_array( 'array_merge', $all_options );
88
+ $defaults = array();
89
+
90
+ foreach ( $all_options as $id => $option ) {
91
+ $defaults[ $id ] = $option['value'];
92
+ }
93
+ return $defaults;
94
+ }
95
+ /**
96
+ * The method for localizing and generating of the tinyMCE popup form.
97
+ *
98
+ * It returns an array, use it to add more options to the popup window.
99
+ * Can be hook-ed into via 'feedzy_get_form_elements'.
100
+ *
101
+ * @since 3.0.0
102
+ * @access public
103
+ * @return array|mixed|void
104
+ */
105
+ public static function get_form_elements() {
106
+ $elements = array(
107
+ 'section_feed' => array(
108
+ 'title' => __( 'Feed Source', 'feedzy_rss_translate' ),
109
+ 'elements' => array(
110
+ 'feeds' => array(
111
+ 'label' => __( 'The feed(s) URL (comma-separated list).', 'feedzy_rss_translate' ) . ' ' . __( 'Check feed before insert.', 'feedzy_rss_translate' ),
112
+ 'placeholder' => __( 'Feed URL', 'feedzy_rss_translate' ),
113
+ 'type' => 'text',
114
+ 'value' => '',
115
+ ),
116
+ 'max' => array(
117
+ 'label' => __( 'Number of items to display.', 'feedzy_rss_translate' ),
118
+ 'placeholder' => __( '(eg: 5)', 'feedzy_rss_translate' ),
119
+ 'type' => 'text',
120
+ 'value' => '',
121
+ ),
122
+ 'feed_title' => array(
123
+ 'label' => __( 'Should we display the RSS title?', 'feedzy_rss_translate' ),
124
+ 'type' => 'select',
125
+ 'value' => '',
126
+ 'opts' => array(
127
+ 'auto' => array(
128
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
129
+ 'value' => '',
130
+ ),
131
+ 'yes' => array(
132
+ 'label' => __( 'Yes', 'feedzy_rss_translate' ),
133
+ 'value' => 'yes',
134
+ ),
135
+ 'no' => array(
136
+ 'label' => __( 'No', 'feedzy_rss_translate' ),
137
+ 'value' => 'no',
138
+ ),
139
+ ),
140
+ ),
141
+ ),
142
+ ),
143
+ 'section_item' => array(
144
+ 'title' => __( 'Item Options', 'feedzy_rss_translate' ),
145
+ 'elements' => array(
146
+ 'target' => array(
147
+ 'label' => __( 'Links may be opened in the same window or a new tab.', 'feedzy_rss_translate' ),
148
+ 'type' => 'select',
149
+ 'value' => '',
150
+ 'opts' => array(
151
+ 'auto' => array(
152
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
153
+ 'value' => '',
154
+ ),
155
+ '_blank' => array(
156
+ 'label' => __( '_blank', 'feedzy_rss_translate' ),
157
+ 'value' => '_blank',
158
+ ),
159
+ '_self' => array(
160
+ 'label' => __( '_self', 'feedzy_rss_translate' ),
161
+ 'value' => '_self',
162
+ ),
163
+ '_parent' => array(
164
+ 'label' => __( '_parent', 'feedzy_rss_translate' ),
165
+ 'value' => '_parent',
166
+ ),
167
+ '_top' => array(
168
+ 'label' => __( '_top', 'feedzy_rss_translate' ),
169
+ 'value' => '_top',
170
+ ),
171
+ 'framename' => array(
172
+ 'label' => __( 'framename', 'feedzy_rss_translate' ),
173
+ 'value' => 'framename',
174
+ ),
175
+ ),
176
+ ),
177
+ 'title' => array(
178
+ 'label' => __( 'Trim the title of the item after X characters.', 'feedzy_rss_translate' ),
179
+ 'placeholder' => __( '(eg: 160)', 'feedzy_rss_translate' ),
180
+ 'type' => 'text',
181
+ 'value' => '',
182
+ ),
183
+ 'meta' => array(
184
+ 'label' => __( 'Should we display the date of publication and the author name?', 'feedzy_rss_translate' ),
185
+ 'type' => 'select',
186
+ 'value' => '',
187
+ 'opts' => array(
188
+ 'auto' => array(
189
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
190
+ 'value' => '',
191
+ ),
192
+ 'yes' => array(
193
+ 'label' => __( 'Yes', 'feedzy_rss_translate' ),
194
+ 'value' => 'yes',
195
+ ),
196
+ 'no' => array(
197
+ 'label' => __( 'No', 'feedzy_rss_translate' ),
198
+ 'value' => 'no',
199
+ ),
200
+ ),
201
+ ),
202
+ 'summary' => array(
203
+ 'label' => __( 'Should we display a description (abstract) of the retrieved item?', 'feedzy_rss_translate' ),
204
+ 'type' => 'select',
205
+ 'value' => '',
206
+ 'opts' => array(
207
+ 'auto' => array(
208
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
209
+ 'value' => '',
210
+ ),
211
+ 'yes' => array(
212
+ 'label' => __( 'Yes', 'feedzy_rss_translate' ),
213
+ 'value' => 'yes',
214
+ ),
215
+ 'no' => array(
216
+ 'label' => __( 'No', 'feedzy_rss_translate' ),
217
+ 'value' => 'no',
218
+ ),
219
+ ),
220
+ ),
221
+ 'summarylength' => array(
222
+ 'label' => __( 'Crop description (summary) of the element after X characters.', 'feedzy_rss_translate' ),
223
+ 'type' => 'text',
224
+ 'placeholder' => __( '(eg: 160)', 'feedzy_rss_translate' ),
225
+ 'value' => '',
226
+ ),
227
+ 'keywords_title' => array(
228
+ 'label' => __( 'Only display item if title contains specific keyword(s) (comma-separated list/case sensitive).', 'feedzy_rss_translate' ),
229
+ 'placeholder' => __( '(eg: news, sports etc.)', 'feedzy_rss_translate' ),
230
+ 'type' => 'text',
231
+ 'value' => '',
232
+ ),
233
+ ),
234
+ ),
235
+ 'section_image' => array(
236
+ 'title' => __( 'Item Image Options', 'feedzy_rss_translate' ),
237
+ 'elements' => array(
238
+ 'thumb' => array(
239
+ 'label' => __( 'Should we display the first image of the content if it is available?', 'feedzy_rss_translate' ),
240
+ 'type' => 'select',
241
+ 'value' => '',
242
+ 'opts' => array(
243
+ 'auto' => array(
244
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
245
+ 'value' => '',
246
+ ),
247
+ 'yes' => array(
248
+ 'label' => __( 'Yes', 'feedzy_rss_translate' ),
249
+ 'value' => 'yes',
250
+ ),
251
+ 'no' => array(
252
+ 'label' => __( 'No', 'feedzy_rss_translate' ),
253
+ 'value' => 'no',
254
+ ),
255
+ ),
256
+ ),
257
+ 'default' => array(
258
+ 'label' => __( 'Default thumbnail URL if no image is found.', 'feedzy_rss_translate' ),
259
+ 'placeholder' => __( 'Image URL', 'feedzy_rss_translate' ),
260
+ 'type' => 'file',
261
+ 'value' => '',
262
+ 'button' => array(
263
+ 'button_text' => __( 'Select from Gallery', 'feedzy_rss_translate' ),
264
+ ),
265
+ ),
266
+ 'size' => array(
267
+ 'label' => __( 'Thumblails dimension. Do not include "px". Eg: 150', 'feedzy_rss_translate' ),
268
+ 'placeholder' => __( '(eg: 150)', 'feedzy_rss_translate' ),
269
+ 'type' => 'text',
270
+ 'value' => '',
271
+ ),
272
+ ),
273
+ ),
274
+ 'section_pro' => array(
275
+ 'title' => __( 'PRO Options', 'feedzy_rss_translate' ),
276
+ 'description' => __( 'Get access to more options and customizations with full version of Feedzy RSS Feeds . Use existing templates or extend them and make them your own.', 'feedzy_rss_translate' ) . '<br/>' . '<a href=" https://themeisle.com/plugins/feedzy-rss-feeds/" target="_blank"><small>' . __( 'See more features of Feedzy RSS Feeds ', 'feedzy_rss_translate' ) . '</small></a>',
277
+ 'elements' => array(
278
+ 'price' => array(
279
+ 'label' => __( 'Should we display the price from the feed if it is available?', 'feedzy_rss_translate' ) . '<small class="feedzy_pro_tag">' . __( 'Premium', 'feedzy_rss_translate' ) . '</small>',
280
+ 'type' => 'select',
281
+ 'disabled' => true,
282
+ 'value' => '',
283
+ 'opts' => array(
284
+ 'auto' => array(
285
+ 'label' => __( 'Auto', 'feedzy_rss_translate' ),
286
+ 'value' => '',
287
+ ),
288
+ 'yes' => array(
289
+ 'label' => __( 'Yes', 'feedzy_rss_translate' ),
290
+ 'value' => 'yes',
291
+ ),
292
+ 'no' => array(
293
+ 'label' => __( 'No', 'feedzy_rss_translate' ),
294
+ 'value' => 'no',
295
+ ),
296
+ ),
297
+ ),
298
+ 'referral_url' => array(
299
+ 'label' => __( 'Referral URL parameters (w/o "?").', 'feedzy_rss_translate' ) . '<small class="feedzy_pro_tag">' . __( 'Premium', 'feedzy_rss_translate' ) . '</small>',
300
+ 'placeholder' => __( '(eg. promo_code=feedzy_is_awesome)', 'feedzy_rss_translate' ),
301
+ 'type' => 'text',
302
+ 'disabled' => true,
303
+ 'value' => '',
304
+ ),
305
+ 'columns' => array(
306
+ 'label' => __( 'How many columns we should use to display the feed items', 'feedzy_rss_translate' ) . '<small class="feedzy_pro_tag">' . __( 'Premium', 'feedzy_rss_translate' ) . '</small>',
307
+ 'placeholder' => __( '(eg. 1, 2, ..., 6)', 'feedzy_rss_translate' ),
308
+ 'type' => 'number',
309
+ 'disabled' => true,
310
+ 'value' => '1',
311
+ ),
312
+ 'template' => array(
313
+ 'label' => __( 'Template to use when displaying the feed.', 'feedzy_rss_translate' ) . '<small class="feedzy_pro_tag">' . __( 'Premium', 'feedzy_rss_translate' ) . '</small>',
314
+ 'type' => 'radio',
315
+ 'disabled' => true,
316
+ 'value' => '',
317
+ 'opts' => array(
318
+ 'auto' => array(
319
+ 'label' => __( 'Default', 'feedzy_rss_translate' ),
320
+ 'value' => 'default',
321
+ ),
322
+ 'yes' => array(
323
+ 'label' => __( 'Style 1', 'feedzy_rss_translate' ),
324
+ 'value' => 'style1',
325
+ ),
326
+ 'no' => array(
327
+ 'label' => __( 'Style 2', 'feedzy_rss_translate' ),
328
+ 'value' => 'style2',
329
+ ),
330
+ ),
331
+ ),
332
+ ),
333
+ ),
334
+ );
335
+
336
+ $elements = apply_filters( 'feedzy_get_form_elements_filter', $elements );
337
+
338
+ return $elements;
339
+ }
340
+
341
+ }
342
+
343
+ $feedzyLangClass = new Feedzy_Rss_Feeds_Ui_Lang();
344
+ $strings = $feedzyLangClass->feedzy_tinymce_translation();
includes/admin/feedzy-rss-feeds-ui.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The UI functionality of the plugin.
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes/admin
10
+ */
11
+
12
+ /**
13
+ * The UI functionality of the plugin.
14
+ *
15
+ * @package feedzy-rss-feeds
16
+ * @subpackage feedzy-rss-feeds/includes/admin
17
+ * @author Themeisle <friends@themeisle.com>
18
+ */
19
+ class Feedzy_Rss_Feeds_Ui {
20
+
21
+ /**
22
+ * The ID of this plugin.
23
+ *
24
+ * @since 3.0.0
25
+ * @access private
26
+ * @var string $plugin_name The ID of this plugin.
27
+ */
28
+ private $plugin_name;
29
+
30
+ /**
31
+ * The version of this plugin.
32
+ *
33
+ * @since 3.0.0
34
+ * @access private
35
+ * @var string $version The current version of this plugin.
36
+ */
37
+ private $version;
38
+
39
+ /**
40
+ * The loader class.
41
+ *
42
+ * @since 3.0.0
43
+ * @access private
44
+ * @var Feedzy_Rss_Feeds_Loader $loader The loader class of the plugin.
45
+ */
46
+ private $loader;
47
+
48
+ /**
49
+ * Initialize the class and set its properties.
50
+ *
51
+ * @since 3.0.0
52
+ * @access public
53
+ * @param string $plugin_name The name of this plugin.
54
+ * @param string $version The version of this plugin.
55
+ * @param Feedzy_Rss_Feeds_Loader $loader The version of this plugin.
56
+ */
57
+ public function __construct( $plugin_name, $version, Feedzy_Rss_Feeds_Loader $loader ) {
58
+
59
+ $this->plugin_name = $plugin_name;
60
+ $this->version = $version;
61
+ $this->loader = $loader;
62
+
63
+ }
64
+
65
+ /**
66
+ * Initialize the hooks and filters for the tinymce button
67
+ *
68
+ * @since 3.0.0
69
+ * @access public
70
+ */
71
+ public function register_init() {
72
+ if ( current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) ) {
73
+ if ( 'true' == get_user_option( 'rich_editing' ) ) {
74
+
75
+ $this->loader->add_filter( 'mce_external_plugins', $this, 'feedzy_tinymce_plugin', 10, 1 );
76
+ $this->loader->add_filter( 'mce_buttons', $this, 'feedzy_register_mce_button', 10, 1 );
77
+
78
+ $this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_scripts', 10 );
79
+
80
+ $this->loader->run();
81
+ }
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Register the JavaScript for the admin area.
87
+ *
88
+ * @since 3.0.0
89
+ * @access public
90
+ */
91
+ public function enqueue_scripts() {
92
+
93
+ /**
94
+ * This function is provided for demonstration purposes only.
95
+ *
96
+ * An instance of this class should be passed to the run() function
97
+ * defined in Feedzy_Rss_Feeds_Loader as all of the hooks are defined
98
+ * in that particular class.
99
+ *
100
+ * The Feedzy_Rss_Feeds_Loader will then create the relationship
101
+ * between the defined hooks and the functions defined in this
102
+ * class.
103
+ */
104
+ }
105
+
106
+ /**
107
+ * Load plugin translation for - TinyMCE API
108
+ *
109
+ * @since 3.0.0
110
+ * @access public
111
+ * @param array $arr The tinymce_lang array.
112
+ * @return array
113
+ */
114
+ public function feedzy_add_tinymce_lang( $arr ) {
115
+ $feedzy_rss_feeds_ui_lang = FEEDZY_ABSPATH . '/includes/admin/feedzy-rss-feeds-ui-lang.php';
116
+ $feedzy_rss_feeds_ui_lang = apply_filters( 'feedzy_rss_feeds_ui_lang_filter', $feedzy_rss_feeds_ui_lang );
117
+ $arr[] = $feedzy_rss_feeds_ui_lang;
118
+ return $arr;
119
+ }
120
+
121
+ /**
122
+ * Load custom js options - TinyMCE API
123
+ *
124
+ * @since 3.0.0
125
+ * @access public
126
+ * @param array $plugin_array The tinymce plugin array.
127
+ * @return array
128
+ */
129
+ public function feedzy_tinymce_plugin( $plugin_array ) {
130
+ $plugin_array['feedzy_mce_button'] = FEEDZY_ABSURL . 'js/feedzy-rss-feeds-ui-mce.js';
131
+ return $plugin_array;
132
+ }
133
+
134
+ /**
135
+ * Register new button in the editor
136
+ *
137
+ * @since 3.0.0
138
+ * @access public
139
+ * @param array $buttons The tinymce buttons array.
140
+ * @return array
141
+ */
142
+ public function feedzy_register_mce_button( $buttons ) {
143
+ array_push( $buttons, 'feedzy_mce_button' );
144
+ return $buttons;
145
+ }
146
+ }
includes/admin/feedzy-wp-widget.php ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Widget functionality of the plugin.
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes/admin
10
+ */
11
+
12
+ /**
13
+ * The Widget functionality of the plugin.
14
+ *
15
+ * @package feedzy-rss-feeds
16
+ * @subpackage feedzy-rss-feeds/includes/admin
17
+ * @author Themeisle <friends@themeisle.com>
18
+ */
19
+ class feedzy_wp_widget extends WP_Widget {
20
+
21
+ /**
22
+ * The class instance.
23
+ *
24
+ * @since 3.0.0
25
+ * @access public
26
+ * @var feedzy_wp_widget $instance The instance of the class.
27
+ */
28
+ public static $instance;
29
+ /**
30
+ * The loader class.
31
+ *
32
+ * @since 3.0.0
33
+ * @access private
34
+ * @var Feedzy_Rss_Feeds_Admin $plugin_admin The loader class of the plugin.
35
+ */
36
+ private $plugin_admin;
37
+
38
+ /**
39
+ * The feedzy_wp_widget constructor method
40
+ *
41
+ * @since 3.0.0
42
+ * @access public
43
+ *
44
+ * @param Feedzy_Rss_Feeds_Admin $plugin_admin The Feedzy_Rss_Feeds_Admin object.
45
+ */
46
+ public function __construct( $plugin_admin ) {
47
+ parent::__construct( false, $name = __( 'Feedzy RSS Feeds', 'feedzy_rss_translate' ) );
48
+ $this->plugin_admin = $plugin_admin;
49
+ self::$instance = $this;
50
+
51
+ }
52
+
53
+ /**
54
+ * Returns the instance of this class as in the singleton pattern
55
+ *
56
+ * @since 3.0.0
57
+ * @access public
58
+ * @return feedzy_wp_widget
59
+ */
60
+ public static function get_instance() {
61
+ if ( self::$instance === null ) {
62
+ self::$instance = new self();
63
+ }
64
+
65
+ return self::$instance;
66
+ }
67
+
68
+ /**
69
+ * The register method for registering this widget class
70
+ *
71
+ * @since 3.0.0
72
+ * @access public
73
+ */
74
+ public function registerWidget() {
75
+ register_widget( $this );
76
+ }
77
+
78
+ /**
79
+ * The widget form creation
80
+ *
81
+ * @since 3.0.0
82
+ * @access public
83
+ *
84
+ * @param string $instance The Widget instance.
85
+ *
86
+ * @return mixed
87
+ */
88
+ public function form( $instance ) {
89
+ $instance = wp_parse_args( $instance, $this->get_widget_defaults() );
90
+ $widget_form = '<p>
91
+ <label for="' . $this->get_field_id( 'title' ) . '">' . __( 'Widget Title', 'feedzy_rss_translate' ) . '</label>
92
+ <input class="widefat" id="' . $this->get_field_id( 'title' ) . '" name="' . $this->get_field_name( 'title' ) . '" type="text" value="' . esc_attr( $instance['title'] ) . '" />
93
+ </p>
94
+ <p>
95
+ <label for="' . $this->get_field_id( 'textarea' ) . '">' . __( 'Intro text', 'feedzy_rss_translate' ) . '</label>
96
+ <textarea class="widefat" id="' . $this->get_field_id( 'textarea' ) . '" name="' . $this->get_field_name( 'textarea' ) . '">' . esc_attr( $instance['textarea'] ) . '</textarea>
97
+ </p>';
98
+ foreach ( Feedzy_Rss_Feeds_Ui_Lang::get_form_elements() as $key_section => $section ) {
99
+ $widget_form .= '<hr/><h4>' . $section['title'] . '</h4>';
100
+ if ( isset( $section['description'] ) ) {
101
+ $widget_form .= '<small>' . $section['description'] . '</small>';
102
+ }
103
+ foreach ( $section['elements'] as $id => $element ) {
104
+ if ( isset( $element['disabled'] ) && $element['disabled'] ) {
105
+ continue;
106
+ }
107
+ if ( $id == 'feed_title' ) {
108
+ continue;
109
+ }
110
+ if ( $id == 'title' ) {
111
+ $id = 'titlelength';
112
+ }
113
+ $widget_form .= '<p>';
114
+ $widget_form .= '<label for="' . $this->get_field_id( $id ) . '">' . $element['label'] . '</label>';
115
+ if ( $element['type'] == 'text' || $element['type'] == 'file' ) {
116
+ $widget_form .= '<input class="widefat" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" type="text" value="' . esc_attr( $instance[ $id ] ) . '" />';
117
+ }
118
+ if ( $element['type'] == 'number' ) {
119
+ $widget_form .= '<input class="widefat" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" type="number" value="' . esc_attr( $instance[ $id ] ) . '" />';
120
+ }
121
+ if ( $element['type'] == 'select' || $element['type'] == 'radio' ) {
122
+ $widget_form .= '<select class="widefat" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" >';
123
+ foreach ( $element['opts'] as $select_option ) {
124
+ $widget_form .= '<option ' . selected( esc_attr( $select_option['value'] ), self::bool_to_enum( $instance[ $id ] ), false ) . 'value="' . esc_attr( $select_option['value'] ) . '">' . esc_html( $select_option['label'] ) . '</option>';
125
+ }
126
+ $widget_form .= '</select>';
127
+ }
128
+ $widget_form .= '</p>';
129
+
130
+ }
131
+ }
132
+ $widget_form .= '<hr/>';
133
+ $widget_form = apply_filters( 'feedzy_widget_form_filter', $widget_form, $instance, $this->get_widget_defaults() );
134
+ echo $widget_form;
135
+
136
+ }
137
+
138
+ /**
139
+ * Get widget default values for params
140
+ *
141
+ * @return array List of defaults values
142
+ */
143
+ public function get_widget_defaults() {
144
+ $defaults = Feedzy_Rss_Feeds_Ui_Lang::get_form_defaults();
145
+ // rename title to title length as widget instance already have one
146
+ $defaults['titlelength'] = $defaults['title'];
147
+ $defaults['title'] = '';
148
+ $defaults['textarea'] = '';
149
+
150
+ return $defaults;
151
+ }
152
+
153
+ /**
154
+ * Convert binary values to yes/no touple.
155
+ *
156
+ * @param mixed $value string Value to convert to yes/no.
157
+ *
158
+ * @return bool
159
+ */
160
+ public static function bool_to_enum( $value ) {
161
+ if ( in_array( $value, array( 'yes', 'no' ) ) ) {
162
+ return $value;
163
+ }
164
+ $value = strval( $value );
165
+ if ( $value == '1' || $value == 'true' ) {
166
+ return 'yes';
167
+ }
168
+ if ( $value == '0' || $value == 'false' || $value == '' ) {
169
+ return 'no';
170
+ }
171
+ return $value;
172
+
173
+ }
174
+
175
+ /**
176
+ *
177
+ * The update method
178
+ *
179
+ * @since 3.0.0
180
+ * @access public
181
+ *
182
+ * @param array $new_instance The new widget instance.
183
+ * @param array $old_instance The old widget instance.
184
+ *
185
+ * @return array
186
+ */
187
+ public function update( $new_instance, $old_instance ) {
188
+ $instance = $old_instance;
189
+ $instance['title'] = strip_tags( $new_instance['title'] );
190
+ if ( current_user_can( 'unfiltered_html' ) ) {
191
+ $instance['textarea'] = $new_instance['textarea'];
192
+ } else {
193
+ $instance['textarea'] = stripslashes( wp_filter_post_kses( addslashes( $new_instance['textarea'] ) ) );
194
+ }
195
+ $forms_ids = array_keys( $this->get_widget_defaults() );
196
+ foreach ( $forms_ids as $key ) {
197
+ $instance[ $key ] = strip_tags( $new_instance[ $key ] );
198
+ }
199
+ $instance = apply_filters( 'feedzy_widget_update_filter', $instance, $new_instance );
200
+
201
+ return $instance;
202
+
203
+ }
204
+
205
+ /**
206
+ *
207
+ * The widget function
208
+ *
209
+ * @since 3.0.0
210
+ * @access public
211
+ *
212
+ * @param array $args The args to use.
213
+ * @param array $instance The widget instance.
214
+ */
215
+ public function widget( $args, $instance ) {
216
+ $title = apply_filters( 'widget_title', $instance['title'] );
217
+ $textarea = apply_filters( 'widget_textarea', empty( $instance['textarea'] ) ? '' : $instance['textarea'], $instance );
218
+ // Display the widget body
219
+ echo $args['before_widget'];
220
+ // Check if title is set
221
+ if ( $title ) {
222
+ echo $args['before_title'] . $title . $args['after_title'];
223
+ }
224
+ // Check if text intro is set
225
+ if ( isset( $instance['textarea'] ) && ! empty( $instance['textarea'] ) ) {
226
+ echo '<p class="feedzy-widget-intro">' . wpautop( $textarea ) . '</p>';
227
+ }
228
+ $feedzy_widget_shortcode_attributes = array(
229
+ 'feeds' => $instance['feeds'],
230
+ 'max' => $instance['max'],
231
+ 'feed_title' => 'no',
232
+ 'target' => $instance['target'],
233
+ 'title' => $instance['titlelength'],
234
+ 'meta' => self::bool_to_enum( $instance['meta'] ),
235
+ 'summary' => self::bool_to_enum( $instance['summary'] ),
236
+ 'summarylength' => $instance['summarylength'],
237
+ 'thumb' => self::bool_to_enum( $instance['thumb'] ),
238
+ 'default' => $instance['default'],
239
+ 'size' => $instance['size'],
240
+ 'keywords_title' => $instance['keywords_title'],
241
+ );
242
+ $feedzy_widget_shortcode_attributes = apply_filters( 'feedzy_widget_shortcode_attributes_filter', $feedzy_widget_shortcode_attributes, $args, $instance );
243
+ // Call the shortcode function
244
+ echo $this->plugin_admin->feedzy_rss( $feedzy_widget_shortcode_attributes );
245
+ echo $args['after_widget'];
246
+
247
+ }
248
+
249
+ }
includes/feedzy-rss-feeds-activator.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Fired during plugin activation
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes
10
+ */
11
+
12
+ /**
13
+ * Fired during plugin activation.
14
+ *
15
+ * This class defines all code necessary to run during the plugin's activation.
16
+ *
17
+ * @since 3.0.0
18
+ * @package feedzy-rss-feeds
19
+ * @subpackage feedzy-rss-feeds/includes
20
+ * @author Themeisle <friends@themeisle.com>
21
+ */
22
+ class Feedzy_Rss_Feeds_Activator {
23
+
24
+ /**
25
+ * Short Description. (use period)
26
+ *
27
+ * Long Description.
28
+ *
29
+ * @since 3.0.0
30
+ * @access public
31
+ */
32
+ public static function activate() {
33
+
34
+ }
35
+
36
+ }
includes/feedzy-rss-feeds-deactivator.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Fired during plugin deactivation
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes
10
+ */
11
+
12
+ /**
13
+ * Fired during plugin deactivation.
14
+ *
15
+ * This class defines all code necessary to run during the plugin's deactivation.
16
+ *
17
+ * @since 3.0.0
18
+ * @package feedzy-rss-feeds
19
+ * @subpackage feedzy-rss-feeds/includes
20
+ * @author Themeisle <friends@themeisle.com>
21
+ */
22
+ class Feedzy_Rss_Feeds_Deactivator {
23
+
24
+ /**
25
+ * Short Description. (use period)
26
+ *
27
+ * Long Description.
28
+ *
29
+ * @since 3.0.0
30
+ * @access public
31
+ */
32
+ public static function deactivate() {
33
+
34
+ }
35
+
36
+ }
includes/feedzy-rss-feeds-i18n.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Define the internationalization functionality
4
+ *
5
+ * Loads and defines the internationalization files for this plugin
6
+ * so that it is ready for translation.
7
+ *
8
+ * @link http://themeisle.com
9
+ * @since 3.0.0
10
+ *
11
+ * @package feedzy-rss-feeds
12
+ * @subpackage feedzy-rss-feeds/includes
13
+ */
14
+
15
+ /**
16
+ * Define the internationalization functionality.
17
+ *
18
+ * Loads and defines the internationalization files for this plugin
19
+ * so that it is ready for translation.
20
+ *
21
+ * @since 3.0.0
22
+ * @package feedzy-rss-feeds
23
+ * @subpackage feedzy-rss-feeds/includes
24
+ * @author Themeisle <friends@themeisle.com>
25
+ */
26
+ class Feedzy_Rss_Feeds_i18n {
27
+
28
+
29
+ /**
30
+ * Load the plugin text domain for translation.
31
+ *
32
+ * @since 3.0.0
33
+ * @access public
34
+ */
35
+ public function load_plugin_textdomain() {
36
+
37
+ load_plugin_textdomain(
38
+ 'feedzy_rss_translate',
39
+ false,
40
+ dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/'
41
+ );
42
+
43
+ }
44
+
45
+
46
+
47
+ }
includes/feedzy-rss-feeds-loader.php ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Register all actions and filters for the plugin
4
+ *
5
+ * @link http://themeisle.com
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ * @subpackage feedzy-rss-feeds/includes
10
+ */
11
+
12
+ /**
13
+ * Register all actions and filters for the plugin.
14
+ *
15
+ * Maintain a list of all hooks that are registered throughout
16
+ * the plugin, and register them with the WordPress API. Call the
17
+ * run function to execute the list of actions and filters.
18
+ *
19
+ * @package feedzy-rss-feeds
20
+ * @subpackage feedzy-rss-feeds/includes
21
+ * @author Themeisle <friends@themeisle.com>
22
+ */
23
+ class Feedzy_Rss_Feeds_Loader {
24
+
25
+ /**
26
+ * The array of actions registered with WordPress.
27
+ *
28
+ * @since 3.0.0
29
+ * @access protected
30
+ * @var array $actions The actions registered with WordPress to fire when the plugin loads.
31
+ */
32
+ protected $actions;
33
+
34
+ /**
35
+ * The array of filters registered with WordPress.
36
+ *
37
+ * @since 3.0.0
38
+ * @access protected
39
+ * @var array $filters The filters registered with WordPress to fire when the plugin loads.
40
+ */
41
+ protected $filters;
42
+
43
+ /**
44
+ * Initialize the collections used to maintain the actions and filters.
45
+ *
46
+ * @since 3.0.0
47
+ * @access public
48
+ */
49
+ public function __construct() {
50
+
51
+ $this->actions = array();
52
+ $this->filters = array();
53
+
54
+ }
55
+
56
+ /**
57
+ * Add a new action to the collection to be registered with WordPress.
58
+ *
59
+ * @since 3.0.0
60
+ * @access public
61
+ * @param string $hook The name of the WordPress action that is being registered.
62
+ * @param object $component A reference to the instance of the object on which the action is defined.
63
+ * @param string $callback The name of the function definition on the $component.
64
+ * @param int $priority Optional. he priority at which the function should be fired. Default is 10.
65
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
66
+ */
67
+ public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
68
+ $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
69
+ }
70
+
71
+ /**
72
+ * Add a new filter to the collection to be registered with WordPress.
73
+ *
74
+ * @since 3.0.0
75
+ * @access public
76
+ * @param string $hook The name of the WordPress filter that is being registered.
77
+ * @param object $component A reference to the instance of the object on which the filter is defined.
78
+ * @param string $callback The name of the function definition on the $component.
79
+ * @param int $priority Optional. he priority at which the function should be fired. Default is 10.
80
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
81
+ */
82
+ public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
83
+ $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
84
+ }
85
+
86
+ /**
87
+ * Registers AJAX action hook.
88
+ *
89
+ * @since 3.0.0
90
+ * @access public
91
+ * @param string $tag The name of the AJAX action to which the $method is hooked.
92
+ * @param object $component A reference to the instance of the object on which the filter is defined.
93
+ * @param string $callback The name of the function definition on the $component.
94
+ * @param int $priority Optional. he priority at which the function should be fired. Default is 10.
95
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
96
+ * @param boolean $private Optional. Determines if we should register hook for logged in users.
97
+ * @param boolean $public Optional. Determines if we should register hook for not logged in users.
98
+ */
99
+ public function add_ajax_action( $tag, $component, $callback, $priority = 10, $accepted_args = 1, $private = true, $public = false ) {
100
+ if ( $private ) {
101
+ $this->actions = $this->add( $this->actions, 'wp_ajax_' . $tag, $component, $callback, $priority, $accepted_args );
102
+ }
103
+
104
+ if ( $public ) {
105
+ $this->actions = $this->add( $this->actions, 'wp_ajax_nopriv_' . $tag, $component, $callback, $priority, $accepted_args );
106
+ }
107
+ }
108
+
109
+ /**
110
+ * A utility function that is used to register the actions and hooks into a single
111
+ * collection.
112
+ *
113
+ * @since 3.0.0
114
+ * @access private
115
+ * @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
116
+ * @param string $hook The name of the WordPress filter that is being registered.
117
+ * @param object $component A reference to the instance of the object on which the filter is defined.
118
+ * @param string $callback The name of the function definition on the $component.
119
+ * @param int $priority The priority at which the function should be fired.
120
+ * @param int $accepted_args The number of arguments that should be passed to the $callback.
121
+ * @return array The collection of actions and filters registered with WordPress.
122
+ */
123
+ private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
124
+
125
+ $hooks[] = array(
126
+ 'hook' => $hook,
127
+ 'component' => $component,
128
+ 'callback' => $callback,
129
+ 'priority' => $priority,
130
+ 'accepted_args' => $accepted_args,
131
+ );
132
+
133
+ return $hooks;
134
+
135
+ }
136
+
137
+ /**
138
+ * Register the filters and actions with WordPress.
139
+ *
140
+ * @since 3.0.0
141
+ * @access public
142
+ */
143
+ public function run() {
144
+
145
+ foreach ( $this->filters as $hook ) {
146
+ add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
147
+ }
148
+
149
+ foreach ( $this->actions as $hook ) {
150
+ add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
151
+ }
152
+
153
+ }
154
+
155
+ }
includes/feedzy-rss-feeds.php ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The file that defines the core plugin class
4
+ *
5
+ * A class definition that includes attributes and functions used across both the
6
+ * public-facing side of the site and the admin area.
7
+ *
8
+ * @link http://themeisle.com
9
+ * @since 3.0.0
10
+ *
11
+ * @package feedzy-rss-feeds
12
+ * @subpackage feedzy-rss-feeds/includes
13
+ */
14
+
15
+ /**
16
+ * The core plugin class.
17
+ *
18
+ * This is used to define internationalization, admin-specific hooks, and
19
+ * public-facing site hooks.
20
+ *
21
+ * Also maintains the unique identifier of this plugin as well as the current
22
+ * version of the plugin.
23
+ *
24
+ * @since 3.0.0
25
+ * @package feedzy-rss-feeds
26
+ * @subpackage feedzy-rss-feeds/includes
27
+ * @author Themeisle <friends@themeisle.com>
28
+ */
29
+ class Feedzy_Rss_Feeds {
30
+
31
+ /**
32
+ * The loader that's responsible for maintaining and registering all hooks that power
33
+ * the plugin.
34
+ *
35
+ * @since 3.0.0
36
+ * @access protected
37
+ * @var Feedzy_Rss_Feeds_Loader $loader Maintains and registers all hooks for the plugin.
38
+ */
39
+ protected $loader;
40
+
41
+ /**
42
+ * The unique identifier of this plugin.
43
+ *
44
+ * @since 3.0.0
45
+ * @access protected
46
+ * @var string $plugin_name The string used to uniquely identify this plugin.
47
+ */
48
+ protected $plugin_name;
49
+
50
+ /**
51
+ * The current version of the plugin.
52
+ *
53
+ * @since 3.0.0
54
+ * @access protected
55
+ * @var string $version The current version of the plugin.
56
+ */
57
+ protected $version;
58
+
59
+ /**
60
+ * Define the core functionality of the plugin.
61
+ *
62
+ * Set the plugin name and the plugin version that can be used throughout the plugin.
63
+ * Load the dependencies, define the locale, and set the hooks for the admin area and
64
+ * the public-facing side of the site.
65
+ *
66
+ * @since 3.0.0
67
+ * @access public
68
+ */
69
+ public function __construct() {
70
+
71
+ $this->plugin_name = 'feedzy-rss-feeds';
72
+ $this->version = '3.0.0';
73
+
74
+ $this->load_dependencies();
75
+ $this->set_locale();
76
+ $this->define_admin_hooks();
77
+
78
+ }
79
+
80
+ /**
81
+ * Load the required dependencies for this plugin.
82
+ *
83
+ * Include the following files that make up the plugin:
84
+ *
85
+ * - Feedzy_Rss_Feeds_Loader. Orchestrates the hooks of the plugin.
86
+ * - Feedzy_Rss_Feeds_i18n. Defines internationalization functionality.
87
+ * - Feedzy_Rss_Feeds_Admin. Defines all hooks for the admin area.
88
+ * - Feedzy_Rss_Feeds_Public. Defines all hooks for the public side of the site.
89
+ *
90
+ * Create an instance of the loader which will be used to register the hooks
91
+ * with WordPress.
92
+ *
93
+ * @since 3.0.0
94
+ * @access private
95
+ */
96
+ private function load_dependencies() {
97
+
98
+ /**
99
+ * The class responsible for orchestrating the actions and filters of the
100
+ * core plugin.
101
+ */
102
+ $this->loader = new Feedzy_Rss_Feeds_Loader();
103
+
104
+ }
105
+
106
+ /**
107
+ * Define the locale for this plugin for internationalization.
108
+ *
109
+ * Uses the Feedzy_Rss_Feeds_i18n class in order to set the domain and to register the hook
110
+ * with WordPress.
111
+ *
112
+ * @since 3.0.0
113
+ * @access private
114
+ */
115
+ private function set_locale() {
116
+
117
+ /**
118
+ * The class responsible for defining internationalization functionality
119
+ * of the plugin.
120
+ */
121
+ $plugin_i18n = new Feedzy_Rss_Feeds_i18n();
122
+
123
+ $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
124
+
125
+ }
126
+
127
+ /**
128
+ * Register all of the hooks related to the admin area functionality
129
+ * of the plugin.
130
+ *
131
+ * @since 3.0.0
132
+ * @access private
133
+ */
134
+ private function define_admin_hooks() {
135
+ $plugin_ui = new Feedzy_Rss_Feeds_Ui( $this->get_plugin_name(), $this->get_version(), $this->loader );
136
+ $this->loader->add_action( 'init', $plugin_ui, 'register_init' );
137
+ $this->loader->add_filter( 'mce_external_languages', $plugin_ui, 'feedzy_add_tinymce_lang', 10, 1 );
138
+
139
+ $plugin_admin = new Feedzy_Rss_Feeds_Admin( $this->get_plugin_name(), $this->get_version() );
140
+
141
+ $this->loader->add_filter( 'plugin_row_meta', $plugin_admin ,'feedzy_filter_plugin_row_meta', 10, 2 );
142
+ $this->loader->add_filter( 'feedzy_default_image', $plugin_admin, 'feedzy_define_default_image' );
143
+ $this->loader->add_filter( 'feedzy_default_error', $plugin_admin ,'feedzy_default_error_notice', 9, 2 );
144
+ $this->loader->add_filter( 'feedzy_item_attributes', $plugin_admin, 'feedzy_add_item_padding', 10, 2 );
145
+ $this->loader->add_filter( 'feedzy_item_attributes', $plugin_admin, 'feedzy_classes_item' ,99,5 );
146
+ $this->loader->add_filter( 'feedzy_summary_input', $plugin_admin, 'feedzy_summary_input_filter', 9, 3 );
147
+ $this->loader->add_filter( 'feedzy_item_keyword', $plugin_admin, 'feedzy_feed_item_keywords_title', 9, 4 );
148
+ $this->loader->add_filter( 'the_excerpt_rss', $plugin_admin, 'feedzy_insert_thumbnail_rss' );
149
+ $this->loader->add_filter( 'the_content_feed', $plugin_admin, 'feedzy_insert_thumbnail_rss' );
150
+ add_shortcode( 'feedzy-rss', array( $plugin_admin, 'feedzy_rss' ) );
151
+
152
+ $this->loader->add_action( 'wp_ajax_get_tinymce_form', $plugin_admin, 'get_tinymce_form' );
153
+ $this->loader->add_action( 'wp_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
154
+ $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
155
+
156
+ $plugin_widget = new feedzy_wp_widget( $plugin_admin );
157
+ $this->loader->add_action( 'widgets_init', $plugin_widget, 'registerWidget', 10 );
158
+
159
+ }
160
+
161
+ /**
162
+ * Run the loader to execute all of the hooks with WordPress.
163
+ *
164
+ * @since 3.0.0
165
+ * @access public
166
+ */
167
+ public function run() {
168
+ $this->loader->run();
169
+ }
170
+
171
+ /**
172
+ * The name of the plugin used to uniquely identify it within the context of
173
+ * WordPress and to define internationalization functionality.
174
+ *
175
+ * @since 3.0.0
176
+ * @access public
177
+ * @return string The name of the plugin.
178
+ */
179
+ public function get_plugin_name() {
180
+ return $this->plugin_name;
181
+ }
182
+
183
+ /**
184
+ * The reference to the class that orchestrates the hooks with the plugin.
185
+ *
186
+ * @since 3.0.0
187
+ * @access public
188
+ * @return Feedzy_Rss_Feeds_Loader Orchestrates the hooks of the plugin.
189
+ */
190
+ public function get_loader() {
191
+ return $this->loader;
192
+ }
193
+
194
+ /**
195
+ * Retrieve the version number of the plugin.
196
+ *
197
+ * @since 3.0.0
198
+ * @access public
199
+ * @return string The version number of the plugin.
200
+ */
201
+ public function get_version() {
202
+ return $this->version;
203
+ }
204
+
205
+ }
index.php CHANGED
@@ -1,2 +1,9 @@
1
- <?php
2
- //Kisses from France...
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to do here
4
+ *
5
+ * @link http://themeisle.com/plugins/feedzy-rss-feed/
6
+ * @since 3.0.0
7
+ *
8
+ * @package feedzy-rss-feeds
9
+ */
js/feedzy-rss-feeds-ui-mce.js CHANGED
@@ -1,173 +1,96 @@
1
- /**
2
- * Plugin Name: FEEDZY RSS Feeds by b*web
3
- * Plugin URI: http://b-website.com/
4
- * Author: Brice CAPOBIANCO
5
- */
6
- (function() {
7
- tinymce.PluginManager.add('feedzy_mce_button', function( editor, url ) {
8
- editor.addButton( 'feedzy_mce_button', {
9
- icon: 'feedzy-icon',
10
- onclick: function() {
11
- editor.windowManager.open( {
12
- title: editor.getLang('feedzy_tinymce_plugin.plugin_title'),
13
- body: [
14
- {
15
- type: 'textbox',
16
- name: 'feeds',
17
- classes : 'feedzy-validator', //necessary to insert the validator link
18
- label: editor.getLang('feedzy_tinymce_plugin.feeds'),
19
- value: ''
20
- },
21
- {
22
- type: 'textbox',
23
- name: 'maximum',
24
- label: editor.getLang('feedzy_tinymce_plugin.maximum'),
25
- value: ''
26
- },
27
- {
28
- type: 'listbox',
29
- name: 'feed_title',
30
- label: editor.getLang('feedzy_tinymce_plugin.feed_title'),
31
- 'values': [
32
- {text: editor.getLang('feedzy_tinymce_plugin.text_default'), value: ''},
33
- {text: editor.getLang('feedzy_tinymce_plugin.text_no'), value: 'no'},
34
- {text: editor.getLang('feedzy_tinymce_plugin.text_yes'), value: 'yes'},
35
- ]
36
- },
37
- {
38
- type: 'listbox',
39
- name: 'target',
40
- label: editor.getLang('feedzy_tinymce_plugin.target'),
41
- 'values': [
42
- {text: editor.getLang('feedzy_tinymce_plugin.text_default'), value: ''},
43
- {text: '_blank', value: '_blank'},
44
- {text: '_self', value: '_self'},
45
- {text: '_parent', value: '_parent'},
46
- {text: '_top', value: '_top'},
47
- {text: 'framename', value: 'framename'}
48
- ]
49
- },
50
- {
51
- type: 'textbox',
52
- name: 'title',
53
- label: editor.getLang('feedzy_tinymce_plugin.title'),
54
- value: ''
55
- },
56
- {
57
- type: 'listbox',
58
- name: 'meta',
59
- label: editor.getLang('feedzy_tinymce_plugin.meta'),
60
- 'values': [
61
- {text: editor.getLang('feedzy_tinymce_plugin.text_default'), value: ''},
62
- {text: editor.getLang('feedzy_tinymce_plugin.text_no'), value: 'no'},
63
- {text: editor.getLang('feedzy_tinymce_plugin.text_yes'), value: 'yes'},
64
- ]
65
- },
66
- {
67
- type: 'listbox',
68
- name: 'summary',
69
- label: editor.getLang('feedzy_tinymce_plugin.summary'),
70
- 'values': [
71
- {text: editor.getLang('feedzy_tinymce_plugin.text_default'), value: ''},
72
- {text: editor.getLang('feedzy_tinymce_plugin.text_no'), value: 'no'},
73
- {text: editor.getLang('feedzy_tinymce_plugin.text_yes'), value: 'yes'},
74
- ]
75
- },
76
- {
77
- type: 'textbox',
78
- name: 'summarylength',
79
- label: editor.getLang('feedzy_tinymce_plugin.summarylength'),
80
- value: ''
81
- },
82
- {
83
- type: 'listbox',
84
- name: 'thumb',
85
- label: editor.getLang('feedzy_tinymce_plugin.thumb'),
86
- 'values': [
87
- {text: editor.getLang('feedzy_tinymce_plugin.text_default'), value: ''},
88
- {text: editor.getLang('feedzy_tinymce_plugin.text_no'), value: 'no'},
89
- {text: editor.getLang('feedzy_tinymce_plugin.text_yes'), value: 'yes'},
90
- {text: editor.getLang('feedzy_tinymce_plugin.text_auto'), value: 'auto'},
91
- ]
92
- },
93
- {
94
- type: 'textbox',
95
- name: 'defaultimg',
96
- classes : 'feedzy-media', //necessary to call the media library
97
- label: editor.getLang('feedzy_tinymce_plugin.defaultimg'),
98
- value: ''
99
- },
100
- {
101
- type: 'textbox',
102
- name: 'size',
103
- label: editor.getLang('feedzy_tinymce_plugin.size'),
104
- value: ''
105
- },
106
- {
107
- type: 'textbox',
108
- name: 'keywords_title',
109
- label: editor.getLang('feedzy_tinymce_plugin.keywords_title'),
110
- value: ''
111
- }
112
- ],
113
- onsubmit: function( e ) {
114
- if(e.data.feeds != ''){
115
- e.data.feeds = 'feeds="' + e.data.feeds + '" ';
116
- } else {
117
- e.data.feeds = 'feeds="http://b-website.com/feed" ';
118
- }
119
- if(e.data.maximum != ''){
120
- e.data.maximum = 'max="' + e.data.maximum + '" ';
121
- }
122
- if(e.data.feed_title != ''){
123
- e.data.feed_title = 'feed_title="' + e.data.feed_title + '" ';
124
- }
125
- if(e.data.target != ''){
126
- e.data.target = 'target="' + e.data.target + '" ';
127
- }
128
- if(e.data.title != ''){
129
- e.data.title = 'title="' + e.data.title + '" ';
130
- }
131
- if(e.data.meta != ''){
132
- e.data.meta = 'meta="' + e.data.meta + '" ';
133
- }
134
- if(e.data.summary != ''){
135
- e.data.summary = 'summary="' + e.data.summary + '" ';
136
- }
137
- if(e.data.summarylength != ''){
138
- e.data.summarylength = 'summarylength="' + e.data.summarylength + '" ';
139
- }
140
- if(e.data.thumb != ''){
141
- e.data.thumb = 'thumb="' + e.data.thumb + '" ';
142
- }
143
- if(e.data.defaultimg != ''){
144
- e.data.defaultimg = 'default="' + e.data.defaultimg + '" ';
145
- }
146
- if(e.data.size != ''){
147
- e.data.size = 'size="' + e.data.size + '" ';
148
- }
149
- if(e.data.keywords_title != ''){
150
- e.data.keywords_title = 'keywords_title="' + e.data.keywords_title + '" ';
151
- }
152
- editor.insertContent(
153
- '[feedzy-rss '
154
- + e.data.feeds
155
- + e.data.maximum
156
- + e.data.feed_title
157
- + e.data.target
158
- + e.data.title
159
- + e.data.meta
160
- + e.data.summary
161
- + e.data.summarylength
162
- + e.data.thumb
163
- + e.data.defaultimg
164
- + e.data.size
165
- + e.data.keywords_title
166
- + ']'
167
- );
168
- }
169
- });
170
- }
171
- });
172
- });
173
- })();
1
+ /**
2
+ * Plugin Name: FEEDZY RSS Feeds
3
+ * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
4
+ * Author: Themeisle
5
+ *
6
+ * @package feedzy-rss-feeds
7
+ */
8
+ /* global tinymce */
9
+ /* jshint unused:false */
10
+ (function($) {
11
+ tinymce.PluginManager.add('feedzy_mce_button', function( editor, url ) {
12
+ editor.addButton( 'feedzy_mce_button', {
13
+ title: editor.getLang( 'feedzy_tinymce_plugin.plugin_label' ),
14
+ label: editor.getLang( 'feedzy_tinymce_plugin.plugin_label' ),
15
+ icon: 'feedzy-icon',
16
+ onclick: function() {
17
+ editor.windowManager.open( {
18
+ title: editor.getLang( 'feedzy_tinymce_plugin.plugin_title' ),
19
+ url: editor.getLang( 'feedzy_tinymce_plugin.popup_url' ) + '&amp;action=get_tinymce_form',
20
+ width: $( window ).width() * 0.7,
21
+ height: ($( window ).height() - 36 - 50) * 0.7,
22
+ inline: 1,
23
+ id: 'feedzy-rss-insert-dialog',
24
+ buttons: [{
25
+ text: editor.getLang( 'feedzy_tinymce_plugin.pro_button' ),
26
+ id: 'feedzy-rss-button-pro',
27
+ onclick: function( e ) {
28
+ openProLink( e, editor );
29
+ },
30
+ },
31
+ {
32
+ text: editor.getLang( 'feedzy_tinymce_plugin.cancel_button' ),
33
+ id: 'feedzy-rss-button-cancel',
34
+ onclick: 'close'
35
+ },
36
+ {
37
+ text: editor.getLang( 'feedzy_tinymce_plugin.insert_button' ),
38
+ id: 'feedzy-rss-button-insert',
39
+ class: 'insert',
40
+ onclick: function( e ) {
41
+ insertShortcode( e, editor );
42
+ },
43
+
44
+ }],
45
+ }, {
46
+ editor: editor,
47
+ jquery: $,
48
+ wp: wp,
49
+ });
50
+ }
51
+ });
52
+ });
53
+
54
+ function insertShortcode( e, editor ) {
55
+ var frame = $( e.currentTarget ).find( 'iframe' ).get( 0 );
56
+ var content = frame.contentDocument;
57
+
58
+ var feedzy_form = $( '*[data-feedzy]', content );
59
+ var shortCode = '';
60
+ $.each( feedzy_form, function( index, element ) {
61
+ if ( ! $( element ).attr( 'disabled' ) ) {
62
+ var shortCodeParams = '';
63
+ var eName = $( element ).attr( 'data-feedzy' );
64
+ var eValue = '';
65
+ if ($( element ).is( 'input' )) {
66
+ if ($( element ).attr( 'type' ) === 'radio' || $( element ).attr( 'type' ) === 'checkbox') {
67
+ if ( $( element ).is( ':checked' ) ) {
68
+ eValue = $( element ).val();
69
+ }
70
+ } else {
71
+ eValue = $( element ).val();
72
+ }
73
+ } else {
74
+ eValue = $( element ).val();
75
+ }
76
+
77
+ if ( eValue !== '' && typeof eValue !== 'undefined' ) {
78
+ shortCodeParams = eName + '="' + eValue + '" ';
79
+ } else {
80
+ if ( eName === 'feeds' ) {
81
+ shortCodeParams = eName + '="http://themeisle.com/feed" ';
82
+ }
83
+ }
84
+ shortCode += shortCodeParams;
85
+ }
86
+ });
87
+ editor.insertContent(
88
+ '[feedzy-rss ' + shortCode + ']'
89
+ );
90
+ editor.windowManager.close();
91
+ }
92
+
93
+ function openProLink( e , editor ) {
94
+ window.open( editor.getLang( 'feedzy_tinymce_plugin.pro_url' ), '_blank' );
95
+ }
96
+ })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/feedzy-rss-feeds-ui-scripts.js DELETED
@@ -1,49 +0,0 @@
1
- /**
2
- * Plugin Name: FEEDZY RSS Feeds by b*web
3
- * Plugin URI: http://b-website.com/
4
- * Author: Brice CAPOBIANCO
5
- */
6
- jQuery(document).ready(function($) {
7
-
8
- function feedzyMediaLibrary(){
9
- $(document).on('click', 'i.mce-i-feedzy-icon', function(){
10
- setTimeout(function() {
11
- $('.mce-feedzy-validator').parent('div').find('label').append(
12
- ' <a href="https://validator.w3.org/feed/" target="_blank" style="font-weight: 800;" title="Validate my feed!">Validate my feed!</a>'
13
- );
14
- $('.mce-feedzy-media').after(
15
- '<span class="mce-feedzy-media-button">+</span>' +
16
- '<style>.mce-feedzy-media { padding-right: 25px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 30px !important; }' +
17
- '.mce-feedzy-media-button { cursor: pointer; width: 28px; height: 28px; display: block; -webkit-font-smoothing: antialiased; float: right; background-color: #F7F7F7; border: 1px solid #DDD; font-size: 30px; color: #777; position: relative; line-height: 28px; text-align: center;' +
18
- ' }</style>'
19
- );
20
- }, 100);
21
- });
22
-
23
- $(document).on('click', '.mce-feedzy-media-button', function(){
24
- var $this = $(this);
25
- var wireframe;
26
- if (wireframe) {
27
- wireframe.open();
28
- return;
29
- }
30
-
31
- wireframe = wp.media.frames.wireframe = wp.media({
32
- /*title: 'Media Library Title',
33
- button: {
34
- text: 'Media Library Button Title'
35
- },*/
36
- multiple: false
37
- });
38
-
39
- wireframe.on('select', function() {
40
- attachment = wireframe.state().get('selection').first().toJSON();
41
- $this.parent().find('.mce-feedzy-media').val(attachment.url);
42
- });
43
-
44
- wireframe.open();
45
- });
46
- };
47
- feedzyMediaLibrary();
48
-
49
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
{langs → languages}/feedzy_rss_translate-de_DE.mo RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-de_DE.po RENAMED
@@ -1,141 +1,141 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: FEEDZY RSS Feeds by b*web\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: Fri Jul 17 2015 11:41:38 GMT+0200\n"
6
- "PO-Revision-Date: Fri Jul 17 2015 11:59:48 GMT+0200\n"
7
- "Last-Translator: Ralf Steck <rsteck@engineeringspot.de>\n"
8
- "Language-Team: \n"
9
- "Language: German\n"
10
- "Plural-Forms: nplurals=2; plural=n != 1\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-Basepath: .\n"
16
- "X-Poedit-SearchPath-0: ..\n"
17
- "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
- "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
- "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
- "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
- "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
- "X-Loco-Target-Locale: de_DE\n"
23
- "X-Generator: Loco - https://localise.biz/"
24
-
25
- #: ../feedzy-rss-feed.php:52 ../feedzy-rss-feed.php:52
26
- msgid "Documentation and examples"
27
- msgstr "Dokumentation und Beispiele"
28
-
29
- #: ../feedzy-rss-feed.php:53 ../feedzy-rss-feed.php:53
30
- msgid "More b*web Plugins"
31
- msgstr "Weitere b*web Plugins"
32
-
33
- #: ../feedzy-rss-feed.php:54 ../feedzy-rss-feed.php:54
34
- msgid "Donate to this plugin &#187;"
35
- msgstr "Spenden Sie für dieses Plugin &#187;"
36
-
37
- #: ../feedzy-rss-feeds-widget.php:18
38
- msgid "Feedzy RSS Feeds"
39
- msgstr "Feedzy RSS Feeds"
40
-
41
- #: ../feedzy-rss-feeds-widget.php:57
42
- msgid "Widget Title"
43
- msgstr "Widget-Titel"
44
-
45
- #: ../feedzy-rss-feeds-widget.php:61
46
- msgid "Intro text"
47
- msgstr "Einleitungstext"
48
-
49
- #: ../feedzy-rss-feeds-widget.php:65 ../feedzy-rss-feeds-ui-lang.php:20
50
- msgid "The feed(s) URL (comma-separated list)."
51
- msgstr "Feed URLs (kommaseparierte Liste)."
52
-
53
- #: ../feedzy-rss-feeds-widget.php:69 ../feedzy-rss-feeds-ui-lang.php:21
54
- msgid "Number of items to display."
55
- msgstr "Anzahl der darzustellenden Elemente"
56
-
57
- #: ../feedzy-rss-feeds-widget.php:73 ../feedzy-rss-feeds-ui-lang.php:23
58
- msgid "Links may be opened in the same window or a new tab."
59
- msgstr "Links können im selben Fenster oder einem neuen Tab geöffnet werden"
60
-
61
- #: ../feedzy-rss-feeds-widget.php:84 ../feedzy-rss-feeds-ui-lang.php:24
62
- msgid "Trim the title of the item after X characters."
63
- msgstr "Titel nach X Zeichen abschneiden"
64
-
65
- #: ../feedzy-rss-feeds-widget.php:89 ../feedzy-rss-feeds-ui-lang.php:25
66
- msgid "Should we display the date of publication and the author name?"
67
- msgstr "Veröffentlichungsdatum und Autorname anzeigen?"
68
-
69
- #: ../feedzy-rss-feeds-widget.php:93 ../feedzy-rss-feeds-ui-lang.php:26
70
- msgid "Should we display a description (abstract) of the retrieved item?"
71
- msgstr "Kurzbeschreibung (Zusammenfassung) des Elements anzeigen?"
72
-
73
- #: ../feedzy-rss-feeds-widget.php:96 ../feedzy-rss-feeds-ui-lang.php:27
74
- msgid "Crop description (summary) of the element after X characters."
75
- msgstr "Kurzbeschreibung (Zusammenfassung) nach X Zeichen abschneiden"
76
-
77
- #: ../feedzy-rss-feeds-widget.php:100 ../feedzy-rss-feeds-ui-lang.php:28
78
- msgid "Should we display the first image of the content if it is available?"
79
- msgstr "Erstes Bild - wenn vorhanden - des Inhalts anzeigen?"
80
-
81
- #: ../feedzy-rss-feeds-widget.php:111 ../feedzy-rss-feeds-ui-lang.php:33
82
- msgid "No"
83
- msgstr "Nein"
84
-
85
- #: ../feedzy-rss-feeds-widget.php:112 ../feedzy-rss-feeds-ui-lang.php:34
86
- msgid "Yes"
87
- msgstr "Ja"
88
-
89
- #: ../feedzy-rss-feeds-widget.php:113 ../feedzy-rss-feeds-ui-lang.php:35
90
- msgid "Auto"
91
- msgstr "Auto"
92
-
93
- #: ../feedzy-rss-feeds-widget.php:123 ../feedzy-rss-feeds-ui-lang.php:29
94
- msgid "Default thumbnail URL if no image is found."
95
- msgstr "Standard-Thumnail-Bild, wenn kein Bild im Text vorhanden ist."
96
-
97
- #: ../feedzy-rss-feeds-widget.php:127 ../feedzy-rss-feeds-ui-lang.php:30
98
- msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
99
- msgstr "Thumbnail-Größe. Bitte ohne \"px\" angeben, z.B. 150"
100
-
101
- #: ../feedzy-rss-feeds-widget.php:131 ../feedzy-rss-feeds-ui-lang.php:31
102
- msgid ""
103
- "Only display item if title contains specific keyword(s) (comma-separated "
104
- "list/case sensitive)."
105
- msgstr ""
106
- "Elemente nur anzeigen, wenn sie folgende Keywords enthalten (Kommaseparierte "
107
- "Liste)."
108
-
109
- #: ../feedzy-rss-feeds-ui-lang.php:19
110
- msgid "Insert FEEDZY RSS Feeds Shortcode"
111
- msgstr "FEEDZY RSS Feeds Shortcode einfügen"
112
-
113
- #: ../feedzy-rss-feeds-ui-lang.php:22
114
- msgid "Should we display the RSS title?"
115
- msgstr "RSS-Titel darstellen?"
116
-
117
- #: ../feedzy-rss-feeds-ui-lang.php:32
118
- msgid "Do not specify"
119
- msgstr "nicht angeben"
120
-
121
- #: ../feedzy-rss-feeds-shortcode.php:98
122
- msgid "Sorry, this feed is currently unavailable or does not exists anymore."
123
- msgstr ""
124
- "Tut uns leid, dieser Feed ist derzeit nicht verfügbar oder existiert nicht "
125
- "mehr."
126
-
127
- #: ../feedzy-rss-feeds-shortcode.php:205
128
- msgid "Posted"
129
- msgstr "Veröffentlicht"
130
-
131
- #: ../feedzy-rss-feeds-shortcode.php:216
132
- msgid "by"
133
- msgstr "von"
134
-
135
- #: ../feedzy-rss-feeds-shortcode.php:222
136
- msgid "on"
137
- msgstr "am"
138
-
139
- #: ../feedzy-rss-feeds-shortcode.php:222
140
- msgid "at"
141
- msgstr "um"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: FEEDZY RSS Feeds by b*web\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: Fri Jul 17 2015 11:41:38 GMT+0200\n"
6
+ "PO-Revision-Date: Fri Jul 17 2015 11:59:48 GMT+0200\n"
7
+ "Last-Translator: Ralf Steck <rsteck@engineeringspot.de>\n"
8
+ "Language-Team: \n"
9
+ "Language: German\n"
10
+ "Plural-Forms: nplurals=2; plural=n != 1\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: ..\n"
17
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
+ "X-Loco-Target-Locale: de_DE\n"
23
+ "X-Generator: Loco - https://localise.biz/"
24
+
25
+ #: ../feedzy-rss-feed.php:52 ../feedzy-rss-feed.php:52
26
+ msgid "Documentation and examples"
27
+ msgstr "Dokumentation und Beispiele"
28
+
29
+ #: ../feedzy-rss-feed.php:53 ../feedzy-rss-feed.php:53
30
+ msgid "More b*web Plugins"
31
+ msgstr "Weitere b*web Plugins"
32
+
33
+ #: ../feedzy-rss-feed.php:54 ../feedzy-rss-feed.php:54
34
+ msgid "Donate to this plugin &#187;"
35
+ msgstr "Spenden Sie für dieses Plugin &#187;"
36
+
37
+ #: ../feedzy-rss-feeds-widget.php:18
38
+ msgid "Feedzy RSS Feeds"
39
+ msgstr "Feedzy RSS Feeds"
40
+
41
+ #: ../feedzy-rss-feeds-widget.php:57
42
+ msgid "Widget Title"
43
+ msgstr "Widget-Titel"
44
+
45
+ #: ../feedzy-rss-feeds-widget.php:61
46
+ msgid "Intro text"
47
+ msgstr "Einleitungstext"
48
+
49
+ #: ../feedzy-rss-feeds-widget.php:65 ../feedzy-rss-feeds-ui-lang.php:20
50
+ msgid "The feed(s) URL (comma-separated list)."
51
+ msgstr "Feed URLs (kommaseparierte Liste)."
52
+
53
+ #: ../feedzy-rss-feeds-widget.php:69 ../feedzy-rss-feeds-ui-lang.php:21
54
+ msgid "Number of items to display."
55
+ msgstr "Anzahl der darzustellenden Elemente"
56
+
57
+ #: ../feedzy-rss-feeds-widget.php:73 ../feedzy-rss-feeds-ui-lang.php:23
58
+ msgid "Links may be opened in the same window or a new tab."
59
+ msgstr "Links können im selben Fenster oder einem neuen Tab geöffnet werden"
60
+
61
+ #: ../feedzy-rss-feeds-widget.php:84 ../feedzy-rss-feeds-ui-lang.php:24
62
+ msgid "Trim the title of the item after X characters."
63
+ msgstr "Titel nach X Zeichen abschneiden"
64
+
65
+ #: ../feedzy-rss-feeds-widget.php:89 ../feedzy-rss-feeds-ui-lang.php:25
66
+ msgid "Should we display the date of publication and the author name?"
67
+ msgstr "Veröffentlichungsdatum und Autorname anzeigen?"
68
+
69
+ #: ../feedzy-rss-feeds-widget.php:93 ../feedzy-rss-feeds-ui-lang.php:26
70
+ msgid "Should we display a description (abstract) of the retrieved item?"
71
+ msgstr "Kurzbeschreibung (Zusammenfassung) des Elements anzeigen?"
72
+
73
+ #: ../feedzy-rss-feeds-widget.php:96 ../feedzy-rss-feeds-ui-lang.php:27
74
+ msgid "Crop description (summary) of the element after X characters."
75
+ msgstr "Kurzbeschreibung (Zusammenfassung) nach X Zeichen abschneiden"
76
+
77
+ #: ../feedzy-rss-feeds-widget.php:100 ../feedzy-rss-feeds-ui-lang.php:28
78
+ msgid "Should we display the first image of the content if it is available?"
79
+ msgstr "Erstes Bild - wenn vorhanden - des Inhalts anzeigen?"
80
+
81
+ #: ../feedzy-rss-feeds-widget.php:111 ../feedzy-rss-feeds-ui-lang.php:33
82
+ msgid "No"
83
+ msgstr "Nein"
84
+
85
+ #: ../feedzy-rss-feeds-widget.php:112 ../feedzy-rss-feeds-ui-lang.php:34
86
+ msgid "Yes"
87
+ msgstr "Ja"
88
+
89
+ #: ../feedzy-rss-feeds-widget.php:113 ../feedzy-rss-feeds-ui-lang.php:35
90
+ msgid "Auto"
91
+ msgstr "Auto"
92
+
93
+ #: ../feedzy-rss-feeds-widget.php:123 ../feedzy-rss-feeds-ui-lang.php:29
94
+ msgid "Default thumbnail URL if no image is found."
95
+ msgstr "Standard-Thumnail-Bild, wenn kein Bild im Text vorhanden ist."
96
+
97
+ #: ../feedzy-rss-feeds-widget.php:127 ../feedzy-rss-feeds-ui-lang.php:30
98
+ msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
99
+ msgstr "Thumbnail-Größe. Bitte ohne \"px\" angeben, z.B. 150"
100
+
101
+ #: ../feedzy-rss-feeds-widget.php:131 ../feedzy-rss-feeds-ui-lang.php:31
102
+ msgid ""
103
+ "Only display item if title contains specific keyword(s) (comma-separated "
104
+ "list/case sensitive)."
105
+ msgstr ""
106
+ "Elemente nur anzeigen, wenn sie folgende Keywords enthalten (Kommaseparierte "
107
+ "Liste)."
108
+
109
+ #: ../feedzy-rss-feeds-ui-lang.php:19
110
+ msgid "Insert FEEDZY RSS Feeds Shortcode"
111
+ msgstr "FEEDZY RSS Feeds Shortcode einfügen"
112
+
113
+ #: ../feedzy-rss-feeds-ui-lang.php:22
114
+ msgid "Should we display the RSS title?"
115
+ msgstr "RSS-Titel darstellen?"
116
+
117
+ #: ../feedzy-rss-feeds-ui-lang.php:32
118
+ msgid "Do not specify"
119
+ msgstr "nicht angeben"
120
+
121
+ #: ../feedzy-rss-feeds-shortcode.php:98
122
+ msgid "Sorry, this feed is currently unavailable or does not exists anymore."
123
+ msgstr ""
124
+ "Tut uns leid, dieser Feed ist derzeit nicht verfügbar oder existiert nicht "
125
+ "mehr."
126
+
127
+ #: ../feedzy-rss-feeds-shortcode.php:205
128
+ msgid "Posted"
129
+ msgstr "Veröffentlicht"
130
+
131
+ #: ../feedzy-rss-feeds-shortcode.php:216
132
+ msgid "by"
133
+ msgstr "von"
134
+
135
+ #: ../feedzy-rss-feeds-shortcode.php:222
136
+ msgid "on"
137
+ msgstr "am"
138
+
139
+ #: ../feedzy-rss-feeds-shortcode.php:222
140
+ msgid "at"
141
+ msgstr "um"
{langs → languages}/feedzy_rss_translate-es_ES.mo RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-es_ES.po RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-fr_FR.mo RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-fr_FR.po RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-ja.mo RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-ja.po RENAMED
@@ -1,189 +1,189 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: FEEDZY RSS Feeds by b*web v2.2\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2015-06-28 08:42+0900\n"
7
- "Last-Translator: Shinichiro Sato <sama55@cmsbox.jp>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n>1;\n"
13
- "X-Generator: Poedit 1.8.1\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
16
- "X-Textdomain-Support: yes\n"
17
- "Language: fr_FR\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
-
20
- # @ feedzy_rss_translate
21
- #: feedzy-rss-feeds-shortcode.php:120
22
- msgid "Sorry, this feed is currently unavailable or does not exists anymore."
23
- msgstr "このフィードは現在利用できないか存在しません。"
24
-
25
- # @ feedzy_rss_translate
26
- #: feedzy-rss-feeds-shortcode.php:298
27
- msgid "on"
28
- msgstr "on"
29
-
30
- # @ feedzy_rss_translate
31
- #: feedzy-rss-feeds-shortcode.php:298
32
- msgid "at"
33
- msgstr "at"
34
-
35
- # @ feedzy_rss_translate
36
- #: feedzy-rss-feed.php:37
37
- msgid "Documentation and examples"
38
- msgstr "ドキュメントと例"
39
-
40
- # @ feedzy_rss_translate
41
- #: feedzy-rss-feed.php:38
42
- msgid "More b*web Plugins"
43
- msgstr "他の b*web プラグイン"
44
-
45
- # @ feedzy_rss_translate
46
- #: feedzy-rss-feeds-ui-lang.php:19
47
- msgid "Insert FEEDZY RSS Feeds Shortcode"
48
- msgstr "FEEDZY RSSフィード ショートコードを追加"
49
-
50
- # @ feedzy_rss_translate
51
- #: feedzy-rss-feeds-ui-lang.php:21 feedzy-rss-feeds-widget.php:69
52
- msgid "Number of items to display."
53
- msgstr "表示数:"
54
-
55
- # @ feedzy_rss_translate
56
- #: feedzy-rss-feeds-ui-lang.php:23 feedzy-rss-feeds-widget.php:73
57
- msgid "Links may be opened in the same window or a new tab."
58
- msgstr "リンク先の開き方:"
59
-
60
- # @ feedzy_rss_translate
61
- #: feedzy-rss-feeds-ui-lang.php:24 feedzy-rss-feeds-widget.php:84
62
- msgid "Trim the title of the item after X characters."
63
- msgstr "タイトルの切り取り文字数:"
64
-
65
- # @ feedzy_rss_translate
66
- #: feedzy-rss-feeds-ui-lang.php:25 feedzy-rss-feeds-widget.php:89
67
- msgid "Should we display the date of publication and the author name?"
68
- msgstr "公開日と著作者を表示:"
69
-
70
- # @ feedzy_rss_translate
71
- #: feedzy-rss-feeds-ui-lang.php:26 feedzy-rss-feeds-widget.php:93
72
- msgid "Should we display a description (abstract) of the retrieved item?"
73
- msgstr "詳細を表示:"
74
-
75
- # @ feedzy_rss_translate
76
- #: feedzy-rss-feeds-ui-lang.php:27 feedzy-rss-feeds-widget.php:96
77
- msgid "Crop description (summary) of the element after X characters."
78
- msgstr "詳細の切り取り文字数:"
79
-
80
- # @ feedzy_rss_translate
81
- #: feedzy-rss-feeds-ui-lang.php:28 feedzy-rss-feeds-widget.php:101
82
- msgid "Should we display the first image of the content if it is available?"
83
- msgstr "最初の画像を表示:"
84
-
85
- # @ feedzy_rss_translate
86
- #: feedzy-rss-feeds-ui-lang.php:29 feedzy-rss-feeds-widget.php:104
87
- msgid "Default thumbnail URL if no image is found."
88
- msgstr "画像がない場合のデフォルトサムネイル:"
89
-
90
- # @ feedzy_rss_translate
91
- #: feedzy-rss-feeds-ui-lang.php:30 feedzy-rss-feeds-widget.php:108
92
- msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
93
- msgstr "サムネイルのサイズ(\"px\"はなし 例:150):"
94
-
95
- # @ feedzy_rss_translate
96
- #: feedzy-rss-feeds-ui-lang.php:31 feedzy-rss-feeds-widget.php:112
97
- msgid "Only display item if title contains specific keyword(s) (comma-separated list/case sensitive)."
98
- msgstr "特定なキーワードがタイトルに含まれる項目のみ表示 (複数指定時は大文字小文字を意識してカンマ区切り):"
99
-
100
- # @ feedzy_rss_translate
101
- #: feedzy-rss-feeds-ui-lang.php:32
102
- msgid "Do not specify"
103
- msgstr "指定しない"
104
-
105
- # @ feedzy_rss_translate
106
- #: feedzy-rss-feeds-ui-lang.php:33
107
- msgid "No"
108
- msgstr "しない"
109
-
110
- # @ feedzy_rss_translate
111
- #: feedzy-rss-feeds-ui-lang.php:34
112
- msgid "Yes"
113
- msgstr "する"
114
-
115
- # @ feedzy_rss_translate
116
- #: feedzy-rss-feeds-ui-lang.php:20 feedzy-rss-feeds-widget.php:65
117
- msgid "The feed(s) URL (comma-separated list)."
118
- msgstr "フィードアドレス (複数指定する場合はカンマ区切り):"
119
-
120
- # @ feedzy_rss_translate
121
- #: feedzy-rss-feeds-ui-lang.php:22
122
- msgid "Should we display the RSS title?"
123
- msgstr "タイトルを表示:"
124
-
125
- # @ feedzy_rss_translate
126
- #. translators: plugin header field 'Name'
127
- #: feedzy-rss-feed.php:0
128
- msgid "FEEDZY RSS Feeds by b*web"
129
- msgstr "FEEDZY RSS Feeds by b*web"
130
-
131
- # @ feedzy_rss_translate
132
- #. translators: plugin header field 'Description'
133
- #: feedzy-rss-feed.php:0
134
- msgid "FEEDZY RSS Feeds is a small and lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your WordPress site through simple shortcodes."
135
- msgstr "FEEDZY RSS Feeds は小さく軽いプラグインです。高速で使い方も簡単。あなたのワードプレスサイトにシンプルなショートコードによるRSSフィードの収集機能を追加します。"
136
-
137
- # @ feedzy_rss_translate
138
- #. translators: plugin header field 'Author'
139
- #: feedzy-rss-feed.php:0
140
- msgid "Brice CAPOBIANCO"
141
- msgstr "Brice CAPOBIANCO"
142
-
143
- # @ feedzy_rss_translate
144
- #. translators: plugin header field 'AuthorURI'
145
- #: feedzy-rss-feed.php:0
146
- msgid "http://b-website.com/"
147
- msgstr "http://b-website.com/"
148
-
149
- # @ feedzy_rss_translate
150
- #. translators: plugin header field 'PluginURI'
151
- #: feedzy-rss-feed.php:0
152
- msgid "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
153
- msgstr "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
154
-
155
- # @ feedzy_wp_widget
156
- #: feedzy-rss-feeds-widget.php:18
157
- msgid "Feedzy RSS Feeds"
158
- msgstr "Feedzy RSS フィード"
159
-
160
- # @ feedzy_rss_translate
161
- #: feedzy-rss-feeds-widget.php:57
162
- msgid "Widget Title"
163
- msgstr "タイトル"
164
-
165
- # @ feedzy_rss_translate
166
- #: feedzy-rss-feeds-widget.php:61
167
- msgid "Intro text"
168
- msgstr "イントロテキスト"
169
-
170
- # @ default
171
- #: feedzy-rss-feed.php:39
172
- msgid "Donate to this plugin &#187;"
173
- msgstr "このプラグインに寄付 &#187;"
174
-
175
- # @ feedzy_rss_translate
176
- #. translators: plugin header field 'Version'
177
- #: feedzy-rss-feed.php:0
178
- msgid "2.2"
179
- msgstr "2.2"
180
-
181
- # @ feedzy_rss_translate
182
- #: feedzy-rss-feeds-shortcode.php:289
183
- msgid "Posted"
184
- msgstr "投稿日"
185
-
186
- # @ feedzy_rss_translate
187
- #: feedzy-rss-feeds-shortcode.php:294
188
- msgid "by"
189
- msgstr "by"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: FEEDZY RSS Feeds by b*web v2.2\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-06-28 08:42+0900\n"
7
+ "Last-Translator: Shinichiro Sato <sama55@cmsbox.jp>\n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n>1;\n"
13
+ "X-Generator: Poedit 1.8.1\n"
14
+ "X-Poedit-SourceCharset: utf-8\n"
15
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
16
+ "X-Textdomain-Support: yes\n"
17
+ "Language: fr_FR\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+
20
+ # @ feedzy_rss_translate
21
+ #: feedzy-rss-feeds-shortcode.php:120
22
+ msgid "Sorry, this feed is currently unavailable or does not exists anymore."
23
+ msgstr "このフィードは現在利用できないか存在しません。"
24
+
25
+ # @ feedzy_rss_translate
26
+ #: feedzy-rss-feeds-shortcode.php:298
27
+ msgid "on"
28
+ msgstr "on"
29
+
30
+ # @ feedzy_rss_translate
31
+ #: feedzy-rss-feeds-shortcode.php:298
32
+ msgid "at"
33
+ msgstr "at"
34
+
35
+ # @ feedzy_rss_translate
36
+ #: feedzy-rss-feed.php:37
37
+ msgid "Documentation and examples"
38
+ msgstr "ドキュメントと例"
39
+
40
+ # @ feedzy_rss_translate
41
+ #: feedzy-rss-feed.php:38
42
+ msgid "More b*web Plugins"
43
+ msgstr "他の b*web プラグイン"
44
+
45
+ # @ feedzy_rss_translate
46
+ #: feedzy-rss-feeds-ui-lang.php:19
47
+ msgid "Insert FEEDZY RSS Feeds Shortcode"
48
+ msgstr "FEEDZY RSSフィード ショートコードを追加"
49
+
50
+ # @ feedzy_rss_translate
51
+ #: feedzy-rss-feeds-ui-lang.php:21 feedzy-rss-feeds-widget.php:69
52
+ msgid "Number of items to display."
53
+ msgstr "表示数:"
54
+
55
+ # @ feedzy_rss_translate
56
+ #: feedzy-rss-feeds-ui-lang.php:23 feedzy-rss-feeds-widget.php:73
57
+ msgid "Links may be opened in the same window or a new tab."
58
+ msgstr "リンク先の開き方:"
59
+
60
+ # @ feedzy_rss_translate
61
+ #: feedzy-rss-feeds-ui-lang.php:24 feedzy-rss-feeds-widget.php:84
62
+ msgid "Trim the title of the item after X characters."
63
+ msgstr "タイトルの切り取り文字数:"
64
+
65
+ # @ feedzy_rss_translate
66
+ #: feedzy-rss-feeds-ui-lang.php:25 feedzy-rss-feeds-widget.php:89
67
+ msgid "Should we display the date of publication and the author name?"
68
+ msgstr "公開日と著作者を表示:"
69
+
70
+ # @ feedzy_rss_translate
71
+ #: feedzy-rss-feeds-ui-lang.php:26 feedzy-rss-feeds-widget.php:93
72
+ msgid "Should we display a description (abstract) of the retrieved item?"
73
+ msgstr "詳細を表示:"
74
+
75
+ # @ feedzy_rss_translate
76
+ #: feedzy-rss-feeds-ui-lang.php:27 feedzy-rss-feeds-widget.php:96
77
+ msgid "Crop description (summary) of the element after X characters."
78
+ msgstr "詳細の切り取り文字数:"
79
+
80
+ # @ feedzy_rss_translate
81
+ #: feedzy-rss-feeds-ui-lang.php:28 feedzy-rss-feeds-widget.php:101
82
+ msgid "Should we display the first image of the content if it is available?"
83
+ msgstr "最初の画像を表示:"
84
+
85
+ # @ feedzy_rss_translate
86
+ #: feedzy-rss-feeds-ui-lang.php:29 feedzy-rss-feeds-widget.php:104
87
+ msgid "Default thumbnail URL if no image is found."
88
+ msgstr "画像がない場合のデフォルトサムネイル:"
89
+
90
+ # @ feedzy_rss_translate
91
+ #: feedzy-rss-feeds-ui-lang.php:30 feedzy-rss-feeds-widget.php:108
92
+ msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
93
+ msgstr "サムネイルのサイズ(\"px\"はなし 例:150):"
94
+
95
+ # @ feedzy_rss_translate
96
+ #: feedzy-rss-feeds-ui-lang.php:31 feedzy-rss-feeds-widget.php:112
97
+ msgid "Only display item if title contains specific keyword(s) (comma-separated list/case sensitive)."
98
+ msgstr "特定なキーワードがタイトルに含まれる項目のみ表示 (複数指定時は大文字小文字を意識してカンマ区切り):"
99
+
100
+ # @ feedzy_rss_translate
101
+ #: feedzy-rss-feeds-ui-lang.php:32
102
+ msgid "Do not specify"
103
+ msgstr "指定しない"
104
+
105
+ # @ feedzy_rss_translate
106
+ #: feedzy-rss-feeds-ui-lang.php:33
107
+ msgid "No"
108
+ msgstr "しない"
109
+
110
+ # @ feedzy_rss_translate
111
+ #: feedzy-rss-feeds-ui-lang.php:34
112
+ msgid "Yes"
113
+ msgstr "する"
114
+
115
+ # @ feedzy_rss_translate
116
+ #: feedzy-rss-feeds-ui-lang.php:20 feedzy-rss-feeds-widget.php:65
117
+ msgid "The feed(s) URL (comma-separated list)."
118
+ msgstr "フィードアドレス (複数指定する場合はカンマ区切り):"
119
+
120
+ # @ feedzy_rss_translate
121
+ #: feedzy-rss-feeds-ui-lang.php:22
122
+ msgid "Should we display the RSS title?"
123
+ msgstr "タイトルを表示:"
124
+
125
+ # @ feedzy_rss_translate
126
+ #. translators: plugin header field 'Name'
127
+ #: feedzy-rss-feed.php:0
128
+ msgid "FEEDZY RSS Feeds by b*web"
129
+ msgstr "FEEDZY RSS Feeds by b*web"
130
+
131
+ # @ feedzy_rss_translate
132
+ #. translators: plugin header field 'Description'
133
+ #: feedzy-rss-feed.php:0
134
+ msgid "FEEDZY RSS Feeds is a small and lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your WordPress site through simple shortcodes."
135
+ msgstr "FEEDZY RSS Feeds は小さく軽いプラグインです。高速で使い方も簡単。あなたのワードプレスサイトにシンプルなショートコードによるRSSフィードの収集機能を追加します。"
136
+
137
+ # @ feedzy_rss_translate
138
+ #. translators: plugin header field 'Author'
139
+ #: feedzy-rss-feed.php:0
140
+ msgid "Brice CAPOBIANCO"
141
+ msgstr "Brice CAPOBIANCO"
142
+
143
+ # @ feedzy_rss_translate
144
+ #. translators: plugin header field 'AuthorURI'
145
+ #: feedzy-rss-feed.php:0
146
+ msgid "http://b-website.com/"
147
+ msgstr "http://b-website.com/"
148
+
149
+ # @ feedzy_rss_translate
150
+ #. translators: plugin header field 'PluginURI'
151
+ #: feedzy-rss-feed.php:0
152
+ msgid "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
153
+ msgstr "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
154
+
155
+ # @ feedzy_wp_widget
156
+ #: feedzy-rss-feeds-widget.php:18
157
+ msgid "Feedzy RSS Feeds"
158
+ msgstr "Feedzy RSS フィード"
159
+
160
+ # @ feedzy_rss_translate
161
+ #: feedzy-rss-feeds-widget.php:57
162
+ msgid "Widget Title"
163
+ msgstr "タイトル"
164
+
165
+ # @ feedzy_rss_translate
166
+ #: feedzy-rss-feeds-widget.php:61
167
+ msgid "Intro text"
168
+ msgstr "イントロテキスト"
169
+
170
+ # @ default
171
+ #: feedzy-rss-feed.php:39
172
+ msgid "Donate to this plugin &#187;"
173
+ msgstr "このプラグインに寄付 &#187;"
174
+
175
+ # @ feedzy_rss_translate
176
+ #. translators: plugin header field 'Version'
177
+ #: feedzy-rss-feed.php:0
178
+ msgid "2.2"
179
+ msgstr "2.2"
180
+
181
+ # @ feedzy_rss_translate
182
+ #: feedzy-rss-feeds-shortcode.php:289
183
+ msgid "Posted"
184
+ msgstr "投稿日"
185
+
186
+ # @ feedzy_rss_translate
187
+ #: feedzy-rss-feeds-shortcode.php:294
188
+ msgid "by"
189
+ msgstr "by"
{langs → languages}/feedzy_rss_translate-sr_RS.mo RENAMED
File without changes
{langs → languages}/feedzy_rss_translate-sr_RS.po RENAMED
@@ -1,204 +1,204 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: FEEDZY RSS Feeds by b*web v2.2.1\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2015-01-13 19:54:39+0000\n"
7
- "Last-Translator: Borisa Djuraskovic <borisad@webhostinghub.com>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Generator: Poedit 1.5.4\n"
14
- "X-Poedit-Language: \n"
15
- "X-Poedit-Country: \n"
16
- "X-Poedit-SourceCharset: utf-8\n"
17
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
18
- "X-Poedit-Basepath: \n"
19
- "X-Poedit-Bookmarks: \n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Textdomain-Support: yes"
22
-
23
- #: feedzy-rss-feeds-shortcode.php:120
24
- #@ feedzy_rss_translate
25
- msgid "Sorry, this feed is currently unavailable or does not exists anymore."
26
- msgstr "Žao nam je, ovo polje trenutno nije dostupno ili više ne postoji."
27
-
28
- #: feedzy-rss-feeds-shortcode.php:298
29
- #@ feedzy_rss_translate
30
- msgid "on"
31
- msgstr "na"
32
-
33
- #: feedzy-rss-feeds-shortcode.php:298
34
- #@ feedzy_rss_translate
35
- msgid "at"
36
- msgstr "u"
37
-
38
- #: feedzy-rss-feed.php:37
39
- #@ feedzy_rss_translate
40
- msgid "Documentation and examples"
41
- msgstr "Dokumentacija i primeri"
42
-
43
- #: feedzy-rss-feed.php:38
44
- #@ feedzy_rss_translate
45
- msgid "More b*web Plugins"
46
- msgstr "Više b*web Plugin-ova"
47
-
48
- #: feedzy-rss-feeds-ui-lang.php:19
49
- #@ feedzy_rss_translate
50
- msgid "Insert FEEDZY RSS Feeds Shortcode"
51
- msgstr "Unesite FEEDZY RSS Feeds Shortcode"
52
-
53
- #: feedzy-rss-feeds-ui-lang.php:21
54
- #: feedzy-rss-feeds-widget.php:69
55
- #@ feedzy_rss_translate
56
- msgid "Number of items to display."
57
- msgstr "Broj stavki za prikazivanje"
58
-
59
- #: feedzy-rss-feeds-ui-lang.php:23
60
- #: feedzy-rss-feeds-widget.php:73
61
- #@ feedzy_rss_translate
62
- msgid "Links may be opened in the same window or a new tab."
63
- msgstr "Linkovi mogu biti otvoreni u istom prozoru ili u novom tabulatoru."
64
-
65
- #: feedzy-rss-feeds-ui-lang.php:24
66
- #: feedzy-rss-feeds-widget.php:84
67
- #@ feedzy_rss_translate
68
- msgid "Trim the title of the item after X characters."
69
- msgstr "Skratite naslov stavke posle X karaktera."
70
-
71
- #: feedzy-rss-feeds-ui-lang.php:25
72
- #: feedzy-rss-feeds-widget.php:89
73
- #@ feedzy_rss_translate
74
- msgid "Should we display the date of publication and the author name?"
75
- msgstr "Treba li da prikažemo datum publikacije i ime autora?"
76
-
77
- #: feedzy-rss-feeds-ui-lang.php:26
78
- #: feedzy-rss-feeds-widget.php:93
79
- #@ feedzy_rss_translate
80
- msgid "Should we display a description (abstract) of the retrieved item?"
81
- msgstr "Treba li da prikažemo opis (siže) dobavljene stavke?"
82
-
83
- #: feedzy-rss-feeds-ui-lang.php:27
84
- #: feedzy-rss-feeds-widget.php:96
85
- #@ feedzy_rss_translate
86
- msgid "Crop description (summary) of the element after X characters."
87
- msgstr "Kropuj opis (siže) elementa posle X karaktera."
88
-
89
- #: feedzy-rss-feeds-ui-lang.php:28
90
- #: feedzy-rss-feeds-widget.php:101
91
- #@ feedzy_rss_translate
92
- msgid "Should we display the first image of the content if it is available?"
93
- msgstr "Treba li da prikažemo prvu sliku sadržaja ako je raspoloživa?"
94
-
95
- #: feedzy-rss-feeds-ui-lang.php:29
96
- #: feedzy-rss-feeds-widget.php:104
97
- #@ feedzy_rss_translate
98
- msgid "Default thumbnail URL if no image is found."
99
- msgstr "URL podrazumevane sličice ako nije pronađena nijedna slika."
100
-
101
- #: feedzy-rss-feeds-ui-lang.php:30
102
- #: feedzy-rss-feeds-widget.php:108
103
- #@ feedzy_rss_translate
104
- msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
105
- msgstr "Dimenzije sličice. Nemojte unositi \"px\". Npr. 150"
106
-
107
- #: feedzy-rss-feeds-ui-lang.php:31
108
- #: feedzy-rss-feeds-widget.php:112
109
- #@ feedzy_rss_translate
110
- msgid "Only display item if title contains specific keyword(s) (comma-separated list/case sensitive)."
111
- msgstr "Prikaži stavku samo ako naslov sadrži specifične ključne reči (odvojene zarezima/osetljive na velika i mala slova)."
112
-
113
- #: feedzy-rss-feeds-ui-lang.php:32
114
- #@ feedzy_rss_translate
115
- msgid "Do not specify"
116
- msgstr "Nemoj određivati"
117
-
118
- #: feedzy-rss-feeds-ui-lang.php:33
119
- #@ feedzy_rss_translate
120
- msgid "No"
121
- msgstr "Ne"
122
-
123
- #: feedzy-rss-feeds-ui-lang.php:34
124
- #@ feedzy_rss_translate
125
- msgid "Yes"
126
- msgstr "Da"
127
-
128
- #: feedzy-rss-feeds-ui-lang.php:20
129
- #: feedzy-rss-feeds-widget.php:65
130
- #@ feedzy_rss_translate
131
- msgid "The feed(s) URL (comma-separated list)."
132
- msgstr "URL feed-ova (odvojenih zarezima ako je lista)."
133
-
134
- #: feedzy-rss-feeds-ui-lang.php:22
135
- #@ feedzy_rss_translate
136
- msgid "Should we display the RSS title?"
137
- msgstr "Treba li da prikažemo RSS naslov?"
138
-
139
- #. translators: plugin header field 'Name'
140
- #: feedzy-rss-feed.php:0
141
- #@ feedzy_rss_translate
142
- msgid "FEEDZY RSS Feeds by b*web"
143
- msgstr "FEEDZY RSS Feeds, autor b*web"
144
-
145
- #. translators: plugin header field 'Description'
146
- #: feedzy-rss-feed.php:0
147
- #@ feedzy_rss_translate
148
- msgid "FEEDZY RSS Feeds is a small and lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your WordPress site through simple shortcodes."
149
- msgstr "FEEDZY RSS Feeds je mali i lagan plugin. Brz i jednostavan za upotrebu, sakuplja RSS feed-ove na vaš WordPress site uz pomoć jednostavnih shortcode-ova."
150
-
151
- #. translators: plugin header field 'Author'
152
- #: feedzy-rss-feed.php:0
153
- #@ feedzy_rss_translate
154
- msgid "Brice CAPOBIANCO"
155
- msgstr "Brice CAPOBIANCO"
156
-
157
- #. translators: plugin header field 'AuthorURI'
158
- #: feedzy-rss-feed.php:0
159
- #@ feedzy_rss_translate
160
- msgid "http://b-website.com/"
161
- msgstr "http://b-website.com/"
162
-
163
- #. translators: plugin header field 'PluginURI'
164
- #: feedzy-rss-feed.php:0
165
- #@ feedzy_rss_translate
166
- msgid "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
167
- msgstr "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
168
-
169
- #. translators: plugin header field 'Version'
170
- #: feedzy-rss-feed.php:0
171
- #@ feedzy_rss_translate
172
- msgid "2.2.1"
173
- msgstr ""
174
-
175
- #: feedzy-rss-feed.php:39
176
- #@ default
177
- msgid "Donate to this plugin &#187;"
178
- msgstr ""
179
-
180
- #: feedzy-rss-feeds-shortcode.php:289
181
- #@ feedzy_rss_translate
182
- msgid "Posted"
183
- msgstr "Objavljeno"
184
-
185
- #: feedzy-rss-feeds-shortcode.php:294
186
- #@ feedzy_rss_translate
187
- msgid "by"
188
- msgstr "po"
189
-
190
- #: feedzy-rss-feeds-widget.php:18
191
- #@ feedzy_wp_widget
192
- msgid "Feedzy RSS Feeds"
193
- msgstr ""
194
-
195
- #: feedzy-rss-feeds-widget.php:57
196
- #@ feedzy_rss_translate
197
- msgid "Widget Title"
198
- msgstr "dodatak Naslov"
199
-
200
- #: feedzy-rss-feeds-widget.php:61
201
- #@ feedzy_rss_translate
202
- msgid "Intro text"
203
- msgstr "Uvodni tekst"
204
-
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: FEEDZY RSS Feeds by b*web v2.2.1\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-01-13 19:54:39+0000\n"
7
+ "Last-Translator: Borisa Djuraskovic <borisad@webhostinghub.com>\n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Generator: Poedit 1.5.4\n"
14
+ "X-Poedit-Language: \n"
15
+ "X-Poedit-Country: \n"
16
+ "X-Poedit-SourceCharset: utf-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
18
+ "X-Poedit-Basepath: \n"
19
+ "X-Poedit-Bookmarks: \n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Textdomain-Support: yes"
22
+
23
+ #: feedzy-rss-feeds-shortcode.php:120
24
+ #@ feedzy_rss_translate
25
+ msgid "Sorry, this feed is currently unavailable or does not exists anymore."
26
+ msgstr "Žao nam je, ovo polje trenutno nije dostupno ili više ne postoji."
27
+
28
+ #: feedzy-rss-feeds-shortcode.php:298
29
+ #@ feedzy_rss_translate
30
+ msgid "on"
31
+ msgstr "na"
32
+
33
+ #: feedzy-rss-feeds-shortcode.php:298
34
+ #@ feedzy_rss_translate
35
+ msgid "at"
36
+ msgstr "u"
37
+
38
+ #: feedzy-rss-feed.php:37
39
+ #@ feedzy_rss_translate
40
+ msgid "Documentation and examples"
41
+ msgstr "Dokumentacija i primeri"
42
+
43
+ #: feedzy-rss-feed.php:38
44
+ #@ feedzy_rss_translate
45
+ msgid "More b*web Plugins"
46
+ msgstr "Više b*web Plugin-ova"
47
+
48
+ #: feedzy-rss-feeds-ui-lang.php:19
49
+ #@ feedzy_rss_translate
50
+ msgid "Insert FEEDZY RSS Feeds Shortcode"
51
+ msgstr "Unesite FEEDZY RSS Feeds Shortcode"
52
+
53
+ #: feedzy-rss-feeds-ui-lang.php:21
54
+ #: feedzy-rss-feeds-widget.php:69
55
+ #@ feedzy_rss_translate
56
+ msgid "Number of items to display."
57
+ msgstr "Broj stavki za prikazivanje"
58
+
59
+ #: feedzy-rss-feeds-ui-lang.php:23
60
+ #: feedzy-rss-feeds-widget.php:73
61
+ #@ feedzy_rss_translate
62
+ msgid "Links may be opened in the same window or a new tab."
63
+ msgstr "Linkovi mogu biti otvoreni u istom prozoru ili u novom tabulatoru."
64
+
65
+ #: feedzy-rss-feeds-ui-lang.php:24
66
+ #: feedzy-rss-feeds-widget.php:84
67
+ #@ feedzy_rss_translate
68
+ msgid "Trim the title of the item after X characters."
69
+ msgstr "Skratite naslov stavke posle X karaktera."
70
+
71
+ #: feedzy-rss-feeds-ui-lang.php:25
72
+ #: feedzy-rss-feeds-widget.php:89
73
+ #@ feedzy_rss_translate
74
+ msgid "Should we display the date of publication and the author name?"
75
+ msgstr "Treba li da prikažemo datum publikacije i ime autora?"
76
+
77
+ #: feedzy-rss-feeds-ui-lang.php:26
78
+ #: feedzy-rss-feeds-widget.php:93
79
+ #@ feedzy_rss_translate
80
+ msgid "Should we display a description (abstract) of the retrieved item?"
81
+ msgstr "Treba li da prikažemo opis (siže) dobavljene stavke?"
82
+
83
+ #: feedzy-rss-feeds-ui-lang.php:27
84
+ #: feedzy-rss-feeds-widget.php:96
85
+ #@ feedzy_rss_translate
86
+ msgid "Crop description (summary) of the element after X characters."
87
+ msgstr "Kropuj opis (siže) elementa posle X karaktera."
88
+
89
+ #: feedzy-rss-feeds-ui-lang.php:28
90
+ #: feedzy-rss-feeds-widget.php:101
91
+ #@ feedzy_rss_translate
92
+ msgid "Should we display the first image of the content if it is available?"
93
+ msgstr "Treba li da prikažemo prvu sliku sadržaja ako je raspoloživa?"
94
+
95
+ #: feedzy-rss-feeds-ui-lang.php:29
96
+ #: feedzy-rss-feeds-widget.php:104
97
+ #@ feedzy_rss_translate
98
+ msgid "Default thumbnail URL if no image is found."
99
+ msgstr "URL podrazumevane sličice ako nije pronađena nijedna slika."
100
+
101
+ #: feedzy-rss-feeds-ui-lang.php:30
102
+ #: feedzy-rss-feeds-widget.php:108
103
+ #@ feedzy_rss_translate
104
+ msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
105
+ msgstr "Dimenzije sličice. Nemojte unositi \"px\". Npr. 150"
106
+
107
+ #: feedzy-rss-feeds-ui-lang.php:31
108
+ #: feedzy-rss-feeds-widget.php:112
109
+ #@ feedzy_rss_translate
110
+ msgid "Only display item if title contains specific keyword(s) (comma-separated list/case sensitive)."
111
+ msgstr "Prikaži stavku samo ako naslov sadrži specifične ključne reči (odvojene zarezima/osetljive na velika i mala slova)."
112
+
113
+ #: feedzy-rss-feeds-ui-lang.php:32
114
+ #@ feedzy_rss_translate
115
+ msgid "Do not specify"
116
+ msgstr "Nemoj određivati"
117
+
118
+ #: feedzy-rss-feeds-ui-lang.php:33
119
+ #@ feedzy_rss_translate
120
+ msgid "No"
121
+ msgstr "Ne"
122
+
123
+ #: feedzy-rss-feeds-ui-lang.php:34
124
+ #@ feedzy_rss_translate
125
+ msgid "Yes"
126
+ msgstr "Da"
127
+
128
+ #: feedzy-rss-feeds-ui-lang.php:20
129
+ #: feedzy-rss-feeds-widget.php:65
130
+ #@ feedzy_rss_translate
131
+ msgid "The feed(s) URL (comma-separated list)."
132
+ msgstr "URL feed-ova (odvojenih zarezima ako je lista)."
133
+
134
+ #: feedzy-rss-feeds-ui-lang.php:22
135
+ #@ feedzy_rss_translate
136
+ msgid "Should we display the RSS title?"
137
+ msgstr "Treba li da prikažemo RSS naslov?"
138
+
139
+ #. translators: plugin header field 'Name'
140
+ #: feedzy-rss-feed.php:0
141
+ #@ feedzy_rss_translate
142
+ msgid "FEEDZY RSS Feeds by b*web"
143
+ msgstr "FEEDZY RSS Feeds, autor b*web"
144
+
145
+ #. translators: plugin header field 'Description'
146
+ #: feedzy-rss-feed.php:0
147
+ #@ feedzy_rss_translate
148
+ msgid "FEEDZY RSS Feeds is a small and lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your WordPress site through simple shortcodes."
149
+ msgstr "FEEDZY RSS Feeds je mali i lagan plugin. Brz i jednostavan za upotrebu, sakuplja RSS feed-ove na vaš WordPress site uz pomoć jednostavnih shortcode-ova."
150
+
151
+ #. translators: plugin header field 'Author'
152
+ #: feedzy-rss-feed.php:0
153
+ #@ feedzy_rss_translate
154
+ msgid "Brice CAPOBIANCO"
155
+ msgstr "Brice CAPOBIANCO"
156
+
157
+ #. translators: plugin header field 'AuthorURI'
158
+ #: feedzy-rss-feed.php:0
159
+ #@ feedzy_rss_translate
160
+ msgid "http://b-website.com/"
161
+ msgstr "http://b-website.com/"
162
+
163
+ #. translators: plugin header field 'PluginURI'
164
+ #: feedzy-rss-feed.php:0
165
+ #@ feedzy_rss_translate
166
+ msgid "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
167
+ msgstr "http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie"
168
+
169
+ #. translators: plugin header field 'Version'
170
+ #: feedzy-rss-feed.php:0
171
+ #@ feedzy_rss_translate
172
+ msgid "2.2.1"
173
+ msgstr ""
174
+
175
+ #: feedzy-rss-feed.php:39
176
+ #@ default
177
+ msgid "Donate to this plugin &#187;"
178
+ msgstr ""
179
+
180
+ #: feedzy-rss-feeds-shortcode.php:289
181
+ #@ feedzy_rss_translate
182
+ msgid "Posted"
183
+ msgstr "Objavljeno"
184
+
185
+ #: feedzy-rss-feeds-shortcode.php:294
186
+ #@ feedzy_rss_translate
187
+ msgid "by"
188
+ msgstr "po"
189
+
190
+ #: feedzy-rss-feeds-widget.php:18
191
+ #@ feedzy_wp_widget
192
+ msgid "Feedzy RSS Feeds"
193
+ msgstr ""
194
+
195
+ #: feedzy-rss-feeds-widget.php:57
196
+ #@ feedzy_rss_translate
197
+ msgid "Widget Title"
198
+ msgstr "dodatak Naslov"
199
+
200
+ #: feedzy-rss-feeds-widget.php:61
201
+ #@ feedzy_rss_translate
202
+ msgid "Intro text"
203
+ msgstr "Uvodni tekst"
204
+
languages/feedzy_rss_translate.pot ADDED
@@ -0,0 +1,304 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 Themeisle
2
+ # This file is distributed under the GPL-2.0+.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Feedzy RSS Feeds Lite 3.0.0\n"
6
+ "Report-Msgid-Bugs-To: https://github.com/Codeinwp/feedzy-rss-feeds/issues\n"
7
+ "POT-Creation-Date: 2017-01-03 11:20:13+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
+ "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
14
+ "X-Generator: grunt-wp-i18n 0.5.4\n"
15
+ "X-Poedit-KeywordsList: "
16
+ "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
17
+ "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
18
+ "Language: en\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-Country: United States\n"
21
+ "X-Poedit-SourceCharset: UTF-8\n"
22
+ "X-Poedit-Basepath: ../\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+ "X-Poedit-Bookmarks: \n"
25
+ "X-Textdomain-Support: yes\n"
26
+
27
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:51
28
+ msgid "Sorry, this feed is currently unavailable or does not exists anymore."
29
+ msgstr ""
30
+
31
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:559
32
+ msgid "by"
33
+ msgstr ""
34
+
35
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:564
36
+ msgid "on"
37
+ msgstr ""
38
+
39
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:566
40
+ msgid "at"
41
+ msgstr ""
42
+
43
+ #: includes/admin/feedzy-rss-feeds-admin.php:118
44
+ msgid "Documentation and examples"
45
+ msgstr ""
46
+
47
+ #: includes/admin/feedzy-rss-feeds-admin.php:119
48
+ msgid "More Plugins"
49
+ msgstr ""
50
+
51
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:53
52
+ msgid "Feedzy Lite"
53
+ msgstr ""
54
+
55
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:54
56
+ msgid "Insert Feedzy RSS Feeds Shortcode"
57
+ msgstr ""
58
+
59
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:55
60
+ msgid "Use Image"
61
+ msgstr ""
62
+
63
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:56
64
+ msgid "Insert Shortcode"
65
+ msgstr ""
66
+
67
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:57
68
+ msgid "Cancel"
69
+ msgstr ""
70
+
71
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:58
72
+ msgid "Get Feedzy RSS Feeds Premium"
73
+ msgstr ""
74
+
75
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:108
76
+ msgid "Feed Source"
77
+ msgstr ""
78
+
79
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:111
80
+ msgid "The feed(s) URL (comma-separated list)."
81
+ msgstr ""
82
+
83
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:111
84
+ msgid "Check feed before insert."
85
+ msgstr ""
86
+
87
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:112
88
+ msgid "Feed URL"
89
+ msgstr ""
90
+
91
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:117
92
+ msgid "Number of items to display."
93
+ msgstr ""
94
+
95
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:118
96
+ msgid "(eg: 5)"
97
+ msgstr ""
98
+
99
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:123
100
+ msgid "Should we display the RSS title?"
101
+ msgstr ""
102
+
103
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:128
104
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:152
105
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:189
106
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:208
107
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:244
108
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:285
109
+ msgid "Auto"
110
+ msgstr ""
111
+
112
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:132
113
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:193
114
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:212
115
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:248
116
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:289
117
+ msgid "Yes"
118
+ msgstr ""
119
+
120
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:136
121
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:197
122
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:216
123
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:252
124
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:293
125
+ msgid "No"
126
+ msgstr ""
127
+
128
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:144
129
+ msgid "Item Options"
130
+ msgstr ""
131
+
132
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:147
133
+ msgid "Links may be opened in the same window or a new tab."
134
+ msgstr ""
135
+
136
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:156
137
+ msgid "_blank"
138
+ msgstr ""
139
+
140
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:160
141
+ msgid "_self"
142
+ msgstr ""
143
+
144
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:164
145
+ msgid "_parent"
146
+ msgstr ""
147
+
148
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:168
149
+ msgid "_top"
150
+ msgstr ""
151
+
152
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:172
153
+ msgid "framename"
154
+ msgstr ""
155
+
156
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:178
157
+ msgid "Trim the title of the item after X characters."
158
+ msgstr ""
159
+
160
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:179
161
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:224
162
+ msgid "(eg: 160)"
163
+ msgstr ""
164
+
165
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:184
166
+ msgid "Should we display the date of publication and the author name?"
167
+ msgstr ""
168
+
169
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:203
170
+ msgid "Should we display a description (abstract) of the retrieved item?"
171
+ msgstr ""
172
+
173
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:222
174
+ msgid "Crop description (summary) of the element after X characters."
175
+ msgstr ""
176
+
177
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:228
178
+ msgid ""
179
+ "Only display item if title contains specific keyword(s) (comma-separated "
180
+ "list/case sensitive)."
181
+ msgstr ""
182
+
183
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:229
184
+ msgid "(eg: news, sports etc.)"
185
+ msgstr ""
186
+
187
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:236
188
+ msgid "Item Image Options"
189
+ msgstr ""
190
+
191
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:239
192
+ msgid "Should we display the first image of the content if it is available?"
193
+ msgstr ""
194
+
195
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:258
196
+ msgid "Default thumbnail URL if no image is found."
197
+ msgstr ""
198
+
199
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:259
200
+ msgid "Image URL"
201
+ msgstr ""
202
+
203
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:263
204
+ msgid "Select from Gallery"
205
+ msgstr ""
206
+
207
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:267
208
+ msgid "Thumblails dimension. Do not include \"px\". Eg: 150"
209
+ msgstr ""
210
+
211
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:268
212
+ msgid "(eg: 150)"
213
+ msgstr ""
214
+
215
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:275
216
+ msgid "PRO Options"
217
+ msgstr ""
218
+
219
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:276
220
+ msgid ""
221
+ "Get access to more options and customizations with full version of Feedzy "
222
+ "RSS Feeds . Use existing templates or extend them and make them your own."
223
+ msgstr ""
224
+
225
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:276
226
+ msgid "See more features of Feedzy RSS Feeds "
227
+ msgstr ""
228
+
229
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:279
230
+ msgid "Should we display the price from the feed if it is available?"
231
+ msgstr ""
232
+
233
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:279
234
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:299
235
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:306
236
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:313
237
+ msgid "Premium"
238
+ msgstr ""
239
+
240
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:299
241
+ msgid "Referral URL parameters (w/o \"?\")."
242
+ msgstr ""
243
+
244
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:300
245
+ msgid "(eg. promo_code=feedzy_is_awesome)"
246
+ msgstr ""
247
+
248
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:306
249
+ msgid "How many columns we should use to display the feed items"
250
+ msgstr ""
251
+
252
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:307
253
+ msgid "(eg. 1, 2, ..., 6)"
254
+ msgstr ""
255
+
256
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:313
257
+ msgid "Template to use when displaying the feed."
258
+ msgstr ""
259
+
260
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:319
261
+ msgid "Default"
262
+ msgstr ""
263
+
264
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:323
265
+ msgid "Style 1"
266
+ msgstr ""
267
+
268
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:327
269
+ msgid "Style 2"
270
+ msgstr ""
271
+
272
+ #: includes/admin/feedzy-wp-widget.php:47
273
+ msgid "Feedzy RSS Feeds"
274
+ msgstr ""
275
+
276
+ #: includes/admin/feedzy-wp-widget.php:91
277
+ msgid "Widget Title"
278
+ msgstr ""
279
+
280
+ #: includes/admin/feedzy-wp-widget.php:95
281
+ msgid "Intro text"
282
+ msgstr ""
283
+
284
+ #. Plugin Name of the plugin/theme
285
+ msgid "Feedzy RSS Feeds Lite"
286
+ msgstr ""
287
+
288
+ #. Plugin URI of the plugin/theme
289
+ msgid "https://themeisle.com/plugins/feedzy-rss-feeds-lite/"
290
+ msgstr ""
291
+
292
+ #. Description of the plugin/theme
293
+ msgid ""
294
+ "This is a short description of what the plugin does. It's displayed in the "
295
+ "WordPress admin area."
296
+ msgstr ""
297
+
298
+ #. Author of the plugin/theme
299
+ msgid "Themeisle"
300
+ msgstr ""
301
+
302
+ #. Author URI of the plugin/theme
303
+ msgid "http://themeisle.com"
304
+ msgstr ""
readme.txt CHANGED
@@ -1,298 +1,313 @@
1
- === FEEDZY RSS Feeds ===
2
- Contributors: briKou, themeisle
3
- Tags: RSS, SimplePie, shortcode, feed, thumbnail, image, rss feeds, aggregator, tinyMCE, WYSIWYG, MCE, UI, flux, plugin, WordPress, widget, importer, XML, ATOM, API, parser
4
- Requires at least: 3.7
5
- Tested up to: 4.5
6
- Stable tag: 2.8
7
- License: GPLv2 or later
8
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
-
10
-
11
- FEEDZY RSS Feeds is a small & lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your site with shortcodes & widgets.
12
-
13
- == Description ==
14
-
15
- FEEDZY RSS Feeds is a small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
16
-
17
- The plugin uses the SimplePie php CLASS natively included in WordPress. SimplePie is a RSS parser that can read the information contained in a feed, process it, and finally display it.
18
-
19
- FEEDZY RSS Feeds therefore supports any additional library and uses only the bare minimum to ensure good performance (minimalistic CSS + cache).
20
-
21
- You may use this plugin in your widgets and your pages and reuse the shortcode + widget several times within the same page.
22
-
23
- By activating this plugin, your cover picture will be inserted into your RSS feeds. By doing so, you'll make it will easier for external sites to retrieve images from your feeds.
24
-
25
-
26
- [CHECK OUT THE DEMO](http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie "Try It!")
27
-
28
-
29
- **Please ask for help or report bugs if anything goes wrong. It is the best way to make the community benefit!**
30
-
31
-
32
- = Shortcode Parameters =
33
-
34
- `
35
- * feeds
36
- * max
37
- * feed_title
38
- * target
39
- * title
40
- * meta
41
- * summary
42
- * summarylength
43
- * thumb
44
- * default
45
- * size
46
- * keywords_title
47
- `
48
-
49
-
50
- **Plugin is now using the TinyMCE API to improve UI and makes it easy to insert shortcodes!**
51
-
52
-
53
- = Basic example =
54
-
55
- `[feedzy-rss feeds="http://b-website.com/feed"]`
56
-
57
-
58
- = Advanced example =
59
-
60
- `[feedzy-rss feeds="http://b-website.com/feed" max="2" feed_title="yes" target="_blank" title="50" meta="yes" summary="yes" summarylength="300" thumb="yes" size="100" default="http://your-site/default-image.jpg" keywords_title="WordPress"]`
61
-
62
-
63
- = Available Hooks =
64
-
65
- `
66
- * feedzy_feed_items
67
- * feedzy_item_keyword
68
- * feedzy_item_attributes
69
- * feedzy_thumb_output
70
- * feedzy_title_output
71
- * feedzy_meta_args
72
- * feedzy_meta_output
73
- * feedzy_summary_input
74
- * feedzy_summary_output
75
- * feedzy_global_output
76
- * feedzy_thumb_sizes
77
- * feedzy_feed_blacklist_images
78
- * feedzy_default_image
79
- * feedzy_default_error
80
- * shortcode_atts_feedzy_default
81
- `
82
-
83
-
84
- [FULL DOCUMENTATION AND EXAMPLES](http://b-website.com/feedzy-rss-feeds-wordpress-plugin-using-simplepie "Documentation & examples")
85
-
86
- = Languages =
87
-
88
- * English
89
- * French
90
- * Serbian [Borisa Djuraskovic](http://www.webhostinghub.com/ "Borisa Djuraskovic")
91
- * Japanese [sama55](http://askive.cmsbox.jp/ "sama55")
92
- * German [ralfsteck](https://profiles.wordpress.org/ralfsteck/ "ralfsteck")
93
- * Spanish [Angel Calzado](http://sintaxisweb.es "Angel Calzado")
94
-
95
- Become a translator and send me your translation! [Contact-me](http://b-website.com/contact "Contact")
96
-
97
- == Installation ==
98
-
99
- 1. Upload and activate the plugin (or install it through the WP admin console)
100
- 2. Insert shortcode ! ;-)
101
-
102
- == Frequently Asked Questions ==
103
-
104
- = Is it responsive friendly? =
105
-
106
- Yes it is.
107
-
108
- = My feed is not displayed and the following message appears "Sorry, this feed is currently unavailable or does not exists anymore." =
109
-
110
- You have to check first if your feed is valid. Please test it here: https://validator.w3.org/feed/
111
-
112
-
113
- == Screenshots ==
114
-
115
- 1. Simple example
116
- 2. Inserting a shortcode in the WYSIWYG
117
- 3. Widget admin
118
- 4. Widget render
119
-
120
-
121
- == Changelog ==
122
- = 2.8 - 04/14/2016 =
123
- * Tested on WP 4.5 with success!
124
- * themeisle added as plugin author
125
- * Fix a PHP7 warning in the widget contructor regarding [this topic](https://wordpress.org/support/topic/php7-debug-error?replies=1)
126
-
127
- = 2.7.1 =
128
- * Remove unnecessary and redundant feedzy_wp_widget_box div container in the widget's body
129
- * Best compliance with WordPress coding standards
130
- * Fix a PHP warning on SimplePie error display & log
131
- * Readme.txt update
132
-
133
- = 2.7 =
134
- * Better displaying of fetching feeds errors (see error message div error-attr).
135
- * Write errors in the WP log file
136
- * New hook: feedzy_default_error to filter error message
137
- * New hook: shortcode_atts_feedzy_default to filter default shortcode attibutes
138
- * Add a link to validate feed in the TinyMCE popup modal
139
- * French translation update
140
- * Remove unnecessary functions
141
- * New constant FEEDZY_VERSION
142
- * readme.txt and hooks documentation update
143
-
144
- = 2.6.2 =
145
- * Spanish translation thanks to [Angel Calzado](http://sintaxisweb.es "Angel Calzado")
146
- * PHP issue fix in feedzy_returnImage() "strpos() expects parameter 1 to be string"
147
- * Remove SSL from feeds URL to prevent fetching errors
148
- * New hook: feedzy_default_image
149
- * readme.txt and hooks documentation update
150
-
151
- = 2.6.1 =
152
- * Replace jQuery live() function by on() function to prevent JS error (fix the issue with Visual composer)
153
- * Improve image's fetching on itunes feeds
154
- * New feature: default WP smilies are now blacklisted from image fetching
155
- * New hook: feedzy_feed_blacklist_images
156
- * Tested on WP 4.3 with success!
157
-
158
- = 2.6 =
159
- * Fix a conflict with PageBuilder where Feedzy button does not show up in the visual editor
160
- * Fix a typo in feedzy-rss-feeds-shortcode.php on the thumbnails span
161
- * Replace WP_Widget by __construct() to initiate the widget because it has been deprecated since version 4.3.0
162
- * German translation thanks to [ralfsteck](https://profiles.wordpress.org/ralfsteck/ "ralfsteck")
163
- * Tested on WP 4.3 with success!
164
-
165
- = 2.5.1 =
166
- * Japanese translation thanks to [sama55](http://askive.cmsbox.jp/ "sama55")
167
- * Image optimisation (feedzy-default.jpg)
168
- * Improve image's fetching to avoid catching audio or video files from item description
169
-
170
- = 2.5 =
171
- * Improve author name fetching
172
- * Better HTML marckup
173
- * Fix PHP warning within the widget
174
- * Fix CSS on IE when displaying images as a fallback
175
- * CSS stylesheet update
176
- * New hook: feedzy_item_attributes
177
-
178
- = 2.4.3 =
179
- * Improve image fetching (again...)
180
- * Fix an issue on files encoding (UTF8)
181
- * Minor PHP improvements on the main shortcode's function
182
-
183
- = 2.4.2 =
184
- * Minor fix on already encoded images names
185
-
186
- = 2.4.1 =
187
- * Fix an issue on img url encode
188
- * Retrive img url in url parameters
189
- * Fix minor PHP warning
190
- * New hook: feedzy_add_classes_item
191
-
192
- = 2.4 =
193
- * New feature: 'auto' thumbs option added
194
- * New hook: feedzy_thumb_sizes
195
- * Fix issue on max number of feeds to display
196
- * Fix HTML decode in the feed's title
197
- * Minor PHP improvements
198
- * readme.txt and hooks documentation update
199
-
200
- = 2.3 =
201
- * New hook: feedzy_feed_items
202
- * New hook: feedzy_item_keyword
203
- * Introduce SimplePie native strip_htmltags() method
204
- * Use PNG icon as SVG fallback on the visual editor button
205
- * Improve plugin's files structure
206
- * readme.txt and hooks documentation update
207
-
208
- = 2.2.2 =
209
- * New hook: feedzy_meta_args
210
-
211
- = 2.2.1 =
212
- * Minor security improvements
213
- * Better WordPress coding standard respect
214
- * Minor fix if does not provide item's author
215
- * Translations update
216
-
217
- = 2.2 =
218
- * Minor PHP improvements
219
- * Remove logo from plugin meta
220
- * New hook: feedzy_summary_input
221
- * $feedURL argument added on every available hooks
222
- * French translation update
223
- * readme.txt and hooks documentation update
224
-
225
- = 2.1 =
226
- * internationalization of feeds dates and times (date_i18n)
227
-
228
- = 2.0 =
229
- * Widget added
230
- * Translation update
231
- * Better plugin file structure
232
- * Improve image fetching with multiple enclosures
233
- * Tested on WP 4.1 with success!
234
-
235
- = 1.7.1 =
236
- * Fix typo in PHP which cause issue on fetching images
237
-
238
- = 1.7 =
239
- * Minor Template and CSS changes
240
- * New hook: feedzy_thumb_output
241
- * New hook: feedzy_title_output
242
- * New hook: feedzy_meta_output
243
- * New hook: feedzy_summary_output
244
- * New hook: feedzy_global_output
245
- * readme.txt update
246
-
247
- = 1.6 =
248
- * Minor CSS fix
249
- * Add actions: add_action('rss_item', 'feedzy_include_thumbnail_RSS'); & add_action('rss2_item', 'feedzy_include_thumbnail_RSS')
250
-
251
- = 1.5.4 =
252
- * Plugin meta translation
253
- * Remove unnecessary spaces
254
-
255
- = 1.5.3 =
256
- * TinyMCE UI translation
257
- * Better fetching image
258
- * Space between items is calculated based on thumbs size
259
-
260
- = 1.5.2 =
261
- * Plugin meta update
262
-
263
- = 1.5.1 =
264
- * New logo
265
- * Minor CSS fixes
266
-
267
- = 1.5 =
268
- * New param added to filter item with keywords
269
- * Default thumb added
270
- * Fix minor php issue
271
- * Rename files of the plugin
272
- * New logo + screenshot (assets)
273
-
274
- = 1.4 =
275
- * Add "default" parameter to fill image container if no image is fetch or if it is offline
276
- * Add more control over numeric format in max, size, title & summarylength parameters
277
-
278
- = 1.03 =
279
- * Shortcode can now be displayed everywhere in the page (CSS is loaded via global var)
280
-
281
- = 1.02 =
282
- * Error on svn tag
283
-
284
- = 1.01 =
285
- * Minor CSS fix.
286
- * Minor PHP changes.
287
- * Readme.txt updated
288
-
289
- = 1.0 =
290
- * First release.
291
-
292
- == Upgrade Notice ==
293
-
294
- = 1.5 =
295
- * IMPORTANT: You have to reactivate the plugin after its update!
296
-
297
- = 1.0 =
298
- * First release.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === FEEDZY RSS Feeds Lite ===
2
+ Contributors: themeisle,codeinwp
3
+ Tags: RSS, SimplePie, shortcode, feed, thumbnail, image, rss feeds, aggregator, tinyMCE, WYSIWYG, MCE, UI, flux, plugin, WordPress, widget, importer, XML, ATOM, API, parser
4
+ Requires at least: 3.7
5
+ Tested up to: 4.7
6
+ Stable tag: 3.0.0
7
+ License: GPLv2 or later
8
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
+
10
+
11
+ FEEDZY RSS Feeds is a small & lightweight plugin. Fast and easy to use, it aggregates RSS feeds into your site with shortcodes & widgets.
12
+
13
+
14
+ == Description ==
15
+
16
+ FEEDZY RSS Feeds is a small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
17
+
18
+ > **Time-saving features available in the FULL version:**
19
+ >
20
+ > * Multiple templates for feed items
21
+ > * Automatically build affiliate links
22
+ > * Parse price from product feeds
23
+ > * Priority email support from the developer of the plugin
24
+ > * Support and updates for 12 months
25
+ >
26
+ > **[Learn more about Feedzy Full version]( https://themeisle.com/plugins/feedzy-rss-feeds/ )**
27
+
28
+
29
+ The plugin uses the SimplePie php CLASS natively included in WordPress. SimplePie is a RSS parser that can read the information contained in a feed, process it, and finally display it.
30
+
31
+ FEEDZY RSS Feeds therefore supports any additional library and uses only the bare minimum to ensure good performance (minimalistic CSS + cache). This will ensure compatibility with any hosting provider that supports WordPress, but if for any reason it doesn't work for yours feel free to <a href="http://themeisle.com/contact/" rel="nofollow">contact us</a>.
32
+
33
+ You may use this plugin in your widgets and your pages and reuse the shortcode + widget several times within the same page.
34
+
35
+ By activating this plugin, your cover picture will be inserted into your RSS feeds. By doing so, you'll make it will easier for external sites to retrieve images from your feeds.
36
+
37
+ **Please ask for help or report bugs if anything goes wrong. It is the best way to make the community benefit!**
38
+
39
+
40
+ = Shortcode Parameters =
41
+
42
+ `
43
+ * feeds
44
+ * max
45
+ * feed_title
46
+ * target
47
+ * title
48
+ * meta
49
+ * summary
50
+ * summarylength
51
+ * thumb
52
+ * default
53
+ * size
54
+ * keywords_title
55
+ `
56
+
57
+
58
+ **Plugin is now using the TinyMCE API to improve UI and makes it easy to insert shortcodes!**
59
+
60
+
61
+ = Basic example =
62
+
63
+ `[feedzy-rss feeds="http://themeisle.com/feed"]`
64
+
65
+
66
+ = Advanced example =
67
+
68
+ `[feedzy-rss feeds="http://themeisle.com/feed" max="2" feed_title="yes" target="_blank" title="50" meta="yes" summary="yes" summarylength="300" thumb="yes" size="100" default="http://your-site/default-image.jpg" keywords_title="WordPress"]`
69
+
70
+
71
+ = Available Hooks =
72
+
73
+ `
74
+ * feedzy_feed_items
75
+ * feedzy_item_keyword
76
+ * feedzy_item_attributes
77
+ * feedzy_thumb_output
78
+ * feedzy_title_output
79
+ * feedzy_meta_args
80
+ * feedzy_meta_output
81
+ * feedzy_summary_input
82
+ * feedzy_summary_output
83
+ * feedzy_global_output
84
+ * feedzy_thumb_sizes
85
+ * feedzy_feed_blacklist_images
86
+ * feedzy_default_image
87
+ * feedzy_default_error
88
+ * feedzy_item_filter
89
+ * feedzy_item_url_filter
90
+ * shortcode_atts_feedzy_default
91
+ `
92
+ This plugin is maintained and supported by Themeisle, check out some of the other <a href="http://themeisle.com/wordpress-plugins/" rel="nofollow">WordPress plugins</a> and <a href="http://themeisle.com/wordpress-themes/free/" rel="nofollow">free themes</a> we've developed.
93
+
94
+ = Languages =
95
+
96
+ * English
97
+ * French
98
+ * Serbian [Borisa Djuraskovic](http://www.webhostinghub.com/ "Borisa Djuraskovic")
99
+ * Japanese [sama55](http://askive.cmsbox.jp/ "sama55")
100
+ * German [ralfsteck](https://profiles.wordpress.org/ralfsteck/ "ralfsteck")
101
+ * Spanish [Angel Calzado](http://sintaxisweb.es "Angel Calzado")
102
+
103
+ Become a translator and send me your translation! [Contact-me](http://themeisle.com/contact "Contact")
104
+
105
+ == Installation ==
106
+
107
+ 1. Upload and activate the plugin (or install it through the WP admin console)
108
+ 2. Insert shortcode ! ;-)
109
+
110
+ == Frequently Asked Questions ==
111
+
112
+ = Is it responsive friendly? =
113
+
114
+ Yes it is.
115
+
116
+ = My feed is not displayed and the following message appears "Sorry, this feed is currently unavailable or does not exists anymore." =
117
+
118
+ You have to check first if your feed is valid. Please test it here: https://validator.w3.org/feed/
119
+
120
+
121
+ == Screenshots ==
122
+
123
+ 1. Simple example
124
+ 2. Inserting a shortcode in the WYSIWYG
125
+ 3. Widget admin
126
+ 4. Widget render
127
+
128
+
129
+ == Changelog ==
130
+
131
+ = 3.0.0 - 10/11/2016 =
132
+ * Refactored code base from 2.8.1 to OOP style
133
+ * Added support for PRO version
134
+ * Added new hooks feedzy_item_filter, feedzy_item_url_filter
135
+
136
+
137
+ = 2.8 - 04/14/2016 =
138
+ * Tested on WP 4.5 with success!
139
+ * themeisle added as plugin author
140
+ * Fix a PHP7 warning in the widget contructor regarding [this topic](https://wordpress.org/support/topic/php7-debug-error?replies=1)
141
+
142
+ = 2.7.1 =
143
+ * Remove unnecessary and redundant feedzy_wp_widget_box div container in the widget's body
144
+ * Best compliance with WordPress coding standards
145
+ * Fix a PHP warning on SimplePie error display & log
146
+ * Readme.txt update
147
+
148
+ = 2.7 =
149
+ * Better displaying of fetching feeds errors (see error message div error-attr).
150
+ * Write errors in the WP log file
151
+ * New hook: feedzy_default_error to filter error message
152
+ * New hook: shortcode_atts_feedzy_default to filter default shortcode attibutes
153
+ * Add a link to validate feed in the TinyMCE popup modal
154
+ * French translation update
155
+ * Remove unnecessary functions
156
+ * New constant FEEDZY_VERSION
157
+ * readme.txt and hooks documentation update
158
+
159
+ = 2.6.2 =
160
+ * Spanish translation thanks to [Angel Calzado](http://sintaxisweb.es "Angel Calzado")
161
+ * PHP issue fix in feedzy_returnImage() "strpos() expects parameter 1 to be string"
162
+ * Remove SSL from feeds URL to prevent fetching errors
163
+ * New hook: feedzy_default_image
164
+ * readme.txt and hooks documentation update
165
+
166
+ = 2.6.1 =
167
+ * Replace jQuery live() function by on() function to prevent JS error (fix the issue with Visual composer)
168
+ * Improve image's fetching on itunes feeds
169
+ * New feature: default WP smilies are now blacklisted from image fetching
170
+ * New hook: feedzy_feed_blacklist_images
171
+ * Tested on WP 4.3 with success!
172
+
173
+ = 2.6 =
174
+ * Fix a conflict with PageBuilder where Feedzy button does not show up in the visual editor
175
+ * Fix a typo in feedzy-rss-feeds-shortcode.php on the thumbnails span
176
+ * Replace WP_Widget by __construct() to initiate the widget because it has been deprecated since version 4.3.0
177
+ * German translation thanks to [ralfsteck](https://profiles.wordpress.org/ralfsteck/ "ralfsteck")
178
+ * Tested on WP 4.3 with success!
179
+
180
+ = 2.5.1 =
181
+ * Japanese translation thanks to [sama55](http://askive.cmsbox.jp/ "sama55")
182
+ * Image optimisation (feedzy-default.jpg)
183
+ * Improve image's fetching to avoid catching audio or video files from item description
184
+
185
+ = 2.5 =
186
+ * Improve author name fetching
187
+ * Better HTML marckup
188
+ * Fix PHP warning within the widget
189
+ * Fix CSS on IE when displaying images as a fallback
190
+ * CSS stylesheet update
191
+ * New hook: feedzy_item_attributes
192
+
193
+ = 2.4.3 =
194
+ * Improve image fetching (again...)
195
+ * Fix an issue on files encoding (UTF8)
196
+ * Minor PHP improvements on the main shortcode's function
197
+
198
+ = 2.4.2 =
199
+ * Minor fix on already encoded images names
200
+
201
+ = 2.4.1 =
202
+ * Fix an issue on img url encode
203
+ * Retrive img url in url parameters
204
+ * Fix minor PHP warning
205
+ * New hook: feedzy_add_classes_item
206
+
207
+ = 2.4 =
208
+ * New feature: 'auto' thumbs option added
209
+ * New hook: feedzy_thumb_sizes
210
+ * Fix issue on max number of feeds to display
211
+ * Fix HTML decode in the feed's title
212
+ * Minor PHP improvements
213
+ * readme.txt and hooks documentation update
214
+
215
+ = 2.3 =
216
+ * New hook: feedzy_feed_items
217
+ * New hook: feedzy_item_keyword
218
+ * Introduce SimplePie native strip_htmltags() method
219
+ * Use PNG icon as SVG fallback on the visual editor button
220
+ * Improve plugin's files structure
221
+ * readme.txt and hooks documentation update
222
+
223
+ = 2.2.2 =
224
+ * New hook: feedzy_meta_args
225
+
226
+ = 2.2.1 =
227
+ * Minor security improvements
228
+ * Better WordPress coding standard respect
229
+ * Minor fix if does not provide item's author
230
+ * Translations update
231
+
232
+ = 2.2 =
233
+ * Minor PHP improvements
234
+ * Remove logo from plugin meta
235
+ * New hook: feedzy_summary_input
236
+ * $feedURL argument added on every available hooks
237
+ * French translation update
238
+ * readme.txt and hooks documentation update
239
+
240
+ = 2.1 =
241
+ * internationalization of feeds dates and times (date_i18n)
242
+
243
+ = 2.0 =
244
+ * Widget added
245
+ * Translation update
246
+ * Better plugin file structure
247
+ * Improve image fetching with multiple enclosures
248
+ * Tested on WP 4.1 with success!
249
+
250
+ = 1.7.1 =
251
+ * Fix typo in PHP which cause issue on fetching images
252
+
253
+ = 1.7 =
254
+ * Minor Template and CSS changes
255
+ * New hook: feedzy_thumb_output
256
+ * New hook: feedzy_title_output
257
+ * New hook: feedzy_meta_output
258
+ * New hook: feedzy_summary_output
259
+ * New hook: feedzy_global_output
260
+ * readme.txt update
261
+
262
+ = 1.6 =
263
+ * Minor CSS fix
264
+ * Add actions: add_action('rss_item', 'feedzy_include_thumbnail_RSS'); & add_action('rss2_item', 'feedzy_include_thumbnail_RSS')
265
+
266
+ = 1.5.4 =
267
+ * Plugin meta translation
268
+ * Remove unnecessary spaces
269
+
270
+ = 1.5.3 =
271
+ * TinyMCE UI translation
272
+ * Better fetching image
273
+ * Space between items is calculated based on thumbs size
274
+
275
+ = 1.5.2 =
276
+ * Plugin meta update
277
+
278
+ = 1.5.1 =
279
+ * New logo
280
+ * Minor CSS fixes
281
+
282
+ = 1.5 =
283
+ * New param added to filter item with keywords
284
+ * Default thumb added
285
+ * Fix minor php issue
286
+ * Rename files of the plugin
287
+ * New logo + screenshot (assets)
288
+
289
+ = 1.4 =
290
+ * Add "default" parameter to fill image container if no image is fetch or if it is offline
291
+ * Add more control over numeric format in max, size, title & summarylength parameters
292
+
293
+ = 1.03 =
294
+ * Shortcode can now be displayed everywhere in the page (CSS is loaded via global var)
295
+
296
+ = 1.02 =
297
+ * Error on svn tag
298
+
299
+ = 1.01 =
300
+ * Minor CSS fix.
301
+ * Minor PHP changes.
302
+ * Readme.txt updated
303
+
304
+ = 1.0 =
305
+ * First release.
306
+
307
+ == Upgrade Notice ==
308
+
309
+ = 1.5 =
310
+ * IMPORTANT: You have to reactivate the plugin after its update!
311
+
312
+ = 1.0 =
313
+ * First release.
uninstall.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Fired when the plugin is uninstalled.
4
+ *
5
+ * When populating this file, consider the following flow
6
+ * of control:
7
+ *
8
+ * - This method should be static
9
+ * - Check if the $_REQUEST content actually is the plugin name
10
+ * - Run an admin referrer check to make sure it goes through authentication
11
+ * - Verify the output of $_GET makes sense
12
+ * - Repeat with other user roles. Best directly by using the links/query string parameters.
13
+ * - Repeat things for multisite. Once for a single site in the network, once sitewide.
14
+ *
15
+ * @link http://themeisle.com
16
+ * @since 3.0.0
17
+ *
18
+ * @package Feedzy_Rss_Feeds
19
+ */
20
+
21
+ // If uninstall not called from WordPress, then exit.
22
+ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
23
+ exit;
24
+ }