Current Path : /var/www/html/clients/kampol.e-nk.ru/OLD/components/com_rss/ |
Current File : /var/www/html/clients/kampol.e-nk.ru/OLD/components/com_rss/rss.php |
<?php /** * @version $Id: rss.php 5070 2006-09-15 16:24:06Z friesengeist $ * @package Joomla * @subpackage Syndicate * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // no direct access defined( '_VALID_MOS' ) or die( 'Äîñòóï çàïðåùåí' ); // load feed creator class require_once( $mosConfig_absolute_path .'/includes/feedcreator.class.php' ); $info = null; $rss = null; switch ( $task ) { case 'live_bookmark': feedFrontpage( false ); break; default: feedFrontpage( true ); break; } /* * Creates feed from Content Iems associated to teh frontpage component */ function feedFrontpage( $showFeed ) { global $database, $mainframe; global $mosConfig_live_site, $mosConfig_cachepath; $nullDate = $database->getNullDate(); // pull id of syndication component $query = "SELECT a.id" . "\n FROM #__components AS a" . "\n WHERE ( a.admin_menu_link = 'option=com_syndicate' OR a.admin_menu_link = 'option=com_syndicate&hidemainmenu=1' )" . "\n AND a.option = 'com_syndicate'" ; $database->setQuery( $query ); $id = $database->loadResult(); // load syndication parameters $component = new mosComponent( $database ); $component->load( (int)$id ); $params = new mosParameters( $component->params ); // test if security check is enbled $check = $params->def( 'check', 1 ); if($check) { // test if rssfeed module is published // if not disable access $query = "SELECT m.id" . "\n FROM #__modules AS m" . "\n WHERE m.module = 'mod_rssfeed'" . "\n AND m.published = 1" ; $database->setQuery( $query ); $check = $database->loadResultArray(); if(empty($check)) { mosNotAuth(); return; } } $now = _CURRENT_SERVER_TIME; $iso = split( '=', _ISO ); // parameter intilization $info[ 'date' ] = date( 'r' ); $info[ 'year' ] = date( 'Y' ); $info[ 'encoding' ] = $iso[1]; $info[ 'link' ] = htmlspecialchars( $mosConfig_live_site ); $info[ 'cache' ] = $params->def( 'cache', 1 ); $info[ 'cache_time' ] = $params->def( 'cache_time', 3600 ); $info[ 'count' ] = $params->def( 'count', 5 ); $info[ 'orderby' ] = $params->def( 'orderby', '' ); $info[ 'title' ] = $params->def( 'title', 'Joomla! powered Site' ); $info[ 'description' ] = $params->def( 'description', 'Joomla! site syndication' ); $info[ 'image_file' ] = $params->def( 'image_file', 'joomla_rss.png' ); if ( $info[ 'image_file' ] == -1 ) { $info[ 'image' ] = NULL; } else{ $info[ 'image' ] = $mosConfig_live_site .'/images/M_images/'. $info[ 'image_file' ]; } $info[ 'image_alt' ] = $params->def( 'image_alt', 'Powered by Joomla!' ); $info[ 'limit_text' ] = $params->def( 'limit_text', 0 ); $info[ 'text_length' ] = $params->def( 'text_length', 20 ); // get feed type from url $info[ 'feed' ] = strval( mosGetParam( $_GET, 'feed', 'RSS2.0' ) ); // live bookmarks $info[ 'live_bookmark' ] = $params->def( 'live_bookmark', '' ); $info[ 'bookmark_file' ] = $params->def( 'bookmark_file', '' ); // set filename for live bookmarks feed if ( !$showFeed & $info[ 'live_bookmark' ] ) { if ( $info[ 'bookmark_file' ] ) { // custom bookmark filename $filename = $info[ 'bookmark_file' ]; } else { // standard bookmark filename $filename = $info[ 'live_bookmark' ]; } } else { // set filename for rss feeds $info[ 'file' ] = strtolower( str_replace( '.', '', $info[ 'feed' ] ) ); // security check to limit arbitrary file creation. // and to allow disabling/enabling of selected feed types switch ( $info[ 'file' ] ) { case 'rss091': if ( !$params->get( 'rss091', 1 ) ) { echo _NOT_AUTH; return; } break; case 'rss10': if ( !$params->get( 'rss10', 1 ) ) { echo _NOT_AUTH; return; } break; case 'rss20': if ( !$params->get( 'rss20', 1 ) ) { echo _NOT_AUTH; return; } break; case 'atom03': if ( !$params->get( 'atom03', 1 ) ) { echo _NOT_AUTH; return; } break; case 'opml': if ( !$params->get( 'opml', 1 ) ) { echo _NOT_AUTH; return; } break; default: echo _NOT_AUTH; return; break; } } $filename = $info[ 'file' ] .'.xml'; // security check to stop server path disclosure if ( strstr( $filename, '/' ) ) { echo _NOT_AUTH; return; } $info[ 'file' ] = $mosConfig_cachepath .'/'. $filename; // load feed creator class //$rss = new UniversalFeedCreator(); $no_html = strval( strtolower( mosGetParam( $_REQUEST, 'no_html' ) ) ); if ($no_html=='1') { $rss = new UniversalFeedCreator(); }else{ $rss = new HTMLCreator(); } // load image creator class $image = new FeedImage(); // loads cache file if ( $showFeed && $info[ 'cache' ] ) { $rss->useCached( $info[ 'feed' ], $info[ 'file' ], $info[ 'cache_time' ] ); } $rss->title = $info[ 'title' ]; $rss->description = $info[ 'description' ]; $rss->link = $info[ 'link' ]; $rss->syndicationURL = $info[ 'link' ]; $rss->cssStyleSheet = NULL; $rss->encoding = $info[ 'encoding' ]; if ( $info[ 'image' ] ) { $image->url = $info[ 'image' ]; $image->link = $info[ 'link' ]; $image->title = $info[ 'image_alt' ]; $image->description = $info[ 'description' ]; // loads image info into rss array $rss->image = $image; } // Determine ordering for sql switch ( strtolower( $info[ 'orderby' ] ) ) { case 'date': $orderby = 'a.created'; break; case 'rdate': $orderby = 'a.created DESC'; break; case 'alpha': $orderby = 'a.title'; break; case 'ralpha': $orderby = 'a.title DESC'; break; case 'hits': $orderby = 'a.hits DESC'; break; case 'rhits': $orderby = 'a.hits ASC'; break; case 'front': $orderby = 'f.ordering'; break; default: $orderby = 'f.ordering'; break; } // query of frontpage content items $query = "SELECT a.*, u.name AS author, u.usertype, UNIX_TIMESTAMP( a.created ) AS created_ts, cat.title AS cat_title, sec.title AS section_title" . "\n FROM #__content AS a" . "\n INNER JOIN #__content_frontpage AS f ON f.content_id = a.id" . "\n LEFT JOIN #__users AS u ON u.id = a.created_by" . "\n LEFT JOIN #__categories AS cat ON cat.id = a.catid" . "\n LEFT JOIN #__sections AS sec ON sec.id = a.sectionid" . "\n WHERE a.state = 1" . "\n AND cat.published = 1" . "\n AND sec.published = 1" . "\n AND a.access = 0" . "\n AND cat.access = 0" . "\n AND sec.access = 0" . "\n AND ( a.publish_up = " . $database->Quote( $nullDate ) . " OR a.publish_up <= " . $database->Quote( $now ) . " )" . "\n AND ( a.publish_down = " . $database->Quote( $nullDate ) . " OR a.publish_down >= " . $database->Quote( $now ) . " )" . "\n ORDER BY $orderby" ; $database->setQuery( $query, 0, $info[ 'count' ] ); $rows = $database->loadObjectList(); foreach ( $rows as $row ) { // title for particular item $item_title = htmlspecialchars( $row->title ); $item_title = html_entity_decode( $item_title ); // url link to article // & used instead of & as this is converted by feed creator $_Itemid = ''; $itemid = $mainframe->getItemid( $row->id ); if ($itemid) { $_Itemid = '&Itemid='. $itemid; } $item_link = 'index.php?option=com_content&task=view&id='. $row->id . $_Itemid; $item_link = sefRelToAbs( $item_link ); // removes all formating from the intro text for the description text $item_description = $row->introtext; $item_description = mosHTML::cleanText( $item_description ); $item_description = html_entity_decode( $item_description ); if ( $info[ 'limit_text' ] ) { if ( $info[ 'text_length' ] ) { // limits description text to x words $item_description_array = split( ' ', $item_description ); $count = count( $item_description_array ); if ( $count > $info[ 'text_length' ] ) { $item_description = ''; for ( $a = 0; $a < $info[ 'text_length' ]; $a++ ) { $item_description .= $item_description_array[$a]. ' '; } $item_description = trim( $item_description ); $item_description .= '...'; } } else { // do not include description when text_length = 0 $item_description = NULL; } } // load individual item creator class $item = new FeedItem(); // item info $item->title = $item_title; $item->link = $item_link; $item->description = $item_description; $item->source = $info[ 'link' ]; $item->date = date( 'r', $row->created_ts ); $item->category = $row->section_title . ' - ' . $row->cat_title; // loads item info into rss array $rss->addItem( $item ); } // save feed file $rss->saveFeed( $info[ 'feed' ], $info[ 'file' ], $showFeed ); } ?>