File "Utility.php"
Full Path: /home/tekvhqgl/public_html/dev2024_old_skip/wp-content/plugins/presto-player/inc/Support/Utility.php
File size: 6.91 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace PrestoPlayer\Support;
class Utility
{
public static function sanitizeCSS($css)
{
return preg_match('#</?\w+#', $css) ? "" : $css;
}
public static function insertAfterString($str, $search, $insert)
{
$index = strpos($str, $search);
if ($index === false) {
return $str;
}
return substr_replace($str, $search . $insert, $index, strlen($search));
}
public static function snakeToCamel($input)
{
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $input))));
}
/**
* Convert a duration to human readable format.
*
* @since 5.1.0
*
* @param string $duration Duration will be in string format (HH:ii:ss) OR (ii:ss),
* with a possible prepended negative sign (-).
* @return string|false A human readable duration string, false on failure.
*/
public static function human_readable_duration($duration = '')
{
if ((empty($duration) || !is_string($duration))) {
return __('0 seconds', 'presto-player');
}
$duration = trim($duration);
// Remove prepended negative sign.
if ('-' === substr($duration, 0, 1)) {
$duration = substr($duration, 1);
}
// Extract duration parts.
$duration_parts = array_reverse(explode(':', $duration));
$duration_count = count($duration_parts);
$hour = null;
$minute = null;
$second = null;
if (3 === $duration_count) {
// Validate HH:ii:ss duration format.
if (!((bool) preg_match('/^([0-9]+):([0-5]?[0-9]):([0-5]?[0-9])$/', $duration))) {
return false;
}
// Three parts: hours, minutes & seconds.
list($second, $minute, $hour) = $duration_parts;
} elseif (2 === $duration_count) {
// Validate ii:ss duration format.
if (!((bool) preg_match('/^([0-5]?[0-9]):([0-5]?[0-9])$/', $duration))) {
return false;
}
// Two parts: minutes & seconds.
list($second, $minute) = $duration_parts;
} else {
return false;
}
$human_readable_duration = array();
// Add the hour part to the string.
if (is_numeric($hour) && $hour > 0) {
/* translators: %s: Time duration in hour or hours. */
$human_readable_duration[] = sprintf(_n('%s hour', '%s hours', $hour), (int) $hour);
}
// Add the minute part to the string.
if (is_numeric($minute) && $minute > 0) {
/* translators: %s: Time duration in minute or minutes. */
$human_readable_duration[] = sprintf(_n('%s minute', '%s minutes', $minute), (int) $minute);
}
// Add the second part to the string.
if (is_numeric($second) && $second > 0) {
/* translators: %s: Time duration in second or seconds. */
$human_readable_duration[] = sprintf(_n('%s second', '%s seconds', $second), (int) $second);
}
return implode(', ', $human_readable_duration);
}
public static function getIPAddress($ip_address = '')
{
$ip = $ip_address ? $ip_address : (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
} else {
return '';
}
}
/**
* Insert an array into another array before/after a certain key
*
* @param array $array The initial array
* @param array $pairs The array to insert
* @param string $key The certain key
* @param string $position Wether to insert the array before or after the key
* @return array
*/
public static function arrayInsert($array, $pairs, $key, $position = 'after')
{
$key_pos = array_search($key, array_keys($array));
if ('after' == $position)
$key_pos++;
if (false !== $key_pos) {
$result = array_slice($array, 0, $key_pos);
$result = array_merge($result, $pairs);
$result = array_merge($result, array_slice($array, $key_pos));
} else {
$result = array_merge($array, $pairs);
}
return $result;
}
/*
* Inserts a new key/value before the key in the array.
*
* @param $key The key to insert before.
* @param $array An array to insert in to.
* @param $new_key The key to insert.
* @param $new_value An value to insert.
*
* @return The new array if the key exists, FALSE otherwise.
*
*/
public static function arrayInsertBefore($key, array &$array, $new_key, $new_value)
{
if (array_key_exists($key, $array)) {
$new = array();
foreach ($array as $k => $value) {
if ($k === $key) {
$new[$new_key] = $new_value;
}
$new[$k] = $value;
}
return $new;
}
return FALSE;
}
/*
* Inserts a new key/value after the key in the array.
*
* @param $key The key to insert after.
* @param $array An array to insert in to.
* @param $new_key The key to insert.
* @param $new_value An value to insert.
*
* @return The new array if the key exists, FALSE otherwise.
*/
public static function arrayInsertAfter($key, array &$array, $new_key, $new_value)
{
if (array_key_exists($key, $array)) {
$new = array();
foreach ($array as $k => $value) {
$new[$k] = $value;
if ($k === $key) {
$new[$new_key] = $new_value;
}
}
return $new;
}
return FALSE;
}
public static function hex2rgba($color, $opacity = false)
{
$defaultColor = 'rgb(0,0,0)';
// Return default color if no color provided
if (empty($color)) {
return $defaultColor;
}
// Ignore "#" if provided
if ($color[0] == '#') {
$color = substr($color, 1);
}
// Check if color has 6 or 3 characters, get values
if (strlen($color) == 6) {
$hex = array($color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5]);
} elseif (strlen($color) == 3) {
$hex = array($color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2]);
} else {
return $default;
}
// Convert hex values to rgb values
$rgb = array_map('hexdec', $hex);
// Check if opacity is set(rgba or rgb)
if ($opacity) {
if (abs($opacity) > 1) {
$opacity = 1.0;
}
$output = 'rgba(' . implode(",", $rgb) . ',' . $opacity . ')';
} else {
$output = 'rgb(' . implode(",", $rgb) . ')';
}
// Return rgb(a) color string
return $output;
}
}