OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / wiki_main / include / conf / pukiwiki.ini.php
1 <?php
2 /**
3  * PukiWiki用グローバル変数定義
4  *
5  * PHP versions 5
6  *
7  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
8  *
9  * @package    Magic3 Framework
10  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11  * @copyright  Copyright 2006-2010 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: pukiwiki.ini.php 3478 2010-08-14 08:33:30Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 // Copyright (C)
17 //   2002-2006 PukiWiki Developers Team
18 //   2001-2002 Originally written by yu-ji
19 // License: GPL v2 or (at your option) any later version
20 //
21 // PukiWiki main setting file
22 global $page_title;
23 global $modifier;
24 global $modifierlink;
25 // pages
26 global $whatsnew;
27 global $whatsdeleted;
28 global $interwiki;
29 global $menubar;
30
31 global $nofollow;
32 global $trackback;
33 global $trackback_javascript;
34 global $referer;
35 global $nowikiname;
36 global $autolink;
37 global $function_freeze;
38 global $notimeupdate;
39 // auth
40 global $auth_users;
41 global $auth_method_type;
42 global $read_auth;
43 global $read_auth_pages;
44 global $edit_auth;
45 global $edit_auth_pages;
46 global $search_auth;
47 // page config
48 global $maxshow;
49 global $maxshow_deleted;
50 global $cantedit;
51 global $lastmod;
52 global $date_format;
53 global $time_format;
54 global $rss_max;
55 // backup
56 global $do_backup;
57 global $del_backup;
58 // proxy
59 global $use_proxy;
60 global $proxy_host;
61 global $proxy_port;
62 global $need_proxy_auth;
63 global $proxy_auth_user;
64 global $proxy_auth_pass;
65 global $no_proxy;
66 // mail
67 global $notify;
68 global $notify_diff_only;
69 global $smtp_server;
70 global $notify_to;
71 global $notify_from;
72 global $notify_subject;
73 global $notify_header;
74 global $smtp_auth;
75 global $pop_server;
76 global $pop_port;
77 global $pop_userid;
78 global $pop_passwd;
79 // other
80 global $non_list;
81 global $search_non_list;
82 global $auto_template_func;
83 global $auto_template_rules;
84 global $fixed_heading_anchor;
85 global $preformat_ltrim;
86 global $line_break;
87 global $usedatetime;
88 global $agents;
89
90 /////////////////////////////////////////////////
91 // Functionality settings
92
93 // PKWK_OPTIMISE - Ignore verbose but understandable checking and warning
94 //   If you end testing this PukiWiki, set '1'.
95 //   If you feel in trouble about this PukiWiki, set '0'.
96 if (! defined('PKWK_OPTIMISE'))
97         define('PKWK_OPTIMISE', 0);
98
99 /////////////////////////////////////////////////
100 // Security settings
101
102 // PKWK_READONLY - Prohibits editing and maintain via WWW
103 //   NOTE: Counter-related functions will work now (counter, attach count, etc)
104 if (! defined('PKWK_READONLY'))
105         define('PKWK_READONLY', 0); // 0 or 1
106
107 // PKWK_SAFE_MODE - Prohibits some unsafe(but compatible) functions 
108 if (! defined('PKWK_SAFE_MODE'))
109         define('PKWK_SAFE_MODE', 0);
110
111 // PKWK_DISABLE_INLINE_IMAGE_FROM_URI - Disallow using inline-image-tag for URIs
112 //   Inline-image-tag for URIs may allow leakage of Wiki readers' information
113 //   (in short, 'Web bug') or external malicious CGI (looks like an image's URL)
114 //   attack to Wiki readers, but easy way to show images.
115 if (! defined('PKWK_DISABLE_INLINE_IMAGE_FROM_URI'))
116         define('PKWK_DISABLE_INLINE_IMAGE_FROM_URI', 0);
117
118 // PKWK_QUERY_STRING_MAX
119 //   Max length of GET method, prohibits some worm attack ASAP
120 //   NOTE: Keep (page-name + attach-file-name) <= PKWK_QUERY_STRING_MAX
121 define('PKWK_QUERY_STRING_MAX', 640); // Bytes, 0 = OFF
122
123 /////////////////////////////////////////////////
124 // Experimental features
125
126 // Multiline plugin hack (See BugTrack2/84)
127 // EXAMPLE(with a known BUG):
128 //   #plugin(args1,args2,...,argsN){{
129 //   argsN+1
130 //   argsN+1
131 //   #memo(foo)
132 //   argsN+1
133 //   }}
134 //   #memo(This makes '#memo(foo)' to this)
135 define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
136
137 /////////////////////////////////////////////////
138 // Language / Encoding settings
139
140 // LANG - Internal content encoding ('en', 'ja', or ...)
141 define('LANG', 'ja');
142
143 // UI_LANG - Content encoding for buttons, menus,  etc
144 define('UI_LANG', LANG); // 'en' for Internationalized wikisite
145
146 /////////////////////////////////////////////////
147 // Directory settings I (ended with '/', permission '777')
148
149 // You may hide these directories (from web browsers)
150 // by setting DATA_HOME at index.php.
151 /*
152 define('DATA_DIR',      DATA_HOME . 'wiki/'     ); // Latest wiki texts
153 define('DIFF_DIR',      DATA_HOME . 'diff/'     ); // Latest diffs
154 define('BACKUP_DIR',    DATA_HOME . 'backup/'   ); // Backups
155 define('CACHE_DIR',     DATA_HOME . 'cache/'    ); // Some sort of caches
156 define('UPLOAD_DIR',    DATA_HOME . 'attach/'   ); // Attached files and logs
157 define('COUNTER_DIR',   DATA_HOME . 'counter/'  ); // Counter plugin's counts
158 define('TRACKBACK_DIR', DATA_HOME . 'trackback/'); // TrackBack logs
159 define('PLUGIN_DIR',    DATA_HOME . 'plugin/'   ); // Plugin directory
160 */
161 // modified for Magic3 by naoki on 2008/9/26
162 //define('UPLOAD_DIR',    $gEnvManager->getCurrentWidgetRootPath() . '/upload/'); // Attached files and logs
163 define('UPLOAD_DIR',    $gEnvManager->getResourcePath() . '/widgets/wiki/upload/');
164 define('PLUGIN_DIR',    $gEnvManager->getCurrentWidgetIncludePath() . '/plugin/'); // Plugin directory
165
166 /////////////////////////////////////////////////
167 // Directory settings II (ended with '/')
168
169 // Skins / Stylesheets
170 //define('SKIN_DIR', 'skin/');
171 // Skin files (SKIN_DIR/*.skin.php) are needed at
172 // ./DATAHOME/SKIN_DIR from index.php, but
173 // CSSs(*.css) and JavaScripts(*.js) are needed at
174 // ./SKIN_DIR from index.php.
175
176 // Static image files
177 // modified for Magic3 by naoki on 2008/9/29
178 //define('IMAGE_DIR', 'image/');
179 define('IMAGE_DIR', $gEnvManager->getCurrentWidgetRootUrl() . '/image/');
180
181 /////////////////////////////////////////////////
182 // Local time setting
183
184 switch (LANG) { // or specifiy one
185 case 'ja':
186         define('ZONE', 'JST');
187         define('ZONETIME', 9 * 3600); // JST = GMT + 9
188         break;
189 default  :
190         define('ZONE', 'GMT');
191         define('ZONETIME', 0);
192         break;
193 }
194
195 /////////////////////////////////////////////////
196 // Title of your Wikisite (Name this)
197 // Also used as RSS feed's channel name etc
198 $page_title = 'PukiWiki';
199
200 // Specify PukiWiki URL (default: auto)
201 //$script = 'http://example.com/pukiwiki/';
202
203 // Shorten $script: Cut its file name (default: not cut)
204 //$script_directory_index = 'index.php';
205
206 // Site admin's name (CHANGE THIS)
207 $modifier = 'anonymous';
208
209 // Site admin's Web page (CHANGE THIS)
210 $modifierlink = 'http://pukiwiki.example.com/';
211
212 // Default page name
213 //$defaultpage  = 'FrontPage';     // Top / Default page
214 $whatsnew     = 'RecentChanges'; // Modified page list
215 $whatsdeleted = 'RecentDeleted'; // Removeed page list
216 $interwiki    = 'InterWikiName'; // Set InterWiki definition here
217 $menubar      = 'MenuBar';       // Menu
218
219 /////////////////////////////////////////////////
220 // Change default Document Type Definition
221
222 // Some web browser's bug, and / or Java apprets may needs not-Strict DTD.
223 // Some plugin (e.g. paint) set this PKWK_DTD_XHTML_1_0_TRANSITIONAL.
224
225 //$pkwk_dtd = PKWK_DTD_XHTML_1_1; // Default
226 //$pkwk_dtd = PKWK_DTD_XHTML_1_0_STRICT;
227 //$pkwk_dtd = PKWK_DTD_XHTML_1_0_TRANSITIONAL;
228 //$pkwk_dtd = PKWK_DTD_HTML_4_01_STRICT;
229 //$pkwk_dtd = PKWK_DTD_HTML_4_01_TRANSITIONAL;
230
231 /////////////////////////////////////////////////
232 // Always output "nofollow,noindex" attribute
233
234 $nofollow = 0; // 1 = Try hiding from search engines
235
236 /////////////////////////////////////////////////
237
238 // PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript
239 define('PKWK_ALLOW_JAVASCRIPT', 0);
240
241 /////////////////////////////////////////////////
242 // TrackBack feature
243
244 // Enable Trackback
245 $trackback = 0;
246
247 // Show trackbacks with an another window (using JavaScript)
248 $trackback_javascript = 0;
249
250 /////////////////////////////////////////////////
251 // Referer list feature
252 $referer = 0;
253 //$referer = 1;                 // tmp for magic3
254
255 /////////////////////////////////////////////////
256 // _Disable_ WikiName auto-linking
257 $nowikiname = 0;
258
259 /////////////////////////////////////////////////
260 // AutoLink feature
261
262 // AutoLink minimum length of page name
263 $autolink = 0; // Bytes, 0 = OFF (try 8)
264
265 /////////////////////////////////////////////////
266 // Enable Freeze / Unfreeze feature
267 $function_freeze = 1;
268
269 /////////////////////////////////////////////////
270 // Allow to use 'Do not change timestamp' checkbox
271 // (0:Disable, 1:For everyone,  2:Only for the administrator)
272 $notimeupdate = 1;
273
274 /////////////////////////////////////////////////
275 // Admin password for this Wikisite
276
277 // Default: always fail
278 //$adminpass = '{x-php-md5}!';
279
280 // Sample:
281 //$adminpass = 'pass'; // Cleartext
282 //$adminpass = '{x-php-md5}1a1dc91c907325c69271ddf0c944bc72'; // PHP md5()  'pass'
283 //$adminpass = '{CRYPT}$1$AR.Gk94x$uCe8fUUGMfxAPH83psCZG/';   // LDAP CRYPT 'pass'
284 //$adminpass = '{MD5}Gh3JHJBzJcaScd3wyUS8cg==';               // LDAP MD5   'pass'
285 //$adminpass = '{SMD5}o7lTdtHFJDqxFOVX09C8QnlmYmZnd2Qx';      // LDAP SMD5  'pass'
286
287 /////////////////////////////////////////////////
288 // Page-reading feature settings
289 // (Automatically creating pronounce datas, for Kanji-included page names,
290 //  to show sorted page-list correctly)
291
292 // Enable page-reading feature by calling ChaSen or KAKASHI command
293 // (1:Enable, 0:Disable)
294 $pagereading_enable = 0;
295
296 // Specify converter as ChaSen('chasen') or KAKASI('kakasi') or None('none')
297 $pagereading_kanji2kana_converter = 'none';
298
299 // Specify Kanji encoding to pass data between PukiWiki and the converter
300 $pagereading_kanji2kana_encoding = 'EUC'; // Default for Unix
301 //$pagereading_kanji2kana_encoding = 'SJIS'; // Default for Windows
302
303 // Absolute path of the converter (ChaSen)
304 $pagereading_chasen_path = '/usr/local/bin/chasen';
305 //$pagereading_chasen_path = 'c:\progra~1\chasen21\chasen.exe';
306
307 // Absolute path of the converter (KAKASI)
308 $pagereading_kakasi_path = '/usr/local/bin/kakasi';
309 //$pagereading_kakasi_path = 'c:\kakasi\bin\kakasi.exe';
310
311 // Page name contains pronounce data (written by the converter)
312 $pagereading_config_page = ':config/PageReading';
313
314 // Page name of default pronouncing dictionary, used when converter = 'none'
315 $pagereading_config_dict = ':config/PageReading/dict';
316
317 /////////////////////////////////////////////////
318 // User definition
319 $auth_users = array(
320         // Username => password
321         'foo'   => 'foo_passwd', // Cleartext
322         'bar'   => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5() 'bar_passwd'
323         'hoge'  => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx',      // LDAP SMD5 'hoge_passwd'
324 );
325
326 /////////////////////////////////////////////////
327 // Authentication method
328
329 $auth_method_type       = 'pagename';   // By Page name
330 //$auth_method_type     = 'contents';   // By Page contents
331
332 /////////////////////////////////////////////////
333 // Read auth (0:Disable, 1:Enable)
334 $read_auth = 0;
335
336 $read_auth_pages = array(
337         // Regex                   Username
338         '#HogeHoge#'            => 'hoge',
339         '#(NETABARE|NetaBare)#' => 'foo,bar,hoge',
340 );
341
342 /////////////////////////////////////////////////
343 // Edit auth (0:Disable, 1:Enable)
344 $edit_auth = 0;
345
346 $edit_auth_pages = array(
347         // Regex                   Username
348         '#BarDiary#'            => 'bar',
349         '#HogeHoge#'            => 'hoge',
350         '#(NETABARE|NetaBare)#' => 'foo,bar,hoge',
351 );
352
353 /////////////////////////////////////////////////
354 // Search auth
355 // 0: Disabled (Search read-prohibited page contents)
356 // 1: Enabled  (Search only permitted pages for the user)
357 $search_auth = 0;
358
359 /////////////////////////////////////////////////
360 // $whatsnew: Max number of RecentChanges
361 $maxshow = 60;
362
363 // $whatsdeleted: Max number of RecentDeleted
364 // (0 = Disabled)
365 $maxshow_deleted = 60;
366
367 /////////////////////////////////////////////////
368 // Page names can't be edit via PukiWiki
369 $cantedit = array( $whatsnew, $whatsdeleted );
370
371 /////////////////////////////////////////////////
372 // HTTP: Output Last-Modified header
373 $lastmod = 0;
374
375 /////////////////////////////////////////////////
376 // Date format
377 $date_format = 'Y-m-d';
378
379 // Time format
380 $time_format = 'H:i:s';
381
382 /////////////////////////////////////////////////
383 // Max number of RSS feed
384 $rss_max = 15;
385
386 /////////////////////////////////////////////////
387 // Backup related settings
388
389 // Enable backup
390 $do_backup = 1;
391
392 // When a page had been removed, remove its backup too?
393 $del_backup = 0;
394
395 // Bacukp interval and generation
396 //$cycle  =   3; // Wait N hours between backup (0 = no wait)
397 //$maxage = 120; // Stock latest N backups
398
399 // NOTE: $cycle x $maxage / 24 = Minimum days to lost your data
400 //          3   x   120   / 24 = 15
401
402 // Splitter of backup data (NOTE: Too dangerous to change)
403 define('PKWK_SPLITTER', '>>>>>>>>>>');
404
405 /////////////////////////////////////////////////
406 // Command execution per update
407
408 define('PKWK_UPDATE_EXEC', '');
409
410 // Sample: Namazu (Search engine)
411 //$target     = '/var/www/wiki/';
412 //$mknmz      = '/usr/bin/mknmz';
413 //$output_dir = '/var/lib/namazu/index/';
414 //define('PKWK_UPDATE_EXEC',
415 //      $mknmz . ' --media-type=text/pukiwiki' .
416 //      ' -O ' . $output_dir . ' -L ja -c -K ' . $target);
417
418 /////////////////////////////////////////////////
419 // HTTP proxy setting (for TrackBack etc)
420
421 // Use HTTP proxy server to get remote data
422 $use_proxy = 0;
423
424 $proxy_host = 'proxy.example.com';
425 $proxy_port = 8080;
426
427 // Do Basic authentication
428 $need_proxy_auth = 0;
429 $proxy_auth_user = 'username';
430 $proxy_auth_pass = 'password';
431
432 // Hosts that proxy server will not be needed
433 $no_proxy = array(
434         'localhost',    // localhost
435         '127.0.0.0/8',  // loopback
436 //      '10.0.0.0/8'    // private class A
437 //      '172.16.0.0/12' // private class B
438 //      '192.168.0.0/16'        // private class C
439 //      'no-proxy.com',
440 );
441
442 ////////////////////////////////////////////////
443 // Mail related settings
444
445 // Send mail per update of pages
446 $notify = 0;
447
448 // Send diff only
449 $notify_diff_only = 1;
450
451 // SMTP server (Windows only. Usually specified at php.ini)
452 $smtp_server = 'localhost';
453
454 // Mail recipient (To:) and sender (From:)
455 $notify_to   = 'to@example.com';        // To:
456 $notify_from = 'from@example.com';      // From:
457
458 // Subject: ($page = Page name wll be replaced)
459 $notify_subject = '[PukiWiki] $page';
460
461 // Mail header
462 // NOTE: Multiple items must be divided by "\r\n", not "\n".
463 $notify_header = '';
464
465 /////////////////////////////////////////////////
466 // Mail: POP / APOP Before SMTP
467
468 // Do POP/APOP authentication before send mail
469 $smtp_auth = 0;
470
471 $pop_server = 'localhost';
472 $pop_port   = 110;
473 $pop_userid = '';
474 $pop_passwd = '';
475
476 // Use APOP instead of POP (If server uses)
477 //   Default = Auto (Use APOP if possible)
478 //   1       = Always use APOP
479 //   0       = Always use POP
480 // $pop_auth_use_apop = 1;
481
482 /////////////////////////////////////////////////
483 // Ignore list
484
485 // Regex of ignore pages
486 $non_list = '^\:';
487
488 // Search ignored pages
489 $search_non_list = 1;
490
491 /////////////////////////////////////////////////
492 // Template setting
493
494 $auto_template_func = 1;
495 $auto_template_rules = array(
496         '((.+)\/([^\/]+))' => '\2/template'
497 );
498
499 /////////////////////////////////////////////////
500 // Automatically add fixed heading anchor
501 $fixed_heading_anchor = 1;
502
503 /////////////////////////////////////////////////
504 // Remove the first spaces from Preformatted text
505 $preformat_ltrim = 1;
506
507 /////////////////////////////////////////////////
508 // Convert linebreaks into <br />
509 $line_break = 0;
510
511 /////////////////////////////////////////////////
512 // Use date-time rules (See rules.ini.php)
513 $usedatetime = 1;
514
515 /////////////////////////////////////////////////
516 // User-Agent settings
517 //
518 // If you want to ignore embedded browsers for rich-content-wikisite,
519 // remove (or comment-out) all 'keitai' settings.
520 //
521 // If you want to to ignore desktop-PC browsers for simple wikisite,
522 // copy keitai.ini.php to default.ini.php and customize it.
523
524 $agents = array(
525 // pattern: A regular-expression that matches device(browser)'s name and version
526 // profile: A group of browsers
527
528     // Embedded browsers (Rich-clients for PukiWiki)
529
530         // Windows CE (Microsoft(R) Internet Explorer 5.5 for Windows(R) CE)
531         // Sample: "Mozilla/4.0 (compatible; MSIE 5.5; Windows CE; sigmarion3)" (sigmarion, Hand-held PC)
532         array('pattern'=>'#\b(?:MSIE [5-9]).*\b(Windows CE)\b#', 'profile'=>'default'),
533
534         // ACCESS "NetFront" / "Compact NetFront" and thier OEM, expects to be "Mozilla/4.0"
535         // Sample: "Mozilla/4.0 (PS2; PlayStation BB Navigator 1.0) NetFront/3.0" (PlayStation BB Navigator, for SONY PlayStation 2)
536         // Sample: "Mozilla/4.0 (PDA; PalmOS/sony/model crdb/Revision:1.1.19) NetFront/3.0" (SONY Clie series)
537         // Sample: "Mozilla/4.0 (PDA; SL-A300/1.0,Embedix/Qtopia/1.1.0) NetFront/3.0" (SHARP Zaurus)
538         array('pattern'=>'#^(?:Mozilla/4).*\b(NetFront)/([0-9\.]+)#',   'profile'=>'default'),
539
540     // Embedded browsers (Non-rich)
541
542         // Windows CE (the others)
543         // Sample: "Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; 240x320 )" (GFORT, NTT DoCoMo)
544         array('pattern'=>'#\b(Windows CE)\b#', 'profile'=>'keitai'),
545
546         // ACCESS "NetFront" / "Compact NetFront" and thier OEM
547         // Sample: "Mozilla/3.0 (AveFront/2.6)" ("SUNTAC OnlineStation", USB-Modem for PlayStation 2)
548         // Sample: "Mozilla/3.0(DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50)CNF/2.0" (DDI Pocket: AirH" Phone by JRC)
549         array('pattern'=>'#\b(NetFront)/([0-9\.]+)#',   'profile'=>'keitai'),
550         array('pattern'=>'#\b(CNF)/([0-9\.]+)#',        'profile'=>'keitai'),
551         array('pattern'=>'#\b(AveFront)/([0-9\.]+)#',   'profile'=>'keitai'),
552         array('pattern'=>'#\b(AVE-Front)/([0-9\.]+)#',  'profile'=>'keitai'), // The same?
553
554         // NTT-DoCoMo, i-mode (embeded Compact NetFront) and FOMA (embedded NetFront) phones
555         // Sample: "DoCoMo/1.0/F501i", "DoCoMo/1.0/N504i/c10/TB/serXXXX" // c以降は可変
556         // Sample: "DoCoMo/2.0 MST_v_SH2101V(c100;TB;W22H12;serXXXX;iccxxxx)" // ()の中は可変
557         array('pattern'=>'#^(DoCoMo)/([0-9\.]+)#',      'profile'=>'keitai'),
558
559         // Vodafone's embedded browser
560         // Sample: "J-PHONE/2.0/J-T03"  // 2.0は"ブラウザの"バージョン
561         // Sample: "J-PHONE/4.0/J-SH51/SNxxxx SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0"
562         array('pattern'=>'#^(J-PHONE)/([0-9\.]+)#',     'profile'=>'keitai'),
563
564         // Openwave(R) Mobile Browser (EZweb, WAP phone, etc)
565         // Sample: "OPWV-SDK/62K UP.Browser/6.2.0.5.136 (GUI) MMP/2.0"
566         array('pattern'=>'#\b(UP\.Browser)/([0-9\.]+)#',        'profile'=>'keitai'),
567
568         // Opera, dressing up as other embedded browsers
569         // Sample: "Mozilla/3.0(DDIPOCKET;KYOCERA/AH-K3001V/1.4.1.67.000000/0.1/C100) Opera 7.0" (Like CNF at 'keitai'-mode)
570         array('pattern'=>'#\b(?:DDIPOCKET|WILLCOM)\b.+\b(Opera) ([0-9\.]+)\b#', 'profile'=>'keitai'),
571
572         // Planetweb http://www.planetweb.com/
573         // Sample: "Mozilla/3.0 (Planetweb/v1.07 Build 141; SPS JP)" ("EGBROWSER", Web browser for PlayStation 2)
574         array('pattern'=>'#\b(Planetweb)/v([0-9\.]+)#', 'profile'=>'keitai'),
575
576         // DreamPassport, Web browser for SEGA DreamCast
577         // Sample: "Mozilla/3.0 (DreamPassport/3.0)"
578         array('pattern'=>'#\b(DreamPassport)/([0-9\.]+)#',      'profile'=>'keitai'),
579
580         // Palm "Web Pro" http://www.palmone.com/us/support/accessories/webpro/
581         // Sample: "Mozilla/4.76 [en] (PalmOS; U; WebPro)"
582         array('pattern'=>'#\b(WebPro)\b#',      'profile'=>'keitai'),
583
584         // ilinx "Palmscape" / "Xiino" http://www.ilinx.co.jp/
585         // Sample: "Xiino/2.1SJ [ja] (v. 4.1; 153x130; c16/d)"
586         array('pattern'=>'#^(Palmscape)/([0-9\.]+)#',   'profile'=>'keitai'),
587         array('pattern'=>'#^(Xiino)/([0-9\.]+)#',       'profile'=>'keitai'),
588
589         // SHARP PDA Browser (SHARP Zaurus)
590         // Sample: "sharp pda browser/6.1[ja](MI-E1/1.0) "
591         array('pattern'=>'#^(sharp [a-z]+ browser)/([0-9\.]+)#',        'profile'=>'keitai'),
592
593         // WebTV
594         array('pattern'=>'#^(WebTV)/([0-9\.]+)#',       'profile'=>'keitai'),
595
596     // Desktop-PC browsers
597
598         // Opera (for desktop PC, not embedded) -- See BugTrack/743 for detail
599         // NOTE: Keep this pattern above MSIE and Mozilla
600         // Sample: "Opera/7.0 (OS; U)" (not disguise)
601         // Sample: "Mozilla/4.0 (compatible; MSIE 5.0; OS) Opera 6.0" (disguise)
602         array('pattern'=>'#\b(Opera)[/ ]([0-9\.]+)\b#', 'profile'=>'default'),
603
604         // MSIE: Microsoft Internet Explorer (or something disguised as MSIE)
605         // Sample: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
606         array('pattern'=>'#\b(MSIE) ([0-9\.]+)\b#',     'profile'=>'default'),
607
608         // Mozilla Firefox
609         // NOTE: Keep this pattern above Mozilla
610         // Sample: "Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7) Gecko/20040803 Firefox/0.9.3"
611         array('pattern'=>'#\b(Firefox)/([0-9\.]+)\b#',  'profile'=>'default'),
612
613         // Loose default: Including something Mozilla
614         array('pattern'=>'#^([a-zA-z0-9 ]+)/([0-9\.]+)\b#',     'profile'=>'default'),
615
616         array('pattern'=>'#^#', 'profile'=>'default'),  // Sentinel
617 );
618 ?>