1): return "#".str_replace("#","",$color); else: return $color; endif; } // cryout_color_clean() /** * cryout_gen_values() generates pre-set options array based on option limits and types * This function is located in admin/options.php because it is needed by the options array */ ///////// frontend helper functions ///////// /** * */ function cryout_optset($var,$val1,$val2='',$val3='',$val4=''){ $vals = array($val1,$val2,$val3,$val4); if (in_array($var,$vals)): return false; else: return true; endif; } // cryout_optset() /** * Converts hex colour code to RGB series to be used in a rgba() CSS colour definition */ function cryout_hex2rgb($hex) { $hex = str_replace("#", "", $hex); if (preg_match("/^([a-f0-9]{3}|[a-f0-9]{6})$/i",$hex)): if(strlen($hex) == 3) { $r = hexdec(substr($hex,0,1).substr($hex,0,1)); $g = hexdec(substr($hex,1,1).substr($hex,1,1)); $b = hexdec(substr($hex,2,1).substr($hex,2,1)); } else { $r = hexdec(substr($hex,0,2)); $g = hexdec(substr($hex,2,2)); $b = hexdec(substr($hex,4,2)); } $rgb = array($r, $g, $b); return implode(",", $rgb); // returns the rgb values separated by commas else: return ""; // input string is not a valid hex color code endif; } // cryout_hex2rgb() /** * Adds a differential value to a RGB colour code * Returns a hex colour code */ function cryout_hexadder($hex,$inc) { $hex = str_replace("#", "", $hex); if (preg_match("/^([a-f0-9]{3}|[a-f0-9]{6})$/i",$hex)): if(strlen($hex) == 3) { $r = hexdec(substr($hex,0,1).substr($hex,0,1)); $g = hexdec(substr($hex,1,1).substr($hex,1,1)); $b = hexdec(substr($hex,2,1).substr($hex,2,1)); } else { $r = hexdec(substr($hex,0,2)); $g = hexdec(substr($hex,2,2)); $b = hexdec(substr($hex,4,2)); } $rgb_array = array($r,$g,$b); $newhex="#"; foreach ($rgb_array as $el) { $el+=$inc; if ($el<=0) { $el='00'; } elseif ($el>=255) {$el='ff';} else {$el=dechex($el);} if(strlen($el)==1) {$el='0'.$el;} $newhex.=$el; } return $newhex; else: return ""; // input string is not a valid hex color code endif; } // cryout_hexadder() /** * Adds or subtracts a differential value to or from a RGB colour code * Returns a hex colour code; Sign of the operation is decided based on the colour lightness */ function cryout_hexdiff($hex,$inc,$f='') { // $f = '-' | '+' $hex = str_replace("#", "", $hex); if (preg_match("/^([a-f0-9]{3}|[a-f0-9]{6})$/i",$hex)): if(strlen($hex) == 3) { $r = hexdec(substr($hex,0,1).substr($hex,0,1)); $g = hexdec(substr($hex,1,1).substr($hex,1,1)); $b = hexdec(substr($hex,2,1).substr($hex,2,1)); } else { $r = hexdec(substr($hex,0,2)); $g = hexdec(substr($hex,2,2)); $b = hexdec(substr($hex,4,2)); } $rgb_array = array($r,$g,$b); $newhex="#"; // guess decimal lightness if ( ((int)$r < 102) && ((int)$g < 102) && ((int)$b < 102) ) $sign = +1; else $sign = -1; // forced sign handling if (!empty($f)) $sign = ($f == '-'? -1 : +1); foreach ($rgb_array as $el) { $el += $sign * (int)$inc; if ( $el<0 ) { $el='00'; } elseif ( $el>255 ) { $el='ff'; } else { $el = dechex($el); } if ( strlen($el)==1 ) { $el='0'.$el; } $newhex .= $el; } return $newhex; else: return ""; // input string is not a valid hex color code endif; } // cryout_hexdiff() /** * Returns the cleaned up Google font name to be displayed in the font list and used in custom styling */ function cryout_clean_gfont( $font, $identifier = '(:\d+)?\/gfont$' ){ return preg_replace( "/$identifier/i", '', $font ); } // cryout_clean_gfont() /** * Returns the correct Google font name style to be used in the frontend * based on the configured font identifier */ function cryout_font_select( $font, $gfont ) { $font = cryout_clean_gfont( $font ); if ( !empty($gfont) ): $fontname = esc_attr( preg_replace( '/[:&].*/', '', preg_replace( '/\+/', ' ', $gfont ) ) ); if (preg_match('/:(\d{1,4})/',$gfont,$ms)) $weight = $ms[1]; return "'$fontname'" . ( !empty($weight) ? ";font-weight:$weight" : ""); else: return "$font"; endif; } // cryout_font_select() /** * Cleans up the Google font identifier used in the style enques */ function cryout_gfontclean( $gfont, $mode = 1 ) { switch ($mode) { case 2: // for custom styling DEPRECATED // $fontname = esc_attr( preg_replace( '/[:&].*/', '', preg_replace( '/\+/', ' ',$gfont ) ) ); // if (preg_match('/:(\d{1,4})/',$gfont,$ms)) $weight = $ms[1]; // return "'$fontname'" . ( !empty($weight) ? ";font-weight:$weight" : ""); break; case 1: // for font enqueuing default: return esc_attr(preg_replace( '/\s+/', '+',$gfont)); break; } // switch } // cryout_gfontcleanup() /** * Returns the first attached post image (or none if images were not uploaded directly to post). */ function cryout_post_first_image( $postID, $size = 'cryout-featured' ) { $args = array( 'numberposts' => 1, 'orderby' => 'ID', 'order' => 'ASC', 'post_mime_type'=> 'image', 'post_parent' => $postID, 'post_status' => 'any', 'post_type' => 'any' ); $attachments = get_children( $args ); if ($attachments) { foreach($attachments as $attachment) { $image_attributes = wp_get_attachment_image_src( $attachment->ID, $size ) ? wp_get_attachment_image_src( $attachment->ID, $size ) : wp_get_attachment_image_src( $attachment->ID ); return $image_attributes[0]; } } }; // cryout_post_first_image() /** * Outputs inline background image styling * Used by the header image and post featured images */ function cryout_echo_bgimage( $image_url, $classes = NULL ) { echo ' style="background-image: url(' . esc_url( $image_url ). ')" '; if (!empty($classes)): if (is_array($classes)) $classes = implode( ' ', $classes ); echo ' class="' . $classes . '" '; endif; }; // cryout_echo_bgimage() /** * Retrieves the IDs for images in a gallery. * Returns array list of image IDs from the post gallery. */ function cryout_get_gallery_images() { $images = array(); if ( function_exists( 'get_post_galleries' ) ) { $galleries = get_post_galleries( get_the_ID(), false ); if ( isset( $galleries[0]['ids'] ) ) $images = explode( ',', $galleries[0]['ids'] ); } else { $pattern = get_shortcode_regex(); preg_match( "/$pattern/s", get_the_content(), $match ); $atts = shortcode_parse_atts( $match[3] ); if ( isset( $atts['ids'] ) ) $images = explode( ',', $atts['ids'] ); } if ( ! $images ) { $images = get_posts( array( 'fields' => 'ids', 'numberposts' => 999, 'order' => 'ASC', 'orderby' => 'none', 'post_mime_type' => 'image', 'post_parent' => get_the_ID(), 'post_type' => 'attachment', ) ); } return $images; } // cryout_get_gallery_images() // FIN! //