PukiWiki PHP Cross Reference Collaborative Wikis

Source: /pukiwiki.ini.php - 533 lines - 18123 bytes - Text - Print

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

title

Description

title

Description

title

Description

title

title

Body