Вход Регистрация
Файл: lib/rss.lib.php
Строк: 264
<?php
 
/** Управление rss лентами проекта
 * @author [Eugene]
 * @copyright 2011
 * @url http://forwebm.net
 */
 
if (!@defined('W_ENGINED_L')) exit('Can`t access to this file data!');
 
//-------------------------------------------------------------------------------------
 
class w_rss_object extends w_defext {
  private 
$lineBreak "rn";  
  protected
   
$control;   
    
  function 
__construct(w_Control_obj $control) {
   
parent::__construct(); 
   
$this->control = & $control
  }    
  
  function 
SendHeader() {
   @
header('Content-Type: text/xml; charset=utf-8'); 
  }
//SendHeader
   
  
private function GetHeadBlock($body) {
   return 
'<?xml version="1.0" encoding="utf-8"?>'.$this->lineBreak.
   
'<rss version="2.0">'.$this->lineBreak.
   
$body.
   
'</rss>';    
  }
//GetHeadBlock
  
  
private function GetDateTimeFormatted($data$named=false) {
   
$time = @strtotime($data);  
   
$res  = array(
    
'time'  => @date('r'$time),
    
'stamp' => $time
   
);
   return (!
$named) ? $res $res[$named];
  }
//GetDateTimeFormatted
  
