Skip to content

Commit e3531a7

Browse files
Merge pull request #1 from dutchenkoOleg/master
initial
2 parents 5ae537d + 5b9a984 commit e3531a7

File tree

5 files changed

+187
-1
lines changed

5 files changed

+187
-1
lines changed

.editorconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# http://EditorConfig.org
2+
root = true
3+
charset = utf-8
4+
indent_style = space
5+
indent_size = 4
6+
trim_trailing_whitespace = true
7+
insert_final_new_line = true

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/.idea
2+
/.temp
3+
/.vscode
4+
/.vagrant
5+
/export
6+
/nbproject
7+
/vendor
8+
/atlassian-ide-plugin.xml
9+
composer.phar
10+
11+
# all
12+
#------------------------------------
13+
14+
*.log*
15+
.DS_Store
16+
thumbs.db
17+
*.ipr
18+
*.iws

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
# Browserizr PHP
22

3-
![Status - Working in progress](https://img.shields.io/badge/Status-WIP-red.svg)
43
[![license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/dutchenkoOleg/node-w3c-validator/blob/master/LICENSE)
4+
[![WezomAgency](https://img.shields.io/badge/wezom-agency-red.svg)](https://github.com/WezomAgency)
5+
6+
> **Browserizr** is tiny library, that detects your browser and platform,
7+
> with testing `$_SERVER['HTTP_USER_AGENT']`.
8+
9+
_that is PHP port of JavaScript library [WezomAgency/Browserizr](https://github.com/WezomAgency/browserizr)
10+
with several limitations..._

composer.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "wezom-agency/browserizr",
3+
"description": "Browserizr is tiny library, that detects your browser",
4+
"type": "library",
5+
"license": "MIT",
6+
"authors": [
7+
{
8+
"name": "dutchenkoOleg",
9+
"email": "dutchenko.o.wezom@gmail.com"
10+
}
11+
],
12+
"minimum-stability": "dev",
13+
"require": {}
14+
}

src/WezomAgency/Browserizr.php

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<?php
2+
3+
namespace WezomAgency;
4+
5+
6+
class Browserizr
7+
{
8+
/** @var string */
9+
private static $agent = '';
10+
11+
/** @var bool */
12+
public static $is_android = false;
13+
/** @var bool */
14+
public static $is_android3 = false;
15+
/** @var bool */
16+
public static $is_android4 = false;
17+
/** @var bool */
18+
public static $is_android5 = false;
19+
/** @var bool */
20+
public static $is_android6 = false;
21+
/** @var bool */
22+
public static $is_android7 = false;
23+
/** @var bool */
24+
public static $is_android8 = false;
25+
/** @var bool */
26+
public static $is_blackberry = false;
27+
/** @var bool */
28+
public static $is_blackberry10 = false;
29+
/** @var bool */
30+
public static $is_edge = false;
31+
/** @var bool */
32+
public static $is_edge_android = false;
33+
/** @var bool */
34+
public static $is_edge_ios = false;
35+
/** @var bool */
36+
public static $is_ie = false;
37+
/** @var bool */
38+
public static $is_ie8 = false;
39+
/** @var bool */
40+
public static $is_ie9 = false;
41+
/** @var bool */
42+
public static $is_ie10 = false;
43+
/** @var bool */
44+
public static $is_ie11 = false;
45+
/** @var bool */
46+
public static $is_ipad = false;
47+
/** @var bool */
48+
public static $is_ipod = false;
49+
/** @var bool */
50+
public static $is_iphone = false;
51+
/** @var bool */
52+
public static $is_windows_phone = false;
53+
/** @var bool */
54+
public static $is_moz = false;
55+
/** @var bool */
56+
public static $is_opera = false;
57+
/** @var bool */
58+
public static $is_safari = false;
59+
/** @var bool */
60+
public static $is_chrome = false;
61+
/** @var bool */
62+
public static $is_mobile = false;
63+
/** @var bool */
64+
public static $is_desktop = false;
65+
66+
/**
67+
* Create string with CSS classes
68+
* @param string[] $tests
69+
* @param string $css_prefix
70+
* @return string
71+
*/
72+
public static function add_classes($tests, $css_prefix = '')
73+
{
74+
$classes = [];
75+
foreach ($tests as $test) {
76+
$key = 'is_' . $test;
77+
$prefix = self::$$key ? 'is-' : 'is-not-';
78+
array_push($classes, $css_prefix . $prefix . $test);
79+
}
80+
81+
if (count($classes)) {
82+
return implode(' ', $classes);
83+
}
84+
return '';
85+
}
86+
87+
/**
88+
* Checkout/re-checkout all detections
89+
* @param string $custom_user_agent
90+
*/
91+
public static function detect($custom_user_agent = null)
92+
{
93+
self::$agent = $custom_user_agent ?: $_SERVER['HTTP_USER_AGENT'] ?: '';
94+
95+
self::$is_android = !!preg_match('/android/i', self::$agent);
96+
self::$is_android3 = !!preg_match('/android 3/i', self::$agent);
97+
self::$is_android4 = !!preg_match('/android 4/i', self::$agent);
98+
self::$is_android5 = !!preg_match('/android 5/i', self::$agent);
99+
self::$is_android6 = !!preg_match('/android 6/i', self::$agent);
100+
self::$is_android7 = !!preg_match('/android 7/i', self::$agent);
101+
self::$is_android8 = !!preg_match('/android 8/i', self::$agent);
102+
self::$is_blackberry = !!preg_match('/BlackBerry/i', self::$agent);
103+
self::$is_blackberry10 = !!preg_match('/BB10;/i', self::$agent);
104+
self::$is_edge = !!preg_match('/ Edge\/\d/i', self::$agent);
105+
self::$is_edge_android = !!preg_match('/\sEdgA\//i', self::$agent);
106+
self::$is_edge_ios = !!preg_match('/\sEdgA\//i', self::$agent);
107+
self::$is_ie = !!preg_match('/(MSIE|Trident)/i', self::$agent);
108+
self::$is_ie8 = !!preg_match('/MSIE 8\.\d/i', self::$agent);
109+
self::$is_ie9 = !!preg_match('/MSIE 9\.\d/i', self::$agent);
110+
self::$is_ie10 = !!preg_match('/MSIE 10\.\d/i', self::$agent);
111+
self::$is_ie11 = !!preg_match('/Trident.*rv[ :]*11\./', self::$agent);
112+
self::$is_ipad = !!preg_match('/iPad/i', self::$agent);
113+
self::$is_ipod = !!preg_match('/iPod/i', self::$agent);
114+
self::$is_iphone = !!preg_match('/iPhone/i', self::$agent);
115+
self::$is_windows_phone = !!preg_match('/Windows\sPhone/i', self::$agent);
116+
117+
self::$is_moz = !!preg_match('/ Firefox\//i', self::$agent);
118+
self::$is_opera = !!preg_match('/Opera|OPR\//i', self::$agent);
119+
120+
$_chromeAgent = !!preg_match('/ Chrome\/\d/', self::$agent);
121+
$_edgeAgent = !!preg_match('/ Edg[e|A|i]\/\d/i', self::$agent);
122+
self::$is_safari = !!preg_match('/ Safari\/\d/', self::$agent) && !$_chromeAgent;
123+
self::$is_chrome = ($_chromeAgent && !self::$is_opera && !self::$is_safari) && !$_edgeAgent;
124+
125+
self::$is_mobile = (
126+
self::$is_android ||
127+
self::$is_blackberry ||
128+
self::$is_blackberry10 ||
129+
self::$is_edge_android ||
130+
self::$is_edge_ios ||
131+
self::$is_ipad ||
132+
self::$is_ipod ||
133+
self::$is_iphone ||
134+
self::$is_windows_phone
135+
);
136+
self::$is_desktop = !self::$is_mobile;
137+
}
138+
}
139+
140+
// initial checkout
141+
Browserizr::detect();

0 commit comments

Comments
 (0)