本文整理汇总了PHP中FeedItem::addEnclosure方法的典型用法代码示例。如果您正苦于以下问题:PHP FeedItem::addEnclosure方法的具体用法?PHP FeedItem::addEnclosure怎么用?PHP FeedItem::addEnclosure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FeedItem
的用法示例。
在下文中一共展示了FeedItem::addEnclosure方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generateFiles
/**
* Generate an XML files and save them to the root directory
*
* @param array $arrFeed
*/
protected function generateFiles($arrFeed)
{
$arrArchives = deserialize($arrFeed['archives']);
if (!is_array($arrArchives) || empty($arrArchives)) {
return;
}
$strType = $arrFeed['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
// Get the items
if ($arrFeed['maxItems'] > 0) {
$objArticle = \NewsModel::findPublishedByPids($arrArchives, null, $arrFeed['maxItems']);
} else {
$objArticle = \NewsModel::findPublishedByPids($arrArchives);
}
// Parse the items
if ($objArticle !== null) {
$arrUrls = array();
while ($objArticle->next()) {
/** @var \PageModel $objPage */
$objPage = $objArticle->getRelated('pid');
$jumpTo = $objPage->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = \PageModel::findWithDetails($jumpTo);
// A jumpTo page is set but does no longer exist (see #5781)
if ($objParent === null) {
$arrUrls[$jumpTo] = false;
} else {
$arrUrls[$jumpTo] = $objParent->getFrontendUrl(\Config::get('useAutoItem') && !\Config::get('disableAlias') ? '/%s' : '/items/%s');
}
}
// Skip the event if it requires a jumpTo URL but there is none
if ($arrUrls[$jumpTo] === false && $objArticle->source == 'default') {
continue;
}
$strUrl = $arrUrls[$jumpTo];
$objItem = new \FeedItem();
$objItem->title = $objArticle->headline;
$objItem->link = $this->getLink($objArticle, $strUrl, $strLink);
$objItem->published = $objArticle->date;
$objItem->author = $objArticle->authorName;
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = \ContentModel::findPublishedByPidAndTable($objArticle->id, 'tl_news');
if ($objElement !== null) {
// Overwrite the request (see #7756)
$strRequest = \Environment::get('request');
\Environment::set('request', $objItem->link);
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->current());
}
\Environment::set('request', $strRequest);
}
} else {
$strDescription = $objArticle->teaser;
}
$strDescription = $this->replaceInsertTags($strDescription, false);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objFile = \FilesModel::findByUuid($objArticle->singleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path, $strLink);
}
}
// Enclosures
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
$objFile = \FilesModel::findMultipleByUuids($arrEnclosure);
if ($objFile !== null) {
while ($objFile->next()) {
$objItem->addEnclosure($objFile->path, $strLink);
}
}
}
}
$objFeed->addItem($objItem);
}
}
// Create the file
\File::putContent('share/' . $strFile . '.xml', $this->replaceInsertTags($objFeed->{$strType}(), false));
}
示例2: generateFiles
/**
* Generate an XML file and save it to the root directory
* @param array
*/
protected function generateFiles($arrArchive)
{
$time = time();
$this->arrEvents = array();
$strType = $arrArchive['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrArchive['feedBase'] != '' ? $arrArchive['feedBase'] : $this->Environment->base;
$strFile = $arrArchive['feedName'];
$objFeed = new Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrArchive['title'];
$objFeed->description = $arrArchive['description'];
$objFeed->language = $arrArchive['language'];
$objFeed->published = $arrArchive['tstamp'];
// Get upcoming events using endTime instead of startTime (see #3917)
$objArticleStmt = $this->Database->prepare("SELECT *, (SELECT name FROM tl_user u WHERE u.id=e.author) AS authorName FROM tl_calendar_events e WHERE pid=? AND (endTime>={$time} OR (recurring=1 AND (recurrences=0 OR repeatEnd>={$time}))) AND (start='' OR start<{$time}) AND (stop='' OR stop>{$time}) AND published=1 ORDER BY startTime");
if ($arrArchive['maxItems'] > 0) {
$objArticleStmt->limit($arrArchive['maxItems']);
}
$objArticle = $objArticleStmt->execute($arrArchive['id']);
// Get the default URL
$objParent = $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?")->limit(1)->execute($arrArchive['jumpTo']);
if ($objParent->numRows < 1) {
return;
}
$objParent = $this->getPageDetails($objParent->id);
$strUrl = $strLink . $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] ? '/%s' : '/events/%s', $objParent->language);
// Parse items
while ($objArticle->next()) {
$this->addEvent($objArticle, $objArticle->startTime, $objArticle->endTime, $strUrl, $strLink);
// Recurring events
if ($objArticle->recurring) {
$count = 0;
$arrRepeat = deserialize($objArticle->repeatEach);
// Do not include more than 20 recurrences
while ($count++ < 20) {
if ($objArticle->recurrences > 0 && $count >= $objArticle->recurrences) {
break;
}
$arg = $arrRepeat['value'];
$unit = $arrRepeat['unit'];
$strtotime = '+ ' . $arg . ' ' . $unit;
$objArticle->startTime = strtotime($strtotime, $objArticle->startTime);
$objArticle->endTime = strtotime($strtotime, $objArticle->endTime);
if ($objArticle->startTime >= $time) {
$this->addEvent($objArticle, $objArticle->startTime, $objArticle->endTime, $strUrl, $strLink);
}
}
}
}
$count = 0;
ksort($this->arrEvents);
// Add feed items
foreach ($this->arrEvents as $days) {
foreach ($days as $events) {
foreach ($events as $event) {
if ($arrArchive['maxItems'] > 0 && $count++ >= $arrArchive['maxItems']) {
break 3;
}
$objItem = new FeedItem();
$objItem->title = $event['title'];
$objItem->link = $event['link'];
$objItem->published = $event['published'];
$objItem->start = $event['start'];
$objItem->end = $event['end'];
$objItem->author = $event['authorName'];
// Prepare the description
$strDescription = $arrArchive['source'] == 'source_text' ? $event['description'] : $event['teaser'];
$strDescription = $this->replaceInsertTags($strDescription);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
if (is_array($event['enclosure'])) {
foreach ($event['enclosure'] as $enclosure) {
$objItem->addEnclosure($enclosure);
}
}
$objFeed->addItem($objItem);
}
}
}
// Create file
$objRss = new File($strFile . '.xml');
$objRss->write($this->replaceInsertTags($objFeed->{$strType}()));
$objRss->close();
}
示例3: generateFiles
//.........这里部分代码省略.........
$GLOBALS['NEWS_FILTER_CATEGORIES'] = true;
$GLOBALS['NEWS_FILTER_DEFAULT'] = $arrCategories;
} else {
$GLOBALS['NEWS_FILTER_CATEGORIES'] = false;
}
// Get the items
if ($arrFeed['maxItems'] > 0) {
$objArticle = \NewsModel::findPublishedByPids($arrArchives, null, $arrFeed['maxItems']);
} else {
$objArticle = \NewsModel::findPublishedByPids($arrArchives);
}
// Parse the items
if ($objArticle !== null) {
$arrUrls = array();
while ($objArticle->next()) {
$jumpTo = $objArticle->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = \PageModel::findWithDetails($jumpTo);
// A jumpTo page is set but does no longer exist (see #5781)
if ($objParent === null) {
$arrUrls[$jumpTo] = false;
} else {
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] && !$GLOBALS['TL_CONFIG']['disableAlias'] ? '/%s' : '/items/%s', $objParent->language);
}
}
// Skip the event if it requires a jumpTo URL but there is none
if ($arrUrls[$jumpTo] === false && $objArticle->source == 'default') {
continue;
}
// Get the categories
if ($arrFeed['categories_show']) {
$arrCategories = array();
if (($objCategories = NewsCategoryModel::findPublishedByIds(deserialize($objArticle->categories, true))) !== null) {
$arrCategories = $objCategories->fetchEach('title');
}
}
$strUrl = $arrUrls[$jumpTo];
$objItem = new \FeedItem();
// Add the categories to the title
if ($arrFeed['categories_show'] == 'title') {
$objItem->title = sprintf('[%s] %s', implode(', ', $arrCategories), $objArticle->headline);
} else {
$objItem->title = $objArticle->headline;
}
$objItem->link = $this->getLink($objArticle, $strUrl, $strLink);
$objItem->published = $objArticle->date;
$objItem->author = $objArticle->authorName;
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = \ContentModel::findPublishedByPidAndTable($objArticle->id, 'tl_news');
if ($objElement !== null) {
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->id);
}
}
} else {
$strDescription = $objArticle->teaser;
}
// Add the categories to the description
if ($arrFeed['categories_show'] == 'text_before' || $arrFeed['categories_show'] == 'text_after') {
$strCategories = '<p>' . $GLOBALS['TL_LANG']['MSC']['newsCategories'] . ' ' . implode(', ', $arrCategories) . '</p>';
if ($arrFeed['categories_show'] == 'text_before') {
$strDescription = $strCategories . $strDescription;
} else {
$strDescription .= $strCategories;
}
}
$strDescription = $this->replaceInsertTags($strDescription, false);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objFile = \FilesModel::findByUuid($objArticle->singleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
}
}
// Enclosures
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
$objFile = \FilesModel::findMultipleByUuids($arrEnclosure);
if ($objFile !== null) {
while ($objFile->next()) {
$objItem->addEnclosure($objFile->path);
}
}
}
}
$objFeed->addItem($objItem);
}
}
// Create the file
\File::putContent('share/' . $strFile . '.xml', $this->replaceInsertTags($objFeed->{$strType}(), false));
}
示例4: list
$dateadded = mysql_result($result, $currentrecord, "dateadded");
$filesize = mysql_result($result, $currentrecord, "filesize");
// Parse apart the date into its component parts.
list($date, $time) = explode(" ", $dateadded);
list($year, $month, $day) = explode("-", $date);
list($hour, $minute, $second) = explode(":", $time);
$date_number = mktime($hour, $minute, $second, $month, $day, $year);
// Add a channel item to the RSS feed.
$item = new FeedItem();
$item->title = $heading . " Building Permit Summary";
$item->link = "http://www.city.charlottetown.pe.ca/" . $url;
$item->description = "<a href=\"http://www.city.charlottetown.pe.ca/{$url}\">{$heading} Building Permit Summary</a>";
$item->date = strftime("%Y-%m-%dT%H:%M:%S%z", $date_number);
$item->source = "http://www.city.charlottetown.pe.ca/residents/application_fees.cfm";
$item->guid = "http://www.city.charlottetown.pe.ca/" . $url;
$item->addEnclosure("http://www.city.charlottetown.pe.ca/" . $url, $filesize, "text/pdf");
$item->author = "peter@rukavina.net (Peter Rukavina)";
$rss->addItem($item);
$currentrecord++;
}
// Save the RSS feed. This should be a web-accessible location.
$rss->saveFeed("RSS2.0", $rssfile, FALSE);
/**
* Parse apart the part of the filename that contains the date, and make it standard.
* There is inconsistency in the date format used in URLs. Examples of formats used:
*
* May 28 05
* August 27 2005
* Feb 4 2006
*
* The format is always Month - space - day - space - year, but the month can
示例5: generateFiles
//.........这里部分代码省略.........
$objFeed->published = $arrFeed['tstamp'];
$arrUrls = array();
$this->arrEvents = array();
$time = time();
// Get the upcoming events
$objArticle = \CalendarEventsModel::findUpcomingByPids($arrCalendars, $arrFeed['maxItems']);
// Parse the items
if ($objArticle !== null) {
while ($objArticle->next()) {
$jumpTo = $objArticle->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = \PageModel::findWithDetails($jumpTo);
// A jumpTo page is set but does no longer exist (see #5781)
if ($objParent === null) {
$arrUrls[$jumpTo] = false;
} else {
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), \Config::get('useAutoItem') && !\Config::get('disableAlias') ? '/%s' : '/events/%s', $objParent->language);
}
}
// Skip the event if it requires a jumpTo URL but there is none
if ($arrUrls[$jumpTo] === false && $objArticle->source == 'default') {
continue;
}
$strUrl = $arrUrls[$jumpTo];
$this->addEvent($objArticle, $objArticle->startTime, $objArticle->endTime, $strUrl, $strLink);
// Recurring events
if ($objArticle->recurring) {
$arrRepeat = deserialize($objArticle->repeatEach);
if ($arrRepeat['value'] < 1) {
continue;
}
$count = 0;
$intStartTime = $objArticle->startTime;
$intEndTime = $objArticle->endTime;
$strtotime = '+ ' . $arrRepeat['value'] . ' ' . $arrRepeat['unit'];
// Do not include more than 20 recurrences
while ($count++ < 20) {
if ($objArticle->recurrences > 0 && $count >= $objArticle->recurrences) {
break;
}
$intStartTime = strtotime($strtotime, $intStartTime);
$intEndTime = strtotime($strtotime, $intEndTime);
if ($intStartTime >= $time) {
$this->addEvent($objArticle, $intStartTime, $intEndTime, $strUrl, $strLink);
}
}
}
}
}
$count = 0;
ksort($this->arrEvents);
// Add the feed items
foreach ($this->arrEvents as $days) {
foreach ($days as $events) {
foreach ($events as $event) {
if ($arrFeed['maxItems'] > 0 && $count++ >= $arrFeed['maxItems']) {
break 3;
}
$objItem = new \FeedItem();
$objItem->title = $event['title'];
$objItem->link = $event['link'];
$objItem->published = $event['tstamp'];
$objItem->begin = $event['begin'];
$objItem->end = $event['end'];
$objItem->author = $event['authorName'];
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = \ContentModel::findPublishedByPidAndTable($event['id'], 'tl_calendar_events');
if ($objElement !== null) {
// Overwrite the request (see #7756)
$strRequest = \Environment::get('request');
\Environment::set('request', $objItem->link);
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->current());
}
\Environment::set('request', $strRequest);
}
} else {
$strDescription = $event['teaser'];
}
$strDescription = $this->replaceInsertTags($strDescription, false);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
if (is_array($event['enclosure'])) {
foreach ($event['enclosure'] as $enclosure) {
$objItem->addEnclosure($enclosure);
}
}
$objFeed->addItem($objItem);
}
}
}
// Create the file
\File::putContent('share/' . $strFile . '.xml', $this->replaceInsertTags($objFeed->{$strType}(), false));
}
示例6: generateFiles
/**
* Generate an XML files and save them to the root directory
*
* @param array
*/
protected function generateFiles($arrFeed)
{
$arrArchives = deserialize($arrFeed['archives']);
if (!is_array($arrArchives) || empty($arrArchives)) {
return;
}
$strType = 'generateItunes';
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new iTunesFeed($strFile);
$objFeed->link = $strLink;
$objFeed->podcastUrl = $strLink . 'share/' . $strFile . '.xml';
$objFeed->title = $arrFeed['title'];
$objFeed->subtitle = $arrFeed['subtitle'];
$objFeed->description = $this->cleanHtml($arrFeed['description']);
$objFeed->explicit = $arrFeed['explicit'];
$objFeed->language = $arrFeed['language'];
$objFeed->author = $arrFeed['author'];
$objFeed->owner = $arrFeed['owner'];
$objFeed->email = $arrFeed['email'];
$objFeed->category = $arrFeed['category'];
$objFeed->published = $arrFeed['tstamp'];
//Add Feed Image
$objFile = \FilesModel::findByUuid($arrFeed['image']);
if ($objFile !== null) {
$objFeed->imageUrl = \Environment::get('base') . $objFile->path;
}
// Get the items
if ($arrFeed['maxItems'] > 0) {
$objPodcasts = \NewsPodcastsModel::findPublishedByPids($arrArchives, null, $arrFeed['maxItems']);
} else {
$objPodcasts = \NewsPodcastsModel::findPublishedByPids($arrArchives);
}
// Parse the items
if ($objPodcasts !== null) {
$arrUrls = array();
while ($objPodcasts->next()) {
$jumpTo = $objPodcasts->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = \PageModel::findWithDetails($jumpTo);
// A jumpTo page is set but does no longer exist (see #5781)
if ($objParent === null) {
$arrUrls[$jumpTo] = false;
} else {
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] && !$GLOBALS['TL_CONFIG']['disableAlias'] ? '/%s' : '/items/%s', $objParent->language);
}
}
// Skip the event if it requires a jumpTo URL but there is none
if ($arrUrls[$jumpTo] === false && $objPodcasts->source == 'default') {
continue;
}
$strUrl = $arrUrls[$jumpTo];
$objItem = new \FeedItem();
$objItem->headline = $this->cleanHtml($objPodcasts->headline);
$objItem->subheadline = $this->cleanHtml($objPodcasts->subheadline !== null ? $objPodcasts->subheadline : $objPodcasts->description);
$objItem->link = $strLink . sprintf($strUrl, $objPodcasts->alias != '' && !$GLOBALS['TL_CONFIG']['disableAlias'] ? $objPodcasts->alias : $objPodcasts->id);
$objItem->published = $objPodcasts->date;
$objAuthor = $objPodcasts->getRelated('author');
$objItem->author = $objAuthor->name;
$objItem->description = $this->cleanHtml($objPodcasts->teaser);
$objItem->explicit = $objPodcasts->explicit;
// Add the article image as enclosure
$objItem->addEnclosure($objFeed->imageUrl);
// Add the Audio File
if ($objPodcasts->podcast) {
$objFile = \FilesModel::findByUuid($objPodcasts->podcast);
if ($objFile !== null) {
// Add statistics service
if (!empty($arrFeed['addStatistics'])) {
// If no trailing slash given, add one
$statisticsPrefix = rtrim($arrFeed['statisticsPrefix'], '/') . '/';
$podcastPath = $statisticsPrefix . \Environment::get('host') . '/' . preg_replace('(^https?://)', '', $objFile->path);
} else {
$podcastPath = \Environment::get('base') . \System::urlEncode($objFile->path);
}
$objItem->podcastUrl = $podcastPath;
// Prepare the duration / prefer linux tool mp3info
$mp3file = new GetMp3Duration(TL_ROOT . '/' . $objFile->path);
if ($this->checkMp3InfoInstalled()) {
$shell_command = 'mp3info -p "%S" ' . escapeshellarg(TL_ROOT . '/' . $objFile->path);
$duration = shell_exec($shell_command);
} else {
$duration = $mp3file->getDuration();
}
$objPodcastFile = new \File($objFile->path, true);
$objItem->length = $objPodcastFile->size;
$objItem->type = $objPodcastFile->mime;
$objItem->duration = $mp3file->formatTime($duration);
}
}
//.........这里部分代码省略.........
示例7: generateFiles
/**
* Generate an XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrArchive)
{
$time = time();
$strType = $arrArchive['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrArchive['feedBase'] != '' ? $arrArchive['feedBase'] : $this->Environment->base;
$strFile = $arrArchive['feedName'];
$objFeed = new Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrArchive['title'];
$objFeed->description = $arrArchive['description'];
$objFeed->language = $arrArchive['language'];
$objFeed->published = $arrArchive['tstamp'];
// Get items
$objArticleStmt = $this->Database->prepare("SELECT *, (SELECT name FROM tl_user u WHERE u.id=n.author) AS authorName\n\t\t\t\t\t\t\t\t\t\t\t\t\tFROM tl_news4ward_article n\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE pid=? AND (start='' OR start<{$time}) AND (stop='' OR stop>{$time}) AND status='published'\n\t\t\t\t\t\t\t\t\t\t\t\t\tORDER BY start DESC");
if ($arrArchive['maxItems'] > 0) {
$objArticleStmt->limit($arrArchive['maxItems']);
}
$objArticle = $objArticleStmt->execute($arrArchive['id']);
// Get the default URL
$objParent = $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?")->limit(1)->execute($arrArchive['jumpTo']);
if ($objParent->numRows < 1) {
return;
}
$objParent = $this->getPageDetails($objParent->id);
$strUrl = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] ? '/%s' : '/items/%s', $objParent->language);
// Parse items
while ($objArticle->next()) {
$objItem = new FeedItem();
$objItem->title = $objArticle->title;
$objItem->link = $this->generateUrl($objArticle, $strUrl);
$objItem->published = $objArticle->start;
$objItem->author = $objArticle->authorName;
// Prepare the description
if ($arrArchive['source'] == 'source_text') {
/* generate the content-elements */
$objContentelements = $this->Database->prepare('SELECT id FROM tl_content WHERE pid=? AND do="news4ward" AND invisible="" ORDER BY sorting')->execute($objArticle->id);
$strDescription = '';
while ($objContentelements->next()) {
$strDescription .= $this->getContentElement($objContentelements->id);
}
} else {
$strDescription = $objArticle->teaser;
}
$strDescription = $this->replaceInsertTags($strDescription);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objItem->addEnclosure($objArticle->singleSRC);
}
// Enclosure
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
foreach ($arrEnclosure as $strEnclosure) {
if (is_file(TL_ROOT . '/' . $strEnclosure)) {
$objItem->addEnclosure($strEnclosure);
}
}
}
}
$objFeed->addItem($objItem);
}
// Create file
$objRss = new File($strFile . '.xml');
$objRss->write($this->replaceInsertTags($objFeed->{$strType}()));
$objRss->close();
}
示例8: generateFiles
/**
* Generate an XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrArchive)
{
$time = time();
$strType = $arrArchive['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = strlen($arrArchive['feedBase']) ? $arrArchive['feedBase'] : $this->Environment->base;
$strFile = $arrArchive['feedName'];
$objFeed = new Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrArchive['title'];
$objFeed->description = $arrArchive['description'];
$objFeed->language = $arrArchive['language'];
$objFeed->published = $arrArchive['tstamp'];
// Get items
$objArticleStmt = $this->Database->prepare("SELECT *, (SELECT name FROM tl_user u WHERE u.id=n.author) AS authorName FROM tl_news n WHERE pid=? AND (start='' OR start<{$time}) AND (stop='' OR stop>{$time}) AND published=1 ORDER BY date DESC");
if ($arrArchive['maxItems'] > 0) {
$objArticleStmt->limit($arrArchive['maxItems']);
}
$objArticle = $objArticleStmt->execute($arrArchive['id']);
// Get default URL
$objParent = $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?")->limit(1)->execute($arrArchive['jumpTo']);
$strUrl = $this->generateFrontendUrl($objParent->fetchAssoc(), '/items/%s');
// Parse items
while ($objArticle->next()) {
$objItem = new FeedItem();
$objItem->title = $objArticle->headline;
$objItem->link = ($objArticle->source == 'external' ? '' : $strLink) . $this->getLink($objArticle, $strUrl);
$objItem->published = $objArticle->date;
$objItem->author = $objArticle->authorName;
// Prepare the description
$strDescription = $arrArchive['source'] == 'source_text' ? $objArticle->text : $objArticle->teaser;
$strDescription = $this->replaceInsertTags($strDescription);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objItem->addEnclosure($objArticle->singleSRC);
}
// Enclosure
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
foreach ($arrEnclosure as $strEnclosure) {
if (is_file(TL_ROOT . '/' . $strEnclosure)) {
$objItem->addEnclosure($strEnclosure);
}
}
}
}
$objFeed->addItem($objItem);
}
// Create file
$objRss = new File($strFile . '.xml');
$objRss->write($this->replaceInsertTags($objFeed->{$strType}()));
$objRss->close();
}
示例9: generateFiles
/**
* Generate the XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrFeed)
{
$arrConfigs = deserialize($arrFeed['configs']);
if (!is_array($arrConfigs) || count($arrConfigs) < 1) {
return;
}
$strType = $arrFeed['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
$objJumpTo = \PageModel::findByPk($arrFeed['jumpTo']);
// find the source attributes
$objDescriptionAttribute = \PCT\CustomElements\Core\AttributeFactory::fetchById($arrFeed['descriptionField']);
$objPublishedAttribute = \PCT\CustomElements\Core\AttributeFactory::fetchById($arrFeed['publishedField']);
$objTitleAttribute = \PCT\CustomElements\Core\AttributeFactory::fetchById($arrFeed['titleField']);
$objAuthorAttribute = \PCT\CustomElements\Core\AttributeFactory::fetchById($arrFeed['authorField']);
$objImageAttribute = \PCT\CustomElements\Core\AttributeFactory::fetchById($arrFeed['imageField']);
$arrFields = array('id', 'pid', 'tstamp', 'description' => $objDescriptionAttribute->alias, 'title' => $objTitleAttribute->alias, 'published' => $objPublishedAttribute->alias, 'author' => $objAuthorAttribute->alias, 'singleSRC' => $objImageAttribute->alias);
foreach ($arrConfigs as $config_id) {
$objCC = CustomCatalogFactory::findById($config_id);
if ($objCC === null) {
continue;
}
// set visibles to source attribute only
$objCC->setVisibles(array_filter(array_values($arrFields)));
if ($arrFeed['maxItems'] > 0) {
$objCC->setLimit($arrFeed['maxItems']);
}
// fetch the entries
$objEntries = $objCC->prepare();
if ($objEntries->numRows < 1) {
continue;
}
while ($objEntries->next()) {
$objItem = new \FeedItem();
$objItem->title = $objEntries->{$arrFields['title']};
$objItem->link = $strLink . $objCC->generateDetailsUrl($objEntries, $objJumpTo);
$objItem->published = $objEntries->{$arrFields['published']} ?: $objEntries->tstamp;
$objItem->author = $objEntries->{$arrFields['author']} ?: '';
$strDescription = $this->replaceInsertTags($objEntries->{$arrFields['description']}, false);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
if ($objEntries->{$arrFields['singleSRC']} && $objImageAttribute->published) {
$objFile = \FilesModel::findByUuid($objEntries->{$arrFields['singleSRC']});
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
}
}
// add feed item
$objFeed->addItem($objItem);
}
}
// create file
\File::putContent('share/' . $strFile . '.xml', $this->replaceInsertTags($objFeed->{$strType}(), false));
}
示例10: generateFiles
/**
* Generate an XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrFeed)
{
$arrArchives = deserialize($arrFeed['archives']);
if (!is_array($arrArchives) || empty($arrArchives)) {
return;
}
switch ($arrFeed['format']) {
case 'rss':
$strType = 'generateRss';
break;
case 'atom':
$strType = 'generateAtom';
break;
case 'podcast':
$strType = 'generatePodcast';
break;
}
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new FeedPodcast($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
//Add Feed Image
if ($arrFeed['format'] == 'podcast') {
$objFile = \FilesModel::findByUuid($arrFeed['podcastSingleSRC']);
if ($objFile !== null) {
$objFeed->imageUrl = \Environment::get('base') . $objFile->path;
}
}
// Get the items
if ($arrFeed['maxItems'] > 0) {
$objSermons = \SermonerItemsModel::findPublishedByPids($arrArchives, $arrFeed['maxItems']);
} else {
$objSermons = \SermonerItemsModel::findPublishedByPids($arrArchives);
}
// Parse the items
if ($objSermons !== null) {
$arrUrls = array();
while ($objSermons->next()) {
$jumpTo = $objSermons->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = \PageModel::findWithDetails($jumpTo);
// A jumpTo page is set but does no longer exist (see #5781)
if ($objParent === null) {
$arrUrls[$jumpTo] = false;
} else {
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] && !$GLOBALS['TL_CONFIG']['disableAlias'] ? '/%s' : '/items/%s', $objParent->language);
}
}
// Skip the event if it requires a jumpTo URL but there is none
if ($arrUrls[$jumpTo] === false && $objSermons->source == 'default') {
continue;
}
$strUrl = $arrUrls[$jumpTo];
$objItem = new \FeedItem();
$objItem->title = $objSermons->title;
$objItem->link = $strLink . sprintf($strUrl, $objSermons->alias != '' && !$GLOBALS['TL_CONFIG']['disableAlias'] ? $objSermons->alias : $objSermons->id);
$objItem->published = $objSermons->date;
$objItem->author = $objSermons->speaker;
// Prepare the description
if ($arrFeed['format'] == 'podcast') {
$objItem->description = $this->replaceSermonInsertTags($arrFeed['podcastSubtitle'], $objSermons);
}
// Add the article image as enclosure
if ($objSermons->addImage) {
$objFile = \FilesModel::findByUuid($objSermons->singleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
}
}
// Add the Sermon Audio File
if ($objSermons->audioSingleSRC) {
$objFile = \FilesModel::findByUuid($objSermons->audioSingleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
//Prepare the duration if it's a podcast
if ($arrFeed['format'] == 'podcast') {
$this->import('getid3');
$getID3 = new \getID3();
$mp3FileInfo = $getID3->analyze(TL_ROOT . '/' . $objFile->path);
$objItem->duration = @$mp3FileInfo['playtime_string'];
}
}
}
$objFeed->addItem($objItem);
}
}
// Create the file
//.........这里部分代码省略.........
示例11: generateFiles
/**
* Generate an XML file and save it to the root directory
* @param array
*/
protected function generateFiles($arrFeed)
{
$arrCalendars = deserialize($arrFeed['calendars']);
if (!is_array($arrCalendars) || empty($arrCalendars)) {
return;
}
$strType = $arrFeed['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
$arrUrls = array();
$this->arrEvents = array();
$time = time();
// Get the upcoming events
$objArticle = \CalendarEventsModel::findUpcomingByPids($arrCalendars, $arrFeed['maxItems']);
// Parse the items
if ($objArticle !== null) {
while ($objArticle->next()) {
$jumpTo = $objArticle->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = $this->getPageDetails($jumpTo);
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] ? '/%s' : '/events/%s', $objParent->language);
}
$strUrl = $arrUrls[$jumpTo];
$this->addEvent($objArticle, $objArticle->startTime, $objArticle->endTime, $strUrl, $strLink);
// Recurring events
if ($objArticle->recurring) {
$count = 0;
$arrRepeat = deserialize($objArticle->repeatEach);
// Do not include more than 20 recurrences
while ($count++ < 20) {
if ($objArticle->recurrences > 0 && $count >= $objArticle->recurrences) {
break;
}
$arg = $arrRepeat['value'];
$unit = $arrRepeat['unit'];
$strtotime = '+ ' . $arg . ' ' . $unit;
$objArticle->startTime = strtotime($strtotime, $objArticle->startTime);
$objArticle->endTime = strtotime($strtotime, $objArticle->endTime);
if ($objArticle->startTime >= $time) {
$this->addEvent($objArticle, $objArticle->startTime, $objArticle->endTime, $strUrl, $strLink);
}
}
}
}
}
$count = 0;
ksort($this->arrEvents);
// Add the feed items
foreach ($this->arrEvents as $days) {
foreach ($days as $events) {
foreach ($events as $event) {
if ($arrFeed['maxItems'] > 0 && $count++ >= $arrFeed['maxItems']) {
break 3;
}
$objItem = new \FeedItem();
$objItem->title = $event['title'];
$objItem->link = $event['link'];
$objItem->published = $event['published'];
$objItem->start = $event['start'];
$objItem->end = $event['end'];
$objItem->author = $event['authorName'];
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = \ContentModel::findPublishedByPidAndTable($event['id'], 'tl_calendar_events');
if ($objElement !== null) {
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->id);
}
}
} else {
$strDescription = $event['teaser'];
}
$strDescription = $this->replaceInsertTags($strDescription);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
if (is_array($event['enclosure'])) {
foreach ($event['enclosure'] as $enclosure) {
$objItem->addEnclosure($enclosure);
}
}
$objFeed->addItem($objItem);
}
}
}
// Create file
//.........这里部分代码省略.........
示例12: generateFiles
/**
* @param $arrFeed
* @return null
*/
protected function generateFiles($arrFeed)
{
$arrArchives = deserialize($arrFeed['wrappers']);
if (!is_array($arrArchives) || empty($arrArchives)) {
return null;
}
$strType = $arrFeed['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrFeed['feedBase'] ?: Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
if ($arrFeed['maxItems'] > 0) {
$objArticle = $this->findPublishedByPids($arrArchives, $arrFeed['maxItems'], $arrFeed['fmodule'] . '_data');
} else {
$objArticle = $this->findPublishedByPids($arrArchives, 0, $arrFeed['fmodule'] . '_data');
}
if ($objArticle !== null) {
$arrUrls = array();
$strUrl = '';
while ($objArticle->next()) {
$pid = $objArticle->pid;
$wrapperDB = $this->Database->prepare('SELECT * FROM ' . $arrFeed['fmodule'] . ' WHERE id = ?')->execute($pid)->row();
if ($wrapperDB['addDetailPage'] == '1') {
$rootPage = $wrapperDB['rootPage'];
if (!isset($arrUrls[$rootPage])) {
$objParent = PageModel::findWithDetails($rootPage);
if ($objParent === null) {
$arrUrls[$rootPage] = false;
} else {
$arrUrls[$rootPage] = $this->generateFrontendUrl($objParent->row(), Config::get('useAutoItem') && !Config::get('disableAlias') ? '/%s' : '/items/%s', $objParent->language);
}
}
$strUrl = $arrUrls[$rootPage];
}
$authorName = '';
if ($objArticle->author) {
$authorDB = $this->Database->prepare('SELECT * FROM tl_user WHERE id = ?')->execute($objArticle->author)->row();
$authorName = $authorDB['name'];
}
$objItem = new \FeedItem();
$objItem->title = $objArticle->title;
$objItem->link = HelperModel::getLink($objArticle, $strUrl, $strLink);
$objItem->published = $objArticle->date ? $objArticle->date : $arrFeed['tstamp'];
$objItem->author = $authorName;
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = ContentModelExtend::findPublishedByPidAndTable($objArticle->id, $arrFeed['fmodule'] . '_data', array('fview' => 'detail'));
if ($objElement !== null) {
// Overwrite the request (see #7756)
$strRequest = Environment::get('request');
Environment::set('request', $objItem->link);
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->current());
}
Environment::set('request', $strRequest);
}
} else {
$strDescription = '';
$objElement = ContentModelExtend::findPublishedByPidAndTable($objArticle->id, $arrFeed['fmodule'] . '_data', array('fview' => 'list'));
if ($objElement !== null) {
// Overwrite the request (see #7756)
$strRequest = Environment::get('request');
Environment::set('request', $objItem->link);
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->current());
}
Environment::set('request', $strRequest);
}
if (!$strDescription) {
$strDescription = $objArticle->description;
}
}
$strDescription = $this->replaceInsertTags($strDescription, false);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objFile = \FilesModel::findByUuid($objArticle->singleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
}
}
// Enclosures
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
$objFile = \FilesModel::findMultipleByUuids($arrEnclosure);
if ($objFile !== null) {
while ($objFile->next()) {
$objItem->addEnclosure($objFile->path);
}
}
//.........这里部分代码省略.........
示例13: generateFiles
/**
* Generate an XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrFeed)
{
$arrArchives = deserialize($arrFeed['archives']);
if (!is_array($arrArchives) || empty($arrArchives)) {
return;
}
$strType = $arrFeed['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrFeed['feedBase'] ?: \Environment::get('base');
$strFile = $arrFeed['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrFeed['title'];
$objFeed->description = $arrFeed['description'];
$objFeed->language = $arrFeed['language'];
$objFeed->published = $arrFeed['tstamp'];
// Get the items
if ($arrFeed['maxItems'] > 0) {
$objArticle = \NewsModel::findPublishedByPids($arrArchives, null, $arrFeed['maxItems']);
} else {
$objArticle = \NewsModel::findPublishedByPids($arrArchives);
}
// Parse the items
if ($objArticle !== null) {
$arrUrls = array();
while ($objArticle->next()) {
$jumpTo = $objArticle->getRelated('pid')->jumpTo;
// No jumpTo page set (see #4784)
if (!$jumpTo) {
continue;
}
// Get the jumpTo URL
if (!isset($arrUrls[$jumpTo])) {
$objParent = $this->getPageDetails($jumpTo);
$arrUrls[$jumpTo] = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] ? '/%s' : '/items/%s', $objParent->language);
}
$strUrl = $arrUrls[$jumpTo];
$objItem = new \FeedItem();
$objItem->title = $objArticle->headline;
$objItem->link = $this->getLink($objArticle, $strUrl, $strLink);
$objItem->published = $objArticle->date;
$objItem->author = $objArticle->authorName;
// Prepare the description
if ($arrFeed['source'] == 'source_text') {
$strDescription = '';
$objElement = \ContentModel::findPublishedByPidAndTable($objArticle->id, 'tl_news');
if ($objElement !== null) {
while ($objElement->next()) {
$strDescription .= $this->getContentElement($objElement->id);
}
}
} else {
$strDescription = $objArticle->teaser;
}
$strDescription = $this->replaceInsertTags($strDescription);
$objItem->description = $this->convertRelativeUrls($strDescription, $strLink);
// Add the article image as enclosure
if ($objArticle->addImage) {
$objFile = \FilesModel::findByPk($objArticle->singleSRC);
if ($objFile !== null) {
$objItem->addEnclosure($objFile->path);
}
}
// Enclosures
if ($objArticle->addEnclosure) {
$arrEnclosure = deserialize($objArticle->enclosure, true);
if (is_array($arrEnclosure)) {
$objFile = \FilesModel::findMultipleByIds($arrEnclosure);
while ($objFile->next()) {
$objItem->addEnclosure($objFile->path);
}
}
}
$objFeed->addItem($objItem);
}
}
// Create the file
$objRss = new \File('share/' . $strFile . '.xml');
$objRss->write($this->replaceInsertTags($objFeed->{$strType}()));
$objRss->close();
}
示例14: generateFiles
/**
* Generate an XML files and save them to the root directory
* @param array
*/
protected function generateFiles($arrArchive)
{
$this->import('Database');
$time = time();
$strType = $arrArchive['format'] == 'atom' ? 'generateAtom' : 'generateRss';
$strLink = $arrArchive['feedBase'] != '' ? $arrArchive['feedBase'] : $this->Environment->base;
$strFile = $arrArchive['feedName'];
$objFeed = new \Feed($strFile);
$objFeed->link = $strLink;
$objFeed->title = $arrArchive['title'];
$objFeed->description = $arrArchive['description'];
$objFeed->language = $arrArchive['language'];
$objFeed->published = $arrArchive['tstamp'];
// Get items
$objArticleStmt = $this->Database->prepare("SELECT *, (SELECT name FROM tl_user u WHERE u.id=p.author) AS authorName FROM tl_photoalbums2_album p WHERE pid=? AND (start='' OR start<{$time}) AND (stop='' OR stop>{$time}) AND published=1 ORDER BY sorting ASC");
if ($arrArchive['maxItems'] > 0) {
$objArticleStmt->limit($arrArchive['maxItems']);
}
$objArticle = $objArticleStmt->execute($arrArchive['id']);
// Get the default URL
$objParent = \PageModel::findByPk($arrArchive['modulePage']);
if ($objParent == null) {
return;
}
$objParent = $this->getPageDetails($objParent->id);
$strUrl = $this->generateFrontendUrl($objParent->row(), $GLOBALS['TL_CONFIG']['useAutoItem'] ? '/%s' : '/album/%s', $objParent->language);
// Parse items
if ($objArticle !== null) {
while ($objArticle->next()) {
// Deserialize image arrays
$objArticle->images = deserialize($objArticle->images);
$objArticle->imageSort = deserialize($objArticle->imageSort);
// Sort images
$objPa2ImageSorter = new \Pa2ImageSorter($objArticle->imageSortType, $objArticle->images, $objArticle->imageSort);
$this->arrImages = $objPa2ImageSorter->getSortedUuids();
$objItem = new \FeedItem();
$objItem->title = $objArticle->title;
$objItem->link = sprintf($strLink . $strUrl, $objArticle->alias != '' && !$GLOBALS['TL_CONFIG']['disableAlias'] ? $objArticle->alias : $objArticle->id);
$objItem->published = $objArticle->startdate;
$objItem->author = $objArticle->authorName;
if (is_array($objArticle->arrImages) && count($objArticle->arrImages) > 0) {
foreach ($objArticle->arrImages as $image) {
if (is_file(TL_ROOT . '/' . $image)) {
$objItem->addEnclosure($image);
}
}
}
$objItem->description = $this->replaceInsertTags($objArticle->description);
$objFeed->addItem($objItem);
}
}
// Create file
$objRss = new \file($strFile . '.xml');
$objRss->write($this->replaceInsertTags($objFeed->{$strType}()));
$objRss->close();
}