OrderActionsForm::getCCFields PHP Method

getCCFields() protected method

Get credit card fields for the given gateways
protected getCCFields ( array $gateways ) : CompositeField | null
$gateways array
return CompositeField | null
    protected function getCCFields(array $gateways)
    {
        $onsiteGateways = array();
        $allRequired = array();
        foreach ($gateways as $gateway => $title) {
            if (!GatewayInfo::isOffsite($gateway)) {
                $required = GatewayInfo::requiredFields($gateway);
                $onsiteGateways[$gateway] = $required;
                $allRequired += $required;
            }
        }
        $allRequired = array_unique($allRequired);
        if (empty($onsiteGateways)) {
            return null;
        }
        $factory = new GatewayFieldsFactory(null, array('Card'));
        $ccFields = $factory->getCardFields();
        // Remove all the credit card fields that aren't required by any gateway
        foreach ($ccFields->dataFields() as $name => $field) {
            if ($name && !in_array($name, $allRequired)) {
                $ccFields->removeByName($name, true);
            }
        }
        $lookupField = LiteralField::create('_CCLookupField', sprintf('<span class="gateway-lookup" data-gateways=\'%s\'></span>', json_encode($onsiteGateways, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP)));
        $ccFields->push($lookupField);
        return CompositeField::create($ccFields)->setTag('fieldset')->addExtraClass('credit-card');
    }