public static function getFrontendModule($intId, $strColumn='main')
	{
		if (!\is_object($intId) && !\strlen($intId))
		{
			return '';
		}

		/** @var PageModel $objPage */
		global $objPage;

		// Articles
		if (!\is_object($intId) && $intId == 0)
		{
			// Show a particular article only
			if ($objPage->type == 'regular' && Input::get('articles'))
			{
				list($strSection, $strArticle) = explode(':', Input::get('articles'));

				if ($strArticle === null)
				{
					$strArticle = $strSection;
					$strSection = 'main';
				}

				if ($strSection == $strColumn)
				{
					$objArticle = ArticleModel::findPublishedByIdOrAliasAndPid($strArticle, $objPage->id);

					// Send a 404 header if there is no published article
					if (null === $objArticle)
					{
						throw new PageNotFoundException('Page not found: ' . Environment::get('uri'));
					}

					// Send a 403 header if the article cannot be accessed
					if (!static::isVisibleElement($objArticle))
					{
						throw new AccessDeniedException('Access denied: ' . Environment::get('uri'));
					}

					// Add the "first" and "last" classes (see #2583)
					$objArticle->classes = array('first', 'last');

					return static::getArticle($objArticle);
				}
			}

			// HOOK: add custom logic
			if (isset($GLOBALS['TL_HOOKS']['getArticles']) && \is_array($GLOBALS['TL_HOOKS']['getArticles']))
			{
				foreach ($GLOBALS['TL_HOOKS']['getArticles'] as $callback)
				{
					$return = static::importStatic($callback[0])->{$callback[1]}($objPage->id, $strColumn);

					if (\is_string($return))
					{
						return $return;
					}
				}
			}

			// Show all articles (no else block here, see #4740)
			$objArticles = ArticleModel::findPublishedByPidAndColumn($objPage->id, $strColumn);

			if ($objArticles === null)
			{
				return '';
			}

			$return = '';
			$intCount = 0;
			$blnMultiMode = ($objArticles->count() > 1);
			$intLast = $objArticles->count() - 1;

			while ($objArticles->next())
			{
				/** @var ArticleModel $objRow */
				$objRow = $objArticles->current();

				// Add the "first" and "last" classes (see #2583)
				if ($intCount == 0 || $intCount == $intLast)
				{
					$arrCss = array();

					if ($intCount == 0)
					{
						$arrCss[] = 'first';
					}

					if ($intCount == $intLast)
					{
						$arrCss[] = 'last';
					}

					$objRow->classes = $arrCss;
				}

				$return .= static::getArticle($objRow, $blnMultiMode, false, $strColumn);
				++$intCount;
			}

			return $return;
		}

		// Other modules
		else
		{
			if (\is_object($intId))
			{
				$objRow = $intId;
			}
			else
			{
				$objRow = ModuleModel::findByPk($intId);

				if ($objRow === null)
				{
					return '';
				}
			}

			// Check the visibility (see #6311)
			if (!static::isVisibleElement($objRow))
			{
				return '';
			}

			$strClass = Module::findClass($objRow->type);

			// Return if the class does not exist
			if (!class_exists($strClass))
			{
				static::log('Module class "'.$strClass.'" (module "'.$objRow->type.'") does not exist', __METHOD__, TL_ERROR);

				return '';
			}

			$objRow->typePrefix = 'mod_';

			/** @var Module $objModule */
			$objModule = new $strClass($objRow, $strColumn);
			$strBuffer = $objModule->generate();

			// HOOK: add custom logic
			if (isset($GLOBALS['TL_HOOKS']['getFrontendModule']) && \is_array($GLOBALS['TL_HOOKS']['getFrontendModule']))
			{
				foreach ($GLOBALS['TL_HOOKS']['getFrontendModule'] as $callback)
				{
					$strBuffer = static::importStatic($callback[0])->{$callback[1]}($objRow, $strBuffer, $objModule);
				}
			}

			// Disable indexing if protected
			if ($objModule->protected && !preg_match('/^\s*<!-- indexer::stop/', $strBuffer))
			{
				$strBuffer = "\n<!-- indexer::stop -->". $strBuffer ."<!-- indexer::continue -->\n";
			}

			return $strBuffer;
		}
	}
