$v) { break; } return $key ? $k : $v; } } // Return keys by value from associative string: categories=1|author=0|date=0|counters=1... if (!function_exists('asia_garden_array_get_keys_by_value')) { function asia_garden_array_get_keys_by_value($arr, $value=1, $as_string=true) { if (!is_array($arr)) parse_str(str_replace('|', '&', $arr), $arr); return $as_string ? join(',', array_keys($arr, $value)) : array_keys($arr, $value); } } // Convert list to associative array (use values as keys) if (!function_exists('asia_garden_array_from_list')) { function asia_garden_array_from_list($arr) { $new = array(); foreach ($arr as $v) $new[$v] = $v; return $new; } } // Merge arrays and lists (preserve number indexes) // $a = array("one", "k2"=>"two", "three"); // $b = array("four", "k1"=>"five", "k2"=>"six", "seven"); // $c = array_merge($a, $b); ["one", "k2"=>"six", "three", "four", "k1"=>"five", "seven"); // $d = asia_garden_array_merge($a, $b); ["four", "k2"=>"six", "seven", "k1"=>"five"); if (!function_exists('asia_garden_array_merge')) { function asia_garden_array_merge($a1, $a2) { for ($i = 1; $i < func_num_args(); $i++){ $arg = func_get_arg($i); if (is_array($arg) && count($arg)>0) { foreach($arg as $k=>$v) { $a1[$k] = $v; } } } return $a1; } } // Inserts any number of scalars or arrays at the point // in the haystack immediately after the search key ($needle) was found, // or at the end if the needle is not found or not supplied. // Modifies $haystack in place. // @param array &$haystack the associative array to search. This will be modified by the function // @param string $needle the key to search for // @param mixed $stuff one or more arrays or scalars to be inserted into $haystack // @return int the index at which $needle was found if (!function_exists('asia_garden_array_insert')) { function asia_garden_array_insert_after(&$haystack, $needle, $stuff){ if (! is_array($haystack) ) return -1; $new_array = array(); for ($i = 2; $i < func_num_args(); ++$i){ $arg = func_get_arg($i); if (is_array($arg)) { if ($i==2) $new_array = $arg; else $new_array = asia_garden_array_merge($new_array, $arg); } else $new_array[] = $arg; } $i = 0; if (is_array($haystack) && count($haystack) > 0) { foreach($haystack as $key => $value){ $i++; if ($key == $needle) break; } } $haystack = asia_garden_array_merge(array_slice($haystack, 0, $i, true), $new_array, array_slice($haystack, $i, null, true)); return $i; } } // Inserts any number of scalars or arrays at the point // in the haystack immediately before the search key ($needle) was found, // or at the end if the needle is not found or not supplied. // Modifies $haystack in place. // @param array &$haystack the associative array to search. This will be modified by the function // @param string $needle the key to search for // @param mixed $stuff one or more arrays or scalars to be inserted into $haystack // @return int the index at which $needle was found if (!function_exists('asia_garden_array_before')) { function asia_garden_array_insert_before(&$haystack, $needle, $stuff){ if (! is_array($haystack) ) return -1; $new_array = array(); for ($i = 2; $i < func_num_args(); ++$i){ $arg = func_get_arg($i); if (is_array($arg)) { if ($i==2) $new_array = $arg; else $new_array = asia_garden_array_merge($new_array, $arg); } else $new_array[] = $arg; } $i = 0; if (is_array($haystack) && count($haystack) > 0) { foreach($haystack as $key => $value){ if ($key === $needle) break; $i++; } } $haystack = asia_garden_array_merge(array_slice($haystack, 0, $i, true), $new_array, array_slice($haystack, $i, null, true)); return $i; } } /* HTML & CSS ----------------------------------------------------------------------------------------------------- */ // Return first tag from text if (!function_exists('asia_garden_get_tag')) { function asia_garden_get_tag($text, $tag_start, $tag_end='') { $val = ''; if (($pos_start = strpos($text, $tag_start))!==false) { $pos_end = $tag_end ? strpos($text, $tag_end, $pos_start) : false; if ($pos_end===false) { $tag_end = substr($tag_start, 0, 1) == '<' ? '>' : ']'; $pos_end = strpos($text, $tag_end, $pos_start); } $val = substr($text, $pos_start, $pos_end+strlen($tag_end)-$pos_start); } return $val; } } // Return attrib from tag if (!function_exists('asia_garden_get_tag_attrib')) { function asia_garden_get_tag_attrib($text, $tag, $attr) { $val = ''; if (($pos_start = strpos($text, substr($tag, 0, strlen($tag)-1)))!==false) { $pos_end = strpos($text, substr($tag, -1, 1), $pos_start); $pos_attr = strpos($text, ' '.($attr).'=', $pos_start); if ($pos_attr!==false && $pos_attr<$pos_end) { $pos_attr += strlen($attr)+3; $pos_quote = strpos($text, substr($text, $pos_attr-1, 1), $pos_attr); $val = substr($text, $pos_attr, $pos_quote-$pos_attr); } } return $val; } } // Decode html-entities in the shortcode parameters if (!function_exists('asia_garden_html_decode')) { function asia_garden_html_decode($prm) { if (is_array($prm) && count($prm) > 0) { foreach ($prm as $k=>$v) { if (is_string($v)) $prm[$k] = htmlspecialchars_decode($v, ENT_QUOTES); } } return $prm; } } // Return string with position rules for the style attr if (!function_exists('asia_garden_get_css_position_from_values')) { function asia_garden_get_css_position_from_values($top='',$right='',$bottom='',$left='',$width='',$height='') { if (!is_array($top)) { $top = compact('top','right','bottom','left','width','height'); } $output = ''; foreach ($top as $k=>$v) { $imp = substr($v, 0, 1); if ($imp == '!') $v = substr($v, 1); if ($v != '') $output .= ($k=='width' ? 'width' : ($k=='height' ? 'height' : 'margin-'.esc_attr($k))) . ':' . esc_attr(asia_garden_prepare_css_value($v)) . ($imp=='!' ? ' !important' : '') . ';'; } return $output; } } // Return value for the style attr if (!function_exists('asia_garden_prepare_css_value')) { function asia_garden_prepare_css_value($val) { if ($val != '') { $ed = substr($val, -1); if ('0'<=$ed && $ed<='9') $val .= 'px'; } return $val; } } // Return array with classes from css-file if (!function_exists('asia_garden_parse_icons_classes')) { function asia_garden_parse_icons_classes($css) { $rez = array(); if (!file_exists($css)) return $rez; $file = asia_garden_fga($css); if (!is_array($file) || count($file) == 0) return $rez; foreach ($file as $row) { if (substr($row, 0, 1)!='.') continue; $name = ''; for ($i=1; $i=') || (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()==1) || (function_exists('get_magic_quotes_runtime') && get_magic_quotes_runtime()==1); // || strtolower(ini_get('magic_quotes_sybase'))=='on'; } if (is_array($val)) { foreach($val as $k=>$v) $val[$k] = asia_garden_stripslashes($v); } else $val = $magic ? stripslashes(trim($val)) : trim($val); return $val; } } // Get GET, POST value if (!function_exists('asia_garden_get_value_gp')) { function asia_garden_get_value_gp($name, $defa='') { if (isset($_GET[$name])) $rez = wp_unslash($_GET[$name]); else if (isset($_POST[$name])) $rez = wp_unslash($_POST[$name]); else $rez = $defa; return $rez; //asia_garden_stripslashes($rez); } } // Get GET, POST, COOKIE value and save it (if need) if (!function_exists('asia_garden_get_value_gpc')) { function asia_garden_get_value_gpc($name, $defa='', $page='', $exp=0) { if (isset($_GET[$name])) $rez = wp_unslash($_GET[$name]); else if (isset($_POST[$name])) $rez = wp_unslash($_POST[$name]); else if (isset($_COOKIE[$name])) $rez = wp_unslash($_COOKIE[$name]); else $rez = $defa; return $rez; //asia_garden_stripslashes($rez); } } // Get GET, POST, SESSION value and save it (if need) if (!function_exists('asia_garden_get_value_gps')) { function asia_garden_get_value_gps($name, $defa='', $page='') { if (isset($_GET[$name])) $rez = wp_unslash($_GET[$name]); else if (isset($_POST[$name])) $rez = wp_unslash($_POST[$name]); else if (isset($_SESSION[$name])) $rez = wp_unslash($_SESSION[$name]); else $rez = $defa; return $rez; //asia_garden_stripslashes($rez); } } // Save value into session if (!function_exists('asia_garden_set_session_value')) { function asia_garden_set_session_value($name, $value, $page='') { if (!session_id()) session_start(); $_SESSION[$name.($page!='' ? sprintf('_%s', $page) : '')] = $value; } } // Save value into session if (!function_exists('asia_garden_del_session_value')) { function asia_garden_del_session_value($name, $page='') { if (!session_id()) session_start(); unset($_SESSION[$name.($page!='' ? '_'.($page) : '')]); } } /* Colors manipulations ----------------------------------------------------------------------------------------------------- */ if (!function_exists('asia_garden_hex2rgb')) { function asia_garden_hex2rgb($hex) { $dec = hexdec(substr($hex, 0, 1)== '#' ? substr($hex, 1) : $hex); return array('r'=> $dec >> 16, 'g'=> ($dec & 0x00FF00) >> 8, 'b'=> $dec & 0x0000FF); } } if (!function_exists('asia_garden_hex2rgba')) { function asia_garden_hex2rgba($hex, $alpha) { $rgb = asia_garden_hex2rgb($hex); return 'rgba('.intval($rgb['r']).','.intval($rgb['g']).','.intval($rgb['b']).','.floatval($alpha).')'; } } if (!function_exists('asia_garden_hex2hsb')) { function asia_garden_hex2hsb($hex, $h=0, $s=0, $b=0) { $hsb = asia_garden_rgb2hsb(asia_garden_hex2rgb($hex)); $hsb['h'] = min(359, $hsb['h'] + $h); $hsb['s'] = min(100, $hsb['s'] + $s); $hsb['b'] = min(100, $hsb['b'] + $b); return $hsb; } } if (!function_exists('asia_garden_rgb2hsb')) { function asia_garden_rgb2hsb($rgb) { $hsb = array(); $hsb['b'] = max(max($rgb['r'], $rgb['g']), $rgb['b']); $hsb['s'] = ($hsb['b'] <= 0) ? 0 : round(100*($hsb['b'] - min(min($rgb['r'], $rgb['g']), $rgb['b'])) / $hsb['b']); $hsb['b'] = round(($hsb['b'] /255)*100); if (($rgb['r']==$rgb['g']) && ($rgb['g']==$rgb['b'])) $hsb['h'] = 0; else if($rgb['r']>=$rgb['g'] && $rgb['g']>=$rgb['b']) $hsb['h'] = 60*($rgb['g']-$rgb['b'])/($rgb['r']-$rgb['b']); else if($rgb['g']>=$rgb['r'] && $rgb['r']>=$rgb['b']) $hsb['h'] = 60 + 60*($rgb['g']-$rgb['r'])/($rgb['g']-$rgb['b']); else if($rgb['g']>=$rgb['b'] && $rgb['b']>=$rgb['r']) $hsb['h'] = 120 + 60*($rgb['b']-$rgb['r'])/($rgb['g']-$rgb['r']); else if($rgb['b']>=$rgb['g'] && $rgb['g']>=$rgb['r']) $hsb['h'] = 180 + 60*($rgb['b']-$rgb['g'])/($rgb['b']-$rgb['r']); else if($rgb['b']>=$rgb['r'] && $rgb['r']>=$rgb['g']) $hsb['h'] = 240 + 60*($rgb['r']-$rgb['g'])/($rgb['b']-$rgb['g']); else if($rgb['r']>=$rgb['b'] && $rgb['b']>=$rgb['g']) $hsb['h'] = 300 + 60*($rgb['r']-$rgb['b'])/($rgb['r']-$rgb['g']); else $hsb['h'] = 0; $hsb['h'] = round($hsb['h']); return $hsb; } } if (!function_exists('asia_garden_hsb2rgb')) { function asia_garden_hsb2rgb($hsb) { $rgb = array(); $h = round($hsb['h']); $s = round($hsb['s']*255/100); $v = round($hsb['b']*255/100); if ($s == 0) { $rgb['r'] = $rgb['g'] = $rgb['b'] = $v; } else { $t1 = $v; $t2 = (255-$s)*$v/255; $t3 = ($t1-$t2)*($h%60)/60; if ($h==360) $h = 0; if ($h<60) { $rgb['r']=$t1; $rgb['b']=$t2; $rgb['g']=$t2+$t3; } else if ($h<120) { $rgb['g']=$t1; $rgb['b']=$t2; $rgb['r']=$t1-$t3; } else if ($h<180) { $rgb['g']=$t1; $rgb['r']=$t2; $rgb['b']=$t2+$t3; } else if ($h<240) { $rgb['b']=$t1; $rgb['r']=$t2; $rgb['g']=$t1-$t3; } else if ($h<300) { $rgb['b']=$t1; $rgb['g']=$t2; $rgb['r']=$t2+$t3; } else if ($h<360) { $rgb['r']=$t1; $rgb['g']=$t2; $rgb['b']=$t1-$t3; } else { $rgb['r']=0; $rgb['g']=0; $rgb['b']=0; } } return array('r'=>round($rgb['r']), 'g'=>round($rgb['g']), 'b'=>round($rgb['b'])); } } if (!function_exists('asia_garden_rgb2hex')) { function asia_garden_rgb2hex($rgb) { $hex = array( dechex($rgb['r']), dechex($rgb['g']), dechex($rgb['b']) ); return '#'.(strlen($hex[0])==1 ? '0' : '').($hex[0]).(strlen($hex[1])==1 ? '0' : '').($hex[1]).(strlen($hex[2])==1 ? '0' : '').($hex[2]); } } if (!function_exists('asia_garden_hsb2hex')) { function asia_garden_hsb2hex($hsb) { return asia_garden_rgb2hex(asia_garden_hsb2rgb($hsb)); } } /* String manipulations ----------------------------------------------------------------------------------------------------- */ // Replace macros in the string if (!function_exists('asia_garden_prepare_macros')) { function asia_garden_prepare_macros($str) { return str_replace( array("{{", "}}", "[[", "]]", "||"), array("", "", "", "", "
"), $str); } } // Remove macros from the string if (!function_exists('asia_garden_remove_macros')) { function asia_garden_remove_macros($str) { return str_replace( array("{{", "}}", "[[", "]]", "||"), array("", "", "", "", " "), $str); } } // Check value for "on" | "off" | "inherit" values if (!function_exists('asia_garden_is_on')) { function asia_garden_is_on($prm) { return $prm>0 || in_array(strtolower($prm), array('true', 'on', 'yes', 'show')); } } if (!function_exists('asia_garden_is_off')) { function asia_garden_is_off($prm) { return empty($prm) || $prm===0 || in_array(strtolower($prm), array('false', 'off', 'no', 'none', 'hide')); } } if (!function_exists('asia_garden_is_inherit')) { function asia_garden_is_inherit($prm) { return in_array(strtolower($prm), array('inherit')); //array('inherit', 'default') } } // Return truncated string if (!function_exists('asia_garden_strshort')) { function asia_garden_strshort($str, $maxlength, $add='...') { // if ($add && substr($add, 0, 1) != ' ') // $add .= ' '; if ($maxlength < 0) return ''; if ($maxlength == 0) return ''; if ($maxlength >= strlen($str)) return strip_tags($str); $str = substr(strip_tags($str), 0, $maxlength - strlen($add)); $ch = substr($str, $maxlength - strlen($add), 1); if ($ch != ' ') { for ($i = strlen($str) - 1; $i > 0; $i--) { if (substr($str, $i, 1) == ' ') { break; } } $str = trim(substr($str, 0, $i)); } if (!empty($str) && strpos(',.:;-', substr($str, -1))!==false) $str = substr($str, 0, -1); return ($str) . ($add); } } // Unserialize string (try replace \n with \r\n) if (!function_exists('asia_garden_unserialize')) { function asia_garden_unserialize($str) { if ( is_serialized($str) ) { try { $data = unserialize($str); } catch (Exception $e) { dcl($e->getMessage()); $data = false; } if ($data===false) { try { $data = unserialize(str_replace("\n", "\r\n", $str)); } catch (Exception $e) { dcl($e->getMessage()); $data = false; } } //if ($data===false) $data = @unserialize(str_replace(array("\n", "\r"), array('\\n','\\r'), $str)); return $data; } else return $str; } } /* Media: images, galleries, audio, video ----------------------------------------------------------------------------------------------------- */ // Get image sizes from image url (if image in the uploads folder) if (!function_exists('asia_garden_getimagesize')) { function asia_garden_getimagesize($url) { // Get upload path & dir $upload_info = wp_upload_dir(); // Where check file $locations = array( 'uploads' => array( 'dir' => $upload_info['basedir'], 'url' => $upload_info['baseurl'] ), 'child' => array( 'dir' => get_stylesheet_directory(), 'url' => get_stylesheet_directory_uri() ), 'theme' => array( 'dir' => get_template_directory(), 'url' => get_template_directory_uri() ) ); $img_size = false; $url = asia_garden_remove_protocol_from_url($url); foreach ($locations as $key=>$loc) { $loc['url'] = asia_garden_remove_protocol_from_url($loc['url']); // Check if $img_url is local. if ( false === strpos($url, $loc['url']) ) continue; // Get path of image. $img_path = $loc['dir'] . str_replace($loc['url'], '', $url); // Check if img path exists, and is an image indeed. if ( !file_exists($img_path)) continue; // Get image size $img_size = getimagesize($img_path); break; } return $img_size; } } // Clear thumb sizes from image name if (!function_exists('asia_garden_clear_thumb_size')) { function asia_garden_clear_thumb_size($url) { $pi = pathinfo($url); $parts = explode('-', $pi['filename']); $suff = explode('x', $parts[count($parts)-1]); if (count($suff)==2 && (int) $suff[0] > 0 && (int) $suff[1] > 0) { array_pop($parts); $url = $pi['dirname'] . '/' . join('-', $parts) . '.' . $pi['extension']; } return $url; } } // Add thumb sizes to image name if (!function_exists('asia_garden_add_thumb_size')) { function asia_garden_add_thumb_size($url, $thumb_size, $check_exists=true) { $pi = pathinfo($url); $parts = explode('-', $pi['filename']); // Remove image sizes from filename $suff = explode('x', $parts[count($parts)-1]); if (count($suff)==2 && (int) $suff[0] > 0 && (int) $suff[1] > 0) { array_pop($parts); } // Add new image sizes global $_wp_additional_image_sizes; if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) && in_array( $thumb_size, array_keys( $_wp_additional_image_sizes ) ) ) { if (intval( $_wp_additional_image_sizes[$thumb_size]['width'] ) > 0 && intval( $_wp_additional_image_sizes[$thumb_size]['height'] ) > 0) $parts[] = intval( $_wp_additional_image_sizes[$thumb_size]['width'] ) . 'x' . intval( $_wp_additional_image_sizes[$thumb_size]['height'] ); } $pi['filename'] = join('-', $parts); $new_url = $pi['dirname'] . '/' . $pi['filename'] . '.' . $pi['extension']; if ($check_exists) { $uploads_info = wp_upload_dir(); $uploads_url = $uploads_info['baseurl']; $uploads_dir = $uploads_info['basedir']; if (strpos($new_url, $uploads_url)!==false) { if (!file_exists(str_replace($uploads_url, $uploads_dir, $new_url))) $new_url = $url; } } return $new_url; } } // Return image size multiplier if (!function_exists('asia_garden_get_thumb_size')) { function asia_garden_get_thumb_size($ts) { static $retina = '-'; if ($retina=='-') $retina = asia_garden_get_retina_multiplier() > 1 ? '-@retina' : ''; return ($ts=='post-thumbnail' ? '' : 'asia_garden-thumb-') . $ts . $retina; } } // Return url from first tag inserted in post if (!function_exists('asia_garden_get_post_image')) { function asia_garden_get_post_image($post_text='', $src=true) { global $post; $img = ''; if (empty($post_text)) $post_text = $post->post_content; if (preg_match_all('/]*>/i', $post_text, $matches)) { $img = $matches[$src ? 1 : 0][0]; } return $img; } } // Return url from first