helper = Helper_E2pdf_Helper::instance(); } public function to_hex_color($hex = '') { $color = [ 0x00, 0x00, 0x00, ]; $hex = ltrim($hex, '#'); if (strlen($hex) === 3) { $color = [ hexdec(substr($hex, 0, 1)), hexdec(substr($hex, 1, 1)), hexdec(substr($hex, 2, 1)), ]; } elseif (strlen($hex) === 6) { $color = [ hexdec(substr($hex, 0, 2)), hexdec(substr($hex, 2, 2)), hexdec(substr($hex, 4, 2)), ]; } return $color; } /** * Convert from bytes to Human View * @param int $size - Size in Bytes * @return string - Converted size */ public function from_bytes($size) { $unit = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']; return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . '' . $unit[$i]; } public function to_bytes($size) { $unit = preg_replace('/[^bkmgtpezy]/i', '', $size); $size = preg_replace('/[^0-9\.]/', '', $size); if ($unit) { return round($size * pow(1024, stripos('bkmgtpezy', $unit[0]))); } else { return round($size); } } public function to_file_dir($file_dir = '') { if ($file_dir) { $file_dir = str_replace(['\\', './'], ['/', '.'], $file_dir); } return $file_dir; } public function to_file_name($file_name = '') { if ($file_name) { $search = [ '/', '\\', '"', '[', ']', ''', '"', '[', ']', '&', ';', ]; $replace = [ '', '_', '', '[', ']', '\'', '', '[', ']', '&', '', ]; $file_name = str_replace($search, $replace, $file_name); } return $file_name; } /* stritr - case insensitive version of strtr Author: Alexander Peev Posted in PHP.NET */ public function stritr($haystack, $needle) { if (is_array($needle)) { $pos1 = 0; $result = $haystack; while (count($needle) > 0) { $positions = []; foreach ($needle as $from => $to) { if (($pos2 = stripos($result, $from, $pos1)) === FALSE) { unset($needle[$from]); } else { $positions[$from] = $pos2; } } if (count($needle) <= 0) { break; } $winner = min($positions); $key = array_search($winner, $positions); $result = (substr($result, 0, $winner) . $needle[$key] . substr($result, ($winner + strlen($key)))); $pos1 = ($winner + strlen($needle[$key])); } return $result; } else { return $haystack; } } public function path_to_url($path = '') { $url = str_replace( wp_normalize_path(untrailingslashit(ABSPATH)), site_url(), wp_normalize_path($path) ); return esc_url_raw($url); } public function unserialize($value) { /* Compatibility fix with Docket Cache */ if (is_array($value)) { return $value; } if (version_compare(PHP_VERSION, '7.0.0', '<')) { return @unserialize($value); } else { return @unserialize($value, ['allowed_classes' => false]); } } public function is_content_key($content_key = false, $value = '') { $response = ''; if ($content_key) { $shortcode_tags = [ 'e2pdf-content', ]; preg_match_all('@\[([^<>&/\[\]\x00-\x20=]++)@', $value, $matches); $tagnames = array_intersect($shortcode_tags, $matches[1]); if (!empty($tagnames)) { preg_match_all('/' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '/', $value, $shortcodes); foreach ($shortcodes[0] as $key => $shortcode_value) { $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key); $atts = shortcode_parse_atts($shortcode[3]); if (isset($atts['key']) && $atts['key'] == $content_key) { $response = $shortcode[5]; } } } } return $response; } public function is_string_array($value) { if (!is_array($value)) { $value = !empty($value) ? (array) $value : []; } return $value; } public function is_unserialized_array($value) { if (!is_array($value)) { if (is_serialized($value)) { $value = $this->unserialize($value); } } return is_array($value) ? $value : []; } public function load_html($source, $dom, $form = false) { libxml_use_internal_errors(true); $options = defined('LIBXML_HTML_NOIMPLIED') && defined('LIBXML_HTML_NODEFDTD') ? LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD : 0; if ($form && $options) { $source = '' . $source . ''; } if (function_exists('mb_encode_numericentity')) { $html = $dom->loadHTML($this->html_entities($source), $options); } else { $html = $dom->loadHTML('' . $source, $options); } libxml_clear_errors(); return $html; } public function html_entities($source) { if (!function_exists('mb_encode_numericentity')) { return $source; } $map = [ 0x80, 0xFFFF, 0, 0xFFFF, ]; try { return mb_encode_numericentity($source, $map, 'UTF-8'); } catch (Exception $e) { if (function_exists('mb_detect_encoding') && function_exists('mb_detect_order') && function_exists('iconv')) { $charset = mb_detect_encoding($source, mb_detect_order(), true); $source = iconv($charset, 'UTF-8//IGNORE', $source); return mb_encode_numericentity($source, $map, 'UTF-8'); } return $source; } } public function html_entities_decode($source) { return html_entity_decode($source, ENT_QUOTES | ENT_HTML5, 'UTF-8'); } }