File "Utils.php"
Full Path: /home/pumpbmko/public_html/wp-content/themes/momota/lib/colibriwp/src/Core/Utils.php
File size: 4.51 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace ColibriWP\Theme\Core;
class Utils {
public static function camel2dashed( $string ) {
return strtolower( preg_replace( '/([a-zA-Z])(?=[A-Z])/', '$1-', $string ) );
}
public static function replace_file_extension( $filename, $old_extenstion, $new_extension ) {
return preg_replace( '#\\' . $old_extenstion . '$#', $new_extension, $filename );
}
public static function pathSet( &$data, $path, $value ) {
if ( ! is_array( $path ) ) {
$path = preg_replace( '#\.\.+#', '.', $path );
$path = explode( '.', (string) $path );
}
$ref = &$data;
foreach ( $path as $parent ) {
if ( isset( $ref ) && ! is_array( $ref ) ) {
$ref = array();
}
$ref = &$ref[ $parent ];
}
$ref = $value;
return $data;
}
public static function recursiveOnly( $from, $except ) {
foreach ( $from as $key => $value ) {
if ( ! in_array( $key, $except ) ) {
unset( $from[ $key ] );
} else {
if ( is_array( $value ) ) {
$from[ $key ] = static::recursiveOnly( $value, $except );
}
}
}
return $from;
}
public static function recursiveWithout( $from, $except ) {
foreach ( $from as $key => $value ) {
if ( in_array( $key, $except ) ) {
unset( $from[ $key ] );
} else {
if ( is_array( $value ) ) {
$from[ $key ] = static::recursiveWithout( $value, $except );
}
}
}
return $from;
}
public static function arrayGetAt( $array, $index = 0, $fallback = false ) {
return self::pathGet( $array, (string) $index, $fallback );
}
/**
* @param $data
* @param string|null $path
* @param string|null $fallback
*
* @return mixed|null
*/
public static function pathGet( $data, $path = null, $fallback = null ) {
if ( strlen( $path ) === 0 || $path === null ) {
return $data;
}
$path = preg_replace( '#\.\.+#', '.', $path );
$result = $data;
$path = explode( '.', $path );
if ( count( $path ) ) {
foreach ( $path as $key ) {
if ( ! isset( $result[ $key ] ) ) {
$result = $fallback;
break;
}
$result = $result[ $key ];
}
}
return $result;
}
public static function flatten( $array, $prefix = '' ) {
$return = array();
foreach ( $array as $key => $value ) {
$key = trim( "{$prefix}.{$key}", '.' );
if ( ! is_array( $value ) ) {
$return[ $key ] = $value;
} else {
$return = array_merge( $return, static::flatten( $value, $key ) );
}
}
return $return;
}
public static function slugify( $text ) {
// replace non letter or digits by -
$text = preg_replace( '~[^\pL\d]+~u', '-', $text );
// transliterate
$text = iconv( 'utf-8', 'us-ascii//TRANSLIT', $text );
// remove unwanted characters
$text = preg_replace( '~[^-\w]+~', '', $text );
// trim
$text = trim( $text, '-' );
// remove duplicate -
$text = preg_replace( '~-+~', '-', $text );
// lowercase
$text = strtolower( $text );
if ( empty( $text ) ) {
return 'n-a';
}
return $text;
}
public static function buffer_wrap( $callback, $strip_tags = false ) {
ob_start();
call_user_func( $callback );
$content = ob_get_clean();
if ( $strip_tags ) {
$content = strip_tags( $content );
}
return $content;
}
/**
* @param array $array
* @param array|string $key
*
* @return array
*/
public static function pathDelete( $array, $key ) {
$keys = (array) $key;
foreach ( $keys as $key ) {
$key_parts = explode( '.', $key );
$ref = &$array;
while ( count( $key_parts ) ) {
$key_part = array_shift( $key_parts );
if ( array_key_exists( $key_part, $ref ) ) {
if ( count( $key_parts ) === 0 ) {
unset( $ref[ $key_part ] );
} else {
$ref = &$array[ $key_part ];
}
} else {
break;
}
}
}
return $array;
}
public static function sanitizeSelectControl( $control_data, $current_value ) {
if ( $control_data['type'] === 'linked-select' ) {
$possible_values = array();
foreach ( self::pathGet( $control_data, 'choices', array() ) as $choices_data ) {
$possible_values = array_merge( $possible_values, array_keys( $choices_data ) );
}
} else {
$possible_values = array_keys( self::pathGet( $control_data, 'choices', array() ) );
}
if ( in_array( $current_value, $possible_values ) ) {
return $current_value;
}
return null;
}
public static function sanitizeEscapedJSON( $value ) {
if ( is_array( $value ) || is_object( $value ) ) {
return $value;
}
$value = json_decode( urldecode( $value ), true );
if ( json_last_error() === JSON_ERROR_NONE ) {
return $value;
}
return null;
}
}