array( 'type' => array( 'string', 'null' ) ), 'elements' => array( 'type' => 'array' ), ); } /** * Reads the layout fields, or null when the post has no layout for this builder. * * @param int $post_id Post ID. * @param array $extra Validated extra arguments. * @return array|null */ protected function layout( int $post_id, array $extra ): ?array { $elements = self::meta( $post_id, self::key( 'BRICKS_DB_PAGE_CONTENT', '_bricks_page_content_2' ) ); if ( ! is_array( $elements ) || array() === $elements ) { return null; } return array( 'editor_mode' => self::meta_string( $post_id, self::key( 'BRICKS_DB_EDITOR_MODE', '_bricks_editor_mode' ) ), 'elements' => array_values( $elements ), ); } /** * Bricks' meta key: its constant when defined, else the documented default. * * @param string $constant Constant name. * @param string $fallback Default key. * @return string */ private static function key( string $constant, string $fallback ): string { return defined( $constant ) && is_string( constant( $constant ) ) ? constant( $constant ) : $fallback; } }