本文整理汇总了PHP中NewsModel::findPublishedByPids方法的典型用法代码示例。如果您正苦于以下问题:PHP NewsModel::findPublishedByPids方法的具体用法?PHP NewsModel::findPublishedByPids怎么用?PHP NewsModel::findPublishedByPids使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NewsModel
的用法示例。
在下文中一共展示了NewsModel::findPublishedByPids方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: compile
/**
* Generate the content element
*/
protected function compile()
{
$arrItems = array();
$t = 'tl_news';
if ($this->include_type == 'archives') {
$arrArchiveIds = deserialize($this->include_archives, true);
$strSortOrder = $this->sortOrder == 'ascending' ? 'ASC' : 'DESC';
if (sizeof($arrArchiveIds)) {
$objItems = \NewsModel::findPublishedByPids($arrArchiveIds, null, 0, 0, array('order' => 'date ' . $strSortOrder));
}
} else {
$arrItemIds = deserialize($this->include_items, true);
if (sizeof($arrItemIds)) {
$arrItems = array_map(function () {
return '';
}, array_flip($arrItemIds));
$arrColumns = array("{$t}.id IN(" . implode(',', array_map('intval', $arrItemIds)) . ")");
if (!BE_USER_LOGGED_IN) {
$time = time();
$arrColumns[] = "({$t}.start='' OR {$t}.start<{$time}) AND ({$t}.stop='' OR {$t}.stop>{$time}) AND {$t}.published=1";
}
$objItems = \NewsModel::findBy($arrColumns, null);
}
}
if (!is_null($objItems)) {
while ($objItems->next()) {
$objReaderPage = \PageModel::findById($objItems->getRelated('pid')->jumpTo);
$arrItem = $objItems->row();
$arrItem['date'] = \Date::parse('Y-m-d', $objItems->date);
$arrItem['dateReadable'] = \Date::parse(\Config::get('dateFormat') ?: 'Y-m-d', $objItems->date);
$arrItem['href'] = ampersand($this->generateFrontendUrl($objReaderPage->row(), (\Config::get('useAutoItem') && !\Config::get('disableAlias') ? '/' : '/items/') . (!\Config::get('disableAlias') && $objItems->alias != '' ? $objItems->alias : $objItems->id)));
$arrItems[$objItems->id] = $arrItem;
}
}
$this->Template->items = array_filter($arrItems);
}
示例2: 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));
}
示例3: 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'];
$arrCategories = deserialize($arrFeed['categories']);
// Filter by categories
if (is_array($arrCategories) && !empty($arrCategories)) {
$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);
//.........这里部分代码省略.........
示例4: compile
/**
* Generate the module
*/
protected function compile()
{
$offset = intval($this->skipFirst);
$limit = null;
// Maximum number of items
if ($this->numberOfItems > 0) {
$limit = $this->numberOfItems;
}
// Handle featured news
if ($this->news_featured == 'featured') {
$blnFeatured = true;
} elseif ($this->news_featured == 'unfeatured') {
$blnFeatured = false;
} else {
$blnFeatured = null;
}
$this->Template->articles = array();
$this->Template->empty = $GLOBALS['TL_LANG']['MSC']['emptyList'];
// Get the total number of items
$intTotal = \NewsModel::countPublishedByPids($this->news_archives, $blnFeatured);
if ($intTotal < 1) {
return;
}
$total = $intTotal - $offset;
// Split the results
if ($this->perPage > 0 && (!isset($limit) || $this->numberOfItems > $this->perPage)) {
// Adjust the overall limit
if (isset($limit)) {
$total = min($limit, $total);
}
// Get the current page
$id = 'page_n' . $this->id;
$page = \Input::get($id) ?: 1;
// Do not index or cache the page if the page number is outside the range
if ($page < 1 || $page > max(ceil($total / $this->perPage), 1)) {
global $objPage;
$objPage->noSearch = 1;
$objPage->cache = 0;
// Send a 404 header
header('HTTP/1.1 404 Not Found');
return;
}
// Set limit and offset
$limit = $this->perPage;
$offset += (max($page, 1) - 1) * $this->perPage;
$skip = intval($this->skipFirst);
// Overall limit
if ($offset + $limit > $total + $skip) {
$limit = $total + $skip - $offset;
}
// Add the pagination menu
$objPagination = new \Pagination($total, $this->perPage, \Config::get('maxPaginationLinks'), $id);
$this->Template->pagination = $objPagination->generate("\n ");
}
// Get the items
if (isset($limit)) {
$objArticles = \NewsModel::findPublishedByPids($this->news_archives, $blnFeatured, $limit, $offset);
} else {
$objArticles = \NewsModel::findPublishedByPids($this->news_archives, $blnFeatured, 0, $offset);
}
// Add the articles
if ($objArticles !== null) {
$this->Template->articles = $this->parseArticles($objArticles);
}
$this->Template->archives = $this->news_archives;
}
示例5: compileDailyMenu
/**
* Generate the dayil menu
*/
protected function compileDailyMenu()
{
$arrData = array();
$this->Template = new \FrontendTemplate('mod_newsmenu_day');
$objArchives = \NewsModel::findPublishedByPids($this->news_archives);
if ($objArchives !== null) {
while ($objArchives->next()) {
++$arrData[date('Ymd', $objArchives->date)];
}
}
// Sort the data
krsort($arrData);
$strUrl = \Environment::get('request');
// Get the current "jumpTo" page
if ($this->jumpTo && ($objTarget = $this->objModel->getRelated('jumpTo')) !== null) {
$strUrl = $this->generateFrontendUrl($objTarget->row());
}
$this->Date = \Input::get('day') ? new \Date(\Input::get('day'), 'Ymd') : new \Date();
$intYear = date('Y', $this->Date->tstamp);
$intMonth = date('m', $this->Date->tstamp);
$this->Template->intYear = $intYear;
$this->Template->intMonth = $intMonth;
// Previous month
$prevMonth = $intMonth == 1 ? 12 : $intMonth - 1;
$prevYear = $intMonth == 1 ? $intYear - 1 : $intYear;
$lblPrevious = $GLOBALS['TL_LANG']['MONTHS'][$prevMonth - 1] . ' ' . $prevYear;
$this->Template->prevHref = $strUrl . ($GLOBALS['TL_CONFIG']['disableAlias'] ? '?id=' . \Input::get('id') . '&' : '?') . 'day=' . $prevYear . (strlen($prevMonth) < 2 ? '0' : '') . $prevMonth . '01';
$this->Template->prevTitle = specialchars($lblPrevious);
$this->Template->prevLink = $GLOBALS['TL_LANG']['MSC']['news_previous'] . ' ' . $lblPrevious;
$this->Template->prevLabel = $GLOBALS['TL_LANG']['MSC']['news_previous'];
// Current month
$this->Template->current = $GLOBALS['TL_LANG']['MONTHS'][date('m', $this->Date->tstamp) - 1] . ' ' . date('Y', $this->Date->tstamp);
// Next month
$nextMonth = $intMonth == 12 ? 1 : $intMonth + 1;
$nextYear = $intMonth == 12 ? $intYear + 1 : $intYear;
$lblNext = $GLOBALS['TL_LANG']['MONTHS'][$nextMonth - 1] . ' ' . $nextYear;
$this->Template->nextHref = $strUrl . ($GLOBALS['TL_CONFIG']['disableAlias'] ? '?id=' . \Input::get('id') . '&' : '?') . 'day=' . $nextYear . (strlen($nextMonth) < 2 ? '0' : '') . $nextMonth . '01';
$this->Template->nextTitle = specialchars($lblNext);
$this->Template->nextLink = $lblNext . ' ' . $GLOBALS['TL_LANG']['MSC']['news_next'];
$this->Template->nextLabel = $GLOBALS['TL_LANG']['MSC']['news_next'];
// Set week start day
if (!$this->news_startDay) {
$this->news_startDay = 0;
}
$this->Template->days = $this->compileDays();
$this->Template->weeks = $this->compileWeeks($arrData, $strUrl);
$this->Template->showQuantity = $this->news_showQuantity != '' ? true : false;
}
示例6: fetchItems
/**
* Fetch the matching items
*
* @param array $newsArchives
* @param boolean $blnFeatured
* @param integer $limit
* @param integer $offset
*
* @return \Model\Collection|\NewsModel|null
*/
protected function fetchItems($newsArchives, $blnFeatured, $limit, $offset)
{
// HOOK: add custom logic
if (isset($GLOBALS['TL_HOOKS']['newsListFetchItems']) && is_array($GLOBALS['TL_HOOKS']['newsListFetchItems'])) {
foreach ($GLOBALS['TL_HOOKS']['newsListFetchItems'] as $callback) {
if (($objCollection = \System::importStatic($callback[0])->{$callback[1]}($newsArchives, $blnFeatured, $limit, $offset, $this)) === false) {
continue;
}
if ($objCollection === null || $objCollection instanceof \Model\Collection) {
return $objCollection;
}
}
}
return \NewsModel::findPublishedByPids($newsArchives, $blnFeatured, $limit, $offset);
}
示例7: getRelatedNews
public static function getRelatedNews(\DataContainer $dc, array $arrRelation = array())
{
$arrOptionGroups = array();
$arrOptions = array();
// front end mode with module & relation context
if (!empty($arrRelation)) {
$objNews = \NewsModel::findPublishedByPids(deserialize($dc->objModule->news_archives, true), null, 0, 0, array('order' => 'headline'));
} else {
$objNews = \NewsModel::findAll();
}
if ($objNews === null) {
return $arrOptions;
}
while ($objNews->next()) {
// return as optgroup if more than 1 $arrPids
if (($objArchive = $objNews->getRelated('pid')) === null) {
continue;
}
$arrOptionGroups[$objArchive->title][$objNews->id] = $objNews->headline;
$arrOptions[$objNews->id] = $objNews->headline;
}
$arrDca =& $GLOBALS['TL_DCA']['tl_submission'];
// filter menu does not support optgroups
if (TL_MODE == 'BE' && $dc->field != 'news') {
return $arrOptions;
}
// remove optgroups if not wanted, or less than 2 optgroups
if (count($arrOptionGroups) == 1 || $arrDca['fields'][$arrRelation['submissionField']]['eval']['optgroup'] === false) {
return $arrOptions;
}
return $arrOptionGroups;
}
示例8: getNewsItems
protected function getNewsItems()
{
$tmpArr = array();
$news = \NewsModel::findPublishedByPids(array($this->settings['news']));
while ($news->next()) {
$tmpArr[] = array('title' => $news->headline, 'tstamp' => $news->time, 'id' => $news->id, 'type' => 'news', 'thumb' => $news->singleSRC && $news->addImage ? $this->getFilePath($news->singleSRC) : null);
}
return $tmpArr;
}
示例9: 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();
}