<?xml version="1.0" encoding="UTF-8" ?>
<!--
	Author: Christian Raue <christian.raue@gmail.com>
	Author: Marcus Stöhr <dafish@soundtrack-board.de>
	Copyright: 2011-2018 Christian Raue
	License: http://opensource.org/licenses/mit-license.php MIT License
-->
<container
		xmlns="http://symfony.com/schema/dic/services"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
	<parameters>
		<parameter key="craue.form.flow.class">Craue\FormFlowBundle\Form\FormFlow</parameter>
		<parameter key="craue.form.flow.storage.class">Craue\FormFlowBundle\Storage\SessionStorage</parameter>
		<parameter key="craue.form.flow.event_listener.previous_step_invalid.class">Craue\FormFlowBundle\EventListener\PreviousStepInvalidEventListener</parameter>
		<parameter key="craue.form.flow.event_listener.previous_step_invalid.event" type="constant">Craue\FormFlowBundle\Form\FormFlowEvents::PREVIOUS_STEP_INVALID</parameter>
		<parameter key="craue.form.flow.event_listener.flow_expired.class">Craue\FormFlowBundle\EventListener\FlowExpiredEventListener</parameter>
		<parameter key="craue.form.flow.event_listener.flow_expired.event" type="constant">Craue\FormFlowBundle\Form\FormFlowEvents::FLOW_EXPIRED</parameter>
	</parameters>

	<services>
		<service id="craue.form.flow.storage_default" class="%craue.form.flow.storage.class%" public="false">
			<argument type="service" id="session" />
		</service>

		<service id="craue.form.flow.storage" alias="craue.form.flow.storage_default" public="true" />

		<service id="craue.form.flow.data_manager_default" class="Craue\FormFlowBundle\Storage\DataManager" public="false">
			<argument type="service" id="craue.form.flow.storage" />
		</service>

		<service id="craue.form.flow.data_manager" alias="craue.form.flow.data_manager_default" />

		<service id="craue.form.flow" class="%craue.form.flow.class%">
			<call method="setDataManager">
				<argument type="service" id="craue.form.flow.data_manager" />
			</call>
			<call method="setFormFactory">
				<argument type="service" id="form.factory" />
			</call>
			<call method="setRequestStack">
				<argument type="service" id="request_stack" />
			</call>
			<call method="setEventDispatcher">
				<argument type="service" id="event_dispatcher" on-invalid="ignore" />
			</call>
		</service>

		<service id="craue.form.flow.form_extension" class="Craue\FormFlowBundle\Form\Extension\FormFlowFormExtension">
			<tag name="form.type_extension" alias="form" extended-type="Symfony\Component\Form\Extension\Core\Type\FormType" />
		</service>

		<service id="craue.form.flow.hidden_field_extension" class="Craue\FormFlowBundle\Form\Extension\FormFlowHiddenFieldExtension">
			<tag name="form.type_extension" alias="hidden" extended-type="Symfony\Component\Form\Extension\Core\Type\HiddenType" />
		</service>

		<service id="craue.form.flow.event_listener.previous_step_invalid" class="%craue.form.flow.event_listener.previous_step_invalid.class%">
			<tag name="kernel.event_listener" event="%craue.form.flow.event_listener.previous_step_invalid.event%" method="onPreviousStepInvalid" />
			<call method="setTranslator">
				<argument type="service" id="translator" />
			</call>
		</service>

		<service id="craue.form.flow.event_listener.flow_expired" class="%craue.form.flow.event_listener.flow_expired.class%">
			<tag name="kernel.event_listener" event="%craue.form.flow.event_listener.flow_expired.event%" method="onFlowExpired" />
			<call method="setTranslator">
				<argument type="service" id="translator" />
			</call>
		</service>
	</services>
</container>
