[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/include/ -> functions_rss.inc.php (source)

   1  <?php # $entry['feed_id']: functions_entries.inc.php 435 2005-08-25 12:36:39Z garvinhicking $
   2  # Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)
   3  # All rights reserved.  See LICENSE file for licensing details
   4  
   5  if (IN_serendipity !== true) {
   6      die ("Don't hack!");
   7  }
   8  
   9  if (defined('S9Y_FRAMEWORK_RSS')) {
  10      return;
  11  }
  12  @define('S9Y_FRAMEWORK_RSS', true);
  13  
  14  /**
  15   * Parses entries to display them for RSS/Atom feeds to be passed on to generic Smarty templates
  16   *
  17   * This function searches for existing RSS feed template customizations. As long as a template
  18   * with the same name as the $version variable exists, it will be emitted.
  19   *
  20   * @access public
  21   * @see serendipity_fetchEntries(), rss.php
  22   * @param   array       A superarray of entries to output
  23   * @param   string      The version/type of a RSS/Atom feed to display (atom1_0, rss2_0 etc)
  24   * @param   boolean     If true, this is a comments feed. If false, it's an Entry feed.
  25   * @param   boolean     Indicates if this feed is a fulltext feed (true) or only excercpt (false)
  26   * @param   boolean     Indicates if E-Mail addresses should be shown (true) or hidden (false)
  27   * @return
  28   */
  29  function serendipity_printEntries_rss(&$entries, $version, $comments = false, $fullFeed = false, $showMail = true) {
  30      global $serendipity;
  31  
  32      $options = array(
  33          'version'  => $version,
  34          'comments' => $comments,
  35          'fullFeed' => $fullFeed,
  36          'showMail' => $showMail
  37      );
  38      serendipity_plugin_api::hook_event('frontend_entries_rss', $entries, $options);
  39  
  40      if (is_array($entries)) {
  41          foreach ($entries as $key => $_entry) {
  42              $entry = &$entries[$key];
  43              $entry['feed_id']   = (isset($entry['entryid']) && !empty($entry['entryid']) ? $entry['entryid'] : $entry['id']);
  44              $entry['feed_guid'] = serendipity_rss_getguid($entry, $options['comments']);
  45              $entry['feed_entryLink'] = serendipity_archiveURL($entry['feed_id'], $entry['title'], 'baseURL', true, array('timestamp' => $entry['timestamp']));
  46              if ($options['comments'] == true) {
  47                  // Display username as part of the title for easier feed-readability
  48                  if ($entry['type'] == 'TRACKBACK' && !empty($entry['ctitle'])) {
  49                      $entry['author'] .= ' - ' . $entry['ctitle'];
  50                  }
  51                  $entry['title'] = (!empty($entry['author']) ? $entry['author'] : ANONYMOUS) . ': ' . $entry['title'];
  52                  
  53                  // No HTML allowed here:
  54                  $entry['body'] = strip_tags($entry['body']);
  55              }
  56  
  57              // Embed a link to extended entry, if existing
  58              if ($options['fullFeed']) {
  59                  $entry['body'] .= ' ' . $entry['extended'];
  60                  $ext = '';
  61              } elseif ($entry['exflag']) {
  62                  $ext = '<br /><a href="' . $entry['feed_entryLink'] . '#extended">' . sprintf(VIEW_EXTENDED_ENTRY, htmlspecialchars($entry['title'])) . '</a>';
  63              } else {
  64                  $ext = '';
  65              }
  66  
  67              $addData = array('from' => 'functions_entries:printEntries_rss');
  68              serendipity_plugin_api::hook_event('frontend_display', $entry, $addData);
  69              // Do some relative -> absolute URI replacing magic. Replaces all HREF/SRC (<a>, <img>, ...) references to only the serendipitypath with the full baseURL URI
  70              // garvin: Could impose some problems. Closely watch this one.
  71              $entry['body'] = preg_replace('@(href|src)=("|\')(' . preg_quote($serendipity['serendipityHTTPPath']) . ')(.*)("|\')(.*)>@imsU', '\1=\2' . $serendipity['baseURL'] . '\4\2\6>', $entry['body']);
  72              // jbalcorn: clean up body for XML compliance as best we can.
  73              $entry['body'] = xhtml_cleanup($entry['body']);
  74  
  75              // extract author information
  76              if ((isset($entry['no_email']) && $entry['no_email']) || $options['showMail'] === FALSE) {
  77                  $entry['email'] = 'nospam@example.com'; // RSS Feeds need an E-Mail address!
  78              } elseif (empty($entry['email'])) {
  79                  $query = "select email FROM {$serendipity['dbPrefix']}authors WHERE authorid = '". serendipity_db_escape_string($entry['authorid']) ."'";
  80                  $results = serendipity_db_query($query);
  81                  $entry['email'] = $results[0]['email'];
  82              }
  83  
  84              if (!is_array($entry['categories'])) {
  85                  $entry['categories'] = array(0 => array(
  86                      'category_name'      => $entry['category_name'],
  87                      'feed_category_name' => serendipity_utf8_encode(htmlspecialchars($entry['category_name'])),
  88                      'categoryURL'        => serendipity_categoryURL($entry, 'baseURL')
  89                  ));
  90              } else {
  91                  foreach($entry['categories'] AS $cid => $_cat) {
  92                      $cat = &$entry['categories'][$cid];
  93                      $cat['categoryURL']        = serendipity_categoryURL($cat, 'baseURL');
  94                      $cat['feed_category_name'] = serendipity_utf8_encode(htmlspecialchars($cat['category_name']));
  95                  }
  96              }
  97  
  98              // Prepare variables
  99              // 1. UTF8 encoding + htmlspecialchars.
 100              $entry['feed_title']     = serendipity_utf8_encode(htmlspecialchars($entry['title']));
 101              $entry['feed_blogTitle'] = serendipity_utf8_encode(htmlspecialchars($serendipity['blogTitle']));
 102              $entry['feed_title']     = serendipity_utf8_encode(htmlspecialchars($entry['title']));
 103              $entry['feed_author']    = serendipity_utf8_encode(htmlspecialchars($entry['author']));
 104              $entry['feed_email']     = serendipity_utf8_encode(htmlspecialchars($entry['email']));
 105  
 106              // 2. gmdate
 107              $entry['feed_timestamp']     = gmdate('Y-m-d\TH:i:s\Z', serendipity_serverOffsetHour($entry['timestamp']));
 108              $entry['feed_last_modified'] = gmdate('Y-m-d\TH:i:s\Z', serendipity_serverOffsetHour($entry['last_modified']));
 109              $entry['feed_timestamp_r']   = date('r', serendipity_serverOffsetHour($entry['timestamp']));
 110  
 111              // 3. UTF8 encoding
 112              $entry['feed_body'] = serendipity_utf8_encode($entry['body']);
 113              $entry['feed_ext']  = serendipity_utf8_encode($ext);
 114  
 115              $entry_hook = 'frontend_display:unknown:per-entry';
 116              switch($version) {
 117                  case 'opml1.0':
 118                      $entry_hook = 'frontend_display:opml-1.0:per_entry';
 119                      break;
 120  
 121                  case '0.91':
 122                      $entry_hook = 'frontend_display:rss-0.91:per_entry';
 123                      break;
 124  
 125                  case '1.0':
 126                      $entry_hook = 'frontend_display:rss-1.0:per_entry';
 127                      break;
 128  
 129                  case '2.0':
 130                      $entry_hook = 'frontend_display:rss-2.0:per_entry';
 131                      break;
 132  
 133                  case 'atom0.3':
 134                      $entry_hook = 'frontend_display:atom-0.3:per_entry';
 135                      break;
 136  
 137                  case 'atom1.0':
 138                      $entry_hook = 'frontend_display:atom-1.0:per_entry';
 139                      break;
 140              }
 141  
 142              serendipity_plugin_api::hook_event($entry_hook, $entry);
 143              $entry['per_entry_display_dat'] = $entry['display_dat'];
 144          }
 145      }
 146  }


Généré le : Sat Nov 24 09:00:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics