<?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\BackendTemplate;
use Contao\Config;
use Contao\FrontendUser;
use Contao\Input;
use Contao\MemberModel;
use Contao\Module;
use Contao\StringUtil;
use Contao\System;
/**
* Class ModuleDeleteAvatar
*
* @author Sebastian Zoglowek <https://github.com/zoglo>
*/
class ModuleDeleteAvatar extends Module
{
/**
* Template.
*
* @var string
*/
protected $strTemplate = 'memberExtension_deleteAvatar';
/**
* Return a wildcard in the back end
*
* @return string
*/
public function generate()
{
$container = System::getContainer();
$request = System::getContainer()->get('request_stack')->getCurrentRequest();
if ($request && System::getContainer()->get('contao.routing.scope_matcher')->isBackendRequest($request))
{
$objTemplate = new BackendTemplate('be_wildcard');
$objTemplate->wildcard = '### ' . mb_strtoupper($GLOBALS['TL_LANG']['FMD']['deleteAvatar'][0] ?? '', 'UTF-8') . ' ###';
$objTemplate->title = $this->headline;
$objTemplate->id = $this->id;
$objTemplate->link = $this->name;
$objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
return $objTemplate->parse();
}
// Set the item from the auto_item parameter
if (!isset($_GET['items']) && isset($_GET['auto_item']) && Config::get('useAutoItem'))
{
Input::setGet('items', Input::get('auto_item'));
}
// Return if there is no logged-in user
if (!$container->get('contao.security.token_checker')->hasFrontendUser())
{
return '';
}
$this->import(FrontendUser::class, 'User');
$objMember = MemberModel::findByPk($this->User->id);
if(null === $objMember)
{
return '';
}
// Confirmation message
$session = System::getContainer()->get('session');
$flashBag = $session->getFlashBag();
// Return if there is no flashbag message or an avatar
if (!($session->isStarted() && $flashBag->has('mod_avatar_deleted')) && !$objMember->avatar)
{
return '';
}
return parent::generate();
}
/**
* Generate the module
*/
protected function compile()
{
$strFormId = 'deleteAvatar_' . $this->id;
$session = System::getContainer()->get('session');
$flashBag = $session->getFlashBag();
// Get form submit
if (Input::post('FORM_SUBMIT') == $strFormId)
{
$this->import(FrontendUser::class, 'User');
$objMember = MemberModel::findByPk($this->User->id);
// Delete avatar if it exists
if(!!$objMember->avatar)
{
Member::deleteAvatar($objMember);
// Unset avatar
$objMember->avatar = null;
$objMember->save();
// Set message for deletion feedback
$flashBag->set('mod_avatar_deleted', $GLOBALS['TL_LANG']['MSC']['avatarDeleted']);
$this->reload();
}
}
// Confirmation message
if($session->isStarted() && $flashBag->has('mod_avatar_deleted')) {
$arrMessages = $flashBag->get('mod_avatar_deleted');
$this->Template->message = $arrMessages[0];
}
$this->Template->formId = $strFormId;
$this->Template->slabel = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['deleteAvatar']);
}
}