Skip to content
Snippets Groups Projects
Select Git revision
  • d75c0416b3527a7ea80996d4e55f0323aad52a27
  • master default protected
  • feat/npm-publish
  • feat/demo-deploy
  • change-demo-deploy
  • remove-smoke
  • feat/acceptance-tests
  • feature/deploy-composer.json
  • feature/mysql-bin-logs
  • skip-codecept-for-libs
  • include-composer-json
  • exclude-wp-assets
  • update_codecept_image
  • fix/silenced-copy
  • remove-free-translations
  • codeception-with-optional-step
  • improve-parallelization
  • linter-exit
  • change-images
  • fix/linter
  • globally-raise-mem-limit
  • no-symlink2
22 results

gitlab-ci-shop.yml

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;
    	}
    }