Файл: contao-3.5.8/system/modules/faq/modules/ModuleFaq.php
Строк: 73
<?php
/**
* Contao Open Source CMS
*
* Copyright (c) 2005-2016 Leo Feyer
*
* @license LGPL-3.0+
*/
namespace Contao;
/**
* Provide methods regarding FAQs.
*
* @author Leo Feyer <https://github.com/leofeyer>
*/
class ModuleFaq extends Frontend
{
/**
* Add FAQs to the indexer
*
* @param array $arrPages
* @param integer $intRoot
* @param boolean $blnIsSitemap
*
* @return array
*/
public function getSearchablePages($arrPages, $intRoot=0, $blnIsSitemap=false)
{
$arrRoot = array();
if ($intRoot > 0)
{
$arrRoot = $this->Database->getChildRecords($intRoot, 'tl_page');
}
$arrProcessed = array();
$time = Date::floorToMinute();
// Get all categories
$objFaq = FaqCategoryModel::findAll();
// Walk through each category
if ($objFaq !== null)
{
while ($objFaq->next())
{
// Skip FAQs without target page
if (!$objFaq->jumpTo)
{
continue;
}
// Skip FAQs outside the root nodes
if (!empty($arrRoot) && !in_array($objFaq->jumpTo, $arrRoot))
{
continue;
}
// Get the URL of the jumpTo page
if (!isset($arrProcessed[$objFaq->jumpTo]))
{
$objParent = PageModel::findWithDetails($objFaq->jumpTo);
// The target page does not exist
if ($objParent === null)
{
continue;
}
// The target page has not been published (see #5520)
if (!$objParent->published || ($objParent->start != '' && $objParent->start > $time) || ($objParent->stop != '' && $objParent->stop <= ($time + 60)))
{
continue;
}
// The target page is exempt from the sitemap (see #6418)
if ($blnIsSitemap && $objParent->sitemap == 'map_never')
{
continue;
}
// Generate the URL
$feUrl = $objParent->getFrontendUrl((Config::get('useAutoItem') && !Config::get('disableAlias')) ? '/%s' : '/items/%s');
if (strncmp($feUrl, 'http://', 7) !== 0 && strncmp($feUrl, 'https://', 8) !== 0)
{
$feUrl = (($objParent->rootUseSSL ? 'https://' : 'http://') . ($objParent->domain ?: Environment::get('host')) . TL_PATH . '/') . $feUrl;
}
$arrProcessed[$objFaq->jumpTo] = $feUrl;
}
$strUrl = $arrProcessed[$objFaq->jumpTo];
// Get the items
$objItems = FaqModel::findPublishedByPid($objFaq->id);
if ($objItems !== null)
{
while ($objItems->next())
{
$arrPages[] = sprintf($strUrl, (($objItems->alias != '' && !Config::get('disableAlias')) ? $objItems->alias : $objItems->id));
}
}
}
}
return $arrPages;
}
}