示例#1
0
文件: feeder.php 项目: ajb/rfpez
 function WriteStdEntryLinks(FeedEntry $entry, $indent)
 {
     $indent = $this->Indent($indent);
     $result = '';
     $href = $this->Quote($entry->Permalink());
     if ($href) {
         $result .= $indent . '<link rel="alternate" type="text/html" href="' . $href . "\" />\n";
     }
     $href = $this->Quote($entry->CommentsURL());
     if ($href) {
         $result .= $indent . '<link rel="related" type="text/html" title="Comments" href="' . $href . "\" />\n";
     }
     return $result;
 }
示例#2
0
文件: AtomFeed.php 项目: point/cassea
 static function import(SimpleXMLElement $el)
 {
     $fd = new AtomFeedData();
     if (isset($el->link)) {
         $fd->link = (string) $el->link['href'];
     }
     foreach ($el->children() as $v) {
         if ($v->getName() == 'entry') {
             $fe = new FeedEntry((string) $v->title, (string) $v->link['href'], (string) $v->content);
             foreach ($v->children() as $e) {
                 if ($e->getName() == "updated") {
                     $fe->last_update = (string) $e;
                 } elseif ($e->getName() == "category") {
                     $fe->addCategory((string) $e['term'], (string) $e['scheme']);
                 } elseif ($e->getName() == "source") {
                     $fe->setSource((string) $e['title'], (string) $e['url']);
                 } elseif ($e->getName() == "link") {
                     $fe->addEnclosure($e['href'], $e['type'], $e['length']);
                 } elseif ($e->getName() == "id") {
                     $fe->guid = (string) $e;
                 } elseif ($e->getName() == "author") {
                     $fe->author = (string) $e->name;
                 } elseif ($e->getName() == "link") {
                     $fe->line = (string) $el['href'];
                 } elseif ($e->getName() == "summary") {
                     $fe->description = (string) $e;
                 } elseif (!in_array($e->getName(), array("published"))) {
                     $fe->{$e->getName()} = (string) $e;
                 }
             }
             if (!$fe->isReady()) {
                 throw new FeedException('Not all required fields are filled-in');
             }
             $fd->addEntry($fe);
             unset($fe);
         } else {
             $fd->{(string) $v->getName()} = (string) $v;
         }
     }
     if (!$fd->isReady()) {
         throw new Exception('Not all required feilds of FeedData are filled-in');
     }
     return $fd;
 }
示例#3
0
文件: RSSFeed.php 项目: point/cassea
 static function import(SimpleXMLElement $el)
 {
     $fd = new RSSFeedData();
     if (isset($el->image) && isset($el->image->url)) {
         $fd->image = (string) $el->image->url;
     }
     if (isset($el->cloud)) {
         $fd->cloud = array('domain' => (string) $el->cloud['domain'], 'port' => $el->cloud['port'], 'path' => $el->cloud['path'], 'procedure' => $el->cloud['registerProcedure'], 'protocol' => $el->cloud['protocol']);
     }
     if (isset($el->textInput)) {
         $fd->setTextInput($el->textInput->title, $el->textInput->description, $el->textInput->name, $el->textInput->link);
     }
     if (isset($el->skipHours)) {
         foreach ($el->skipHours->children() as $v) {
             if ($v->getName() == "hour") {
                 $fd->addSkipHours((string) $v);
             }
         }
     }
     if (isset($el->skipDays)) {
         foreach ($el->skipDays->children() as $v) {
             if ($v->getName() == "day") {
                 $df->addSkipDays((string) $v);
             }
         }
     }
     foreach ($el->children() as $v) {
         if ($v->getName() == 'item') {
             if (isset($v->description)) {
                 $_content = (string) $v->description;
             } else {
                 $_c = $v->children('content', true);
                 $_content = (string) $_c->encoded;
                 unset($_c);
             }
             $fe = new FeedEntry((string) $v->title, (string) $v->link, $_content);
             unset($_content);
             foreach ($v->children() as $e) {
                 if ($e->getName() == "pubDate") {
                     $fe->last_update = (string) $e;
                 } elseif ($e->getName() == "category") {
                     $fe->addCategory((string) $e, $e['domain']);
                 } elseif ($e->getName() == "source") {
                     $fe->setSource((string) $e, $e['url']);
                 } elseif ($e->getName() == "enclosure") {
                     $fe->addEnclosure($e['url'], $e['type'], $e['length']);
                 } else {
                     $fe->{$e->getName()} = (string) $e;
                 }
             }
             if (!$fe->isReady()) {
                 throw new FeedException('Not all required fields are filled-in');
             }
             $fd->addEntry($fe);
             unset($fe);
         } elseif (in_array($v->getName(), array('image', 'cloud', 'textInput', 'skipHours', 'skipDays'))) {
             continue;
         } else {
             $fd->{(string) $v->getName()} = (string) $v;
         }
     }
     if (!$fd->isReady()) {
         throw new Exception('Not all required feilds of FeedData are filled-in');
     }
     return $fd;
 }
