source: branches/2.2/phpgwapi/inc/class.browser.inc.php @ 3621

Revision 3621, 8.0 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1470 - Redirecionamento para o expresso mini a depender da plataforma.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2  /**************************************************************************\
3  * eGroupWare API - Browser detect functions                                *
4  * This file written by Miles Lott <milosch@groupwhere.org>                 *
5  * Majority of code borrowed from Sourceforge 2.5                           *
6  * Copyright 1999-2000 (c) The SourceForge Crew - http://sourceforge.net    *
7  * Browser detection functions for eGroupWare developers                    *
8  * -------------------------------------------------------------------------*
9  * This library is part of the eGroupWare API                               *
10  * http://www.egroupware.org/api                                            *
11  * ------------------------------------------------------------------------ *
12  * This library is free software; you can redistribute it and/or modify it  *
13  * under the terms of the GNU Lesser General Public License as published by *
14  * the Free Software Foundation; either version 2.1 of the License,         *
15  * or any later version.                                                    *
16  * This library is distributed in the hope that it will be useful, but      *
17  * WITHOUT ANY WARRANTY; without even the implied warranty of               *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
19  * See the GNU Lesser General Public License for more details.              *
20  * You should have received a copy of the GNU Lesser General Public License *
21  * along with this library; if not, write to the Free Software Foundation,  *
22  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA            *
23  \**************************************************************************/
24
25
26        class browser
27        {
28                var $BROWSER_AGENT;
29                var $BROWSER_VER;
30                var $BROWSER_PLATFORM;
31                var $br;
32                var $p;
33                var $data;
34
35                const PLATFORM_WINDOWS = 'Win';
36                const PLATFORM_MAC = 'Mac';
37                const PLATFORM_LINUX = 'Linux';
38                const PLATFORM_BEOS = 'Beos';
39                const PLATFORM_IPHONE = 'iPhone';
40                const PLATFORM_IPOD = 'iPod';
41                const PLATFORM_IPAD = 'iPad';
42                const PLATFORM_BLACKBERRY = 'BlackBerry';
43                const PLATFORM_NOKIA = 'Nokia';
44                const PLATFORM_ANDROID = 'Android';
45                const PLATFORM_UNIX = 'Unix';
46
47                function browser()
48                {
49                        $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
50                        /*
51                                Determine browser and version
52                        */
53                        if(ereg('MSIE ([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version))
54                        {
55                                $this->BROWSER_VER = $log_version[1];
56                                $this->BROWSER_AGENT = 'IE';
57                        }
58                        elseif(ereg('Opera ([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version) ||
59                                ereg('Opera/([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version))
60                        {
61                                $this->BROWSER_VER   = $log_version[1];
62                                $this->BROWSER_AGENT = 'OPERA';
63                        }
64                        elseif(eregi('iCab ([0-9].[0-9a-zA-Z]{1,4})',$HTTP_USER_AGENT,$log_version) ||
65                                eregi('iCab/([0-9].[0-9a-zA-Z]{1,4})',$HTTP_USER_AGENT,$log_version))
66                        {
67                                $this->BROWSER_VER   = $log_version[1];
68                                $this->BROWSER_AGENT = 'iCab';
69                        }
70                        elseif(ereg('Gecko',$HTTP_USER_AGENT,$log_version))
71                        {
72                                $this->BROWSER_VER   = $log_version[1];
73                                $this->BROWSER_AGENT = 'MOZILLA';
74                        }
75                        elseif(ereg('Konqueror/([0-9].[0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version) ||
76                                ereg('Konqueror/([0-9].[0-9]{1,2})',$HTTP_USER_AGENT,$log_version))
77                        {
78                                $this->BROWSER_VER=$log_version[1];
79                                $this->BROWSER_AGENT='Konqueror';
80                        }
81                        else
82                        {
83                                $this->BROWSER_VER=0;
84                                $this->BROWSER_AGENT='OTHER';
85                        }
86
87                        /*
88                                Determine platform
89                        */
90                        if(strstr($HTTP_USER_AGENT,'iPad'))
91                        {
92                                $this->BROWSER_PLATFORM = self::PLATFORM_IPAD;
93                        }
94                        elseif(strstr($HTTP_USER_AGENT,'iPod'))
95                        {
96                                $this->BROWSER_PLATFORM = self::PLATFORM_IPOD;
97                        }
98                        elseif(strstr($HTTP_USER_AGENT,'iPhone'))
99                        {
100                                $this->BROWSER_PLATFORM = self::PLATFORM_IPHONE;
101                        }
102                        elseif(strstr($HTTP_USER_AGENT,'BlackBerry'))
103                        {
104                                $this->BROWSER_PLATFORM = self::PLATFORM_BLACKBERRY;
105                        }
106                        elseif(strstr($HTTP_USER_AGENT,'Android'))
107                        {
108                                $this->BROWSER_PLATFORM = self::PLATFORM_ANDROID;
109                        }
110                        elseif(strstr($HTTP_USER_AGENT,'Nokia'))
111                        {
112                                $this->BROWSER_PLATFORM = self::PLATFORM_NOKIA;
113                        }                       
114                        elseif(strstr($HTTP_USER_AGENT,'Mac'))
115                        {
116                                $this->BROWSER_PLATFORM = self::PLATFORM_MAC;
117                        }
118                        elseif(strstr($HTTP_USER_AGENT,'Win'))
119                        {
120                                $this->BROWSER_PLATFORM = self::PLATFORM_WINDOWS;
121                        }                       
122                        elseif(strstr($HTTP_USER_AGENT,'Linux'))
123                        {
124                                $this->BROWSER_PLATFORM = self::PLATFORM_LINUX;
125                        }
126                        elseif(strstr($HTTP_USER_AGENT,'Unix'))
127                        {
128                                $this->BROWSER_PLATFORM = self::PLATFORM_UNIX;
129                        }
130                        elseif(strstr($HTTP_USER_AGENT,'Beos'))
131                        {
132                                $this->BROWSER_PLATFORM = self::PLATFORM_BEOS;
133                        }
134                        else
135                        {
136                                $this->BROWSER_PLATFORM='Other';
137                        }
138
139                        /*
140                        echo "\n\nAgent: $HTTP_USER_AGENT";
141                        echo "\nIE: ".browser_is_ie();
142                        echo "\nMac: ".browser_is_mac();
143                        echo "\nWindows: ".browser_is_windows();
144                        echo "\nPlatform: ".browser_get_platform();
145                        echo "\nVersion: ".browser_get_version();
146                        echo "\nAgent: ".browser_get_agent();
147                        */
148
149                        // The br and p functions are supposed to return the correct
150                        // value for tags that do not need to be closed.  This is
151                        // per the xhmtl spec, so we need to fix this to include
152                        // all compliant browsers we know of.
153                        if($this->BROWSER_AGENT == 'IE')
154                        {
155                                $this->br = '<br/>';
156                                $this->p = '<p/>';
157                        }
158                        else
159                        {
160                                $this->br = '<br>';
161                                $this->p = '<p>';
162                        }
163                }
164
165                function return_array()
166                {
167                        $this->data = array(
168                                'agent'    => $this->get_agent(),
169                                'version'  => $this->get_version(),
170                                'platform' => $this->get_platform()
171                        );
172
173                        return $this->data;
174                }
175
176                function get_agent()
177                {
178                        return $this->BROWSER_AGENT;
179                }
180
181                function get_version()
182                {
183                        return $this->BROWSER_VER;
184                }
185
186                function get_platform()
187                {
188                        return $this->BROWSER_PLATFORM;
189                }
190
191                function is_linux()
192                {
193                        return ($this->get_platform()==self::PLATFORM_LINUX);
194                }
195
196                function is_unix()
197                {
198                        return ($this->get_platform()==self::PLATFORM_UNIX);
199                }
200
201                function is_beos()
202                {
203                        return ($this->get_platform()==self::PLATFORM_BEOS);
204                }
205
206                function is_mac()
207                {
208                        return ($this->get_platform()==self::PLATFORM_MAC);
209                }
210
211                function is_windows()
212                {
213                        return ($this->get_platform()==self::PLATFORM_WINDOWS);
214                }
215               
216                function is_ipad()
217                {
218                        return ($this->get_platform()==self::PLATFORM_IPAD);
219                }
220               
221                function is_iphone()
222                {
223                        return ($this->get_platform()==self::PLATFORM_IPHONE);
224                }
225               
226                function is_nokia()
227                {
228                        return ($this->get_platform()==self::PLATFORM_NOKIA);
229                }
230               
231                function is_ipod()
232                {
233                        return ($this->get_platform()==self::PLATFORM_IPOD);
234                }
235               
236                function is_blackberry()
237                {
238                        return ($this->get_platform()==self::PLATFORM_BLACKBERRY);
239                }
240               
241                function is_android()
242                {
243                        return ($this->get_platform()==self::PLATFORM_ANDROID);
244                }
245
246                function is_ie()
247                {
248                        if($this->get_agent()=='IE')
249                        {
250                                return true;
251                        }
252                        else
253                        {
254                                return false;
255                        }
256                }
257
258                function is_netscape()
259                {
260                        if($this->get_agent()=='MOZILLA')
261                        {
262                                return true;
263                        }
264                        else
265                        {
266                                return false;
267                        }
268                }
269
270                function is_opera()
271                {
272                        if($this->get_agent()=='OPERA')
273                        {
274                                return true;
275                        }
276                        else
277                        {
278                                return false;
279                        }
280                }
281
282                // Echo content headers for file downloads
283                function content_header($fn='',$mime='',$length='',$nocache=True)
284                {
285                        // if no mime-type is given or it's the default binary-type, guess it from the extension
286                        if(empty($mime) || $mime == 'application/octet-stream')
287                        {
288                                $mime_magic = createObject('phpgwapi.mime_magic');
289                                $mime = $mime_magic->filename2mime($fn);
290                        }
291                        if($fn)
292                        {
293                                if($this->get_agent() == 'IE') // && browser_get_version() == "5.5")
294                                {
295                                        $attachment = '';
296                                }
297                                else
298                                {
299                                        $attachment = ' attachment;';
300                                }
301
302                                // Show this for all
303                                header('Content-disposition:'.$attachment.' filename="'.$fn.'"');
304                                header('Content-type: '.$mime);
305
306                                if($length)
307                                {
308                                        header('Content-length: '.$length);
309                                }
310
311                                if($nocache)
312                                {
313                                        header('Pragma: no-cache');
314                                        header('Pragma: public');
315                                        header('Expires: 0');
316                                        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
317                                }
318                        }
319                }
320        }
321?>
Note: See TracBrowser for help on using the repository browser.