public static function getFrontendModule($intId, $strColumn='main')
	{
		if (!\is_object($intId) && !\strlen($intId))
		{
			return '';
		}

		
		global $objPage;

		
		if (!\is_object($intId) && $intId == 0)
		{
			
			if ($objPage->type == 'regular' && Input::get('articles'))
			{
				list($strSection, $strArticle) = explode(':', Input::get('articles'));

				if ($strArticle === null)
				{
					$strArticle = $strSection;
					$strSection = 'main';
				}

				if ($strSection == $strColumn)
				{
					$objArticle = ArticleModel::findPublishedByIdOrAliasAndPid($strArticle, $objPage->id);

					
					if (null === $objArticle)
					{
						throw new PageNotFoundException('Page not found: ' . Environment::get('uri'));
					}

					
					if (!static::isVisibleElement($objArticle))
					{
						throw new AccessDeniedException('Access denied: ' . Environment::get('uri'));
					}

					
					$objArticle->classes = array('first', 'last');

					return static::getArticle($objArticle);
				}
			}

			
			if (isset($GLOBALS['TL_HOOKS']['getArticles']) && \is_array($GLOBALS['TL_HOOKS']['getArticles']))
			{
				foreach ($GLOBALS['TL_HOOKS']['getArticles'] as $callback)
				{
					$return = static::importStatic($callback[0])->{$callback[1]}($objPage->id, $strColumn);

					if (\is_string($return))
					{
						return $return;
					}
				}
			}

			
			$objArticles = ArticleModel::findPublishedByPidAndColumn($objPage->id, $strColumn);

			if ($objArticles === null)
			{
				return '';
			}

			$return = '';
			$intCount = 0;
			$blnMultiMode = ($objArticles->count() > 1);
			$intLast = $objArticles->count() - 1;

			while ($objArticles->next())
			{
				
				$objRow = $objArticles->current();

				
				if ($intCount == 0 || $intCount == $intLast)
				{
					$arrCss = array();

					if ($intCount == 0)
					{
						$arrCss[] = 'first';
					}

					if ($intCount == $intLast)
					{
						$arrCss[] = 'last';
					}

					$objRow->classes = $arrCss;
				}

				$return .= static::getArticle($objRow, $blnMultiMode, false, $strColumn);
				++$intCount;
			}

			return $return;
		}

		
		else
		{
			if (\is_object($intId))
			{
				$objRow = $intId;
			}
			else
			{
				$objRow = ModuleModel::findByPk($intId);

				if ($objRow === null)
				{
					return '';
				}
			}

			
			if (!static::isVisibleElement($objRow))
			{
				return '';
			}

			$strClass = Module::findClass($objRow->type);

			
			if (!class_exists($strClass))
			{
				static::log('Module class "'.$strClass.'" (module "'.$objRow->type.'") does not exist', __METHOD__, TL_ERROR);

				return '';
			}

			$objRow->typePrefix = 'mod_';

			
			$objModule = new $strClass($objRow, $strColumn);
			$strBuffer = $objModule->generate();

			
			if (isset($GLOBALS['TL_HOOKS']['getFrontendModule']) && \is_array($GLOBALS['TL_HOOKS']['getFrontendModule']))
			{
				foreach ($GLOBALS['TL_HOOKS']['getFrontendModule'] as $callback)
				{
					$strBuffer = static::importStatic($callback[0])->{$callback[1]}($objRow, $strBuffer, $objModule);
				}
			}

			
			if ($objModule->protected && !preg_match('/^\s*<!-- indexer::stop/', $strBuffer))
			{
				$strBuffer = "\n<!-- indexer::stop -->". $strBuffer ."<!-- indexer::continue -->\n";
			}

			return $strBuffer;
		}
	}