  /**
  * $info = array(
  *  'name' =>
  *  'link' =>
  *  'description' => 
  *  'date' =>
  *  'lastdate'
  * )
  */ 
  
private function GetChannelBlock($info$items) { 
   
$space '  ';
   
$res $space.'<channel>'.$this->lineBreak;
   
   
$res .= "$space$space<title>{$info['name']}</title>{$this->lineBreak}";
   
   
$res .= "$space$space<link>{$info['link']}</link>{$this->lineBreak}";
   
   
$res .= "$space$space<description><![CDATA[{$info['description']}]]></description>{$this->lineBreak}";
   
   if (isset(
$info['date']))
    
$res .= "$space$space<pubDate>".$this->GetDateTimeFormatted($info['date'], 'time')."</pubDate>{$this->lineBreak}";
   
   if (isset(
$info['lastdate']))
    
$res .= "$space$space<lastBuildDate>".$this->GetDateTimeFormatted($info['lastdate'], 'time').
    
"</lastBuildDate>{$this->lineBreak}";
   
   
$res .= $items.$this->lineBreak;
    
   return 
$res.$space.'</channel>'.$this->lineBreak;    
  }
//GetArticlesSectionInfo
  
  
function GetRssArticlesSectionBlock($sectionName) {
   
$list $this->control->GetNewsSectionListElements(false$sectionName"datecreate DESC");
   
   
$path 'http://'.W_HOSTMYSITE.'/'.(($list) ? $list[0]['opt']['pathobjects'].'/' '');
   
   
$channel_info = array(
    
'name'        => W_HOSTMYSITE.' :: '.(($list) ? $list[0]['opt']['newstitletospec'] : 'Unknow'),
    
'link'        => $path,
    
'description' => ($list) ? "RSS feed of {$list[0]['opt']['newstitletospec']}'Unknow',
    
'lastdate'    => ($list) ? $list[0]['data']['datecreate'] : $this->GetThisDateTime()   
   );
   
   
$space '  ';
   
$items '';
   
   foreach (
$list as $data) { 
    
$items .= "{$this->lineBreak}{$space}$space<item>{$this->lineBreak}";
    
    
$items .= "$space$space$space<title>{$data['data']['sname']}</title>{$this->lineBreak}";
    
    
$items .= "$space$space$space<link>".$path.$data['data']['iditem']."/</link>{$this->lineBreak}";
    
    
$items .= "$space$space$space<description><![CDATA[".
    
$this->control->strings->CorrectTextFromDB($data['data']['sdescr'], falsetruefalse450true).
    
"]]></description>{$this->lineBreak}";
    
    
$time $this->GetDateTimeFormatted($data['data']['datecreate']);
  
    
$items .= "$space$space$space<pubDate>{$time['time']}</pubDate>{$this->lineBreak}";
    
$items .= "$space$space$space<pubDateUT>{$time['stamp']}</pubDateUT>{$this->lineBreak}";
    
    
$items .= "$space$space$space<guid>".$path.$data['data']['iditem']."/</guid>{$this->lineBreak}";
    
    
$items .= "$space$space</item>";
   }   
   return 
$this->GetHeadBlock($this->GetChannelBlock($channel_info$items));
  }
//GetRssArticlesSectionBlock
  
  
function GetRssArticleSection($sectionID) { 
   if (
$sdata $this->control->GetNewsSectionInfoData($sectionIDtrue)) {
    
    
$sect_data = array(
     
'data' => $sdata,
     
'opt'  => $this->control->GetNewsSectionInfoData($sdatafalsetrue)
    );     
 
   } else { 
$sect_data false; }
   
   
$name = (!$sect_data) ? 'Unknow' $sect_data['data']['sname'];
   
$path 'http://'.W_HOSTMYSITE.'/'.(($sect_data && $sect_data['opt']['pathobjects']) ? 
   
$sect_data['opt']['pathobjects'].'/'.$sectionID.'/' 'news/'.$sectionID.'/');
   
   
$channel_info = array(
    
'name'        => W_HOSTMYSITE.' :: '.$name,
    
'link'        => $path,
    
'description' => "RSS feed of $name",
    
'lastdate'    => ($sect_data) ? $sect_data['data']['datecreate'] : $this->GetThisDateTime()   
   );   
   
   
$space '  ';
   
$items '';
   
   
$articles_list = (!$sect_data) ? false $this->control->db->mPost(
    
"select iditem,datecreate,newtitle,newdata,contenttype from {$this->control->tables_list['newslist']} where ".
    
"newtype='$sectionID' order by datecreate DESC limit ".W_NEWSPERPAGEINPUBLICSECT
   
);   
   
   if (
$articles_list) {
    
$firstID false;
    while (
$row $this->control->db->GetLineArray($articles_list)) { 

     if (!
$firstID) { 
      
$channel_info['lastdate'] = $row['datecreate'];
      
$firstID true
     }
     
     
$link $path.$row['iditem'].'/';
    
     
$items .= "{$this->lineBreak}{$space}$space<item>{$this->lineBreak}";
    
     
$items .= "$space$space$space<title>{$row['newtitle']}</title>{$this->lineBreak}";
    
     
$items .= "$space$space$space<link>$link</link>{$this->lineBreak}";
    
     
$items .= "$space$space$space<description><![CDATA[".
     
$this->control->strings->CorrectTextFromDB($row['newdata'], falsetrue$row['contenttype'], 450true).
     
"]]></description>{$this->lineBreak}";
    
     
$time $this->GetDateTimeFormatted($row['datecreate']);
  
     
$items .= "$space$space$space<pubDate>{$time['time']}</pubDate>{$this->lineBreak}";
     
$items .= "$space$space$space<pubDateUT>{$time['stamp']}</pubDateUT>{$this->lineBreak}";
    
     
$items .= "$space$space$space<guid>$link</guid>{$this->lineBreak}";
    
     
$items .= "$space$space</item>";
    }
   }
   return 
$this->GetHeadBlock($this->GetChannelBlock($channel_info$items));     
  }
//GetRssArticleSection
    
  
function GetRssObjectCommentsBlock($filesID$objectID) {
   require_once 
W_LIBPATH.'/files.lib.php';
   
   
$obj w_dw_files_object::CreateFromObjectID($filesID$objectID$this->controltrue);   
   
   
$name = (!$obj) ? 'Unknow' $obj->GetName(); 
   
$link = (!$obj) ? 'http://'.W_HOSTMYSITE 'http://'.W_HOSTMYSITE.$obj->GetPath();
       
   
$channel_info = (!$obj) ? array(
   
    
'name'        => W_HOSTMYSITE.' :: Unknow',
    
'link'        => $link,
    
'description' => 'RSS feed of '.W_HOSTMYSITE,
    
'lastdate'    => $this->GetThisDateTime(),
   
   ) : array(
   
    
'name'        => W_HOSTMYSITE.' :: '.$name,
    
'link'        => $link,
    
'description' => "RSS feed of comments for $name",
    
'lastdate'    => $obj->GetResult('block.datecreate'),
        
   );
   
   
$count 10;
   
$objIDcomment false;
   
   if (
$obj) {    
    switch (
$filesID) {       
     case 
'1'$objIDcomment '0'$count $obj->GetResult('info.setinfo.perpagecount'); break;    
     case 
'2'$objIDcomment '1'$count $obj->GetResult('info.commperpa'); break;         
    }        
   }   
 
   
$comments = (!$obj) ? false $this->control->db->mPost(
    
"select iditem,datecreate,commsource from {$this->control->tables_list['commtbl']} where commfor='".
    
$obj->GetID()."' and commisactive='1' and objectid='$objIDcomment' order by datecreate DESC limit $count"
   
);
   
   
$space '  ';
   
$items '';
     
   if (
$comments) {
    
$firstID false;
    while (
$row $this->control->db->GetLineArray($comments)) {
        
     if (!
$firstID) { 
      
$channel_info['lastdate'] = $row['datecreate'];
      
$firstID true
     }   
     
     
$items .= "{$this->lineBreak}{$space}$space<item>{$this->lineBreak}";
    
     
$items .= "$space$space$space<title>Re: $name</title>{$this->lineBreak}";
    
     
$items .= "$space$space$space<link>$link#comment{$row['iditem']}</link>{$this->lineBreak}";
    
     
$items .= "$space$space$space<description><![CDATA[".
     
$this->control->strings->CorrectTextFromDB($row['commsource'], falsetruefalse450true).
     
"]]></description>{$this->lineBreak}";
    
     
$time $this->GetDateTimeFormatted($row['datecreate']);
  
     
$items .= "$space$space$space<pubDate>{$time['time']}</pubDate>{$this->lineBreak}";
     
$items .= "$space$space$space<pubDateUT>{$time['stamp']}</pubDateUT>{$this->lineBreak}";
    
     
$items .= "$space$space$space<guid>$link#comment{$row['iditem']}</guid>{$this->lineBreak}";
    
     
$items .= "$space$space</item>"
         
    }   
   } 
   if (isset(
$obj)) unset($obj);   
   return 
$this->GetHeadBlock($this->GetChannelBlock($channel_info$items));     
  }
//GetRssArticleCommentsBlock
    
 
}//w_rss_object   
 //-------------------------------------------------------------------------------------
 /* Copyright (с) 2011 forwebm.net */
?>
Онлайн: 1
Реклама