Seditio Source
Root |
./othercms/b2evolution_7.2.3/skins/_atom/index.main.php
<?php
/**
 * This template generates an Atom feed for the requested blog's latest posts
 *
 * For a quick explanation of b2evo 2.0 skins, please start here:
 * {@link http://b2evolution.net/man/skin-development-primer}
 *
 * See {@link http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html}
 *
 * @package evoskins
 * @subpackage atom
 *
 * @todo dh> isn't this missing a call to skin_init()!? - if so, other feeds are missing it, too. fp> no this is very much on purpose. there is a comment somewhere (don't know exactly)
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );


// EXTERNAL FEED PROVIDER?
$atom_redirect = $Blog->get_setting( 'atom_redirect' );
if ( ! empty(
$atom_redirect ) && empty( $Chapter ) && $redir == 'yes' )
{
   
header_redirect( $atom_redirect, 301 );
    exit(
0 );
}


// Note: even if we request the same post as $Item earlier, the following will do more restrictions (dates, etc.)
// Init the MainList object:
init_MainList( $Blog->get_setting('posts_per_feed') );

// What level of detail do we want?
$feed_content = $Blog->get_setting('feed_content');
if(
$feed_content == 'none' )
{    
// We don't want to provide this feed!
    // This will normaly have been detected earlier but just for security:
   
debug_die( 'Feeds are disabled.');
}

$image_size = $Blog->get_setting( 'image_size' );


if(
$debug)
{
   
headers_content_mightcache( 'application/xml' );        // In most situations, you do NOT want to cache dynamic content!
}
else
{
   
headers_content_mightcache( 'application/atom+xml' );        // In most situations, you do NOT want to cache dynamic content!
}


echo
'<?xml version="1.0" encoding="'.$io_charset.'"?'.'>';
?>
<feed xml:lang="<?php $Blog->disp( 'locale', 'xml' ) ?>" xmlns="http://www.w3.org/2005/Atom">
    <title><?php
        $Blog
->disp( 'name', 'xml' );
       
// ------------------------- TITLE FOR THE CURRENT REQUEST -------------------------
       
request_title( array(
               
'title_before'=> ' - ',
               
'title_after' => '',
               
'title_none'  => '',
               
'glue'        => ' - ',
               
'title_single_disp' => true,
               
'format'      => 'xml',
            ) );
       
// ------------------------------ END OF REQUEST TITLE -----------------------------
   
?></title>
    <link rel="alternate" type="text/html" href="<?php $Blog->disp( 'url', 'xml' ) ?>" />
    <link rel="self" type="application/atom+xml" href="<?php $Blog->disp( 'atom_url', 'xmlattr' ) ?>" />
    <id><?php $Blog->disp( 'atom_url', 'xmlattr' ); /* TODO: may need a regenerate_url() */ ?></id>
    <subtitle><?php $Blog->disp( 'shortdesc', 'xml' ) ?></subtitle>
    <generator uri="http://b2evolution.net/" version="<?php echo $app_version ?>"><?php echo $app_name ?></generator>
    <updated><?php echo gmdate('Y-m-d\TH:i:s\Z'); ?></updated>
    <?php
   
while( $Item = & mainlist_get_item() )
    {    
// For each blog post, do everything below up to the closing curly brace "}"
        // Load Item's creator User:
       
$Item->get_creator_User();
       
?>

    <entry>
        <title type="text"><?php $Item->title( array(
               
'format' => 'xml',
               
'link_type' => 'none',
            ) );
?></title>
        <link rel="alternate" type="text/html" href="<?php $Item->permanent_url( 'single' ) ?>" />
        <author>
            <name><?php $Item->creator_User->preferred_name( 'xml' ) ?></name>
            <?php $Item->creator_User->url( '<uri>', "</uri>\n", 'xml' ) ?>
       </author>
        <?php
        $Chapters
= $Item->get_Chapters();
        foreach (
$Chapters as $Chapter )
        {
           
// walter> if adding categories in the feed for all categories is expensive,
            // we can add it just for the main category
            //  $Chapter = $Item->get_main_Chapter();
            //  $cat_name = $Chapter->dget( 'name', 'xmlattr' );
           
$cat_name = $Chapter->dget( 'name', 'xmlattr' );
       
?>
       <category term="<?php echo $cat_name; ?>" />
        <?php
       
}
       
?>
       <id><?php $Item->permanent_url( 'single' ) ?></id>
        <?php
            $Item
->issue_date( array(
                   
'before'      => '<published>',
                   
'after'       => '</published>',
                   
'date_format' => 'isoZ',
                   
'use_GMT'     => true,
                ) );
       
?>
       <updated><?php $Item->mod_date( 'isoZ', true ) ?></updated>
        <?php
           
if( $feed_content == 'excerpt' )
            {    
// EXCERPTS ---------------------------------------------------------------------
               
?>
       <content type="html"><![CDATA[<?php
               
echo $Item->get_excerpt('htmlfeed');

               
// Display Item footer text (text can be edited in Blog Settings):
               
$Item->footer( array(
                       
'mode'        => 'xml',
                       
'block_start' => '<div class="item_footer">',
                       
'block_end'   => '</div>',
                       
'format'      => 'htmlfeed',
                    ) );
       
?>]]></content>
                <?php
           
}
            elseif(
$feed_content == 'normal'
                       
|| $feed_content == 'full' )
            {    
// POST CONTENTS -----------------------------------------------------------------
               
?>
       <content type="html"><![CDATA[<?php
               
// URL link, if the post has one:
               
$Item->url_link( array(
                       
'before'    => '<p>',
                       
'after'     => '</p>',
                       
'podcast'   => false,
                       
'format'    => 'htmlfeed',
                    ) );

               
// Display images that are linked to this post:
               
$Item->images( array(
                       
'before' =>              '<div>',
                       
'before_image' =>        '<div>',
                       
'before_image_legend' => '<div><i>',
                       
'after_image_legend' =>  '</i></div>',
                       
'after_image' =>         '</div>',
                       
'after' =>               '</div>',
                       
'image_size' =>          $image_size,
                    ),
'htmlfeed' );

               
$Item->content_teaser( array(
                       
'disppage'            => 1,
                       
'stripteaser'         => false,
                       
'format'              => 'htmlfeed',
                       
'before_image'        => '<div>',
                       
'before_image_legend' => '<div><i>',
                       
'after_image_legend'  => '</i></div>',
                       
'after_image'         => '</div>',
                       
'image_size'          => $image_size,
                    ) );

                if(
$feed_content == 'normal' )
                {    
// Teasers only
                   
$Item->more_link( array(
                           
'before'    => '',
                           
'after'     => '',
                           
'disppage'  => 1,
                           
'format'    => 'htmlfeed',
                        ) );
                }
                else
                {    
// Full contents
                   
$Item->content_extension( array(
                           
'disppage'    => 1,
                           
'force_more'  => true,
                           
'format'      => 'htmlfeed',
                        ) );
                }

               
// Display Item footer text (text can be edited in Blog Settings):
               
$Item->footer( array(
                       
'mode'        => 'xml',
                       
'block_start' => '<div class="item_footer">',
                       
'block_end'   => '</div>',
                       
'format'      => 'htmlfeed',
                    ) );
       
?>]]></content>
            <?php
       
}
   
?>
   </entry>

    <?php
   
}
   
?>
</feed>