copyright 2002 Douglas Crockford (jsmin.c) copyright 2008 Ryan Grove (PHP port) license: http://opensource.org/licenses/mit-license.php MIT License http://code.google.com/p/jsmin-php/ ============================================================================== ============================================================================== Feed reading Blogroll uses the great jQuery TinySort jQuery TinySort - A plugin to sort child nodes by (sub) contents or attributes. Dual licensed under the MIT and GPL licenses: http://www.opensource.org/licenses/mit-license.php http://www.gnu.org/licenses/gpl.html ============================================================================== */ if (version_compare(PHP_VERSION, '5.0.0') === 1) { require_once('jsmin-1.1.1-frbr.php'); } if (!defined('WP_CONTENT_URL')) define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); if (!defined('WP_CONTENT_DIR')) define('WP_CONTENT_DIR', ABSPATH . 'wp-content'); if (!defined( 'WP_PLUGIN_URL')) define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins' ); if (!defined( 'WP_PLUGIN_DIR')) define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins'); define('FEEDREADING_JS_FILE','/feedreading_blogroll.js'); define('FEEDREADING_VERSION', '1.2.1'); /** * add options actions */ add_option('feedreading_blogroll_settings', $data, 'feedreading_blogroll Options'); add_filter('plugin_action_links_'.plugin_basename(__FILE__), 'feedreading_blogroll_addConfigureLink' ); add_action('admin_menu', 'feedreading_blogroll_register_options'); add_action('admin_head', 'feedreading_blogroll_changelog_admin'); add_action('admin_init', 'feedreading_blogroll_register_setting'); add_action('widgets_init', 'widget_init_feedreading_blogroll'); add_action('wp_print_scripts', 'feedreading_blogroll_add_scripts'); add_action('wp_print_styles', 'feedreading_blogroll_add_styles'); add_action('wp_ajax_feedreading_blogroll_generate_javascript_lookup', 'feedreading_blogroll_generate_javascript_ajax'); add_action('add_link','feedreading_blogroll_generate_javascript'); add_action('edit_link','feedreading_blogroll_generate_javascript'); add_action('delete_link','feedreading_blogroll_generate_javascript'); add_action('update_option_feedreading_blogroll_settings', 'feedreading_blogroll_generate_javascript'); /** * Register uninstall-hook * @since WordPress 2.7 */ if (function_exists('register_uninstall_hook')) register_uninstall_hook(__FILE__, 'feedreading_blogroll_uninstall_hook'); /** * Register activation-hook * @since WordPress 2.7 */ if (function_exists('register_activation_hook')) register_activation_hook(__FILE__, 'feedreading_blogroll_generate_javascript' ); /** * Load text-domain * @since WordPress 2.6 */ if (function_exists('load_plugin_textdomain')) { load_plugin_textdomain('feedreading_blogroll', false, dirname(plugin_basename(__FILE__))); } /** * Initialize the widget */ function widget_init_feedreading_blogroll() { // Check for required functions $widget_ops = array('classname' => 'widget_feedreading_blogroll', 'description' => __('widget_feedreading_blogroll widget description ') ); wp_register_sidebar_widget('widget_feedreading_blogroll', 'Live Blogroll', 'widget_feedreading_blogroll', $widget_ops); register_widget_control('widget_feedreading_blogroll', 'widget_feedreading_blogroll_control'); } /** * Register Settings and options * @since WordPress 2.7 */ function feedreading_blogroll_register_setting(){ if (function_exists('register_setting')) { register_setting('feedreading_blogroll_settings_group', 'feedreading_blogroll_settings'); } } /** * The uninstall-hook for the plugin * @since WordPress 2.7 */ function feedreading_blogroll_uninstall_hook() { delete_option('feedreading_blogroll_settings'); } /** * Register with options-page */ function feedreading_blogroll_register_options() { if (function_exists('add_options_page')) { $menutitle = '' . ' '; add_options_page($menutitle. 'Feed reading Blogroll', $menutitle. 'Feed reading Blogroll', 8, basename(__FILE__), 'feedreading_blogroll_options_subpanel'); } } /** * Add configure-link to plugin-list * * @since WordPress 2.7 * @param unknown_type $links * @return unknown */ function feedreading_blogroll_addConfigureLink($links) { $settings_link = ''.__('Settings').''; array_unshift( $links, $settings_link ); return $links; } /** * Get link-categories from database * @return resultset containing term_id and term_id */ function feedreading_blogroll_get_linkcats(){ global $wpdb; $cats = $wpdb->get_results("SELECT $wpdb->terms.term_ID, $wpdb->terms.name FROM $wpdb->terms join $wpdb->term_taxonomy on $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id WHERE $wpdb->term_taxonomy.taxonomy = 'link_category' order by name"); return $cats; } function feedreading_blogroll_order_cats($linkCats, $orderString){ $orderArray=explode(",", $orderString); $orderArray2 = array(); $orderedCats = array(); $linkCats2= array(); $i=1; foreach($orderArray as $orderedCat){ $orderArray2[substr($orderedCat,8)]=$i; $i=$i+1; } $i=1; foreach($linkCats as $linkCat){ $catId=(int) $linkCat->term_ID; if(!empty($orderArray2->$catId)){ $linkCats2[$orderArray2[$catId]]=$linkCat; } else { $linkCats2[$i+1000000]=$linkCat; } $i=$i+1; } ksort($linkCats2); return array_values($linkCats2); } /** * Returns true, if new values are contained in POST-request, else false * @return boolean */ function feedreading_blogroll_vars_are_set(){ if (isset($_POST['rebuild_javascript'])) { feedreading_blogroll_generate_javascript(); } if (isset($_POST['linkCssClass']) or isset($_POST['showLastUpdated']) or isset($_POST['showLastPostTitle']) or isset($_POST['feedreadingTitle']) or isset($_POST['showAuthor']) or isset($_POST['showTitle']) or isset($_POST['showIcon']) or isset($_POST['defaultIcon']) or isset($_POST['googleAPIKey']) or isset($_POST['previewButton']) or isset($_POST['linkCats']) or isset($_POST['groupByLinkCats']) or isset($_POST['maxBookmarks']) or isset($_POST['orderBy']) or isset($_POST['orderDirection']) or isset($_POST['customCSSDir']) or isset($_POST['displayStyle']) or isset($_POST['feedDiscovery']) or isset($_POST['jsSorting']) or isset($_POST['jsSortingTimeout']) ){ return TRUE; } else { return FALSE; } } /** * Enqueue scripts after WordPress has finished loading but before any headers are sent. * @since WordPress 2.7 */ function feedreading_blogroll_add_scripts(){ $feedreading_blogroll_settings = get_option('feedreading_blogroll_settings'); $googleAPIKey = $feedreading_blogroll_settings['googleAPIKey']; wp_register_script('feedreading_google_api', 'http://www.google.com/jsapi?key='.$googleAPIKey, array(), FEEDREADING_VERSION); if (!is_admin()){ $blogDeps = array('feedreading_sorter','feedreading_google_api'); wp_register_script('feedreading_sorter', WP_PLUGIN_URL.'/feed-reading-blogroll/jquery.tinysort.packed.js', array('jquery'), '1.0.2'); wp_register_script('feedreading_main', WP_CONTENT_URL.'/feedreading_blogroll.js', $blogDeps, FEEDREADING_VERSION); wp_enqueue_script('feedreading_main'); } else if(is_admin()){ $adminDeps = array( "jquery-ui-tabs", "jquery-ui-sortable", "feedreading_form_validation", "feedreading_google_api"); wp_register_script('feedreading_form_validation',WP_PLUGIN_URL.'/feed-reading-blogroll/jquery.validate.pack.js', array('jquery'),'1.5.2'); wp_register_script('feedreading_admin_ajax', WP_PLUGIN_URL.'/feed-reading-blogroll/feedreading_blogroll_admin.packed.js', $adminDeps, FEEDREADING_VERSION); wp_enqueue_script('feedreading_admin_ajax'); } } /** * Images/ Icons in base64-encoding * @see http://bueltge.de/test/image2base64/ * @use function feedreading_blogroll_get_resource_url() for display */ if( isset($_GET['resource']) && !empty($_GET['resource'])) { # base64 encoding $feedreading_resources = array( 'ssprc.gif' => 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABG'. 'dBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1h'. 'Z2VSZWFkeXHJZTwAAAK4SURBVBgZBcFfaFV1AADg7/zO2Zy7A3'. 'fVebdEQ2yCoeVfmmhQGlRgmCg0sEAoeivvWy/BiigYvoi9hPYg'. 'EfQYKGVgiIhaaJPSVlC6hU7v9Pon166755577+n7ovRtvZ3LjU'. 'iUAQQEAAQAQBO3HWrc8HHSudyIwRfLShuJOwgJUUSIiAIhIkSI'. 'iRAhb3H7Urnz++MSibLSRtKY/s3EuPsH9y4TAnFAIEYUyHN6Fr'. 'NkA0uOlxMQdxC6WL8bsJusxt+nuPYdrVlE5DkiHk7TtYg2QRtR'. 'wuMKV79l4hy1Kh0Fnn6dVw/zxBAgIsuoZzQbNEgEhIjHFX7/mh'. 'CRBBavY92bLFjOcwe4fIRrp0ibNFKyFnWCgID+zez9iu2f8NQu'. 'ZiY4/QE3zgIb3qW0jjSl3iRr0iBoQ0yEjgJ9q3l2H68cpncFY1'. '/wzxlgywHyedQzshZ1goAID37j5PuMHaFWpaObbR/Ss5Szh5id'. 'prOHNTupN8naNEgEhEAemLurfv20cxfGXElXKi7qc/9en709ty'. 'z88XNfTixSLBY99JJnJqu2pbFEGyLiXLap7JsT5/2Xd9r31htq'. 'tZqpqSnHf0p136l6bd9+cRyrVCrGxsbcbKySgJDTt8aFyYbrlX'. '/tGR527NP3nJ+c0z8wYO3atSYezbl48KDp6WlbV5Zs27vfyckd'. 'EiBi7q5fxy8pFAqgvHrGmT8bhoeHFYtFs7OzqtWqo0ePKj8/6B'. 'cUehdKNJA30TJw/5yfHw2A0cvztNoNo6OjCoUCqNVq8mZm9MRF'. 'O97ZqnrrpvijQb365w8pDpo/v9vZ8WnpXGrV+i02DW21bNkyrV'. 'ZLqVQyNDTkhe3bDawY9Nf4VdfGrzyI0pf1dvYb0a/cajE52+Oz'. '25t1L3lSx7wu7Zw9d36wMJtzbOkurSjI0rp7lamZBTMPdv4PY0'. 'MOogadRGMAAAAASUVORK5CYII='. '', 'text-list.gif' =>'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABG'. 'dBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1h'. 'Z2VSZWFkeXHJZTwAAADqSURBVDjLY/j//z8DJZiBKgbkzH9cMH'. 'XX6wcgmiwDQJq3nv/4H0SD+OXl5dlA/L+kpOR/QUHB/+zs7P+p'. 'qan/ExIS/kdGRv4PDg7+T10XDHwgpsx8VNC56eWDkJ675Hmhbf'. '3zB0uPvP1fuvQpOBDj4uKyIyIi/gcGBv738vL67+zs/N/Gxua/'. 'iYnJf11d3f9qamqogRjQcaugZPHjB66V14ZqINrmXyqIn3bvgX'. 'XeJfK8ANLcv+3lfxAN4hsZGWVra2v/V1FR+S8nJ/dfXFz8v5CQ'. '0H8eHp7/7Ozs/5mZmVEDEWQzRS6gBAMAYBDQP57x26IAAAAASU'. 'VORK5CYII='. '', 'help.gif' => 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABG'. 'dBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1h'. 'Z2VSZWFkeXHJZTwAAAKkSURBVDjLpZPdT5JhGMb9W+BPaK3mat'. 'VqndXWOOigA6fmJ9DUcrUMlrN0mNMsKTUznQpq6pyKAm8CIogm'. 'ypcg8GIiX8rHRHjhVbPt6o01nMvZWge/k3vP9duuZ/edAyDnf/'. 'hjoCMP2Vr3gUDj3CdV6zT1xZ6iFDaKnLEkBFOmPfaZArWT5sw6'. '0iFP+BAbOzTcQSqDZzsNRyCNkcVoaGghzDlVQKylOHJrMrUZ2Y'. 'f52y6kc36IxpyoH1lHF7EBgyMKV4jCJ5U/1UVscU4IZOYEa3I1'. 'HtwI01hwxlDLhDoJD/wxGr5YGmOLAdRIrVCuhmD3JdA6SQabx1'. '2srGB0KSpc86ew4olDOGjH4x4z0gdHDD9+c4TaQQtq+k2Yt0eg'. 'XYugTmoVZgV9cyHSxXTtJjZR3WNCVfcK/NE0ppYDUNu2QTMCtS'. '0IbrsOrVMOWL27eNJtJLOCDoWXdgeTEEosqPxoBK/TwDzWY9ro'. 'wy51gJ1dGr2zLpS2aVH5QQ+Hbw88sZ7OClrGXbQrkMTTAQu4HX'. 'qUv9eh7J0OSfo7tiIU+GItilpUuM/AF2tg98eR36Q+FryQ2kjb'. 'VhximQu8dgPKxPMoeTuH4tfqDIWvCBQ2KlDQKEe9dBlGTwR36+'. 'THFZg+QoUxAL0jgsoOQzYYS+wjskcjTzSToVAkA7Hqg4Spc6tm'. '4vgT+eIFVvmb+eCSMwLlih/cNg0KmpRoGzdl+BXOb5jAsMYNjS'. 'WAm9VjwesPR1knFilPNMu510CkdPZtqK1BvJQsoaRZjqLGaTzv'. '1UNp9EJl9uNqxefU5QdDnFNX+Y5Qxrn9bDLUR6zjqzsMizeWYd'. 'G5gy6ZDbk8aehiuYRz5jHdeDTKvlY1IrhSMUxe4g9SuVwpdaFs'. 'gDxf2i84V9zH/us1/is/AdevBaK9Tb3EAAAAAElFTkSuQmCC'. ''); if(array_key_exists($_GET['resource'], $feedreading_resources)) { $content = base64_decode($feedreading_resources[ $_GET['resource'] ]); $lastMod = filemtime(__FILE__); $client = ( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false ); // Checking if the client is validating his cache and if it is current. if (isset($client) && (strtotime($client) == $lastMod)) { // Client's cache IS current, so we just respond '304 Not Modified'. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $lastMod).' GMT', true, 304); exit; } else { // Image not cached or cache outdated, we respond '200 OK' and output the image. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $lastMod).' GMT', true, 200); header('Content-Length: '.strlen($content)); header('Content-Type: image/' . substr(strrchr($_GET['resource'], '.'), 1) ); echo $content; exit; } } } /** * Display Images/ Icons in base64-encoding * @return $resourceID */ function feedreading_blogroll_get_resource_url($resourceID) { return trailingslashit( get_bloginfo('url') ) . '?resource=' . $resourceID; } /** * Enqueue styles after WordPress has finished loading but before any headers are sent. * @since WordPress 2.7 */ function feedreading_blogroll_add_styles(){ $feedreading_blogroll_settings = get_option('feedreading_blogroll_settings'); if(!is_admin()){ if ($feedreading_blogroll_settings['customCSSDir'] != ''){ $customStyleFile = $feedreading_blogroll_settings['customCSSDir'].'/feedreading_blogroll.css'; wp_register_style('feedreading_style', $customStyleFile, array(), FEEDREADING_VERSION); wp_enqueue_style('feedreading_style'); } else { $defaultStyleFile = WP_PLUGIN_URL.'/feed-reading-blogroll/feedreading_blogroll.css'; wp_register_style('feedreading_style', $defaultStyleFile, array(), FEEDREADING_VERSION); wp_enqueue_style('feedreading_style'); } } else if(is_admin()){ $adminStyleFile = WP_PLUGIN_URL.'/feed-reading-blogroll/feedreading_blogroll_admin.css'; wp_register_style('feedreading_admin_style', $adminStyleFile, array(), FEEDREADING_VERSION); wp_enqueue_style('feedreading_admin_style'); } } /** * Read http-data and set options. * * @return array with updated plugin-options */ function feedreading_blogroll_setOptions() { $feedreading_blogroll_settings = get_option('feedreading_blogroll_settings'); if (feedreading_blogroll_vars_are_set()) { $feedreading_blogroll_settings['linkCssClass'] = trim(strip_tags(stripslashes($_POST['linkCssClass']))); $feedreading_blogroll_settings['linkCats'] = $_POST['linkCats']; $feedreading_blogroll_settings['groupByLinkCats'] = strip_tags(stripslashes($_POST['groupByLinkCats'])); $feedreading_blogroll_settings['orderBy'] = strip_tags(stripslashes($_POST['orderBy'])); $feedreading_blogroll_settings['orderDirection'] = strip_tags(stripslashes($_POST['orderDirection'])); $feedreading_blogroll_settings['showLastUpdated'] = strip_tags(stripslashes($_POST['showLastUpdated'])); $feedreading_blogroll_settings['showLastPostTitle'] = strip_tags(stripslashes($_POST['showLastPostTitle'])); $feedreading_blogroll_settings['feedreadingTitle'] = strip_tags(stripslashes($_POST['feedreadingTitle'])); $feedreading_blogroll_settings['displayStyle'] = strip_tags(stripslashes($_POST['displayStyle'])); $feedreading_blogroll_settings['showAuthor'] = strip_tags(stripslashes($_POST['showAuthor'])); $feedreading_blogroll_settings['showTitle'] = strip_tags(stripslashes($_POST['showTitle'])); $feedreading_blogroll_settings['defaultIcon'] = trim(strip_tags(stripslashes($_POST['defaultIcon']))); $feedreading_blogroll_settings['showIcon'] = strip_tags(stripslashes($_POST['showIcon'])); $feedreading_blogroll_settings['googleAPIKey'] = strip_tags(stripslashes($_POST['googleAPIKey'])); $feedreading_blogroll_settings['previewButton'] = strip_tags(stripslashes($_POST['previewButton'])); $feedreading_blogroll_settings['customCSSDir'] = trim(strip_tags(stripslashes($_POST['customCSSDir']))); $feedreading_blogroll_settings['feedDiscovery'] = trim(strip_tags(stripslashes($_POST['feedDiscovery']))); $feedreading_blogroll_settings['jsSorting'] = trim(strip_tags(stripslashes($_POST['jsSorting']))); $feedreading_blogroll_settings['jsSortingTimeout'] = trim(strip_tags(stripslashes($_POST['jsSortingTimeout']))); $feedreading_blogroll_settings['maxBookmarks'] = trim(strip_tags(stripslashes($_POST['maxBookmarks']))); $feedreading_blogroll_settings['categoryOrderArray'] = trim(strip_tags(stripslashes($_POST['categoryOrderArray']))); update_option('feedreading_blogroll_settings', $feedreading_blogroll_settings); $feedreading_blogroll_settings['flash'] = __('Settings saved.'); } return $feedreading_blogroll_settings; } /** * Render the options-panel with form */ function feedreading_blogroll_options_subpanel(){ if (function_exists('wp_nonce_field') and !function_exists('settings_fields')) { if (feedreading_blogroll_vars_are_set()) check_admin_referer('plugin-feed-reading-blogroll-action_option_panel'); } else if (function_exists('settings_fields')) { if (feedreading_blogroll_vars_are_set()) check_admin_referer('feedreading_blogroll_settings_group-options'); } $feedreading_blogroll_settings = feedreading_blogroll_setOptions(); $cats = feedreading_blogroll_get_linkcats(); $menutitle = '' . ' '; if (is_null($feedreading_blogroll_settings['linkCats'])) $feedreading_blogroll_settings['linkCats']=''; if ($feedreading_blogroll_flash != ''){ ?>

