本文整理汇总了PHP中Contao\StringUtil::stripInsertTags方法的典型用法代码示例。如果您正苦于以下问题:PHP StringUtil::stripInsertTags方法的具体用法?PHP StringUtil::stripInsertTags怎么用?PHP StringUtil::stripInsertTags使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Contao\StringUtil
的用法示例。
在下文中一共展示了StringUtil::stripInsertTags方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: compile
/**
* Generate the module
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$arrJumpTo = array();
$arrNewsletter = array();
$strRequest = ampersand(\Environment::get('request'), true);
$objNewsletter = \NewsletterModel::findSentByPids($this->nl_channels);
if ($objNewsletter !== null) {
while ($objNewsletter->next()) {
/** @var NewsletterChannelModel $objTarget */
if (!($objTarget = $objNewsletter->getRelated('pid')) instanceof NewsletterChannelModel) {
continue;
}
$jumpTo = intval($objTarget->jumpTo);
// A jumpTo page is not mandatory for newsletter channels (see #6521) but required for the list module
if ($jumpTo < 1) {
throw new \Exception("Newsletter channels without redirect page cannot be used in a newsletter list");
}
$strUrl = $strRequest;
if (!isset($arrJumpTo[$objTarget->jumpTo])) {
if (($objJumpTo = $objTarget->getRelated('jumpTo')) instanceof PageModel) {
/** @var PageModel $objJumpTo */
$arrJumpTo[$objTarget->jumpTo] = $objJumpTo->getFrontendUrl(\Config::get('useAutoItem') ? '/%s' : '/items/%s');
} else {
$arrJumpTo[$objTarget->jumpTo] = $strUrl;
}
}
$strUrl = $arrJumpTo[$objTarget->jumpTo];
$strAlias = $objNewsletter->alias ?: $objNewsletter->id;
$arrNewsletter[] = array('subject' => $objNewsletter->subject, 'title' => \StringUtil::stripInsertTags($objNewsletter->subject), 'href' => sprintf($strUrl, $strAlias), 'date' => \Date::parse($objPage->dateFormat, $objNewsletter->date), 'datim' => \Date::parse($objPage->datimFormat, $objNewsletter->date), 'time' => \Date::parse($objPage->timeFormat, $objNewsletter->date), 'channel' => $objNewsletter->pid);
}
}
$this->Template->newsletters = $arrNewsletter;
}
示例2: compile
/**
* Generate the module
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$this->Template->content = '';
$this->Template->referer = 'javascript:history.go(-1)';
$this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack'];
$objNewsletter = \NewsletterModel::findSentByParentAndIdOrAlias(\Input::get('items'), $this->nl_channels);
if (null === $objNewsletter) {
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
// Overwrite the page title (see #2853 and #4955)
if ($objNewsletter->subject != '') {
$objPage->pageTitle = strip_tags(\StringUtil::stripInsertTags($objNewsletter->subject));
}
// Add enclosure
if ($objNewsletter->addFile) {
$this->addEnclosuresToTemplate($this->Template, $objNewsletter->row(), 'files');
}
// Support plain text newsletters (thanks to Hagen Klemp)
if ($objNewsletter->sendText) {
$strContent = nl2br_html5($objNewsletter->text);
} else {
$strContent = str_ireplace(' align="center"', '', $objNewsletter->content);
}
// Parse simple tokens and insert tags
$strContent = $this->replaceInsertTags($strContent);
$strContent = \StringUtil::parseSimpleTokens($strContent, array());
// Encode e-mail addresses
$strContent = \StringUtil::encodeEmail($strContent);
$this->Template->content = $strContent;
$this->Template->subject = $objNewsletter->subject;
}
示例3: compile
/**
* Generate the module
*/
protected function compile()
{
// Get all active pages
$objPages = \PageModel::findPublishedRegularWithoutGuestsByIds($this->pages);
// Return if there are no pages
if ($objPages === null) {
return;
}
$arrPages = array();
// Sort the array keys according to the given order
if ($this->orderPages != '') {
$tmp = \StringUtil::deserialize($this->orderPages);
if (!empty($tmp) && is_array($tmp)) {
$arrPages = array_map(function () {
}, array_flip($tmp));
}
}
// Add the items to the pre-sorted array
while ($objPages->next()) {
$arrPages[$objPages->id] = $objPages->current();
}
$items = array();
$arrPages = array_values(array_filter($arrPages));
/** @var PageModel[] $arrPages */
foreach ($arrPages as $objPage) {
$objPage->title = \StringUtil::stripInsertTags($objPage->title);
$objPage->pageTitle = \StringUtil::stripInsertTags($objPage->pageTitle);
// Get href
switch ($objPage->type) {
case 'redirect':
$href = $objPage->url;
break;
case 'forward':
if (($objNext = $objPage->getRelated('jumpTo')) instanceof PageModel) {
/** @var PageModel $objNext */
$href = $objNext->getFrontendUrl();
break;
}
// DO NOT ADD A break; STATEMENT
// DO NOT ADD A break; STATEMENT
default:
$href = $objPage->getFrontendUrl();
break;
}
$items[] = array('href' => $href, 'title' => \StringUtil::specialchars($objPage->pageTitle ?: $objPage->title), 'link' => $objPage->title);
}
$this->Template->items = $items;
$this->Template->formId = 'tl_quicklink_' . $this->id;
$this->Template->request = ampersand(\Environment::get('request'), true);
$this->Template->title = $this->customLabel ?: $GLOBALS['TL_LANG']['MSC']['quicklink'];
$this->Template->button = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['go']);
}
示例4: compile
/**
* Generate the module
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$this->Template->event = '';
$this->Template->referer = 'javascript:history.go(-1)';
$this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack'];
// Get the current event
$objEvent = \CalendarEventsModel::findPublishedByParentAndIdOrAlias(\Input::get('events'), $this->cal_calendar);
if (null === $objEvent) {
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
// Overwrite the page title (see #2853 and #4955)
if ($objEvent->title != '') {
$objPage->pageTitle = strip_tags(\StringUtil::stripInsertTags($objEvent->title));
}
// Overwrite the page description
if ($objEvent->teaser != '') {
$objPage->description = $this->prepareMetaDescription($objEvent->teaser);
}
$intStartTime = $objEvent->startTime;
$intEndTime = $objEvent->endTime;
$span = \Calendar::calculateSpan($intStartTime, $intEndTime);
// Do not show dates in the past if the event is recurring (see #923)
if ($objEvent->recurring) {
$arrRange = \StringUtil::deserialize($objEvent->repeatEach);
if (is_array($arrRange) && isset($arrRange['unit']) && isset($arrRange['value'])) {
while ($intStartTime < time() && $intEndTime < $objEvent->repeatEnd) {
$intStartTime = strtotime('+' . $arrRange['value'] . ' ' . $arrRange['unit'], $intStartTime);
$intEndTime = strtotime('+' . $arrRange['value'] . ' ' . $arrRange['unit'], $intEndTime);
}
}
}
$strDate = \Date::parse($objPage->dateFormat, $intStartTime);
if ($span > 0) {
$strDate = \Date::parse($objPage->dateFormat, $intStartTime) . ' – ' . \Date::parse($objPage->dateFormat, $intEndTime);
}
$strTime = '';
if ($objEvent->addTime) {
if ($span > 0) {
$strDate = \Date::parse($objPage->datimFormat, $intStartTime) . ' – ' . \Date::parse($objPage->datimFormat, $intEndTime);
} elseif ($intStartTime == $intEndTime) {
$strTime = \Date::parse($objPage->timeFormat, $intStartTime);
} else {
$strTime = \Date::parse($objPage->timeFormat, $intStartTime) . ' – ' . \Date::parse($objPage->timeFormat, $intEndTime);
}
}
$until = '';
$recurring = '';
// Recurring event
if ($objEvent->recurring) {
$arrRange = \StringUtil::deserialize($objEvent->repeatEach);
if (is_array($arrRange) && isset($arrRange['unit']) && isset($arrRange['value'])) {
$strKey = 'cal_' . $arrRange['unit'];
$recurring = sprintf($GLOBALS['TL_LANG']['MSC'][$strKey], $arrRange['value']);
if ($objEvent->recurrences > 0) {
$until = sprintf($GLOBALS['TL_LANG']['MSC']['cal_until'], \Date::parse($objPage->dateFormat, $objEvent->repeatEnd));
}
}
}
/** @var FrontendTemplate|object $objTemplate */
$objTemplate = new \FrontendTemplate($this->cal_template);
$objTemplate->setData($objEvent->row());
$objTemplate->date = $strDate;
$objTemplate->time = $strTime;
$objTemplate->datetime = $objEvent->addTime ? date('Y-m-d\\TH:i:sP', $intStartTime) : date('Y-m-d', $intStartTime);
$objTemplate->begin = $intStartTime;
$objTemplate->end = $intEndTime;
$objTemplate->class = $objEvent->cssClass != '' ? ' ' . $objEvent->cssClass : '';
$objTemplate->recurring = $recurring;
$objTemplate->until = $until;
$objTemplate->locationLabel = $GLOBALS['TL_LANG']['MSC']['location'];
$objTemplate->details = '';
$objTemplate->hasDetails = false;
$objTemplate->hasTeaser = false;
// Clean the RTE output
if ($objEvent->teaser != '') {
$objTemplate->hasTeaser = true;
$objTemplate->teaser = \StringUtil::toHtml5($objEvent->teaser);
$objTemplate->teaser = \StringUtil::encodeEmail($objTemplate->teaser);
}
// Display the "read more" button for external/article links
if ($objEvent->source != 'default') {
$objTemplate->details = true;
$objTemplate->hasDetails = true;
} else {
$id = $objEvent->id;
$objTemplate->details = function () use($id) {
$strDetails = '';
$objElement = \ContentModel::findPublishedByPidAndTable($id, 'tl_calendar_events');
if ($objElement !== null) {
while ($objElement->next()) {
$strDetails .= $this->getContentElement($objElement->current());
}
}
return $strDetails;
};
//.........这里部分代码省略.........
示例5: getQuicknavPages
/**
* Recursively get all quicknav pages and return them as array
*
* @param integer $pid
* @param integer $level
* @param string $host
* @param string $language
*
* @return array
*/
protected function getQuicknavPages($pid, $level = 1, $host = null, $language = null)
{
/** @var PageModel $objPage */
global $objPage;
$groups = array();
$arrPages = array();
// Get all groups of the current front end user
if (FE_USER_LOGGED_IN) {
$this->import('FrontendUser', 'User');
$groups = $this->User->groups;
}
// Get all active subpages
$objSubpages = \PageModel::findPublishedRegularWithoutGuestsByPid($pid);
if ($objSubpages === null) {
return array();
}
++$level;
foreach ($objSubpages as $objSubpage) {
$_groups = \StringUtil::deserialize($objSubpage->groups);
// Override the domain (see #3765)
if ($host !== null) {
$objSubpage->domain = $host;
}
// Do not show protected pages unless a back end or front end user is logged in
if (!$objSubpage->protected || !is_array($_groups) && FE_USER_LOGGED_IN || BE_USER_LOGGED_IN || is_array($_groups) && array_intersect($_groups, $groups) || $this->showProtected) {
// Do not skip the current page here! (see #4523)
// Check hidden pages
if (!$objSubpage->hide || $this->showHidden) {
$arrPages[] = array('level' => $level - 2, 'title' => \StringUtil::specialchars(\StringUtil::stripInsertTags($objSubpage->pageTitle ?: $objSubpage->title)), 'href' => $objSubpage->getFrontendUrl(), 'link' => \StringUtil::stripInsertTags($objSubpage->title));
// Subpages
if (!$this->showLevel || $this->showLevel >= $level || !$this->hardLimit && ($objPage->id == $objSubpage->id || in_array($objPage->id, $this->Database->getChildRecords($objSubpage->id, 'tl_page')))) {
$subpages = $this->getQuicknavPages($objSubpage->id, $level);
if (is_array($subpages)) {
$arrPages = array_merge($arrPages, $subpages);
}
}
}
}
}
return $arrPages;
}
示例6: compile
//.........这里部分代码省略.........
$objFile = new \File($strCacheFile);
if ($objFile->mtime > time() - 1800) {
$arrResult = json_decode($objFile->getContent(), true);
} else {
$objFile->delete();
}
}
// Cache the result
if ($arrResult === null) {
try {
$objSearch = \Search::searchFor($strKeywords, $strQueryType == 'or', $arrPages, 0, 0, $blnFuzzy);
$arrResult = $objSearch->fetchAllAssoc();
} catch (\Exception $e) {
$this->log('Website search failed: ' . $e->getMessage(), __METHOD__, TL_ERROR);
$arrResult = array();
}
\File::putContent($strCacheFile, json_encode($arrResult));
}
$query_endtime = microtime(true);
// Sort out protected pages
if (\Config::get('indexProtected') && !BE_USER_LOGGED_IN) {
$this->import('FrontendUser', 'User');
foreach ($arrResult as $k => $v) {
if ($v['protected']) {
if (!FE_USER_LOGGED_IN) {
unset($arrResult[$k]);
} else {
$groups = \StringUtil::deserialize($v['groups']);
if (!is_array($groups) || empty($groups) || !count(array_intersect($groups, $this->User->groups))) {
unset($arrResult[$k]);
}
}
}
}
$arrResult = array_values($arrResult);
}
$count = count($arrResult);
$this->Template->count = $count;
$this->Template->page = null;
$this->Template->keywords = $strKeywords;
// No results
if ($count < 1) {
$this->Template->header = sprintf($GLOBALS['TL_LANG']['MSC']['sEmpty'], $strKeywords);
$this->Template->duration = substr($query_endtime - $query_starttime, 0, 6) . ' ' . $GLOBALS['TL_LANG']['MSC']['seconds'];
return;
}
$from = 1;
$to = $count;
// Pagination
if ($this->perPage > 0) {
$id = 'page_s' . $this->id;
$page = \Input::get($id) !== null ? \Input::get($id) : 1;
$per_page = \Input::get('per_page') ?: $this->perPage;
// Do not index or cache the page if the page number is outside the range
if ($page < 1 || $page > max(ceil($count / $per_page), 1)) {
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
$from = ($page - 1) * $per_page + 1;
$to = $from + $per_page > $count ? $count : $from + $per_page - 1;
// Pagination menu
if ($to < $count || $from > 1) {
$objPagination = new \Pagination($count, $per_page, \Config::get('maxPaginationLinks'), $id);
$this->Template->pagination = $objPagination->generate("\n ");
}
$this->Template->page = $page;
}
// Get the results
for ($i = $from - 1; $i < $to && $i < $count; $i++) {
/** @var FrontendTemplate|object $objTemplate */
$objTemplate = new \FrontendTemplate($this->searchTpl);
$objTemplate->url = $arrResult[$i]['url'];
$objTemplate->link = $arrResult[$i]['title'];
$objTemplate->href = $arrResult[$i]['url'];
$objTemplate->title = \StringUtil::specialchars(\StringUtil::stripInsertTags($arrResult[$i]['title']));
$objTemplate->class = ($i == $from - 1 ? 'first ' : '') . ($i == $to - 1 || $i == $count - 1 ? 'last ' : '') . ($i % 2 == 0 ? 'even' : 'odd');
$objTemplate->relevance = sprintf($GLOBALS['TL_LANG']['MSC']['relevance'], number_format($arrResult[$i]['relevance'] / $arrResult[0]['relevance'] * 100, 2) . '%');
$objTemplate->filesize = $arrResult[$i]['filesize'];
$objTemplate->matches = $arrResult[$i]['matches'];
$arrContext = array();
$arrMatches = \StringUtil::trimsplit(',', $arrResult[$i]['matches']);
// Get the context
foreach ($arrMatches as $strWord) {
$arrChunks = array();
preg_match_all('/(^|\\b.{0,' . $this->contextLength . '}\\PL)' . str_replace('+', '\\+', $strWord) . '(\\PL.{0,' . $this->contextLength . '}\\b|$)/ui', $arrResult[$i]['text'], $arrChunks);
foreach ($arrChunks[0] as $strContext) {
$arrContext[] = ' ' . $strContext . ' ';
}
}
// Shorten the context and highlight all keywords
if (!empty($arrContext)) {
$objTemplate->context = trim(\StringUtil::substrHtml(implode('…', $arrContext), $this->totalLength));
$objTemplate->context = preg_replace('/(\\PL)(' . implode('|', $arrMatches) . ')(\\PL)/ui', '$1<mark class="highlight">$2</mark>$3', $objTemplate->context);
$objTemplate->hasContext = true;
}
$this->Template->results .= $objTemplate->parse();
}
$this->Template->header = vsprintf($GLOBALS['TL_LANG']['MSC']['sResults'], array($from, $to, $count, $strKeywords));
$this->Template->duration = substr($query_endtime - $query_starttime, 0, 6) . ' ' . $GLOBALS['TL_LANG']['MSC']['seconds'];
}
}
示例7: prepare
//.........这里部分代码省略.........
$this->{$callback[0]}->{$callback[1]}($objPage, $objLayout, $this);
}
}
/** @var ThemeModel $objTheme */
$objTheme = $objLayout->getRelated('pid');
// Set the layout template and template group
$objPage->template = $objLayout->template ?: 'fe_page';
$objPage->templateGroup = $objTheme->templates;
// Store the output format
list($strFormat, $strVariant) = explode('_', $objLayout->doctype);
$objPage->outputFormat = $strFormat;
$objPage->outputVariant = $strVariant;
// Initialize the template
$this->createTemplate($objPage, $objLayout);
// Initialize modules and sections
$arrCustomSections = array();
$arrSections = array('header', 'left', 'right', 'main', 'footer');
$arrModules = \StringUtil::deserialize($objLayout->modules);
$arrModuleIds = array();
// Filter the disabled modules
foreach ($arrModules as $module) {
if ($module['enable']) {
$arrModuleIds[] = $module['mod'];
}
}
// Get all modules in a single DB query
$objModules = \ModuleModel::findMultipleByIds($arrModuleIds);
if ($objModules !== null || $arrModules[0]['mod'] == 0) {
$arrMapper = array();
// Create a mapper array in case a module is included more than once (see #4849)
if ($objModules !== null) {
while ($objModules->next()) {
$arrMapper[$objModules->id] = $objModules->current();
}
}
foreach ($arrModules as $arrModule) {
// Disabled module
if (!$arrModule['enable']) {
continue;
}
// Replace the module ID with the module model
if ($arrModule['mod'] > 0 && isset($arrMapper[$arrModule['mod']])) {
$arrModule['mod'] = $arrMapper[$arrModule['mod']];
}
// Generate the modules
if (in_array($arrModule['col'], $arrSections)) {
// Filter active sections (see #3273)
if ($arrModule['col'] == 'header' && $objLayout->rows != '2rwh' && $objLayout->rows != '3rw') {
continue;
}
if ($arrModule['col'] == 'left' && $objLayout->cols != '2cll' && $objLayout->cols != '3cl') {
continue;
}
if ($arrModule['col'] == 'right' && $objLayout->cols != '2clr' && $objLayout->cols != '3cl') {
continue;
}
if ($arrModule['col'] == 'footer' && $objLayout->rows != '2rwf' && $objLayout->rows != '3rw') {
continue;
}
$this->Template->{$arrModule['col']} .= $this->getFrontendModule($arrModule['mod'], $arrModule['col']);
} else {
$arrCustomSections[$arrModule['col']] .= $this->getFrontendModule($arrModule['mod'], $arrModule['col']);
}
}
}
$this->Template->sections = $arrCustomSections;
// Mark RTL languages (see #7171)
if ($GLOBALS['TL_LANG']['MSC']['textDirection'] == 'rtl') {
$this->Template->isRTL = true;
}
// HOOK: modify the page or layout object
if (isset($GLOBALS['TL_HOOKS']['generatePage']) && is_array($GLOBALS['TL_HOOKS']['generatePage'])) {
foreach ($GLOBALS['TL_HOOKS']['generatePage'] as $callback) {
$this->import($callback[0]);
$this->{$callback[0]}->{$callback[1]}($objPage, $objLayout, $this);
}
}
// Set the page title and description AFTER the modules have been generated
$this->Template->mainTitle = $objPage->rootPageTitle;
$this->Template->pageTitle = $objPage->pageTitle ?: $objPage->title;
// Meta robots tag
$this->Template->robots = $objPage->robots ?: 'index,follow';
// Remove shy-entities (see #2709)
$this->Template->mainTitle = str_replace('[-]', '', $this->Template->mainTitle);
$this->Template->pageTitle = str_replace('[-]', '', $this->Template->pageTitle);
// Fall back to the default title tag
if ($objLayout->titleTag == '') {
$objLayout->titleTag = '{{page::pageTitle}} - {{page::rootPageTitle}}';
}
// Assign the title and description
$this->Template->title = \StringUtil::stripInsertTags($this->replaceInsertTags($objLayout->titleTag));
// see #7097
$this->Template->description = str_replace(array("\n", "\r", '"'), array(' ', '', ''), $objPage->description);
// Body onload and body classes
$this->Template->onload = trim($objLayout->onload);
$this->Template->class = trim($objLayout->cssClass . ' ' . $objPage->cssClass);
// Execute AFTER the modules have been generated and create footer scripts first
$this->createFooterScripts($objLayout);
$this->createHeaderScripts($objPage, $objLayout);
}
示例8: compile
/**
* Generate the module
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$this->Template->articles = '';
$this->Template->referer = 'javascript:history.go(-1)';
$this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack'];
// Get the news item
$objArticle = \NewsModel::findPublishedByParentAndIdOrAlias(\Input::get('items'), $this->news_archives);
if (null === $objArticle) {
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
$arrArticle = $this->parseArticle($objArticle);
$this->Template->articles = $arrArticle;
// Overwrite the page title (see #2853 and #4955)
if ($objArticle->headline != '') {
$objPage->pageTitle = strip_tags(\StringUtil::stripInsertTags($objArticle->headline));
}
// Overwrite the page description
if ($objArticle->teaser != '') {
$objPage->description = $this->prepareMetaDescription($objArticle->teaser);
}
$bundles = \System::getContainer()->getParameter('kernel.bundles');
// HOOK: comments extension required
if ($objArticle->noComments || !isset($bundles['ContaoCommentsBundle'])) {
$this->Template->allowComments = false;
return;
}
/** @var NewsArchiveModel $objArchive */
$objArchive = $objArticle->getRelated('pid');
$this->Template->allowComments = $objArchive->allowComments;
// Comments are not allowed
if (!$objArchive->allowComments) {
return;
}
// Adjust the comments headline level
$intHl = min(intval(str_replace('h', '', $this->hl)), 5);
$this->Template->hlc = 'h' . ($intHl + 1);
$this->import('Comments');
$arrNotifies = array();
// Notify the system administrator
if ($objArchive->notify != 'notify_author') {
$arrNotifies[] = $GLOBALS['TL_ADMIN_EMAIL'];
}
// Notify the author
if ($objArchive->notify != 'notify_admin') {
/** @var UserModel $objAuthor */
if (($objAuthor = $objArticle->getRelated('author')) instanceof UserModel && $objAuthor->email != '') {
$arrNotifies[] = $objAuthor->email;
}
}
$objConfig = new \stdClass();
$objConfig->perPage = $objArchive->perPage;
$objConfig->order = $objArchive->sortOrder;
$objConfig->template = $this->com_template;
$objConfig->requireLogin = $objArchive->requireLogin;
$objConfig->disableCaptcha = $objArchive->disableCaptcha;
$objConfig->bbcode = $objArchive->bbcode;
$objConfig->moderate = $objArchive->moderate;
$this->Comments->addCommentsToTemplate($this->Template, $objConfig, 'tl_news', $objArticle->id, $arrNotifies);
}
示例9: compile
/**
* Generate the module
*/
protected function compile()
{
/** @var PageModel $objPage */
global $objPage;
$this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack'];
$this->Template->referer = 'javascript:history.go(-1)';
$objFaq = \FaqModel::findPublishedByParentAndIdOrAlias(\Input::get('items'), $this->faq_categories);
if (null === $objFaq) {
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
// Overwrite the page title and description (see #2853 and #4955)
if ($objFaq->question != '') {
$objPage->pageTitle = strip_tags(\StringUtil::stripInsertTags($objFaq->question));
$objPage->description = $this->prepareMetaDescription($objFaq->question);
}
$this->Template->question = $objFaq->question;
// Clean the RTE output
$objFaq->answer = \StringUtil::toHtml5($objFaq->answer);
$this->Template->answer = \StringUtil::encodeEmail($objFaq->answer);
$this->Template->addImage = false;
// Add image
if ($objFaq->addImage && $objFaq->singleSRC != '') {
$objModel = \FilesModel::findByUuid($objFaq->singleSRC);
if ($objModel !== null && is_file(TL_ROOT . '/' . $objModel->path)) {
// Do not override the field now that we have a model registry (see #6303)
$arrFaq = $objFaq->row();
$arrFaq['singleSRC'] = $objModel->path;
$this->addImageToTemplate($this->Template, $arrFaq);
}
}
$this->Template->enclosure = array();
// Add enclosure
if ($objFaq->addEnclosure) {
$this->addEnclosuresToTemplate($this->Template, $objFaq->row());
}
$strAuthor = '';
/** @var UserModel $objAuthor */
if (($objAuthor = $objFaq->getRelated('author')) instanceof UserModel) {
$strAuthor = $objAuthor->name;
}
$this->Template->info = sprintf($GLOBALS['TL_LANG']['MSC']['faqCreatedBy'], \Date::parse($objPage->dateFormat, $objFaq->tstamp), $strAuthor);
$bundles = \System::getContainer()->getParameter('kernel.bundles');
// HOOK: comments extension required
if ($objFaq->noComments || !isset($bundles['ContaoCommentsBundle'])) {
$this->Template->allowComments = false;
return;
}
/** @var FaqCategoryModel $objCategory */
$objCategory = $objFaq->getRelated('pid');
$this->Template->allowComments = $objCategory->allowComments;
// Comments are not allowed
if (!$objCategory->allowComments) {
return;
}
// Adjust the comments headline level
$intHl = min(intval(str_replace('h', '', $this->hl)), 5);
$this->Template->hlc = 'h' . ($intHl + 1);
$this->import('Comments');
$arrNotifies = array();
// Notify the system administrator
if ($objCategory->notify != 'notify_author') {
$arrNotifies[] = $GLOBALS['TL_ADMIN_EMAIL'];
}
// Notify the author
if ($objCategory->notify != 'notify_admin') {
/** @var UserModel $objAuthor */
if (($objAuthor = $objFaq->getRelated('author')) instanceof UserModel && $objAuthor->email != '') {
$arrNotifies[] = $objAuthor->email;
}
}
$objConfig = new \stdClass();
$objConfig->perPage = $objCategory->perPage;
$objConfig->order = $objCategory->sortOrder;
$objConfig->template = $this->com_template;
$objConfig->requireLogin = $objCategory->requireLogin;
$objConfig->disableCaptcha = $objCategory->disableCaptcha;
$objConfig->bbcode = $objCategory->bbcode;
$objConfig->moderate = $objCategory->moderate;
$this->Comments->addCommentsToTemplate($this->Template, $objConfig, 'tl_faq', $objFaq->id, $arrNotifies);
}