<?php /* * This file is part of Oveleon ContaoMemberExtension Bundle. * * (c) https://www.oveleon.de/ */ namespace Oveleon\ContaoMemberExtensionBundle; use Contao\Config; use Contao\Environment; use Contao\FilesModel; use Contao\MemberModel; use Contao\Module; use Contao\PageModel; use Contao\StringUtil; use Contao\System; /** * Parent class for member modules. * * @author Daniele Sciannimanica <https://github.com/doishub> */ abstract class ModuleMemberExtension extends Module { /** * Parse member template * * @param $objMember * @param $objTemplate * @param $arrMemberFields * @param $varImageSize * * @return string */ protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $varImgSize) { $arrFields = []; foreach ($arrMemberFields as $field) { switch($field) { case 'avatar': $this->addAvatarToTemplate($objMember, $objTemplate, $varImgSize); break; default: if($varValue = $objMember->{$field}) { if (\is_array(($arrValue = StringUtil::deserialize($varValue)))) { $arrFields[] = implode(",", $arrValue); } else { $arrFields[] = $varValue; } } } } $objTemplate->fields = $arrFields; if($this->jumpTo) { $objTemplate->link = $this->generateMemberUrl($objMember); } return $objTemplate->parse(); } /** * Add avatar to template * * @param $objMember * @param $objTemplate * @param $varImageSize */ protected function addAvatarToTemplate($objMember, $objTemplate, $varImgSize) { $objTemplate->addImage = false; $arrData = array( 'size' => $varImgSize ); if ($objMember->avatar == '' && Config::get('defaultAvatar') == '') { return; } if ($objMember->avatar == '') { $objFile = FilesModel::findByUuid( Config::get('defaultAvatar') ); if ($objFile === null || !is_file(TL_ROOT . '/' . $objFile->path)) { return; } $arrData['singleSRC'] = $objFile->path; $objTemplate->addImage = true; $this->addImageToTemplate($objTemplate, $arrData); } $objFile = FilesModel::findByUuid($objMember->avatar); if ($objFile === null || !is_file(TL_ROOT . '/' . $objFile->path)) { $arrData['singleSRC'] = FilesModel::findByUuid(Config::get('defaultAvatar'))->path; $objTemplate->addImage = true; $this->addImageToTemplate($objTemplate, $arrData); } $arrData['singleSRC'] = $objFile->path; $objTemplate->addImage = true; $this->addImageToTemplate($objTemplate, $arrData, null, null, $objFile); } /** * Generate a URL and return it as string * * @param MemberModel $objMember * * @return string */ protected function generateMemberUrl($objMember) { $objPage = PageModel::findPublishedById($this->jumpTo); if (!$objPage instanceof PageModel) { $strLink = ampersand(Environment::get('request')); } else { $params = (Config::get('useAutoItem') ? '/' : '/items/') . ($objMember->alias ?: $objMember->id); $strLink = ampersand($objPage->getFrontendUrl($params)); } return $strLink; } }