Skip to content
Snippets Groups Projects
Select Git revision
  • f9cd6fd429677e6d71171c34abc7e08a090c598e
  • master default protected
  • fix/deprecated_functions
  • devel
  • feat/translations
  • feat/upgrade_to_pro_url
  • feat/lang
  • bugfix/require-interface
  • bugfix/require-once-error
  • feature/activation-hooks
  • feature/template-loader
  • feature/template-renderer
  • feature/plugin-activation
  • feature/hookable-object
  • feature/builder-pattern
  • 2.1.2
  • 2.1.1
  • 2.1.0
  • 2.0.0
  • 2.0.0-beta1
  • 1.4.4
  • 1.4.3
  • 1.4.2
  • 1.4.1
  • 1.4
  • 1.3.3
  • 1.3.2
  • 1.3.1
  • 1.3.0
  • 1.2.0
  • 1.1
  • 1.0
32 results

TemplateLoader.php

Blame
  • FieldPersistenceStrategy.php 1.50 KiB
    <?php
    
    namespace WPDesk\Forms\Persistence;
    
    use Psr\Container\NotFoundExceptionInterface;
    use WPDesk\Forms\FieldProvider;
    use WPDesk\Persistence\PersistentContainer;
    
    /**
     * Can save/load provided fields to/from PersistentContainer.
     *
     * @package WPDesk\Forms
     */
    class FieldPersistenceStrategy {
    
    	/** @var PersistentContainer */
    	private $persistence;
    
    	public function __construct( PersistentContainer $persistence ) {
    		$this->persistence = $persistence;
    	}
    
    	/** @return void */
    	public function persist_fields( FieldProvider $fields_provider, array $data ) {
    		foreach ( $fields_provider->get_fields() as $field ) {
    			$field_key = $field->get_name();
    			if ( $field->has_serializer() ) {
    				$this->persistence->set( $field_key, $field->get_serializer()->serialize( $data[ $field_key ] ) );
    			} else {
    				$this->persistence->set( $field_key, $data[ $field_key ] );
    			}
    		}
    	}
    
    	/** @return void */
    	public function load_fields( FieldProvider $fields_provider ): array {
    		$data = [];
    		foreach ( $fields_provider->get_fields() as $field ) {
    			$field_key = $field->get_name();
    			try {
    				if ( $field->has_serializer() ) {
    					$data[ $field_key ] = $field->get_serializer()->unserialize( $this->persistence->get( $field_key ) );
    				} else {
    					$data[ $field_key ] = $this->persistence->get( $field_key );
    				}
    			} catch ( NotFoundExceptionInterface $not_found ) {
    				// TODO: Logger
    				// LoggerFactory::get_logger()->info( "FieldPersistenceStrategy:: Field {$field_key} not found" );
    			}
    		}
    
    		return $data;
    	}
    }