PageRenderTime 23ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/wordpress/wp-content/themes/illacrimo/plugins/flickrrss.php

http://suziwen.googlecode.com/
PHP | 280 lines | 225 code | 33 blank | 22 comment | 96 complexity | 2ad493316995da068099b70f533b2bbd MD5 | raw file
Possible License(s): AGPL-1.0, GPL-3.0, GPL-2.0, LGPL-2.1
  1. <?php
  2. /*
  3. Plugin Name: flickrRSS
  4. Plugin URI: http://eightface.com/wordpress/flickrrss/
  5. Description: Allows you to integrate the photos from a flickr rss feed into your site.
  6. Version: 3.2
  7. License: GPL
  8. Author: Dave Kellam
  9. Author URI: http://eightface.com
  10. */
  11. function get_flickrRSS() {
  12. // the function can accept up to seven parameters, otherwise it uses option panel defaults
  13. for($i = 0 ; $i < func_num_args(); $i++) {
  14. $args[] = func_get_arg($i);
  15. }
  16. if (!isset($args[0])) $num_items = get_option('flickrRSS_display_numitems'); else $num_items = $args[0];
  17. if (!isset($args[1])) $type = get_option('flickrRSS_display_type'); else $type = $args[1];
  18. if (!isset($args[2])) $tags = trim(get_option('flickrRSS_tags')); else $tags = trim($args[2]);
  19. if (!isset($args[3])) $imagesize = get_option('flickrRSS_display_imagesize'); else $imagesize = $args[3];
  20. if (!isset($args[4])) $before_image = stripslashes(get_option('flickrRSS_before')); else $before_image = $args[4];
  21. if (!isset($args[5])) $after_image = stripslashes(get_option('flickrRSS_after')); else $after_image = $args[5];
  22. if (!isset($args[6])) $userid = stripslashes(get_option('flickrRSS_flickrid')); else $userid = $args[6];
  23. # use image cache & set location
  24. $useImageCache = get_option('flickrRSS_use_image_cache');
  25. $cachePath = get_option('flickrRSS_image_cache_uri');
  26. $fullPath = get_option('flickrRSS_image_cache_dest');
  27. if (!function_exists('MagpieRSS')) { // Check if another plugin is using RSS, may not work
  28. include_once (ABSPATH . WPINC . '/rss-functions.php');
  29. error_reporting(E_ERROR);
  30. }
  31. // get the feeds
  32. if ($type == "public") { $rss_url = 'http://api.flickr.com/services/feeds/photos_public.gne?tags=' . $tags . '&format=rss_200'; }
  33. elseif ($type == "user") { $rss_url = 'http://api.flickr.com/services/feeds/photos_public.gne?id=' . $userid . '&tags=' . $tags . '&format=rss_200'; }
  34. elseif ($type == "group") { $rss_url = 'http://api.flickr.com/services/feeds/groups_pool.gne?id=' . $userid . '&format=rss_200'; }
  35. else { print "flickrRSS probably needs to be setup"; }
  36. # get rss file
  37. $rss = @ fetch_rss($rss_url);
  38. if ($rss) {
  39. $imgurl = "";
  40. # specifies number of pictures
  41. $items = array_slice($rss->items, 0, $num_items);
  42. # builds html from array
  43. foreach ( $items as $item ) {
  44. if(preg_match('<img src="([^"]*)" [^/]*/>', $item['description'],$imgUrlMatches)) {
  45. $imgurl = $imgUrlMatches[1];
  46. #change image size
  47. if ($imagesize == "square") {
  48. $imgurl = str_replace("m.jpg", "s.jpg", $imgurl);
  49. } elseif ($imagesize == "thumbnail") {
  50. $imgurl = str_replace("m.jpg", "t.jpg", $imgurl);
  51. } elseif ($imagesize == "medium") {
  52. $imgurl = str_replace("_m.jpg", ".jpg", $imgurl);
  53. }
  54. $title = htmlspecialchars(stripslashes($item['title']));
  55. $url = $item['link'];
  56. preg_match('<http://farm[0-9]{0,3}\.static.flickr\.com/\d+?\/([^.]*)\.jpg>', $imgurl, $flickrSlugMatches);
  57. $flickrSlug = $flickrSlugMatches[1];
  58. # cache images
  59. if ($useImageCache) {
  60. # check if file already exists in cache
  61. # if not, grab a copy of it
  62. if (!file_exists("$fullPath$flickrSlug.jpg")) {
  63. if ( function_exists('curl_init') ) { // check for CURL, if not use fopen
  64. $curl = curl_init();
  65. $localimage = fopen("$fullPath$flickrSlug.jpg", "wb");
  66. curl_setopt($curl, CURLOPT_URL, $imgurl);
  67. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1);
  68. curl_setopt($curl, CURLOPT_FILE, $localimage);
  69. curl_exec($curl);
  70. curl_close($curl);
  71. } else {
  72. $filedata = "";
  73. $remoteimage = fopen($imgurl, 'rb');
  74. if ($remoteimage) {
  75. while(!feof($remoteimage)) {
  76. $filedata.= fread($remoteimage,1024*8);
  77. }
  78. }
  79. fclose($remoteimage);
  80. $localimage = fopen("$fullPath$flickrSlug.jpg", 'wb');
  81. fwrite($localimage,$filedata);
  82. fclose($localimage);
  83. } // end CURL check
  84. } // end file check
  85. # use cached image
  86. print $before_image . "<a href=\"$url\" title=\"$title\"><img src=\"$cachePath$flickrSlug.jpg\" alt=\"$title\" /></a>" . $after_image;
  87. } else {
  88. # grab image direct from flickr
  89. print $before_image . "<a href=\"$url\" title=\"$title\"><img src=\"$imgurl\" alt=\"$title\" /></a>" . $after_image;
  90. } // end use imageCache
  91. } // end pregmatch
  92. } // end foreach
  93. } else {
  94. #print "Flickr is having a massage (Flickr Blog)";
  95. }
  96. } # end get_flickrRSS() function
  97. function widget_flickrrss_init() {
  98. if (!function_exists('register_sidebar_widget')) return;
  99. function widget_flickrrss($args) {
  100. extract($args);
  101. $options = get_option('widget_flickrrss');
  102. $title = $options['title'];
  103. echo $before_widget . $before_title . $title . $after_title;
  104. get_flickrRSS();
  105. echo $after_widget;
  106. }
  107. function widget_flickrrss_control() {
  108. $options = get_option('widget_flickrrss');
  109. if ( !is_array($options) )
  110. $options = array('title'=>'');
  111. if ( $_POST['flickrrss-submit'] ) {
  112. $options['title'] = strip_tags(stripslashes($_POST['flickrrss-title']));
  113. update_option('widget_flickrrss', $options);
  114. }
  115. $title = htmlspecialchars($options['title'], ENT_QUOTES);
  116. echo '<p style="text-align:right;"><label for="flickrrss-title">Title: <input style="width: 200px;" id="gsearch-title" name="flickrrss-title" type="text" value="'.$title.'" /></label></p>';
  117. echo '<input type="hidden" id="flickrrss-submit" name="flickrrss-submit" value="1" />';
  118. }
  119. register_sidebar_widget('flickrRSS', 'widget_flickrrss');
  120. register_widget_control('flickrRSS', 'widget_flickrrss_control', 300, 100);
  121. }
  122. function flickrRSS_subpanel() {
  123. if (isset($_POST['update_flickrrss'])) {
  124. $option_flickrid = $_POST['flickr_nsid'];
  125. $option_tags = $_POST['tags'];
  126. $option_display_type = $_POST['display_type'];
  127. $option_display_numitems = $_POST['display_numitems'];
  128. $option_display_imagesize = $_POST['display_imagesize'];
  129. $option_before = $_POST['before_image'];
  130. $option_after = $_POST['after_image'];
  131. update_option('flickrRSS_flickrid', $option_flickrid);
  132. update_option('flickrRSS_tags', $option_tags);
  133. update_option('flickrRSS_display_type', $option_display_type);
  134. update_option('flickrRSS_display_numitems', $option_display_numitems);
  135. update_option('flickrRSS_display_imagesize', $option_display_imagesize);
  136. update_option('flickrRSS_before', $option_before);
  137. update_option('flickrRSS_after', $option_after);
  138. ?> <div class="updated"><p>Options changes saved.</p></div> <?php
  139. }
  140. if (isset($_POST['save_cache_settings'])) {
  141. $option_useimagecache = $_POST['use_image_cache'];
  142. $option_imagecacheuri = $_POST['image_cache_uri'];
  143. $option_imagecachedest = $_POST['image_cache_dest'];
  144. update_option('flickrRSS_use_image_cache', $option_useimagecache);
  145. update_option('flickrRSS_image_cache_uri', $option_imagecacheuri);
  146. update_option('flickrRSS_image_cache_dest', $option_imagecachedest);
  147. ?> <div class="updated"><p>Cache settings saved.</p></div> <?php
  148. }
  149. ?>
  150. <div class="wrap">
  151. <h2>flickrRSS Options</h2>
  152. <form method="post">
  153. <fieldset class="options">
  154. <table>
  155. <tr>
  156. <td><p><strong><label for="flickr_nsid">User ID</label>:</strong></p></td>
  157. <td><input name="flickr_nsid" type="text" id="flickr_nsid" value="<?php echo get_option('flickrRSS_flickrid'); ?>" size="20" />
  158. Use the <a href="http://idgettr.com">idGettr</a> to find your id.</p></td>
  159. </tr>
  160. <tr>
  161. <td><p><strong>Display:</strong></p></td>
  162. <td>
  163. <select name="display_type" id="display_type">
  164. <option <?php if(get_option('flickrRSS_display_type') == 'user') { echo 'selected'; } ?> value="user">user</option>
  165. <option <?php if(get_option('flickrRSS_display_type') == 'public') { echo 'selected'; } ?> value="public">public</option>
  166. <option <?php if(get_option('flickrRSS_display_type') == 'group') { echo 'selected'; } ?> value="group">group</option>
  167. </select>
  168. photos using
  169. <select name="display_numitems" id="display_numitems">
  170. <option <?php if(get_option('flickrRSS_display_numitems') == '1') { echo 'selected'; } ?> value="1">1</option>
  171. <option <?php if(get_option('flickrRSS_display_numitems') == '2') { echo 'selected'; } ?> value="2">2</option>
  172. <option <?php if(get_option('flickrRSS_display_numitems') == '3') { echo 'selected'; } ?> value="3">3</option>
  173. <option <?php if(get_option('flickrRSS_display_numitems') == '4') { echo 'selected'; } ?> value="4">4</option>
  174. <option <?php if(get_option('flickrRSS_display_numitems') == '5') { echo 'selected'; } ?> value="5">5</option>
  175. <option <?php if(get_option('flickrRSS_display_numitems') == '6') { echo 'selected'; } ?> value="6">6</option>
  176. <option <?php if(get_option('flickrRSS_display_numitems') == '7') { echo 'selected'; } ?> value="7">7</option>
  177. <option <?php if(get_option('flickrRSS_display_numitems') == '8') { echo 'selected'; } ?> value="8">8</option>
  178. <option <?php if(get_option('flickrRSS_display_numitems') == '9') { echo 'selected'; } ?> value="9">9</option>
  179. <option <?php if(get_option('flickrRSS_display_numitems') == '10') { echo 'selected'; } ?> value="10">10</option>
  180. <option <?php if(get_option('flickrRSS_display_numitems') == '11') { echo 'selected'; } ?> value="11">11</option>
  181. <option <?php if(get_option('flickrRSS_display_numitems') == '12') { echo 'selected'; } ?> value="12">12</option>
  182. <option <?php if(get_option('flickrRSS_display_numitems') == '13') { echo 'selected'; } ?> value="13">13</option>
  183. <option <?php if(get_option('flickrRSS_display_numitems') == '14') { echo 'selected'; } ?> value="14">14</option>
  184. <option <?php if(get_option('flickrRSS_display_numitems') == '15') { echo 'selected'; } ?> value="15">15</option>
  185. <option <?php if(get_option('flickrRSS_display_numitems') == '16') { echo 'selected'; } ?> value="16">16</option>
  186. <option <?php if(get_option('flickrRSS_display_numitems') == '17') { echo 'selected'; } ?> value="17">17</option>
  187. <option <?php if(get_option('flickrRSS_display_numitems') == '18') { echo 'selected'; } ?> value="18">18</option>
  188. <option <?php if(get_option('flickrRSS_display_numitems') == '19') { echo 'selected'; } ?> value="19">19</option>
  189. <option <?php if(get_option('flickrRSS_display_numitems') == '20') { echo 'selected'; } ?> value="20">20</option>
  190. </select>
  191. <select name="display_imagesize" id="display_imagesize">
  192. <option <?php if(get_option('flickrRSS_display_imagesize') == 'square') { echo 'selected'; } ?> value="square">square</option>
  193. <option <?php if(get_option('flickrRSS_display_imagesize') == 'thumbnail') { echo 'selected'; } ?> value="thumbnail">thumbnail</option>
  194. <option <?php if(get_option('flickrRSS_display_imagesize') == 'small') { echo 'selected'; } ?> value="small">small</option>
  195. <option <?php if(get_option('flickrRSS_display_imagesize') == 'medium') { echo 'selected'; } ?> value="medium">medium</option>
  196. </select>
  197. <label for="mediumImages">images</label></p>
  198. </td>
  199. </tr>
  200. <tr>
  201. <td><p><strong><label for="tag">Tags:</strong></label></p></td>
  202. <td><input name="tags" type="text" id="tags" value="<?php echo get_option('flickrRSS_tags'); ?>" size="40" /> Comma separated, no spaces</p>
  203. </tr>
  204. <tr>
  205. <td><p><strong><label for="before_image">Before</label>/<label for="after_image">After</label>:</strong></p></td>
  206. <td><input name="before_image" type="text" id="before_image" value="<?php echo htmlspecialchars(stripslashes(get_option('flickrRSS_before'))); ?>" size="10" /> /
  207. <input name="after_image" type="text" id="after_image" value="<?php echo htmlspecialchars(stripslashes(get_option('flickrRSS_after'))); ?>" size="10" /> <em> e.g. &lt;li&gt;&lt;/li&gt;, &lt;p&gt;&lt;/p&gt;</em></p>
  208. </td>
  209. </tr>
  210. </table>
  211. </fieldset>
  212. <p><div class="submit"><input type="submit" name="update_flickrrss" value="<?php _e('Update flickrRSS', 'update_flickrrss') ?>" style="font-weight:bold;" /></div></p>
  213. </form>
  214. </div>
  215. <div class="wrap">
  216. <h2>Cache Settings</h2>
  217. <form method="post">
  218. <fieldset class="options">
  219. <table>
  220. <tr>
  221. <td><p><strong><label for="image_cache_uri">URL:</label></strong></td>
  222. <td><input name="image_cache_uri" type="text" id="image_cache_uri" value="<?php echo get_option('flickrRSS_image_cache_uri'); ?>" size="50" /> <em>e.g. http://url.com/cache/</em></p>
  223. </tr>
  224. <tr>
  225. <td><p><strong><label for="image_cache_dest">Full Path:</label></strong></td>
  226. <td><input name="image_cache_dest" type="text" id="image_cache_dest" value="<?php echo get_option('flickrRSS_image_cache_dest'); ?>" size="50" /> <em>e.g. /home/path/to/wp-content/flickrrss/cache/</em></p></td>
  227. </tr>
  228. <tr>
  229. <td></td>
  230. <td><p><input name="use_image_cache" type="checkbox" id="use_image_cache" value="true" <?php if(get_option('flickrRSS_use_image_cache') == 'true') { echo 'checked="checked"'; } ?> /> <label for="use_image_cache"><strong>Use image cache</strong> (stores thumbnails on your server)</label></p></td>
  231. </tr>
  232. </table>
  233. </fieldset>
  234. <p><div class="submit">
  235. <input type="submit" name="save_cache_settings" value="<?php _e('Save Settings', 'save_cache_settings') ?>" style="font-weight:bold;" /></div>
  236. </p>
  237. </form>
  238. </div>
  239. <?php } // end flickrRSS_subpanel()
  240. function fR_admin_menu() {
  241. if (function_exists('add_options_page')) {
  242. add_options_page('flickrRSS Options Page', 'flickrRSS', 8, basename(__FILE__), 'flickrRSS_subpanel');
  243. }
  244. }
  245. add_action('admin_menu', 'fR_admin_menu');
  246. add_action('plugins_loaded', 'widget_flickrrss_init');
  247. ?>