/**
  * Generate module
  */
 protected function compile()
 {
     // Get ID
     $strAlias = \Input::get('auto_item') ? \Input::get('auto_item') : \Input::get('store');
     // Find published store from ID
     if (($objStore = AnyStoresModel::findPublishedByIdOrAlias($strAlias)) !== null) {
         // load all details
         $objStore->loadDetails();
         // generate description
         $objDescription = \ContentModel::findPublishedByPidAndTable($objStore->id, $objStore->getTable());
         if ($objDescription !== null) {
             while ($objDescription->next()) {
                 $objStore->description .= \Controller::getContentElement($objDescription->current());
             }
         }
         // Get referer for back button
         $objStore->referer = $this->getReferer();
         // generate google map if template and geodata is set
         if ($this->anystores_mapTpl != '' && is_numeric($objStore->latitude) && is_numeric($objStore->longitude)) {
             $objMapTemplate = new \FrontendTemplate($this->anystores_mapTpl);
             $objMapTemplate->setData($objStore->row());
             $objStore->gMap = $objMapTemplate->parse();
         }
         // Template
         $objDetailTemplate = new \FrontendTemplate($this->anystores_detailTpl);
         $objDetailTemplate->setData($objStore->row());
         $this->Template->store = $objDetailTemplate->parse();
     } else {
         $this->_redirect404();
     }
 }
 /**
  * Generate the content element
  */
 protected function compile()
 {
     $arrContent = array();
     $objBlock = BlockModuleModel::findByPk($this->block);
     if ($objBlock === null) {
         return;
     }
     $objElement = \ContentModel::findPublishedByPidAndTable($this->block, 'tl_block_module');
     if ($objElement !== null) {
         while ($objElement->next()) {
             $arrContent[] = \Controller::getContentElement($objElement->current());
         }
     }
     $strReturn = implode('', $arrContent);
     if ($objBlock->addWrapper) {
         $strReturn = ModuleBlock::createBlockWrapper($objBlock, $strReturn);
     }
     $this->Template->content = $strReturn;
 }
 protected function generateFields($objItem)
 {
     $arrItem = parent::generateFields($objItem);
     if (in_array('member_content_archives', \ModuleLoader::getActive())) {
         $arrFilterTags = deserialize($this->memberContentArchiveTags, true);
         $arrItem['fields']['memberContent'] = '';
         if (($objMemberContentArchives = \HeimrichHannot\MemberContentArchives\MemberContentArchiveModel::findBy(array('mid=?', 'published=?'), array($objItem->memberId ?: $objItem->id, true))) !== null) {
             while ($objMemberContentArchives->next()) {
                 if (in_array($objMemberContentArchives->tag, $arrFilterTags)) {
                     $arrItem['fields']['memberContentId'] = $objMemberContentArchives->id;
                     $objElement = \ContentModel::findPublishedByPidAndTable($objMemberContentArchives->id, 'tl_member_content_archive');
                     if ($objElement !== null) {
                         while ($objElement->next()) {
                             $arrItem['fields']['memberContent'] .= \Controller::getContentElement($objElement->current());
                         }
                     }
                 }
             }
             if ($objMemberContentArchives->tag == $this->memberContentArchiveTeaserTag) {
                 $arrItem['fields']['memberContentTitle'] = $objMemberContentArchives->title;
                 $arrItem['fields']['memberContentTeaser'] = $objMemberContentArchives->teaser;
             }
             // override member fields
             $arrOverridableMemberFields = deserialize(\Config::get('overridableMemberFields'));
             if (!empty($arrOverridableMemberFields)) {
                 foreach ($arrOverridableMemberFields as $strField) {
                     $strFieldOverride = 'member' . ucfirst($strField);
                     if ($objMemberContentArchives->{$strFieldOverride}) {
                         if (\Validator::isUuid($objMemberContentArchives->{$strFieldOverride})) {
                             $objMemberContentArchives->{$strFieldOverride} = Files::getPathFromUuid($objMemberContentArchives->{$strFieldOverride});
                         }
                         $arrItem['fields'][$strField] = $objMemberContentArchives->{$strFieldOverride};
                     }
                 }
             }
         }
     }
     return $arrItem;
 }
 protected function parseItem($objItem, $strClass = '', $intCount = 0)
 {
     if (in_array('member_content_archives', \ModuleLoader::getActive())) {
         $arrFilterTags = deserialize($this->memberContentArchiveTags, true);
         $objItem->memberContent = '';
         if (($objMemberContentArchives = \HeimrichHannot\MemberContentArchives\MemberContentArchiveModel::findBy('mid', $objItem->memberId ?: $objItem->id)) !== null) {
             while ($objMemberContentArchives->next()) {
                 if (in_array($objMemberContentArchives->tag, $arrFilterTags)) {
                     $objItem->memberContentId = $objMemberContentArchives->id;
                     $objElement = \ContentModel::findPublishedByPidAndTable($objMemberContentArchives->id, 'tl_member_content_archive');
                     if ($objElement !== null) {
                         while ($objElement->next()) {
                             $objItem->memberContent .= \Controller::getContentElement($objElement->current());
                         }
                     }
                 }
             }
             if ($objMemberContentArchives->tag == $this->memberContentArchiveTeaserTag) {
                 $objItem->memberContentTitle = $objMemberContentArchives->title;
                 $objItem->memberContentTeaser = $objMemberContentArchives->teaser;
             }
             // override member fields
             $arrOverridableMemberFields = deserialize(\Config::get('overridableMemberFields'));
             if (!empty($arrOverridableMemberFields)) {
                 foreach ($arrOverridableMemberFields as $strField) {
                     $strFieldOverride = 'member' . ucfirst($strField);
                     if ($objMemberContentArchives->{$strFieldOverride}) {
                         if (\Validator::isUuid($objMemberContentArchives->{$strFieldOverride})) {
                             $objMemberContentArchives->{$strFieldOverride} = Files::getPathFromUuid($objMemberContentArchives->{$strFieldOverride});
                         }
                         $objItem->{$strField} = $objMemberContentArchives->{$strFieldOverride};
                     }
                 }
             }
         }
     }
     return parent::parseItem($objItem, $strClass, $intCount);
 }
 protected function getListGridList($arrArticles, $blnAddArchive, $objModule)
 {
     if (!$objModule->addListGrid) {
         return $arrArticles;
     }
     $objConfig = \HeimrichHannot\ListGrid\ListGridModel::findByPk($objModule->listGrid);
     $objConfigItems = \HeimrichHannot\ListGrid\ListGridContentModel::findPublishedByPidAndTypes($objConfig->id);
     if ($objConfigItems === null) {
         return $arrArticles;
     }
     $arrArticlesList = array();
     $idxNews = 0;
     while ($objConfigItems->next()) {
         // skip listgrid_news, handled by static::getListGridTicket
         if ($objConfigItems->type == 'listgrid_news') {
             $arrArticlesList[] = $arrArticles[$idxNews];
             $idxNews++;
             continue;
         }
         $arrArticlesList[] = \Controller::getContentElement($objConfigItems->id, $objModule->inColumn);
     }
     return $arrArticlesList;
 }
 protected function renderContent($objChild)
 {
     $strContent = '';
     $objElement = \ContentModel::findPublishedByPidAndTable($objChild->id, 'tl_block_module');
     if ($objElement !== null) {
         while ($objElement->next()) {
             if (!\Controller::isVisibleElement($objElement->current())) {
                 return '';
             }
             $strContent .= \Controller::getContentElement($objElement->current());
         }
     }
     return $strContent;
 }
 /**
  * Return the demanded frontend module or content element parsed as html string
  *
  * Required GET data:
  * * action: "reload-element"
  * * element: "ce::id" or "mod::id" (replace 'id' with the element's id)
  * * page: "id" (optionally, replace 'id' with the current page's id)
  * * auto_item: (an optional auto_item which will be set before fetching the element)
  */
 public function getModuleOrContentElement()
 {
     if (!\Environment::get('isAjaxRequest') || Input::get('action') != 'reload-element') {
         return;
     }
     global $objPage;
     // Set page object as it may be needed for the language e.g.
     if (!$objPage && (int) Input::get('page')) {
         $objPage = \PageModel::findWithDetails((int) Input::get('page'));
     }
     $GLOBALS['TL_LANGUAGE'] = null !== $objPage ? $objPage->language : $GLOBALS['TL_LANGUAGE'];
     list($strElementType, $intElementId) = trimsplit('::', Input::get('element'));
     $strError = '';
     $return = '';
     // Authenticate front end user, e.g. for insert tags
     if (FE_USER_LOGGED_IN) {
         /** @noinspection PhpUndefinedMethodInspection */
         $this->import('FrontendUser', 'User');
         /** @var \FrontendUser $this ->User */
         $this->User->authenticate();
     }
     // Load default language file
     \System::loadLanguageFile('default');
     // Set a given auto_item to fetch the correct version of a module or content element
     if ($strAutoItem = Input::get('auto_item')) {
         Input::setGet('auto_item', $strAutoItem);
     }
     switch ($strElementType) {
         case 'mod':
             /** @type \Model $objModule */
             $objModule = \ModuleModel::findByPk($intElementId);
             if (null === $objModule) {
                 $strError = sprintf('Could not find module ID %s', $intElementId);
                 continue;
             }
             if (!$objModule->allowAjaxReload) {
                 $strError = sprintf('Module ID %u is not allowed to fetch', $intElementId);
                 continue;
             }
             $return = \Controller::getFrontendModule($objModule);
             break;
         case 'ce':
             /** @type \Model $objContent */
             $objContent = ContentModel::findByPk($intElementId);
             if (null === $objContent) {
                 $strError = sprintf('Could not find content element ID %s', $intElementId);
                 continue;
             }
             if (!$objContent->allowAjaxReload) {
                 $strError = sprintf('Content element ID %u is not allowed to fetch', $intElementId);
                 continue;
             }
             $return = \Controller::getContentElement($objContent);
             break;
         default:
             $strError = 'Could not determine whether the element is a module or content element';
             break;
     }
     $arrResponse = array();
     if ($strError) {
         $arrResponse['status'] = 'error';
         $arrResponse['error'] = $strError;
     } else {
         $arrResponse['status'] = 'ok';
         $arrResponse['html'] = $return;
     }
     $objResponse = new JsonResponse($arrResponse);
     $objResponse->send();
 }