<?php namespace Automattic\WooCommerce\Internal\Admin\BlockTemplates; /** * Trait for block formatted template. */ trait BlockFormattedTemplateTrait { /** * Get the block configuration as a formatted template. * * @return array The block configuration as a formatted template. */ public function get_formatted_template(): array { $arr = array( $this->get_name(), array_merge( $this->get_attributes(), array( '_templateBlockId' => $this->get_id(), '_templateBlockOrder' => $this->get_order(), ), ! empty( $this->get_hide_conditions() ) ? array( '_templateBlockHideConditions' => $this->get_formatted_hide_conditions(), ) : array(), ! empty( $this->get_disable_conditions() ) ? array( '_templateBlockDisableConditions' => $this->get_formatted_disable_conditions(), ) : array(), ), ); return $arr; } /** * Get the block hide conditions formatted for inclusion in a formatted template. */ private function get_formatted_hide_conditions(): array { return $this->format_conditions( $this->get_hide_conditions() ); } /** * Get the block disable conditions formatted for inclusion in a formatted template. */ private function get_formatted_disable_conditions(): array { return $this->format_conditions( $this->get_disable_conditions() ); } /** * Formats conditions in the expected format to include in the template. * * @param array $conditions The conditions to format. */ private function format_conditions( $conditions ): array { $formatted_expressions = array_map( function( $condition ) { return array( 'expression' => $condition['expression'], ); }, array_values( $conditions ) ); return $formatted_expressions; } }