-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper.php
139 lines (119 loc) · 4.1 KB
/
helper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
/**
* @package dispcustom
* @subpackage
* @author
* @license GNU/GPL
*/
//-- No direct access
defined('_JEXEC') || die('=;)');
/**
* Helper class for dispcustom.
* Recuerda que el nombre clase de un modulo tiene el siguiente formato.
* Mod[nombremodulo]Helper
*/
class ModdispcustomHelper
{
public static function getItems(&$params)
{
$db = JFactory::getDBO();
//-- Hacemos la busqueda articulos
$db->setQuery($db->getQuery(true)
->select('#__content.*')
->from('#__content')
->where('#__content.id' . '=' . $params->get('article_id', ''))
->order('ordering ASC')
);
$items = $db->loadObjectList();
return ($items);
}
public static function getCliente(&$params)
{
# Creamos variables de informacion de la petición actual.
$info['cliente'] = $_SERVER['HTTP_USER_AGENT'];
/* Lo primero que hay que tener en cuenta que parece facil obtener la información
* del SISTEMA OPERATIVO Y NAVEGADOR, pero estos datos pueden influir según navegador
* que se utilice.
* ver más info en : https://github.com/Ricardolau/mod_dispcustom/wiki/Cosas-curiosas-que-aprendo#_serverhttp_user_agent
*/
# Array de posibles Navegadores y Sistemas Operativos.
$browser=array("IE","OPERA","FIREFOX","CHROME","SAFARI");
$os=array("IPHONE","ANDROID","WIN","MACINTOSH","LINUX");
/* Teniendo en cuenta:
* - La primera palabra que nos genera $info['cliente] no la tiene en cuenta
* por causa del funcionamiento la instrucción strpos , ver más info en http://php.net/manual/es/function.strpos.php
* - Tener en cuenta que el orden en el que se ponga los sistemas opertativo y navegadores es importante, ya que la funcion
* cuando encuentra uno ellos, no sigue buscando los siguientes.
* Ejemplo: Ponemos ANDROID primero ya que $info['cliente'] contiene tambien LINUX, fijo.
* - La version del sistema opertativo, no siempre funciona.
* */
# definimos unos valores por defecto para el navegador y el sistema operativo
$info['browser'] = "OTHER";
$info['os'] = "OTHER";
# buscamos el navegador con su sistema operativo
foreach($browser as $parent)
{
$s = strpos(strtoupper($info['cliente']), $parent);
$f = $s + strlen($parent);
$version = substr($info['cliente'], $f, 15);
$version = preg_replace('/[^0-9,.]/','',$version);
if ($s)
{
$info['browser'] = $parent;
$info['browser-version'] = $version;
break;
}
}
# obtenemos el sistema operativo
foreach($os as $val)
{
$s = strpos(strtoupper($info['cliente']), $val);
if ($s)
{
$info['os'] = $val;
# Ahora metemos la version del sistema operativo
$f = $s + strlen($val);
# Buscamos version
$version = substr($info['cliente'], $f, 15);
$version = preg_replace('/[^0-9,.]/','',$version);
$info['os-version'] = $version;
#Salimos de bucle ya que encontramos sistema operativo
break;
}
}
###############################################################
# Ahora comprobamos si NAVEGADOR o SO está incluido o excluido#
###############################################################
# Hay que saber si hay parametro marcados porque sino genera un error
$info['coincideSO'] = 0;
$info['parametroOS'] = $params->get('so');
if ($params->get('so')){
# Comprobamos si está seleccionado el Sistema Operativo de cliente.
$SistemasOperativos = $params->get('so');
foreach($SistemasOperativos as $SistemaOperativo)
{
if ($SistemaOperativo == $info['os'])
{
$info['coincideSO'] = 1;
break;
}
}
}
# Hay que saber si hay parametro marcados porque sino genera un error
$info['coincideNav'] = 0;
if ($params->get('navegador')){
# Comprobamos si está seleccionado el Navegador de cliente.
$Navegadores = $params->get('navegador');
foreach($Navegadores as $Navegador)
{
if ($Navegador == $info['browser'])
{
$info['coincideNav'] = 1;
break;
}
}
}
# devolvemos el array de valores
return $info;
}
}