74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Encode/Decode helper functions.
 | 
						|
 *
 | 
						|
 * @package visual-portfolio
 | 
						|
 */
 | 
						|
 | 
						|
if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
	exit;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Encode string.
 | 
						|
 *
 | 
						|
 * @param string|array $str - string to encode.
 | 
						|
 *
 | 
						|
 * @return string|array
 | 
						|
 */
 | 
						|
function visual_portfolio_encode( $str ) {
 | 
						|
	// Array.
 | 
						|
	if ( is_array( $str ) ) {
 | 
						|
		$result = array();
 | 
						|
 | 
						|
		foreach ( $str as $k => $val ) {
 | 
						|
			$result[ visual_portfolio_encode( $k ) ] = visual_portfolio_encode( $val );
 | 
						|
		}
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
 | 
						|
	// String.
 | 
						|
	if ( is_string( $str ) ) {
 | 
						|
		// Because of these replacements, some attributes can't be exported to XML without being broken. So, we need to replace it manually with something safe.
 | 
						|
		// https://github.com/WordPress/gutenberg/blob/88645e4b268acf5746e914159e3ce790dcb1665a/packages/blocks/src/api/serializer.js#L246-L271 .
 | 
						|
		$str = str_replace( '--', '_u002d__u002d_', $str );
 | 
						|
 | 
						|
        // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
 | 
						|
		$str = urlencode( $str );
 | 
						|
	}
 | 
						|
 | 
						|
	return $str;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Decode string.
 | 
						|
 *
 | 
						|
 * @param string|array $str - string to decode.
 | 
						|
 *
 | 
						|
 * @return string|array
 | 
						|
 */
 | 
						|
function visual_portfolio_decode( $str ) {
 | 
						|
	// Array.
 | 
						|
	if ( is_array( $str ) ) {
 | 
						|
		$result = array();
 | 
						|
 | 
						|
		foreach ( $str as $k => $val ) {
 | 
						|
			$result[ visual_portfolio_decode( $k ) ] = visual_portfolio_decode( $val );
 | 
						|
		}
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
 | 
						|
	// String.
 | 
						|
	if ( is_string( $str ) ) {
 | 
						|
		$str = urldecode( $str );
 | 
						|
 | 
						|
		// Because of these replacements, some attributes can't be exported to XML without being broken. So, we need to replace it manually with something safe.
 | 
						|
		// https://github.com/WordPress/gutenberg/blob/88645e4b268acf5746e914159e3ce790dcb1665a/packages/blocks/src/api/serializer.js#L246-L271 .
 | 
						|
		$str = str_replace( '_u002d__u002d_', '--', $str );
 | 
						|
	}
 | 
						|
 | 
						|
	return $str;
 | 
						|
}
 |