示例#4
0
<?php

require_once 'feeder.php';
$proger = new FeedPerson();
$proger->Name('Proger_XP');
$proger->EMail('*****@*****.**');
$proger->URL('http://proger.i-forge.net');
$camilo = new FeedPerson();
$camilo->Name('Camilo');
$camilo->URL('http://camilomm.deviantart.com');
$feeder = new Feeder();
$feeder->Channel()->Title()->Add('text', 'My Feed');
$feeder->Channel()->Author(0, $proger);
$feeder->Channel()->Description()->Add('text', 'Just another PHP Feed');
$feeder->Channel()->BaseURL('http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/');
$entry = new FeedEntry();
$entry->Title()->Add('text', 'My first post');
$entry->Updated(strtotime('22 Jan 2011'));
$entry->Author(0, $proger);
$entry->Content()->Add('text', 'Thinking about something to write...');
$entry->Content()->Add('html', 'Thinking about <em>something</em> to write&hellip;');
$feeder->Entry(0, $entry);
$entry = new FeedEntry();
$entry->Title()->Add('text', 'Another filler');
$entry->Updated(strtotime('23 May 2012'));
$entry->Author(0, $proger);
$entry->Contributor(0, $camilo);
$entry->Content()->Add('html', 'Why? Because he\'s my friend <img src="smile.png" />');
$feeder->Entry(1, $entry);
$output = new AtomFeed();
$output->Output($feeder);
示例#5
0
     $s->AddWhere("coalesce(cb.Blocked,0)", 1, "<>");
 }
 // Make sure whispers don't come through
 if ($Context->Session->UserID > 0) {
     $s->AddWhere("d.AuthUserID = " . $Context->Session->UserID . " or d.WhisperUserID = " . $Context->Session->UserID . " or d.WhisperUserID", 0, "=", "and", "", 1, 1);
     $s->EndWhereGroup();
 } else {
     $s->AddWhere("d.WhisperUserID", 0, "=", "and", "", 1, 1);
     $s->AddWhere("d.WhisperUserID", 0, "=", "or", "", 0);
     $s->AddWhere("d.WhisperUserID", "null", "is", "or", "", 0);
     $s->EndWhereGroup();
 }
 $s->AddOrderBy("d.DateLastActive", "", "desc");
 $s->AddLimit(0, agDISCUSSIONS_PER_FEED);
 $FeedData = $Context->Database->Select($Context, $s, "Feed", "GetData", "An error occurred while retrieving the feed.");
 $FeedEntry = new FeedEntry();
 if ($FeedData) {
     $WritePage = 0;
     // Set the content-type so it delivers properly
     header("Content-type: text/xml\n");
     $FirstRow = 1;
     if ($Context->Database->RowCount($FeedData) == 0) {
         if ($Type == "atom") {
             // Begin writing the feed
             if ($Type == "atom") {
                 echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n                  <feed xmlns=\"http://www.w3.org/2005/Atom\">\r\n                    <title type=\"text\">" . agAPPLICATION_TITLE . "</title>\r\n                    <updated>" . FixDate() . "</updated>\r\n                    <id>http://" . agDOMAIN . "</id>\r\n                    <link rel=\"alternate\" type=\"text/html\" hreflang=\"en\" href=\"" . agDOMAIN . "\"/>\r\n                    <link rel=\"self\" type=\"application/atom+xml\" href=\"" . AppendFolder(agDOMAIN, "feeds/?Type=atom") . "\"/>\r\n                    <generator uri=\"http://getvanilla.com/\" version=\"" . agVANILLA_VERSION . "\">\r\n                      Lussumo Vanilla\r\n                    </generator>";
             }
         }
     } else {
         // Loop through entries
         while ($row = $Context->Database->GetRow($FeedData)) {