<?php
declare(strict_types=1);
/*
* This file is part of Oveleon ContaoMemberExtension Bundle.
*
* @package contao-member-extension-bundle
* @license MIT
* @author Daniele Sciannimanica <https://github.com/doishub>
* @author Fabian Ekert <https://github.com/eki89>
* @author Sebastian Zoglowek <https://github.com/zoglo>
* @copyright Oveleon <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 $strImgSize
* @return string
*/
protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $strImgSize)
{
$arrFields = [];
foreach ($arrMemberFields as $field)
{
switch($field)
{
case 'avatar':
Member::parseMemberAvatar($objMember, $objTemplate, $strImgSize);
break;
default:
if($varValue = $objMember->{$field})
{
if (\is_array(($arrValue = StringUtil::deserialize($varValue))))
{
$arrFields[$field] = implode(",", $arrValue);
}
else
{
$arrFields[$field] = $varValue;
}
}
}
}
$objTemplate->fields = $arrFields;
if($this->jumpTo)
{
$objTemplate->link = $this->generateMemberUrl($objMember);
}
return $objTemplate->parse();
}
/**
* 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;
}
}