Feed Reading Blogroll

and content-directory are writable. This is no longer necessary. You should make the content-directory read-only (chmod 755) now for security-reasons.

This plugin requires only JavaScript-file itself to be writable.', 'feedreading_blogroll'); ?>


/>
/>

    name , (array)$feedreading_blogroll_settings['linkCats'])==1) { $checked =" checked=\"checked\" "; $inBlogroll = " inblogroll"; } ?>
  • />
/>


/>
/>
/>

/>
/>
/>
/>

/> : , , , ...
/> Show update-information.','feedreading_blogroll'); ?>
/>
/>
/>

')" value="" title="" disabled="disabled" />

link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; ?>

:

:

:

Feed Reading Blogroll

',''); } /** * transforms the plugin-options into an argument-string that works with the WordPress-function "get_bookmarks()" * @return String with arguments for the WordPress-function "get_bookmarks()" */ function feedreading_blogroll_bookmarkArgs($usedForGroupedBookmarks, $cat){ $args=''; $feedreading_blogroll_settings = get_option('feedreading_blogroll_settings'); $feedreadingTitle = $feedreading_blogroll_settings['feedreadingTitle']; $linkCats = $feedreading_blogroll_settings['linkCats']; $orderBy = $feedreading_blogroll_settings['orderBy']; $orderDirection = $feedreading_blogroll_settings['orderDirection']; $jsSorting = strcmp($feedreading_blogroll_settings['jsSorting'], 'jsSorting'); $catOption = ''; $catDelim = ''; if (!is_null($linkCats)) { foreach ((array)$linkCats as $l){ $catOption = $catOption.$catDelim.$l; $catDelim =','; } } $args='order='.$orderDirection.'&orderby='.$orderBy; if (!$usedForGroupedBookmarks){ // use all linkcats $args='category_name='.$catOption.'&'.$args; } else { // use single linkcat $args='category_name='.$cat.'&'.$args; } return $args; } /** * render content of widget for the sidebar */ function widget_feedreading_blogroll_content($before_title, $after_title){ $feedreading_blogroll_settings = get_option('feedreading_blogroll_settings'); $groupByLinkCats = strcmp($feedreading_blogroll_settings['groupByLinkCats'],'groupByLinkCats'); $orderString = $feedreading_blogroll_settings['categoryOrderArray']; $orderArray = explode(",", $orderString); $linkCats = $feedreading_blogroll_settings['linkCats']; // fetch bookmarks from wordpress if ( $groupByLinkCats==0){ if (!is_null($linkCats)) { foreach($orderArray as $orderedCat){ $eachTerm = get_term_by('id',substr($orderedCat,8),'link_category'); $eachName = $eachTerm->name; if (in_array($eachName, $linkCats)){ $bookmarks = get_bookmarks(feedreading_blogroll_bookmarkArgs(TRUE, $eachName)); widget_feedreading_blogroll_list($before_title, $after_title, $bookmarks, $eachName, $feedreading_blogroll_settings); } } } } else { $bookmarks = get_bookmarks(feedreading_blogroll_bookmarkArgs(FALSE,'')); widget_feedreading_blogroll_list($before_title, $after_title, $bookmarks, '', $feedreading_blogroll_settings); } } /** * render the blogroll. This is an HTML-unordered-list () with list-items (
  • ...
  • ) * * this function is called one time for every category by widget_feedreading_blogroll_content() * * @see widget_feedreading_blogroll_content() */ function widget_feedreading_blogroll_list($before_title, $after_title, $bookmarks, $title, $feedreading_blogroll_settings){ $linkCssClass = $feedreading_blogroll_settings['linkCssClass']; $showLastUpdated = strcmp($feedreading_blogroll_settings['showLastUpdated'], 'showLastUpdated'); $showIcon = strcmp($feedreading_blogroll_settings['showIcon'], 'showIcon'); $showLastPostTitle = strcmp($feedreading_blogroll_settings['showLastPostTitle'], 'showLastPostTitle'); $showPreviewButton = strcmp($feedreading_blogroll_settings['previewButton'], 'previewButton'); $defaultIcon = $feedreading_blogroll_settings['defaultIcon']; $showTitle = strcmp($feedreading_blogroll_settings['showTitle'],'showTitle'); $displayStyle = $feedreading_blogroll_settings['displayStyle']; $linkCats = $feedreading_blogroll_settings['linkCats']; $jsSorting = strcmp($feedreading_blogroll_settings['jsSorting'],'jsSorting'); $groupByLinkCats = strcmp($feedreading_blogroll_settings['groupByLinkCats'],'groupByLinkCats'); $feedDiscovery = strcmp($feedreading_blogroll_settings['feedDiscovery'], 'feedDiscovery'); if ($title =='') $title = $feedreading_blogroll_settings['feedreadingTitle']; if ($showTitle == 0 or $groupByLinkCats==0){ echo $before_title; echo $title; echo $after_title; } $safeTitle=''; if ( $groupByLinkCats==0){ $safeTerm= get_term_by('name',$title,'link_category'); $safeTitle = $safeTerm->term_id; } ?> link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; $xfn=$bookmark->link_rel; ?> link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; $xfn=$bookmark->link_rel; ?> link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; $xfn=$bookmark->link_rel; ?> link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; $xfn=$bookmark->link_rel; ?> link_name; $url=$bookmark->link_url; $urlFeed=$bookmark->link_rss; $image=$bookmark->link_image; $xfn=$bookmark->link_rel; ?> /* */','', $buffer); if (version_compare(PHP_VERSION, '5.0.0') === 1 and class_exists('JSMinFRBR')) { $buffer = JSMinFRBR::minify($buffer); } ob_end_clean(); if ((is_writable(WP_CONTENT_DIR) and !file_exists(WP_CONTENT_DIR.FEEDREADING_JS_FILE)) or is_writable(WP_CONTENT_DIR.FEEDREADING_JS_FILE)) { $fp = fopen(WP_CONTENT_DIR.FEEDREADING_JS_FILE, "w"); fwrite($fp, $buffer); fclose($fp); } return; } /** * is the JavaScript-file writable? * * @return boolean */ function feedreading_is_not_jsfile_writable(){ return (!is_writable(WP_CONTENT_DIR) and !file_exists(WP_CONTENT_DIR.FEEDREADING_JS_FILE)) or !is_writable(WP_CONTENT_DIR.FEEDREADING_JS_FILE); } ?>