public static function getFrontendModule ( $ intId , $ strColumn = 'main' ) { if ( ! \ is_object ( $ intId ) && ! \ strlen ( $ intId ) ) { return '' ; } /** @var PageModel $objPage */ global $ objPage ; // Articles if ( ! \ is_object ( $ intId ) && $ intId == 0 ) { // Show a particular article only if ( $ objPage -> type == 'regular' && Input :: get ( 'articles' ) ) { list ( $ strSection , $ strArticle ) = explode ( ':' , Input :: get ( 'articles' ) ) ; if ( $ strArticle === null ) { $ strArticle = $ strSection ; $ strSection = 'main' ; } if ( $ strSection == $ strColumn ) { $ objArticle = ArticleModel :: findPublishedByIdOrAliasAndPid ( $ strArticle , $ objPage -> id ) ; // Send a 404 header if there is no published article if ( null === $ objArticle ) { throw new PageNotFoundException ( 'Page not found: ' . Environment :: get ( 'uri' ) ) ; } // Send a 403 header if the article cannot be accessed if ( ! static :: isVisibleElement ( $ objArticle ) ) { throw new AccessDeniedException ( 'Access denied: ' . Environment :: get ( 'uri' ) ) ; } // Add the "first" and "last" classes (see #2583) $ objArticle -> classes = array ( 'first' , 'last' ) ; return static :: getArticle ( $ objArticle ) ; } } // HOOK: add custom logic if ( isset ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getArticles' ] ) && \ is_array ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getArticles' ] ) ) { foreach ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getArticles' ] as $ callback ) { $ return = static :: importStatic ( $ callback [ 0 ] ) -> { $ callback [ 1 ] } ( $ objPage -> id , $ strColumn ) ; if ( \ is_string ( $ return ) ) { return $ return ; } } } // Show all articles (no else block here, see #4740) $ objArticles = ArticleModel :: findPublishedByPidAndColumn ( $ objPage -> id , $ strColumn ) ; if ( $ objArticles === null ) { return '' ; } $ return = '' ; $ intCount = 0 ; $ blnMultiMode = ( $ objArticles -> count ( ) > 1 ) ; $ intLast = $ objArticles -> count ( ) - 1 ; while ( $ objArticles -> next ( ) ) { /** @var ArticleModel $objRow */ $ objRow = $ objArticles -> current ( ) ; // Add the "first" and "last" classes (see #2583) if ( $ intCount == 0 || $ intCount == $ intLast ) { $ arrCss = array ( ) ; if ( $ intCount == 0 ) { $ arrCss [ ] = 'first' ; } if ( $ intCount == $ intLast ) { $ arrCss [ ] = 'last' ; } $ objRow -> classes = $ arrCss ; } $ return .= static :: getArticle ( $ objRow , $ blnMultiMode , false , $ strColumn ) ; ++ $ intCount ; } return $ return ; } // Other modules else { if ( \ is_object ( $ intId ) ) { $ objRow = $ intId ; } else { $ objRow = ModuleModel :: findByPk ( $ intId ) ; if ( $ objRow === null ) { return '' ; } } // Check the visibility (see #6311) if ( ! static :: isVisibleElement ( $ objRow ) ) { return '' ; } $ strClass = Module :: findClass ( $ objRow -> type ) ; // Return if the class does not exist if ( ! class_exists ( $ strClass ) ) { static :: log ( 'Module class "' . $ strClass . '" (module "' . $ objRow -> type . '") does not exist' , __METHOD__ , TL_ERROR ) ; return '' ; } $ objRow -> typePrefix = 'mod_' ; /** @var Module $objModule */ $ objModule = new $ strClass ( $ objRow , $ strColumn ) ; $ strBuffer = $ objModule -> generate ( ) ; // HOOK: add custom logic if ( isset ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getFrontendModule' ] ) && \ is_array ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getFrontendModule' ] ) ) { foreach ( $ GLOBALS [ 'TL_HOOKS' ] [ 'getFrontendModule' ] as $ callback ) { $ strBuffer = static :: importStatic ( $ callback [ 0 ] ) -> { $ callback [ 1 ] } ( $ objRow , $ strBuffer , $ objModule ) ; } } // Disable indexing if protected if ( $ objModule -> protected && ! preg_match ( '/^\s*<!-- indexer::stop/' , $ strBuffer ) ) { $ strBuffer = "\n<!-- indexer::stop -->" . $ strBuffer . "<!-- indexer::continue -->\n" ; } return $ strBuffer ; } }
Generate a front end module and return it as string

@param mixed  $intId     A module ID or a Model object
@param string $strColumn The name of the column

@return string The module HTML markup
Generate a front end module and return it as string