<?php 
/**
 * Helper functions to check the os and browser versions for android & chrome on android.
 * 
 * @author Janaki
 * 01/25/2018
 */
class Platform_check{
    
    private static $logged_ua = array();
    
    /**
     * Check if given user agent's OS is less than android version 5.0
     * @param unknown $ua
     * @param string $version
     * @return mixed|boolean
     */
    public static function is_old_android_version($ua, $version = '5.0'){
        $return = false;
        if(strstr($ua, 'Android')){
            preg_match('/Android (\d+(?:\.\d+)+)[;)]/', $ua, $matches);
            $return = version_compare($matches[1], $version, '<');
        }
        return $return;
    }
    
    /**
     * Check if the chrome browser is below v 54 for android
     * @param unknown $ua
     * @param string $version
     * @return mixed|boolean
     */
    public static function is_old_android_chrome_version($ua, $version = '54.0'){
        $return = false;
        if(strstr($ua, 'Android') && strstr($ua, 'Chrome')){
            preg_match('/Chrome\/(\d+(?:\.\d+)+)/', $ua, $matches);
            $return = version_compare($matches[1], $version, '<');
        }
        return $return;
    }
    
    /**
     * Wrapper function for os and browser checks
     * @param unknown $ua
     */
    public static function is_platform_blocked($ua){
        $is_blocked = false;
        if(self::is_old_android_version($ua) || self::is_old_android_chrome_version($ua)){
            $is_blocked = true;
        }
        //self::log($ua, $is_blocked);
        return $is_blocked;
    }
    
    public static function log($ua, $is_blocked){
        /* if(!in_array($ua, self::$logged_ua)){
            self::$logged_ua[] = $ua;
        }
        else{
            return false;
        } */
        
        if($is_blocked){
            $list = "platform_check_blocked_".date("Ymd");
        }
        else{
            $list = "platform_check_approved_".date("Ymd");
        }
        $redis_write_hosts = array("192.168.30.121", "192.168.30.122","192.168.30.124");
        shuffle($redis_write_hosts);
        $redis_write_host = $redis_write_hosts[0];
        $redis_write = new Redis();
        $redis_write->pconnect($redis_write_host, "6379");
        $redis_write->rpush($list, $ua);
    }
    
}

/* 
$ua = $_SERVER['HTTP_USER_AGENT'];

$ua = "Mozilla/5.0 (Linux; U; Android 4.0; fr-fr; Desire HD Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";

$ua = "Mozilla/5.0 (Linux; Android 4.1.0; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/53.0.1025.133 Mobile Safari/535.19";

//$ua = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.1.1 Safari/537.36";

var_dump($ua);

//var_dump("is_old_android_version", Platform_check::is_old_android_version($ua));
//var_dump("is_old_android_chrome_version", Platform_check::is_old_android_chrome_version($ua));
//var_dump("is_platform_blocked", Platform_check::is_platform_blocked($ua));
 */
?>