codescribblr
4/10/2014 - 5:26 PM

Helper Functions

Helper Functions

function dollars(n) {
    return "$" + n.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
}

/*! A fix for the iOS orientationchange zoom bug.
 Script by @scottjehl, rebound by @wilto.
 MIT License.
*/
(function(w){
	// This fix addresses an iOS bug, so return early if the UA claims it's something else.
	if( !( /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ){ return; }
    var doc = w.document;
    if( !doc.querySelector ){ return; }
    var meta = doc.querySelector( "meta[name=viewport]" ),
        initialContent = meta && meta.getAttribute( "content" ),
        disabledZoom = initialContent + ",maximum-scale=1",
        enabledZoom = initialContent + ",maximum-scale=10",
        enabled = true,
		x, y, z, aig;
    if( !meta ){ return; }
    function restoreZoom(){
        meta.setAttribute( "content", enabledZoom );
        enabled = true; }
    function disableZoom(){
        meta.setAttribute( "content", disabledZoom );
        enabled = false; }
    function checkTilt( e ){
		aig = e.accelerationIncludingGravity;
		x = Math.abs( aig.x );
		y = Math.abs( aig.y );
		z = Math.abs( aig.z );
		// If portrait orientation and in one of the danger zones
        if( !w.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){
			if( enabled ){ disableZoom(); } }
		else if( !enabled ){ restoreZoom(); } }
	w.addEventListener( "orientationchange", restoreZoom, false );
	w.addEventListener( "devicemotion", checkTilt, false );
})( this );

// make it safe to use console.log always
(function(a){function b(){}for(var c="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),d;!!(d=c.pop());){a[d]=a[d]||b;}})
(function(){try{console.log();return window.console;}catch(a){return (window.console={});}}());
<?php
class Util {
	function __construct(){

	}
	public static function log($action, $message="", $logfile=false) {
	    $logfile = ($logfile) ? $logfile : $_SERVER['DOCUMENT_ROOT'].'/logs/log'.date("Y-m-d").'.log';
	    $new = file_exists($logfile) ? false : true;
	    if($handle = fopen($logfile, 'a')) { // append
	        $timestamp = strftime("%Y-%m-%d %H:%M:%S", time());
	        $content = "{$timestamp} | {$action}: {$message}\n";
	        fwrite($handle, $content);
	        fclose($handle);
	        if($new) { chmod($logfile, 0755); }
	    } else {
	        return false;
	    }
	}

	public static function pprint_r($var){
		echo "<pre>";
		print_r($var);
		echo "</pre>";
	}

	public static function file_get_contents_curl($url) {
	    $ch = curl_init();

	    curl_setopt($ch, CURLOPT_HEADER, 0);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_URL, $url);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 120);

	    $data = curl_exec($ch);
	    
	    // echo curl_getinfo($ch) . '<br/>';
	    // echo curl_errno($ch) . '<br/>';
	    // echo curl_error($ch) . '<br/>';
	    curl_close($ch);
	    return $data;
	}

	public static function get_include_contents($filename) {
	    if (is_file($filename)) {
	        ob_start();
	        include $filename;
	        return ob_get_clean();
	    }
	    return false;
	}

	public static function my_array_unique($array, $keep_key_assoc = false) {
	    $duplicate_keys = array();
	    $tmp         = array();       

	    foreach ($array as $key=>$val) {
	        // convert objects to arrays, in_array() does not support objects
	        if (is_object($val))
	            $val = (array)$val;

	        if (!in_array($val, $tmp))
	            $tmp[] = $val;
	        else
	            $duplicate_keys[] = $key;
	    }

	    foreach ($duplicate_keys as $key)
	        unset($array[$key]);

	    return $keep_key_assoc ? $array : array_values($array);
	}

	public static function sortByDueDate($a, $b) {
	    return $b['Due_Date'] - $a['Due_Date'];
	}

	public static function datetime_to_text($datetime="") {
		$unixdatetime = strtotime($datetime);
		return strftime("%B %d, %Y at %I:%M %p", $unixdatetime);
	}

	public static function base64_url_encode($input) {
		return strtr(base64_encode($input), '+/=', '-_,');
	}

	public static function base64_url_decode($input) {
		return base64_decode(strtr($input, '-_,', '+/='));
	}

	public static function dollars($number){
	    return ($number >= 0) ? "$".number_format($number, 2) : "<em class='red'>$".number_format($number, 2)."</em>";
	}

	public static function nodollars($money){
		return floatval(preg_replace('/[^\d\.]/', '', $money));
	}
	
	public static function bit_debug($setting = E_ALL) {
		error_reporting($setting);
		ini_set('display_errors',1);
	}

	public static function strip_zeros_from_date( $marked_string="" ) {
		// first remove the marked zeros
		$no_zeros = str_replace('*0', '', $marked_string);
		// then remove any remaining marks
		$cleaned_string = str_replace('*', '', $no_zeros);
		return $cleaned_string;
	}

	public static function redirect_to( $location = NULL ) {
		if ($location != NULL) {
			header("Location: {$location}");
			exit;
		}
	}

	public static function reload_cache($cache_file, $cache_data) {
		file_put_contents($cache_file, serialize($cache_data));
		return $cache_data;
	}

	public static function read_cache($cache_file) {
		return unserialize(file_get_contents($cache_file));
	}

	public static function check_cache($cache_file='cache.json', $cache_lifetime=600) {
		if (file_exists($cache_file)) {
			$modification_time = filemtime($cache_file);
			if (time() - $modification_time > $cache_lifetime) {
				return false;
			} else {
				$cache_data = self::read_cache($cache_file);
				return $cache_data;
			}
		} else {
				$cache_data = self::reload_cache($cache_file, $cache_data);
		}
		return false;
	}

	public static function increase_memory($mem="256M"){
		ini_set('memory_limit', $mem);
	}

	public static function output_message() {
		if($_GET['message']):?>
		<div class="alert alert-<?php echo $_GET['message_type'];?> alert-dismissable status-message">
			<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
			<?php echo stripslashes(urldecode($_GET['message_text']));?>
		</div>
		<?php else: ?>
		<div class="alert alert-danger status-message" style="display:none;">
			
		</div>
		<?php endif;
	}

	public static function google_get_adress_location($address) {
		$response = json_decode(file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($address) . '&sensor=false&region=us'));
		if ($response->results) {
			return $response->results[0]->geometry->location->lat . ',' . $response->results[0]->geometry->location->lng;
		}
		return false;
	}
	
	public static function get_geodistance($requested_location, $dealer_location) {
		$l = explode(',', $requested_location);
		$dl = explode(',', $dealer_location);
		if (count($l) != 2 || count($dl) != 2) {
			return 9999;
		}
		$distance = (
			(
			    acos(
			    	sin(($l[0] * pi() / 180)) * sin(($dl[0] * pi() / 180)) +
			    	cos(($l[0] * pi() / 180)) * cos(($dl[0] * pi() / 180)) *
			    	cos((($l[1] - $dl[1]) * pi() / 180))
			    )
			) * 180 / pi()
		) * 60 * 1.1515;
		return $distance;
	}


}