/**
* Generate an article and return it as string
*
* @param mixed $varId The article ID or a Model object
* @param boolean $blnMultiMode If true, only teasers will be shown
* @param boolean $blnIsInsertTag If true, there will be no page relation
* @param string $strColumn The name of the column
*
* @return string|boolean The article HTML markup or false
*/
public static function getArticle($varId, $blnMultiMode = false, $blnIsInsertTag = false, $strColumn = 'main')
{
/** @var \PageModel $objPage */
global $objPage;
if (is_object($varId)) {
$objRow = $varId;
} else {
if (!$varId) {
return '';
}
$objRow = \ArticleModel::findByIdOrAliasAndPid($varId, !$blnIsInsertTag ? $objPage->id : null);
if ($objRow === null) {
return false;
}
}
// Check the visibility (see #6311)
if (!static::isVisibleElement($objRow)) {
return '';
}
// Print the article as PDF
if (isset($_GET['pdf']) && \Input::get('pdf') == $objRow->id) {
// Deprecated since Contao 4.0, to be removed in Contao 5.0
if ($objRow->printable == 1) {
trigger_error('Setting tl_article.printable to "1" has been deprecated and will no longer work in Contao 5.0.', E_USER_DEPRECATED);
$objArticle = new \ModuleArticle($objRow);
$objArticle->generatePdf();
} elseif ($objRow->printable != '') {
$options = deserialize($objRow->printable);
if (is_array($options) && in_array('pdf', $options)) {
$objArticle = new \ModuleArticle($objRow);
$objArticle->generatePdf();
}
}
}
$objRow->headline = $objRow->title;
$objRow->multiMode = $blnMultiMode;
// HOOK: add custom logic
if (isset($GLOBALS['TL_HOOKS']['getArticle']) && is_array($GLOBALS['TL_HOOKS']['getArticle'])) {
foreach ($GLOBALS['TL_HOOKS']['getArticle'] as $callback) {
static::importStatic($callback[0])->{$callback}[1]($objRow);
}
}
$objArticle = new \ModuleArticle($objRow, $strColumn);
$strBuffer = $objArticle->generate($blnIsInsertTag);
// Disable indexing if protected
if ($objArticle->protected && !preg_match('/^\\s*<!-- indexer::stop/', $strBuffer)) {
$strBuffer = "\n<!-- indexer::stop -->" . $strBuffer . "<!-- indexer::continue -->\n";
}
return $strBuffer;
}