<?php

namespace Oveleon\ContaoMemberExtensionBundle\EventListener\DataContainer;

use Contao\Controller;
use Contao\CoreBundle\DependencyInjection\Attribute\AsCallback;
use Contao\System;

class MemberFieldsOptionsListener
{
    public function __construct() {
        Controller::loadDataContainer('tl_member');
        System::loadLanguageFile('tl_member');
    }

    #[AsCallback(table: 'tl_module', target: 'fields.ext_orderField.options')]
    public function getEditableMemberFields(): array
    {
        $fields = [];

        foreach ($GLOBALS['TL_DCA']['tl_member']['fields'] as $k => $v)
        {
            if (
                !empty($v['inputType']) &&
                $k !== 'avatar' &&
                isset($v['eval']['feEditable']) &&
                $v['eval']['feEditable'] === true
            ) {
                $fields[$k] = ($GLOBALS['TL_DCA']['tl_member']['fields'][$k]['label'][0] ?? $k) . ' ['.$k.']';
            }
        }

        return $fields;
    }

    #[AsCallback(table: 'tl_module', target: 'fields.memberFields.options')]
    public function getMemberProperties(): array
    {
        $properties = [];

        foreach ($GLOBALS['TL_DCA']['tl_member']['fields'] as $k => $v)
        {
            if (!empty($v['inputType']) && $v['inputType'] !== 'password')
            {
                $properties[$k] = $GLOBALS['TL_DCA']['tl_member']['fields'][$k]['label'][0] ?? $k;
            }
        }

        return $properties;
    }
}