Changeset 17562


Ignore:
Timestamp:
08/14/12 21:55:13 (7 years ago)
Author:
grum
Message:

bug:2723
+ improve some GPC framework functionnalities

Location:
extensions/GrumPluginClasses
Files:
10 added
17 edited

Legend:

Unmodified
Added
Removed
  • extensions/GrumPluginClasses/classes/GPCCore.class.inc.php

    r16733 r17562  
    33/* ----------------------------------------------------------------------------- 
    44  class name     : GPCCore 
    5   class version  : 1.4.1 
    6   plugin version : 3.5.2 
    7   date           : 2011-09-19 
     5  class version  : 1.4.2 
     6  plugin version : 3.5.3 
     7  date           : 2012-07-27 
    88  ------------------------------------------------------------------------------ 
    99  author: grum at piwigo.org 
     
    6060|         |            | 
    6161|         |            | * Compatibility with jquery 1.7.2 & jquery-ui 1.8.16 
    62 |         |            |   . implement getMinified() & setMinifiedState() functions 
     62|         |            |   . remove getMinified() & setMinifiedState() functions 
    6363|         |            |        (let piwigo combined function manage the minified 
    6464|         |            |         state) 
     
    7373|         |            | * AddHeaderCSS and AddJS are ignored if called in an ajax session (AJAX_CALL defined) 
    7474|         |            | 
     75| 1.4.2   | 2012/07/27 | * AddHeaderContent can manage 'raw' content 
    7576|         |            | 
    7677|         |            | 
     
    143144        Array('name' => "GPCAjax", 'version' => "3.1.0"), 
    144145        Array('name' => "GPCCategorySelector", 'version' => "1.0.1"), 
    145         Array('name' => "GPCCore", 'version' => "1.4.1"), 
     146        Array('name' => "GPCCore", 'version' => "1.4.2"), 
    146147        //Array('name' => "GPCCss", 'version' => "3.1.0"),  removed with v1.4.1 
    147148        Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"), 
     
    149150        Array('name' => "GPCRequestBuilder", 'version' => "1.1.7"), 
    150151        Array('name' => "GPCTables", 'version' => "1.5.0"), 
    151         Array('name' => "GPCTabSheet", 'version' => "1.1.1"), 
     152        Array('name' => "GPCTabSheet", 'version' => "1.1.2"), 
    152153        Array('name' => "GPCTranslate", 'version' => "2.1.1"), 
    153154        Array('name' => "GPCUsersGroups", 'version' => "2.1.0"), 
     
    555556  /** 
    556557   * used to add a js or css directly in the header 
     558   * use 'raw' type to add any raw data in the header 
    557559   * 
    558560   * @param String $id : a unique id for the file 
     
    574576      case 'js': 
    575577        $template->block_html_head(null, '<script type="text/javascript">'.$content.'</script>', $null, $null); 
     578        break; 
     579      case 'raw': 
     580        $template->block_html_head(null, $content); 
    576581        break; 
    577582    } 
     
    640645  static public function addUI($list) 
    641646  { 
    642     global $template; 
     647    global $template, $lang_info; 
    643648 
    644649    if(is_string($list)) $list=explode(',', $list); 
     
    662667          self::addHeaderCSS('gpc.css', $fileName.'.css', 10); 
    663668          self::addHeaderCSS('gpc.cssT', $fileName.'_'.$template->get_themeconf('name').'.css', 15); 
     669          break; 
     670        case 'canvasDraw.graph': 
     671          self::addHeaderCSS('gpc.canvasDrawT', sprintf($themeFile, 'canvasDraw')); 
     672          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery')); 
     673          self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui')); 
     674          self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget')); 
     675          self::addHeaderJS('gpc.canvasDraw.commonClasses', GPC_PATH.'js/CanvasDraw.CommonClasses.js', array('jquery.ui.widget')); 
     676          self::addHeaderJS('gpc.canvasDraw.graphClasses', GPC_PATH.'js/CanvasDraw.GraphClasses.js', array('gpc.canvasDraw.commonClasses')); 
     677          self::addHeaderJS('gpc.canvasDraw.drawing', GPC_PATH.'js/CanvasDraw.Drawing.js', array('gpc.canvasDraw.graphClasses')); 
     678          self::addHeaderJS('gpc.canvasDraw', GPC_PATH.'js/canvasDraw.js', array('gpc.canvasDraw.drawing')); 
     679          self::addHeaderJS('gpc.canvasDraw.drawingGraph', GPC_PATH.'js/canvasDraw.ui.drawingGraph.js', array('gpc.canvasDraw')); 
    664680          break; 
    665681        case 'categorySelector': 
     
    715731          break; 
    716732        case 'inputDate': 
     733          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css'); 
    717734          self::addHeaderCSS('gpc.inputDate', GPC_PATH.'css/inputDate.css'); 
    718735          self::addHeaderCSS('gpc.inputDateT', sprintf($themeFile, 'inputDate')); 
    719736          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery')); 
    720           self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui')); 
     737          self::addHeaderJS('jquery.ui.widget',     'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui')); 
    721738          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget')); 
     739          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js'); 
    722740          self::addHeaderJS('gpc.inputDate', GPC_PATH.'js/ui.inputDate.js', array('jquery.ui.widget')); 
    723741          break; 
     
    730748          break; 
    731749        case 'inputFilterBox': 
     750          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css'); 
    732751          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css'); 
    733752          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum')); 
     
    751770          self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable')); 
    752771          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable')); 
     772          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget')); 
     773          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js'); 
    753774 
    754775          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog')); 
     
    841862          break; 
    842863        case 'dynamicTable': 
     864          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css'); 
    843865          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css'); 
    844866          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum')); 
     
    855877          self::addHeaderCSS('gpc.inputPages', GPC_PATH.'css/inputPages.css'); 
    856878          self::addHeaderCSS('gpc.inputPagesT', sprintf($themeFile, 'inputPages')); 
    857           self::addHeaderCSS('gpc.inputDynamicTable', GPC_PATH.'css/inputDynamicTable.css'); 
    858           self::addHeaderCSS('gpc.inputDynamicTableT', sprintf($themeFile, 'inputDynamicTable')); 
     879          self::addHeaderCSS('gpc.dynamicTable', GPC_PATH.'css/dynamicTable.css'); 
     880          self::addHeaderCSS('gpc.dynamicTableT', sprintf($themeFile, 'dynamicTable')); 
    859881 
    860882          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery')); 
     
    867889          self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable')); 
    868890          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable')); 
     891          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget')); 
     892          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js'); 
    869893 
    870894          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog')); 
  • extensions/GrumPluginClasses/classes/GPCTabSheet.class.inc.php

    r7142 r17562  
    22/* ----------------------------------------------------------------------------- 
    33  class name     : GPCTabSheet 
    4   class version  : 1.1.1 
    5   plugin version : 3.2.1 
    6   date           : 2010-10-01 
     4  class version  : 1.1.2 
     5  plugin version : 3.5.3 
     6  date           : 2012-08-14 
    77  ------------------------------------------------------------------------------ 
    88  author: grum at piwigo.org 
     
    1919| 1.1.1   | 2010/10/01 | * add attribute 'id' for tabs (<li> items) 
    2020|         |            | 
    21 |         |            | 
     21| 1.1.2   | 2012/08/14 | * bug:2723 - set select() function to be compatible with 
     22|         |            |   piwigo 2.4.3 
    2223|         |            | 
    2324|         |            | 
     
    5253    $this->classes=$classes; 
    5354    $this->id=$id; 
     55    $this->set_id($this->id); 
    5456    $this->setTplFile($tplFile); 
    5557  } 
     
    139141  } 
    140142 
     143 
     144  public function select($name) 
     145  { 
     146    /* 
     147     * override the tabsheet->select() function (to fix bug:2723) 
     148     */ 
     149    if($this->id!='') 
     150    { 
     151      $this->sheets = trigger_event('gpc_tabsheet_before_select', $this->sheets, $this->id); 
     152      if (!array_key_exists($name, $this->sheets)) 
     153      { 
     154        $keys = array_keys($this->sheets); 
     155        if(isset($keys[0])) 
     156          $name = $keys[0]; 
     157      } 
     158    } 
     159    $this->selected = $name; 
     160  } 
     161 
     162  function set_id($id) 
     163  { 
     164    /* 
     165     * override the tabsheet->select() function (to fix bug:2723) 
     166     */ 
     167    if(method_exists('tabsheet', 'set_id')) 
     168    { 
     169      parent::set_id($id); 
     170    } 
     171    else 
     172    { 
     173      $this->uniqid = $id; 
     174    } 
     175  } 
    141176 
    142177  /* 
  • extensions/GrumPluginClasses/classes/GPCUserAgent.class.inc.php

    r16458 r17562  
    2525  static public function parse($userAgent) 
    2626  { 
    27     global $UA_BrowserInfo; 
    28  
    2927    $returned=array( 
    3028      UA_DATA_OS              => UA_OS_UNKNOWN, 
     
    3331      UA_DATA_BROWSER         => UA_BOT_UNKNOWN, 
    3432      UA_DATA_BROWSER_NAME    => '', 
    35       UA_DATA_BROWSER_TYPE    => UA_PROP_TYPE_UNKNOWN, 
     33      UA_DATA_BROWSER_TYPE    => UA_BROWSER_TYPE_UNKNOWN, 
    3634      UA_DATA_BROWSER_VERSION => '', 
    3735 
     
    5149    $tmp=self::getBrowser($userAgent); 
    5250    $returned[UA_DATA_BROWSER]=$tmp[UA_DATA_BROWSER]; 
    53     $returned[UA_DATA_BROWSER_TYPE]=$UA_BrowserInfo[UA_DATA_BROWSER][$tmp[UA_DATA_BROWSER]][UA_PROP_TYPE]; 
     51    $returned[UA_DATA_BROWSER_TYPE]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$tmp[UA_DATA_BROWSER]][UA_PROP_TYPE]; 
    5452    $returned[UA_DATA_BROWSER_VERSION]=str_replace(array(';', '(', ')'), array('', '', ''), $tmp[UA_DATA_BROWSER_VERSION]); 
    5553 
     
    8886  static public function getProperties($userAgent) 
    8987  { 
    90     global $UA_BrowserInfo; 
    91  
    9288    $returned=array(); 
    93     if(isset($userAgent[UA_DATA_BROWSER]) and isset($UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]])) 
     89    if(isset($userAgent[UA_DATA_BROWSER]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]])) 
    9490    { 
    9591      $returned[UA_DATA_BROWSER]=$userAgent[UA_DATA_BROWSER]; 
    96       $returned[UA_DATA_BROWSER_NAME]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_NAME]; 
    97       $returned[UA_DATA_BROWSER_URL]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_URL]; 
     92      $returned[UA_DATA_BROWSER_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_NAME]; 
     93      $returned[UA_DATA_BROWSER_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_URL]; 
    9894    } 
    9995 
    10096    if(!isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset($userAgent[UA_DATA_BROWSER])) 
    101       $userAgent[UA_DATA_BROWSER_TYPE]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_TYPE]; 
    102  
    103     if(isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset($UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]])) 
     97      $userAgent[UA_DATA_BROWSER_TYPE]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_TYPE]; 
     98 
     99    if(isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]])) 
    104100    { 
    105101      $returned[UA_DATA_BROWSER_TYPE]=$userAgent[UA_DATA_BROWSER_TYPE]; 
    106       $returned[UA_DATA_BROWSER_TYPE_NAME]=$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]]; 
    107     } 
    108  
    109  
    110     if(isset($userAgent[UA_DATA_OS]) and isset($UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]])) 
     102      $returned[UA_DATA_BROWSER_TYPE_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]]; 
     103    } 
     104 
     105 
     106    if(isset($userAgent[UA_DATA_OS]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]])) 
    111107    { 
    112108      $returned[UA_DATA_OS]=$userAgent[UA_DATA_OS]; 
    113       $returned[UA_DATA_OS_NAME]=$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_NAME]; 
    114       $returned[UA_DATA_OS_URL]=$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_URL]; 
    115     } 
    116  
    117     if(isset($userAgent[UA_DATA_ENGINE]) and isset($UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]])) 
     109      $returned[UA_DATA_OS_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_NAME]; 
     110      $returned[UA_DATA_OS_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_URL]; 
     111    } 
     112 
     113    if(isset($userAgent[UA_DATA_ENGINE]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]])) 
    118114    { 
    119115      $returned[UA_DATA_ENGINE]=$userAgent[UA_DATA_ENGINE]; 
    120       $returned[UA_DATA_ENGINE_NAME]=$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_NAME]; 
    121       $returned[UA_DATA_ENGINE_URL]=$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_URL]; 
     116      $returned[UA_DATA_ENGINE_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_NAME]; 
     117      $returned[UA_DATA_ENGINE_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_URL]; 
    122118    } 
    123119 
  • extensions/GrumPluginClasses/classes/GPCUserAgent.const.inc.php

    r16458 r17562  
    228228define('UA_ENGINE_WEBKIT',            0x06); 
    229229 
    230 $UA_BrowserInfo=array( 
    231   UA_DATA => array( 
    232             UA_DATA_BROWSER => array(UA_PROP_NAME => 'Browser'), 
    233             UA_DATA_ENGINE  => array(UA_PROP_NAME => 'Engine'), 
    234             UA_DATA_OS      => array(UA_PROP_NAME => 'Operating System') 
    235           ), 
    236   UA_DATA_BROWSER=> array( 
    237             UA_BOT_UNKNOWN           => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    238  
    239             UA_BOT_008               => array(UA_PROP_NAME => '008',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.80legs.com'), 
    240             UA_BOT_ABACHOBOT         => array(UA_PROP_NAME => 'ABACHOBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.abacho.com'), 
    241             UA_BOT_ACCOONA_AI_AGENT  => array(UA_PROP_NAME => 'Accoona-AI-Agent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.accoona.com'), 
    242             UA_BOT_ARACHMO           => array(UA_PROP_NAME => 'Arachmo',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    243             UA_BOT_BLITZBOT          => array(UA_PROP_NAME => 'BlitzBOT',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    244             UA_BOT_MICROSOFT_BING    => array(UA_PROP_NAME => 'Microsoft Bing',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.bing.com/bingbot.htm'), 
    245             UA_BOT_CHARLOTTE         => array(UA_PROP_NAME => 'Charlotte',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.searchme.com'), 
    246             UA_BOT_CERBERIAN_DRTRS   => array(UA_PROP_NAME => 'Cerberian Drtrs',      UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    247             UA_BOT_COSMOS            => array(UA_PROP_NAME => 'Cosmos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.xyleme.com/'), 
    248             UA_BOT_COVARIO_IDS       => array(UA_PROP_NAME => 'Covario IDS',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.covario.com/ids'), 
    249             UA_BOT_DATAPARKSEARCH    => array(UA_PROP_NAME => 'DataparkSearch',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.dataparksearch.org'), 
    250             UA_BOT_GAISBOT           => array(UA_PROP_NAME => 'Gaisbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://gais.cs.ccu.edu.tw/'), 
    251             UA_BOT_GOOGLE            => array(UA_PROP_NAME => 'Google',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.google.com/bot.html'), 
    252             UA_BOT_GURUJIBOT         => array(UA_PROP_NAME => 'GurujiBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.guruji.com/en/WebmasterFAQ.html'), 
    253             UA_BOT_HOLMES            => array(UA_PROP_NAME => 'Holmes',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ucw.cz/holmes'), 
    254             UA_BOT_HTDIG             => array(UA_PROP_NAME => 'htdig',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://htdig.sourceforge.net'), 
    255             UA_BOT_IA_ARCHIVER       => array(UA_PROP_NAME => 'ia_archiver',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.alexa.com/'), 
    256             UA_BOT_ICCRAWLER         => array(UA_PROP_NAME => 'iCCrawler',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.iccenter.net/bot.htm'), 
    257             UA_BOT_ICHIRO            => array(UA_PROP_NAME => 'Ichiro',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://help.goo.ne.jp/door/crawler.html'), 
    258             UA_BOT_BAIDU             => array(UA_PROP_NAME => 'Baidu',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.baidu.com'), 
    259             UA_BOT_MSN_SEARCH        => array(UA_PROP_NAME => 'Microsoft MSN Search', UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://search.msn.com/msnbot.htm'), 
    260             UA_BOT_EXALEAD           => array(UA_PROP_NAME => 'Exalead',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    261             UA_BOT_GAMESPY           => array(UA_PROP_NAME => 'GameSpy',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    262             UA_BOT_INKTOMI           => array(UA_PROP_NAME => 'Inktomi',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    263             UA_BOT_YAHOO_SEARCH      => array(UA_PROP_NAME => 'Yahoo! Search',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.yahoo.com/'), 
    264             UA_BOT_LWEBIS            => array(UA_PROP_NAME => 'L.webis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://webalgo.iit.cnr.it/index.php?pg=lwebis'), 
    265             UA_BOT_LARBIN            => array(UA_PROP_NAME => 'Larbin',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    266             UA_BOT_LINKWALKER        => array(UA_PROP_NAME => 'LinkWalker',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.seventwentyfour.com/'), 
    267             UA_BOT_LWPTRIVIAL        => array(UA_PROP_NAME => 'lwp-trivial',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    268             UA_BOT_MABONLAND         => array(UA_PROP_NAME => 'Mabontland',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.mabontland.com'), 
    269             UA_BOT_MNOGOSEARCH       => array(UA_PROP_NAME => 'Mnogosearch',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://mnogosearch.org'), 
    270             UA_BOT_MOGIMOGI          => array(UA_PROP_NAME => 'mogimogi',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    271             UA_BOT_MORNINGPAPER      => array(UA_PROP_NAME => 'Morning Paper',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.boutell.com'), 
    272             UA_BOT_NETRESEARCHSERVER => array(UA_PROP_NAME => 'NetResearchServer',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.loopimprovements.com'), 
    273             UA_BOT_NEWSGATOR         => array(UA_PROP_NAME => 'NewsGator',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.newsgator.com'), 
    274             UA_BOT_NGSEARCH          => array(UA_PROP_NAME => 'NG-Search',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ng-search.com'), 
    275             UA_BOT_NYMESIS           => array(UA_PROP_NAME => 'Nymesis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.nymesis.com'), 
    276             UA_BOT_OEGP              => array(UA_PROP_NAME => 'oegp',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    277             UA_BOT_POMPOS            => array(UA_PROP_NAME => 'Pompos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://dir.com/pompos.html'), 
    278             UA_BOT_PYCURL            => array(UA_PROP_NAME => 'PycURL',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://pycurl.sourceforge.net'), 
    279             UA_BOT_QSEERO            => array(UA_PROP_NAME => 'Qseero',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    280             UA_BOT_SBIDER            => array(UA_PROP_NAME => 'SBIder',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.sitesell.com'), 
    281             UA_BOT_SCOUTJET          => array(UA_PROP_NAME => 'ScoutJet',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scoutjet.com'), 
    282             UA_BOT_SCRUBBY           => array(UA_PROP_NAME => 'Scrubby',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scrubtheweb.com'), 
    283             UA_BOT_SEARCHSIGHT       => array(UA_PROP_NAME => 'SearchSight',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://searchsight.com'), 
    284             UA_BOT_SEMANTICDISCOVERY => array(UA_PROP_NAME => 'semanticdiscovery',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    285             UA_BOT_SHOULA            => array(UA_PROP_NAME => 'Shoula',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    286             UA_BOT_SNAPPY            => array(UA_PROP_NAME => 'Snappy',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.urltrends.com'), 
    287             UA_BOT_STACKRAMBLER      => array(UA_PROP_NAME => 'StackRambler',         UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    288             UA_BOT_SILK              => array(UA_PROP_NAME => 'Silk',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.slider.com/silk.htm'), 
    289             UA_BOT_TEOMA             => array(UA_PROP_NAME => 'Teoma',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://sp.ask.com/docs/about/tech_crawling.html'), 
    290             UA_BOT_TINEYE            => array(UA_PROP_NAME => 'TinEye',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://tineye.com/crawler.html'), 
    291             UA_BOT_TRUWOGPS          => array(UA_PROP_NAME => 'truwoGPS',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.lan4lano.net/browser.html'), 
    292             UA_BOT_UPDATED           => array(UA_PROP_NAME => 'updated',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.updated.com'), 
    293             UA_BOT_VOYAGER           => array(UA_PROP_NAME => 'voyager',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kosmix.com/crawler.html'), 
    294             UA_BOT_VYU2              => array(UA_PROP_NAME => 'vyu2',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    295             UA_BOT_WEBCOLLAGE        => array(UA_PROP_NAME => 'WebCollage',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    296             UA_BOT_YOOGLIFETCHAGENT  => array(UA_PROP_NAME => 'yoogliFetchAgent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    297             UA_BOT_ZAO               => array(UA_PROP_NAME => 'Zao',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kototoi.org/zao'), 
    298             UA_BOT_ZEALBOT           => array(UA_PROP_NAME => 'Zealbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
    299  
    300  
    301             UA_BROWSER_UNKNOWN       => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_UNKNOWN, UA_PROP_URL => ''), 
    302  
    303             UA_BROWSER_ANDROID_WEBKIT=> array(UA_PROP_NAME => 'Android WebKit Browser',  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
    304             UA_BROWSER_OPERA_MINI    => array(UA_PROP_NAME => 'Opera Mini',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'), 
    305             UA_BROWSER_OPERA_MOBILE  => array(UA_PROP_NAME => 'Opera Mobile',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'), 
    306             UA_BROWSER_BLACKBERRY    => array(UA_PROP_NAME => 'BlackBerry',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://worldwide.blackberry.com'), 
    307             UA_BROWSER_FENNEC        => array(UA_PROP_NAME => 'Fennec',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.mozilla.org/en-US/mobile'), 
    308             UA_BROWSER_GOBROWSER     => array(UA_PROP_NAME => 'Go Browser',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.3g.cn/'), 
    309             UA_BROWSER_IEMOBILE      => array(UA_PROP_NAME => 'IE Mobile',               UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
    310             UA_BROWSER_IRIS          => array(UA_PROP_NAME => 'Iris',                    UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.torchmobile.com'), 
    311             UA_BROWSER_MAEMO_BROWSER => array(UA_PROP_NAME => 'Maemo Browser',           UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://browser.garage.maemo.org'), 
    312             UA_BROWSER_MIB           => array(UA_PROP_NAME => 'MIB',                     UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.useragentstring.com/pages/MIB/www.motorola.com'), 
    313             UA_BROWSER_MINIMO        => array(UA_PROP_NAME => 'Minimo',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www-archive.mozilla.org/projects/minimo/'), 
    314             UA_BROWSER_NETFRONT      => array(UA_PROP_NAME => 'NetFront',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.access-company.com'), 
    315             UA_BROWSER_SEMC          => array(UA_PROP_NAME => 'SEMC-Browser',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
    316             UA_BROWSER_TEASHARK      => array(UA_PROP_NAME => 'TeaShark',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.navire.fi/teashark/index.html'), 
    317             UA_BROWSER_SKYFIRE       => array(UA_PROP_NAME => 'Skyfire',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.skyfire.com'), 
    318             UA_BROWSER_SAFARI_MOBILE => array(UA_PROP_NAME => 'Safari',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.apple.com/safari'), 
    319  
    320             UA_BROWSER_PS3           => array(UA_PROP_NAME => 'Playstation 3',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/ps3'), 
    321             UA_BROWSER_PSP           => array(UA_PROP_NAME => 'Playstation Portable',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/psp'), 
    322             UA_BROWSER_BUNJALLOO     => array(UA_PROP_NAME => 'Bunjalloo',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://code.google.com/p/quirkysoft/'), 
    323             UA_BROWSER_OPERA_WII     => array(UA_PROP_NAME => 'Opera',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://www.opera.com'), 
    324  
    325             UA_BROWSER_OPERA         => array(UA_PROP_NAME => 'Opera',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.opera.com'), 
    326             UA_BROWSER_SHIIRA        => array(UA_PROP_NAME => 'Shiira',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://shiira.jp/en'), 
    327             UA_BROWSER_THUNDERBIRD   => array(UA_PROP_NAME => 'Thunderbird',            UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/thunderbird'), 
    328             UA_BROWSER_NAMOROKA      => array(UA_PROP_NAME => 'Namoroka',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'https://wiki.mozilla.org/Firefox/Namoroka'), 
    329             UA_BROWSER_MINEFIELD     => array(UA_PROP_NAME => 'Minefield',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/projects/minefield'), 
    330             UA_BROWSER_LUNASCAPE     => array(UA_PROP_NAME => 'Lunascape',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.lunascape.tv'), 
    331             UA_BROWSER_ARORA         => array(UA_PROP_NAME => 'Arora',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://code.google.com/p/arora'), 
    332             UA_BROWSER_CAMINO        => array(UA_PROP_NAME => 'Camino',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://caminobrowser.org'), 
    333             UA_BROWSER_KAPIKO        => array(UA_PROP_NAME => 'Kapiko',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://ufoxlab.googlepages.com/cooperation'), 
    334             UA_BROWSER_KAZEHAKAZE    => array(UA_PROP_NAME => 'Kazehakase',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://kazehakase.sourceforge.jp'), 
    335             UA_BROWSER_CHROMEPLUS    => array(UA_PROP_NAME => 'ChromePlus',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://coolnovo.com'), 
    336             UA_BROWSER_CHROME        => array(UA_PROP_NAME => 'Chrome',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.google.com/chrome'), 
    337             UA_BROWSER_EPIPHANY      => array(UA_PROP_NAME => 'Epiphany',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://projects.gnome.org/epiphany'), 
    338             UA_BROWSER_GALEON        => array(UA_PROP_NAME => 'Galeon',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://galeon.sourceforge.net'), 
    339             UA_BROWSER_ORCA          => array(UA_PROP_NAME => 'Orca',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.orcabrowser.com'), 
    340             UA_BROWSER_LOBO          => array(UA_PROP_NAME => 'Lobo',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lobobrowser.org'), 
    341             UA_BROWSER_SEAMONKEY     => array(UA_PROP_NAME => 'SeaMonkey',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.seamonkey-project.org'), 
    342             UA_BROWSER_MIDORI        => array(UA_PROP_NAME => 'Midori',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://twotoasts.de/?/pages/midori_summary.html'), 
    343             UA_BROWSER_MAXTHON       => array(UA_PROP_NAME => 'Maxthon',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.maxthon.com'), 
    344             UA_BROWSER_ICEAPE        => array(UA_PROP_NAME => 'Iceape',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://packages.debian.org/fr/squeeze/iceape-browser'), 
    345             UA_BROWSER_ICEWEASEL     => array(UA_PROP_NAME => 'Iceweasel',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.geticeweasel.org'), 
    346             UA_BROWSER_NETSCAPE      => array(UA_PROP_NAME => 'Netscape',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://isp.netscape.com'), 
    347             UA_BROWSER_FIREBIRD      => array(UA_PROP_NAME => 'Firebird',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'), 
    348             UA_BROWSER_FIREFOX       => array(UA_PROP_NAME => 'Firefox',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'), 
    349             UA_BROWSER_INTERNET_EXPLORER=> array(UA_PROP_NAME => 'Internet Explorer',   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://windows.microsoft.com/en-us/internet-explorer/products/ie/home'), 
    350             UA_BROWSER_KONQUEROR     => array(UA_PROP_NAME => 'Konqueror',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.konqueror.org'), 
    351             UA_BROWSER_LINKS         => array(UA_PROP_NAME => 'Links',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.jikos.cz/~mikulas/links'), 
    352             UA_BROWSER_LYNX          => array(UA_PROP_NAME => 'Lynx',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lynx.browser.org'), 
    353             UA_BROWSER_SAFARI        => array(UA_PROP_NAME => 'Safari',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.apple.com/safari') 
    354           ), 
    355  
    356   UA_DATA_OS => array( 
    357             UA_OS_UNKNOWN            => array(UA_PROP_NAME => 'Unknown',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>''), 
    358             UA_OS_LINUX              => array(UA_PROP_NAME => 'Linux',                  UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.linux.com'), 
    359             UA_OS_FREEBSD            => array(UA_PROP_NAME => 'FreeBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.freebsd.org'), 
    360             UA_OS_OPENBSD            => array(UA_PROP_NAME => 'OpenBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.openbsd.org'), 
    361             UA_OS_NETBSD             => array(UA_PROP_NAME => 'NetBSD',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.netbsd.org'), 
    362             UA_OS_WINDOWS            => array(UA_PROP_NAME => 'Windows',                UA_PROP_TYPE=>UA_OS_TYPE_WINDOWS,   UA_PROP_URL=>'http://windows.microsoft.com'), 
    363             UA_OS_SUNOS              => array(UA_PROP_NAME => 'SunOS',                  UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''), 
    364             UA_OS_BLACKBERRY         => array(UA_PROP_NAME => 'Blackberry OS',          UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.blackberry.com/apps-software/devices'), 
    365             UA_OS_SYMBIAN_OS         => array(UA_PROP_NAME => 'Symbian OS',             UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://symbian.nokia.com'), 
    366             UA_OS_SYMBOS             => array(UA_PROP_NAME => 'SymbOS',                 UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.symbos.de'), 
    367             UA_OS_MACINTOSH          => array(UA_PROP_NAME => 'Macintosh',              UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'), 
    368             UA_OS_MAC_OS_X           => array(UA_PROP_NAME => 'Mac OS X',               UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.apple.com'), 
    369             UA_OS_ANDROID            => array(UA_PROP_NAME => 'Android',                UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.android.com'), 
    370             UA_OS_IOS                => array(UA_PROP_NAME => 'iOS',                    UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'), 
    371             UA_OS_NINTENDO_DS        => array(UA_PROP_NAME => 'Nintendo DS',            UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/ds'), 
    372             UA_OS_NINTENDO_WII       => array(UA_PROP_NAME => 'Nintendo Wii',           UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/wii'), 
    373             UA_OS_SONY_PS3           => array(UA_PROP_NAME => 'Sony PS3',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/ps3'), 
    374             UA_OS_SONY_PSP           => array(UA_PROP_NAME => 'Sony PSP',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/psp'), 
    375             UA_OS_CHROME_OS          => array(UA_PROP_NAME => 'Chrome OS',              UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>''), 
    376             UA_OS_BE_OS              => array(UA_PROP_NAME => 'BeOS',                   UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>''), 
    377             UA_OS_DRAGONFLY          => array(UA_PROP_NAME => 'DragonFly BSD',          UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.dragonflybsd.org'), 
    378             UA_OS_UNIX               => array(UA_PROP_NAME => 'UNIX',                   UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''), 
    379             UA_OS_DARWIN             => array(UA_PROP_NAME => 'Darwin',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'developer.apple.com/darwin'), 
    380             UA_OS_OS2                => array(UA_PROP_NAME => 'IBM OS/2',               UA_PROP_TYPE=>UA_OS_TYPE_OS2,       UA_PROP_URL=>''), 
    381             UA_OS_AMIGAOS            => array(UA_PROP_NAME => 'AmigaOS',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://amiga.com') 
    382           ), 
    383   UA_DATA_ENGINE => array( 
    384             UA_ENGINE_UNKNOWN        => array(UA_PROP_NAME => 'Unknown',                UA_PROP_URL=>''), 
    385             UA_ENGINE_GECKO          => array(UA_PROP_NAME => 'Gecko',                  UA_PROP_URL=>'https://developer.mozilla.org/en/Gecko'), 
    386             UA_ENGINE_KHTML          => array(UA_PROP_NAME => 'KHTML',                  UA_PROP_URL=>'http://api.kde.org/3.5-api/kdelibs-apidocs/khtml/html/index.html'), 
    387             UA_ENGINE_PRESTO         => array(UA_PROP_NAME => 'Presto',                 UA_PROP_URL=>'http://dev.opera.com/articles/view/presto-2-1-web-standards-supported-by'), 
    388             UA_ENGINE_APPLEWEBKIT    => array(UA_PROP_NAME => 'AppleWebKit',            UA_PROP_URL=>''), 
    389             UA_ENGINE_WEBKIT         => array(UA_PROP_NAME => 'WebKit',                 UA_PROP_URL=>'http://www.webkit.org'), 
    390             UA_ENGINE_TRIDENT        => array(UA_PROP_NAME => 'Trident',                UA_PROP_URL=>'http://msdn.microsoft.com/en-us/library/aa741317.aspx') 
    391           ), 
    392  
    393   UA_DATA_BROWSER_TYPE => array( 
    394             UA_BROWSER_TYPE_UNKNOWN  => 'Unknown', 
    395             UA_BROWSER_TYPE_COMPUTER => 'Computer', 
    396             UA_BROWSER_TYPE_CONSOLE  => 'Console', 
    397             UA_BROWSER_TYPE_MOBILE   => 'Mobile', 
    398             UA_BROWSER_TYPE_CRAWLER  => 'Crawler' 
    399           ), 
    400  
    401   UA_DATA_OS_TYPE => array( 
    402             UA_OS_TYPE_UNKNOWN  => 'Unknown', 
    403             UA_OS_TYPE_LINUX    => 'Linux', 
    404             UA_OS_TYPE_BSD      => 'BSD', 
    405             UA_OS_TYPE_UNIX     => 'Unix', 
    406             UA_OS_TYPE_WINDOWS  => 'Windows', 
    407             UA_OS_TYPE_OS2      => 'OS/2' 
    408           ) 
    409  
    410 ); 
    411  
    412  
     230 
     231class GPCUserAgentValues 
     232{ 
     233  static public $UA_BrowserInfo=array( 
     234    UA_DATA => array( 
     235              UA_DATA_BROWSER => array(UA_PROP_NAME => 'Browser'), 
     236              UA_DATA_ENGINE  => array(UA_PROP_NAME => 'Engine'), 
     237              UA_DATA_OS      => array(UA_PROP_NAME => 'Operating System') 
     238            ), 
     239    UA_DATA_BROWSER=> array( 
     240              UA_BOT_UNKNOWN           => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     241 
     242              UA_BOT_008               => array(UA_PROP_NAME => '008',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.80legs.com'), 
     243              UA_BOT_ABACHOBOT         => array(UA_PROP_NAME => 'ABACHOBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.abacho.com'), 
     244              UA_BOT_ACCOONA_AI_AGENT  => array(UA_PROP_NAME => 'Accoona-AI-Agent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.accoona.com'), 
     245              UA_BOT_ARACHMO           => array(UA_PROP_NAME => 'Arachmo',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     246              UA_BOT_BLITZBOT          => array(UA_PROP_NAME => 'BlitzBOT',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     247              UA_BOT_MICROSOFT_BING    => array(UA_PROP_NAME => 'Microsoft Bing',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.bing.com/bingbot.htm'), 
     248              UA_BOT_CHARLOTTE         => array(UA_PROP_NAME => 'Charlotte',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.searchme.com'), 
     249              UA_BOT_CERBERIAN_DRTRS   => array(UA_PROP_NAME => 'Cerberian Drtrs',      UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     250              UA_BOT_COSMOS            => array(UA_PROP_NAME => 'Cosmos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.xyleme.com/'), 
     251              UA_BOT_COVARIO_IDS       => array(UA_PROP_NAME => 'Covario IDS',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.covario.com/ids'), 
     252              UA_BOT_DATAPARKSEARCH    => array(UA_PROP_NAME => 'DataparkSearch',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.dataparksearch.org'), 
     253              UA_BOT_GAISBOT           => array(UA_PROP_NAME => 'Gaisbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://gais.cs.ccu.edu.tw/'), 
     254              UA_BOT_GOOGLE            => array(UA_PROP_NAME => 'Google',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.google.com/bot.html'), 
     255              UA_BOT_GURUJIBOT         => array(UA_PROP_NAME => 'GurujiBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.guruji.com/en/WebmasterFAQ.html'), 
     256              UA_BOT_HOLMES            => array(UA_PROP_NAME => 'Holmes',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ucw.cz/holmes'), 
     257              UA_BOT_HTDIG             => array(UA_PROP_NAME => 'htdig',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://htdig.sourceforge.net'), 
     258              UA_BOT_IA_ARCHIVER       => array(UA_PROP_NAME => 'ia_archiver',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.alexa.com/'), 
     259              UA_BOT_ICCRAWLER         => array(UA_PROP_NAME => 'iCCrawler',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.iccenter.net/bot.htm'), 
     260              UA_BOT_ICHIRO            => array(UA_PROP_NAME => 'Ichiro',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://help.goo.ne.jp/door/crawler.html'), 
     261              UA_BOT_BAIDU             => array(UA_PROP_NAME => 'Baidu',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.baidu.com'), 
     262              UA_BOT_MSN_SEARCH        => array(UA_PROP_NAME => 'Microsoft MSN Search', UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://search.msn.com/msnbot.htm'), 
     263              UA_BOT_EXALEAD           => array(UA_PROP_NAME => 'Exalead',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     264              UA_BOT_GAMESPY           => array(UA_PROP_NAME => 'GameSpy',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     265              UA_BOT_INKTOMI           => array(UA_PROP_NAME => 'Inktomi',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     266              UA_BOT_YAHOO_SEARCH      => array(UA_PROP_NAME => 'Yahoo! Search',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.yahoo.com/'), 
     267              UA_BOT_LWEBIS            => array(UA_PROP_NAME => 'L.webis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://webalgo.iit.cnr.it/index.php?pg=lwebis'), 
     268              UA_BOT_LARBIN            => array(UA_PROP_NAME => 'Larbin',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     269              UA_BOT_LINKWALKER        => array(UA_PROP_NAME => 'LinkWalker',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.seventwentyfour.com/'), 
     270              UA_BOT_LWPTRIVIAL        => array(UA_PROP_NAME => 'lwp-trivial',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     271              UA_BOT_MABONLAND         => array(UA_PROP_NAME => 'Mabontland',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.mabontland.com'), 
     272              UA_BOT_MNOGOSEARCH       => array(UA_PROP_NAME => 'Mnogosearch',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://mnogosearch.org'), 
     273              UA_BOT_MOGIMOGI          => array(UA_PROP_NAME => 'mogimogi',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     274              UA_BOT_MORNINGPAPER      => array(UA_PROP_NAME => 'Morning Paper',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.boutell.com'), 
     275              UA_BOT_NETRESEARCHSERVER => array(UA_PROP_NAME => 'NetResearchServer',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.loopimprovements.com'), 
     276              UA_BOT_NEWSGATOR         => array(UA_PROP_NAME => 'NewsGator',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.newsgator.com'), 
     277              UA_BOT_NGSEARCH          => array(UA_PROP_NAME => 'NG-Search',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ng-search.com'), 
     278              UA_BOT_NYMESIS           => array(UA_PROP_NAME => 'Nymesis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.nymesis.com'), 
     279              UA_BOT_OEGP              => array(UA_PROP_NAME => 'oegp',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     280              UA_BOT_POMPOS            => array(UA_PROP_NAME => 'Pompos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://dir.com/pompos.html'), 
     281              UA_BOT_PYCURL            => array(UA_PROP_NAME => 'PycURL',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://pycurl.sourceforge.net'), 
     282              UA_BOT_QSEERO            => array(UA_PROP_NAME => 'Qseero',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     283              UA_BOT_SBIDER            => array(UA_PROP_NAME => 'SBIder',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.sitesell.com'), 
     284              UA_BOT_SCOUTJET          => array(UA_PROP_NAME => 'ScoutJet',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scoutjet.com'), 
     285              UA_BOT_SCRUBBY           => array(UA_PROP_NAME => 'Scrubby',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scrubtheweb.com'), 
     286              UA_BOT_SEARCHSIGHT       => array(UA_PROP_NAME => 'SearchSight',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://searchsight.com'), 
     287              UA_BOT_SEMANTICDISCOVERY => array(UA_PROP_NAME => 'semanticdiscovery',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     288              UA_BOT_SHOULA            => array(UA_PROP_NAME => 'Shoula',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     289              UA_BOT_SNAPPY            => array(UA_PROP_NAME => 'Snappy',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.urltrends.com'), 
     290              UA_BOT_STACKRAMBLER      => array(UA_PROP_NAME => 'StackRambler',         UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     291              UA_BOT_SILK              => array(UA_PROP_NAME => 'Silk',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.slider.com/silk.htm'), 
     292              UA_BOT_TEOMA             => array(UA_PROP_NAME => 'Teoma',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://sp.ask.com/docs/about/tech_crawling.html'), 
     293              UA_BOT_TINEYE            => array(UA_PROP_NAME => 'TinEye',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://tineye.com/crawler.html'), 
     294              UA_BOT_TRUWOGPS          => array(UA_PROP_NAME => 'truwoGPS',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.lan4lano.net/browser.html'), 
     295              UA_BOT_UPDATED           => array(UA_PROP_NAME => 'updated',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.updated.com'), 
     296              UA_BOT_VOYAGER           => array(UA_PROP_NAME => 'voyager',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kosmix.com/crawler.html'), 
     297              UA_BOT_VYU2              => array(UA_PROP_NAME => 'vyu2',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     298              UA_BOT_WEBCOLLAGE        => array(UA_PROP_NAME => 'WebCollage',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     299              UA_BOT_YOOGLIFETCHAGENT  => array(UA_PROP_NAME => 'yoogliFetchAgent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     300              UA_BOT_ZAO               => array(UA_PROP_NAME => 'Zao',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kototoi.org/zao'), 
     301              UA_BOT_ZEALBOT           => array(UA_PROP_NAME => 'Zealbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''), 
     302 
     303 
     304              UA_BROWSER_UNKNOWN       => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_UNKNOWN, UA_PROP_URL => ''), 
     305 
     306              UA_BROWSER_ANDROID_WEBKIT=> array(UA_PROP_NAME => 'Android WebKit Browser',  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
     307              UA_BROWSER_OPERA_MINI    => array(UA_PROP_NAME => 'Opera Mini',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'), 
     308              UA_BROWSER_OPERA_MOBILE  => array(UA_PROP_NAME => 'Opera Mobile',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'), 
     309              UA_BROWSER_BLACKBERRY    => array(UA_PROP_NAME => 'BlackBerry',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://worldwide.blackberry.com'), 
     310              UA_BROWSER_FENNEC        => array(UA_PROP_NAME => 'Fennec',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.mozilla.org/en-US/mobile'), 
     311              UA_BROWSER_GOBROWSER     => array(UA_PROP_NAME => 'Go Browser',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.3g.cn/'), 
     312              UA_BROWSER_IEMOBILE      => array(UA_PROP_NAME => 'IE Mobile',               UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
     313              UA_BROWSER_IRIS          => array(UA_PROP_NAME => 'Iris',                    UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.torchmobile.com'), 
     314              UA_BROWSER_MAEMO_BROWSER => array(UA_PROP_NAME => 'Maemo Browser',           UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://browser.garage.maemo.org'), 
     315              UA_BROWSER_MIB           => array(UA_PROP_NAME => 'MIB',                     UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.useragentstring.com/pages/MIB/www.motorola.com'), 
     316              UA_BROWSER_MINIMO        => array(UA_PROP_NAME => 'Minimo',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www-archive.mozilla.org/projects/minimo/'), 
     317              UA_BROWSER_NETFRONT      => array(UA_PROP_NAME => 'NetFront',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.access-company.com'), 
     318              UA_BROWSER_SEMC          => array(UA_PROP_NAME => 'SEMC-Browser',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''), 
     319              UA_BROWSER_TEASHARK      => array(UA_PROP_NAME => 'TeaShark',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.navire.fi/teashark/index.html'), 
     320              UA_BROWSER_SKYFIRE       => array(UA_PROP_NAME => 'Skyfire',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.skyfire.com'), 
     321              UA_BROWSER_SAFARI_MOBILE => array(UA_PROP_NAME => 'Safari',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.apple.com/safari'), 
     322 
     323              UA_BROWSER_PS3           => array(UA_PROP_NAME => 'Playstation 3',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/ps3'), 
     324              UA_BROWSER_PSP           => array(UA_PROP_NAME => 'Playstation Portable',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/psp'), 
     325              UA_BROWSER_BUNJALLOO     => array(UA_PROP_NAME => 'Bunjalloo',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://code.google.com/p/quirkysoft/'), 
     326              UA_BROWSER_OPERA_WII     => array(UA_PROP_NAME => 'Opera',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://www.opera.com'), 
     327 
     328              UA_BROWSER_OPERA         => array(UA_PROP_NAME => 'Opera',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.opera.com'), 
     329              UA_BROWSER_SHIIRA        => array(UA_PROP_NAME => 'Shiira',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://shiira.jp/en'), 
     330              UA_BROWSER_THUNDERBIRD   => array(UA_PROP_NAME => 'Thunderbird',            UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/thunderbird'), 
     331              UA_BROWSER_NAMOROKA      => array(UA_PROP_NAME => 'Namoroka',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'https://wiki.mozilla.org/Firefox/Namoroka'), 
     332              UA_BROWSER_MINEFIELD     => array(UA_PROP_NAME => 'Minefield',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/projects/minefield'), 
     333              UA_BROWSER_LUNASCAPE     => array(UA_PROP_NAME => 'Lunascape',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.lunascape.tv'), 
     334              UA_BROWSER_ARORA         => array(UA_PROP_NAME => 'Arora',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://code.google.com/p/arora'), 
     335              UA_BROWSER_CAMINO        => array(UA_PROP_NAME => 'Camino',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://caminobrowser.org'), 
     336              UA_BROWSER_KAPIKO        => array(UA_PROP_NAME => 'Kapiko',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://ufoxlab.googlepages.com/cooperation'), 
     337              UA_BROWSER_KAZEHAKAZE    => array(UA_PROP_NAME => 'Kazehakase',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://kazehakase.sourceforge.jp'), 
     338              UA_BROWSER_CHROMEPLUS    => array(UA_PROP_NAME => 'ChromePlus',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://coolnovo.com'), 
     339              UA_BROWSER_CHROME        => array(UA_PROP_NAME => 'Chrome',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.google.com/chrome'), 
     340              UA_BROWSER_EPIPHANY      => array(UA_PROP_NAME => 'Epiphany',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://projects.gnome.org/epiphany'), 
     341              UA_BROWSER_GALEON        => array(UA_PROP_NAME => 'Galeon',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://galeon.sourceforge.net'), 
     342              UA_BROWSER_ORCA          => array(UA_PROP_NAME => 'Orca',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.orcabrowser.com'), 
     343              UA_BROWSER_LOBO          => array(UA_PROP_NAME => 'Lobo',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lobobrowser.org'), 
     344              UA_BROWSER_SEAMONKEY     => array(UA_PROP_NAME => 'SeaMonkey',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.seamonkey-project.org'), 
     345              UA_BROWSER_MIDORI        => array(UA_PROP_NAME => 'Midori',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://twotoasts.de/?/pages/midori_summary.html'), 
     346              UA_BROWSER_MAXTHON       => array(UA_PROP_NAME => 'Maxthon',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.maxthon.com'), 
     347              UA_BROWSER_ICEAPE        => array(UA_PROP_NAME => 'Iceape',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://packages.debian.org/fr/squeeze/iceape-browser'), 
     348              UA_BROWSER_ICEWEASEL     => array(UA_PROP_NAME => 'Iceweasel',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.geticeweasel.org'), 
     349              UA_BROWSER_NETSCAPE      => array(UA_PROP_NAME => 'Netscape',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://isp.netscape.com'), 
     350              UA_BROWSER_FIREBIRD      => array(UA_PROP_NAME => 'Firebird',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'), 
     351              UA_BROWSER_FIREFOX       => array(UA_PROP_NAME => 'Firefox',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'), 
     352              UA_BROWSER_INTERNET_EXPLORER=> array(UA_PROP_NAME => 'Internet Explorer',   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://windows.microsoft.com/en-us/internet-explorer/products/ie/home'), 
     353              UA_BROWSER_KONQUEROR     => array(UA_PROP_NAME => 'Konqueror',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.konqueror.org'), 
     354              UA_BROWSER_LINKS         => array(UA_PROP_NAME => 'Links',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.jikos.cz/~mikulas/links'), 
     355              UA_BROWSER_LYNX          => array(UA_PROP_NAME => 'Lynx',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lynx.browser.org'), 
     356              UA_BROWSER_SAFARI        => array(UA_PROP_NAME => 'Safari',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.apple.com/safari') 
     357            ), 
     358 
     359    UA_DATA_OS => array( 
     360              UA_OS_UNKNOWN            => array(UA_PROP_NAME => 'Unknown',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>''), 
     361              UA_OS_LINUX              => array(UA_PROP_NAME => 'Linux',                  UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.linux.com'), 
     362              UA_OS_FREEBSD            => array(UA_PROP_NAME => 'FreeBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.freebsd.org'), 
     363              UA_OS_OPENBSD            => array(UA_PROP_NAME => 'OpenBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.openbsd.org'), 
     364              UA_OS_NETBSD             => array(UA_PROP_NAME => 'NetBSD',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.netbsd.org'), 
     365              UA_OS_WINDOWS            => array(UA_PROP_NAME => 'Windows',                UA_PROP_TYPE=>UA_OS_TYPE_WINDOWS,   UA_PROP_URL=>'http://windows.microsoft.com'), 
     366              UA_OS_SUNOS              => array(UA_PROP_NAME => 'SunOS',                  UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''), 
     367              UA_OS_BLACKBERRY         => array(UA_PROP_NAME => 'Blackberry OS',          UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.blackberry.com/apps-software/devices'), 
     368              UA_OS_SYMBIAN_OS         => array(UA_PROP_NAME => 'Symbian OS',             UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://symbian.nokia.com'), 
     369              UA_OS_SYMBOS             => array(UA_PROP_NAME => 'SymbOS',                 UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.symbos.de'), 
     370              UA_OS_MACINTOSH          => array(UA_PROP_NAME => 'Macintosh',              UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'), 
     371              UA_OS_MAC_OS_X           => array(UA_PROP_NAME => 'Mac OS X',               UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.apple.com'), 
     372              UA_OS_ANDROID            => array(UA_PROP_NAME => 'Android',                UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.android.com'), 
     373              UA_OS_IOS                => array(UA_PROP_NAME => 'iOS',                    UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'), 
     374              UA_OS_NINTENDO_DS        => array(UA_PROP_NAME => 'Nintendo DS',            UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/ds'), 
     375              UA_OS_NINTENDO_WII       => array(UA_PROP_NAME => 'Nintendo Wii',           UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/wii'), 
     376              UA_OS_SONY_PS3           => array(UA_PROP_NAME => 'Sony PS3',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/ps3'), 
     377              UA_OS_SONY_PSP           => array(UA_PROP_NAME => 'Sony PSP',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/psp'), 
     378              UA_OS_CHROME_OS          => array(UA_PROP_NAME => 'Chrome OS',              UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>''), 
     379              UA_OS_BE_OS              => array(UA_PROP_NAME => 'BeOS',                   UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>''), 
     380              UA_OS_DRAGONFLY          => array(UA_PROP_NAME => 'DragonFly BSD',          UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.dragonflybsd.org'), 
     381              UA_OS_UNIX               => array(UA_PROP_NAME => 'UNIX',                   UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''), 
     382              UA_OS_DARWIN             => array(UA_PROP_NAME => 'Darwin',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'developer.apple.com/darwin'), 
     383              UA_OS_OS2                => array(UA_PROP_NAME => 'IBM OS/2',               UA_PROP_TYPE=>UA_OS_TYPE_OS2,       UA_PROP_URL=>''), 
     384              UA_OS_AMIGAOS            => array(UA_PROP_NAME => 'AmigaOS',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://amiga.com') 
     385            ), 
     386    UA_DATA_ENGINE => array( 
     387              UA_ENGINE_UNKNOWN        => array(UA_PROP_NAME => 'Unknown',                UA_PROP_URL=>''), 
     388              UA_ENGINE_GECKO          => array(UA_PROP_NAME => 'Gecko',                  UA_PROP_URL=>'https://developer.mozilla.org/en/Gecko'), 
     389              UA_ENGINE_KHTML          => array(UA_PROP_NAME => 'KHTML',                  UA_PROP_URL=>'http://api.kde.org/3.5-api/kdelibs-apidocs/khtml/html/index.html'), 
     390              UA_ENGINE_PRESTO         => array(UA_PROP_NAME => 'Presto',                 UA_PROP_URL=>'http://dev.opera.com/articles/view/presto-2-1-web-standards-supported-by'), 
     391              UA_ENGINE_APPLEWEBKIT    => array(UA_PROP_NAME => 'AppleWebKit',            UA_PROP_URL=>''), 
     392              UA_ENGINE_WEBKIT         => array(UA_PROP_NAME => 'WebKit',                 UA_PROP_URL=>'http://www.webkit.org'), 
     393              UA_ENGINE_TRIDENT        => array(UA_PROP_NAME => 'Trident',                UA_PROP_URL=>'http://msdn.microsoft.com/en-us/library/aa741317.aspx') 
     394            ), 
     395 
     396    UA_DATA_BROWSER_TYPE => array( 
     397              UA_BROWSER_TYPE_UNKNOWN  => 'Unknown', 
     398              UA_BROWSER_TYPE_COMPUTER => 'Computer', 
     399              UA_BROWSER_TYPE_CONSOLE  => 'Console', 
     400              UA_BROWSER_TYPE_MOBILE   => 'Mobile', 
     401              UA_BROWSER_TYPE_CRAWLER  => 'Crawler' 
     402            ), 
     403 
     404    UA_DATA_OS_TYPE => array( 
     405              UA_OS_TYPE_UNKNOWN  => 'Unknown', 
     406              UA_OS_TYPE_LINUX    => 'Linux', 
     407              UA_OS_TYPE_BSD      => 'BSD', 
     408              UA_OS_TYPE_UNIX     => 'Unix', 
     409              UA_OS_TYPE_WINDOWS  => 'Windows', 
     410              UA_OS_TYPE_OS2      => 'OS/2' 
     411            ) 
     412 
     413  ); 
     414 
     415} 
    413416 
    414417?> 
  • extensions/GrumPluginClasses/css/dynamicTable.css

    r16012 r17562  
    44} 
    55 
    6 table.ui-dynamicTableHeader, table.ui-dynamicTableContent { 
     6table.ui-dynamicTableHeader, 
     7table.ui-dynamicTableContent, 
     8table.ui-dynamicTableTotalRow { 
    79  width:100%; 
    810  /* border-collapse: collapse; */ 
     
    2628 
    2729thead.ui-dynamicTableHeader td, 
    28 table.ui-dynamicTableContent td { 
     30table.ui-dynamicTableContent td, 
     31table.ui-dynamicTableTotalRow td { 
    2932  padding:0 0 0 2px; 
    3033} 
     
    3235td.ui-dynamicTableSortColumn { 
    3336  width:15px; 
     37} 
     38 
     39table.ui-dynamicTableTotalRow { 
     40  display:'none'; 
    3441} 
    3542 
     
    5158  margin: 1px; 
    5259} 
     60div.ui-dynamicTableLoadingWorkInProgress { 
     61  display:none; 
     62  position:absolute; 
     63  z-index:1000; 
     64  margin: 1px; 
     65  width:16px; 
     66  height:16px; 
     67  background:url(./../icons/processing.gif) no-repeat scroll 0 40px transparent; 
     68} 
     69 
    5370 
    5471div.ui-dynamicTableFooter { 
  • extensions/GrumPluginClasses/css/dynamicTable_clear.css

    r16012 r17562  
    77div.ui-dynamicTableContent { 
    88  border:1px solid #aaaaaa; 
     9} 
     10 
     11table.ui-dynamicTableTotalRow { 
     12  border:1px solid #aaaaaa; 
     13  border-top:none; 
    914} 
    1015 
  • extensions/GrumPluginClasses/css/dynamicTable_roma.css

    r16012 r17562  
    77div.ui-dynamicTableContent { 
    88  border:1px solid #666666; 
     9} 
     10 
     11table.ui-dynamicTableTotalRow { 
     12  border:1px solid #666666; 
     13  border-top:none; 
    914} 
    1015 
  • extensions/GrumPluginClasses/css/gpc.css

    r15340 r17562  
    9494  color:#800000; 
    9595} 
     96.ui-resizable .ui-resizable-handle { 
     97  display: none; 
     98  background:none repeat scroll 0 0 transparent; 
     99} 
    96100 
    97101 
    98102 
    99  
    100  
  • extensions/GrumPluginClasses/css/inputColorPicker.css

    r16012 r17562  
    9090 
    9191/* --- */ 
     92.ui-inputDialogColor { 
     93  text-align:justify; 
     94} 
    9295.ui-inputDialogColor div.ui-inputColorPicker { 
    9396  min-width:346px; 
  • extensions/GrumPluginClasses/css/inputFilterBox.css

    r16012 r17562  
    2121 
    2222/* dialog box */ 
     23.ui-inputDialogFilterBox { 
     24  text-align:justify; 
     25} 
    2326.ui-inputDialogFilterBox div.ui-dialog-titlebar { 
    2427  cursor:move; 
  • extensions/GrumPluginClasses/css/inputPages.css

    r16012 r17562  
    1414  padding: 0px; 
    1515  text-align: center; 
    16   width: 15px; 
     16  min-width: 15px; 
    1717  cursor:default; 
    1818} 
  • extensions/GrumPluginClasses/css/inputSortBox.css

    r16012 r17562  
    2121 
    2222/* dialog box */ 
     23.ui-inputDialogSortBox { 
     24  text-align:justify; 
     25} 
    2326.ui-inputDialogSortBox div.ui-dialog-titlebar { 
    2427  cursor:move; 
  • extensions/GrumPluginClasses/css/progressArea.css

    r16733 r17562  
    3333 
    3434/* dialog box */ 
     35.ui-dialogProgressArea { 
     36  text-align:justify; 
     37} 
    3538.ui-dialogProgressArea div.ui-dialog-titlebar { 
    3639  cursor:move; 
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r12215 r17562  
    44  Author     : Grum 
    55    email    : grum@grum.fr 
    6     website  : http://photos.grum.fr 
     6    website  : http://www.grum.fr 
    77    PWG user : http://forum.piwigo.org/profile.php?id=3706 
    88 
     
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    1616 
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.2'); 
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.02'); 
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.3'); 
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.03'); 
    1919?> 
  • extensions/GrumPluginClasses/js/ui.dynamicTable.js

    r16012 r17562  
    5454                  options = 
    5555                    { 
     56                      autoLoad:true, 
    5657                      columns:[], 
    5758                      postUrl:'', 
     
    6566                      currentPage:1, 
    6667                      sortBoxTitle:'Sort by', 
     68                      showTotalRow:'auto',     // visible, hidden, auto 
    6769                      footerString: 
    6870                        { 
     
    9395                    sortedColumns:[], 
    9496                    filteredColumns:[], 
    95                     loadedData:[] 
     97                    loadedData:[], 
     98                    totalRowHasData:false 
    9699                  } 
    97100                ); 
     
    131134                        } 
    132135                      ), 
     136                    loadingContentWorkInProgress:$('<div/>', 
     137                        { 
     138                          class:'ui-dynamicTableLoadingWorkInProgress' 
     139                        } 
     140                      ), 
     141 
     142                    totalRowContent:$('<table/>', 
     143                        { 
     144                          'class':'ui-dynamicTableTotalRow' 
     145                        } 
     146                      ), 
     147                    totalRowTr:$('<tr/>'), 
     148 
    133149 
    134150                    footer:$('<div/>', 
     
    154170                  .append(objects.headerContainer.append(objects.header.append(objects.headerTr))) 
    155171                  .append(objects.loadingContent) 
     172                  .append(objects.loadingContentWorkInProgress) 
    156173                  .append(objects.contentContainer.append(objects.content)) 
     174                  .append(objects.totalRowContent.append(objects.totalRowTr)) 
    157175                  .append(objects.footer 
    158176                            .append(objects.footerNbItems) 
     
    285303        }, // footerString 
    286304 
     305      autoLoad: function (value) 
     306        { 
     307          if(value!=null) 
     308          { 
     309            // set selected value 
     310            return( 
     311              this.each( 
     312                function() 
     313                { 
     314                  privateMethods.setAutoLoad($(this), value, true); 
     315                } 
     316              ) 
     317            ); 
     318          } 
     319          else 
     320          { 
     321            var options=this.data('options'); 
     322            return(options.autoLoad); 
     323          } 
     324        }, // autoLoad 
     325 
     326 
     327      showTotalRow : function (value) 
     328        { 
     329          if(value!=null) 
     330          { 
     331            // set selected value 
     332            return( 
     333              this.each( 
     334                function() 
     335                { 
     336                  privateMethods.setShowTotalRow($(this), value); 
     337                } 
     338              ) 
     339            ); 
     340          } 
     341          else 
     342          { 
     343            var options=this.data('options'); 
     344            return(options.showTotalRow); 
     345          } 
     346        }, // showTotalRow 
     347 
     348 
    287349       currentPage: function (value) 
    288350        { 
     
    509571 
    510572          return(properties.loadedData); 
    511         } // loadedData 
     573        }, // loadedData 
     574 
     575      /** 
     576       * refresh table content 
     577       * @param Integer value: page; if not specified, refresh current page 
     578       */ 
     579      refreshContent: function (value) 
     580        { 
     581          privateMethods.loadContent($(this), value); 
     582        }, 
     583 
     584      /** 
     585       * force table to resize columns 
     586       */ 
     587      resizeContent: function (value) 
     588        { 
     589          privateMethods.setColumnsSize($(this)); 
     590        }, 
     591 
    512592 
    513593    }; // methods 
     
    528608          properties.initialized=false; 
    529609 
     610          privateMethods.setAutoLoad(object, (value.autoLoad!=null)?value.autoLoad:options.autoLoad); 
     611          privateMethods.setShowTotalRow(object, (value.showTotalRow!=null)?value.showTotalRow:options.showTotalRow); 
    530612          privateMethods.setPostData(object, (value.postData!=null)?value.postData:options.postData); 
    531613          privateMethods.setPostUrl(object, (value.postUrl!=null)?value.postUrl:options.postUrl); 
     
    549631 
    550632 
    551  
    552           privateMethods.loadContent(object); 
     633          if(options.autoLoad) 
     634            privateMethods.loadContent(object); 
    553635 
    554636        }, 
     637 
     638      setAutoLoad : function (object, value) 
     639        { 
     640          var properties=object.data('properties'), 
     641              options=object.data('options'); 
     642 
     643          if((!properties.initialized || value!=options.autoLoad) && (value==true || value==false)) 
     644          { 
     645            options.autoLoad=value; 
     646          } 
     647 
     648          return(options.autoLoad); 
     649        }, // setAutoLoad 
     650 
     651      setShowTotalRow : function (object, value) 
     652        { 
     653          var properties=object.data('properties'), 
     654              options=object.data('options'); 
     655 
     656          if((!properties.initialized || value!=options.showTotalRow) && (value=='visible' || value=='hidden' || value=='auto')) 
     657          { 
     658            options.showTotalRow=value; 
     659            if(properties.initialized) 
     660              privateMethods.showTotalRow(object); 
     661          } 
     662 
     663          return(options.showTotalRow); 
     664        }, // setAutoLoad 
     665 
    555666 
    556667      setColumns : function (object, value) 
     
    827938 
    828939      /* 
    829        * update DOM for headers & footer 
     940       * update DOM for headers & footer & total row 
    830941       */ 
    831942      updateTable : function (object) 
     
    840951 
    841952          objects.headerTr.children().remove(); 
     953          objects.totalRowTr.children().remove(); 
    842954 
    843955          properties.hasSortableButton=false; 
     
    9301042 
    9311043            objects.headerTr.append(td); 
     1044 
     1045            td=$('<td/>'); 
     1046            if(options.columns[i].width!='') td.attr('style', 'width:'+options.columns[i].width+';'); 
     1047            objects.totalRowTr.append(td); 
    9321048          } 
    9331049 
     
    9591075                            modal:true, 
    9601076                            width:cWidth, 
    961                             height:150, 
     1077                            height:250, 
    9621078                            autoHeight:false, 
    9631079                            title:options.sortBoxTitle, 
     
    9821098                ).append(button); 
    9831099            objects.headerTr.append(td); 
     1100 
     1101            td=$('<td/>'); 
     1102            objects.totalRowTr.append(td); 
    9841103          } 
    9851104        }, //updateTable 
    9861105 
    987  
    988       loadContent : function (object) 
     1106      /** 
     1107       * load table content 
     1108       * 
     1109       * @param Integer page: page to load; if not specified, use the current page 
     1110       */ 
     1111      loadContent : function (object, page) 
    9891112        { 
    9901113          var data=null, 
     
    9971120          if(options.postUrl=='') return(false); 
    9981121 
     1122          if(page>0 && page <= objects.footerPagesNavigator.inputPages('nbPages')) 
     1123            options.currentPage=page; 
    9991124          privateMethods.displayLoading(object, true); 
    10001125 
     
    10301155                  msg=$.parseJSON(msg); 
    10311156 
    1032                   if(msg==null) return(false); 
     1157                  if(msg==null || msg.rows==null) 
     1158                  { 
     1159                    privateMethods.displayLoading(object, false); 
     1160                    return(false); 
     1161                  } 
    10331162 
    10341163                  if(options.contentLoaded) object.trigger('dynamicTableContentLoaded', msg); 
     
    10361165                  objects.content.find('tr').unbind('click.dynamicTable'); 
    10371166                  objects.content.children().remove(); 
     1167                  objects.contentContainer.scrollTop('0px'); 
    10381168 
    10391169                  delete properties.loadedData; 
     
    10781208                  } 
    10791209 
     1210                  if(msg.total!=null && $.isArray(msg.total)) 
     1211                  { 
     1212                    properties.totalRowHasData=true; 
     1213                    objects.totalRowTr.children().each( 
     1214                      function (index) 
     1215                      { 
     1216                        $(this).html(msg.total[index]); 
     1217                      } 
     1218                    ); 
     1219                  } 
     1220                  else 
     1221                  { 
     1222                    properties.totalRowHasData=false; 
     1223                  } 
     1224 
    10801225                  if(options.click) 
    10811226                    objects.content.find('tr').bind('click.dynamicTable', options.click); 
    10821227 
     1228                  privateMethods.showTotalRow(object); 
    10831229                  privateMethods.setColumnsSize(object); 
    10841230                  privateMethods.displayLoading(object, false); 
     
    10881234                  // 
    10891235                  objects.loadingContent.attr('style', 'display:none;'); 
     1236                  objects.loadingContentWorkInProgress.attr('style', 'display:none;'); 
    10901237                }, 
    10911238            } 
     
    10961243        { 
    10971244          var cols=[], 
     1245              options=object.data('options'), 
     1246              properties=object.data('properties'), 
    10981247              objects=object.data('objects'); 
    10991248 
     
    11071256          ); 
    11081257 
    1109  
     1258          // resize first row of table content 
    11101259          objects.content.find('tr:first td').each( 
    11111260            function (index) 
     
    11251274          ); 
    11261275 
     1276          // resize total row if displayed 
     1277          if(options.showTotalRow=='visible' || 
     1278             options.showTotalRow=='auto' && properties.totalRowHasData) 
     1279          { 
     1280            objects.totalRowTr.find('td').each( 
     1281              function (index) 
     1282              { 
     1283                var style=''; 
     1284 
     1285                if(index==(cols.length-1)) 
     1286                { 
     1287                  style='max-width:'; 
     1288                } 
     1289                else 
     1290                { 
     1291                  style='width:'; 
     1292                } 
     1293                $(this).attr('style', style+cols[index]+'px;'); 
     1294              } 
     1295            ); 
     1296          } 
     1297 
    11271298          return(true); 
    11281299        }, //setColumnsSize 
     
    11351306          { 
    11361307            objects.loadingContent.attr('style', 'display:block;width:'+objects.contentContainer.width()+'px;height:'+objects.contentContainer.height()+'px;'); 
     1308            objects.loadingContentWorkInProgress.css( 
     1309              { 
     1310                'display':'block', 
     1311                'width':objects.contentContainer.width()+'px', 
     1312                'height':objects.contentContainer.height()+'px', 
     1313                'background-position':Math.round((objects.contentContainer.width()-16)/2)+'px '+Math.round((objects.contentContainer.height()-16)/2)+'px' 
     1314              } 
     1315            ); 
    11371316          } 
    11381317          else 
    11391318          { 
    11401319            objects.loadingContent.attr('style', 'display:none;'); 
     1320            objects.loadingContentWorkInProgress.attr('style', 'display:none;'); 
    11411321          } 
    11421322        }, //displayLoading 
    11431323 
    1144       updateNbItems: function (object) 
     1324      showTotalRow : function (object) 
    11451325        { 
    11461326          var options=object.data('options'), 
     
    11481328              properties=object.data('properties'); 
    11491329 
     1330          switch(options.showTotalRow) 
     1331          { 
     1332            case 'visible': 
     1333              objects.totalRowContent.css('display',  'block'); 
     1334              break; 
     1335            case 'hidden': 
     1336              objects.totalRowContent.css('display', 'none'); 
     1337              break; 
     1338            case 'auto': 
     1339              if(properties.totalRowHasData) 
     1340              { 
     1341                objects.totalRowContent.css('display', 'block'); 
     1342              } 
     1343              else 
     1344              { 
     1345                objects.totalRowContent.css('display', 'none'); 
     1346              } 
     1347              break; 
     1348          } 
     1349        }, // showTotalRow 
     1350 
     1351      updateNbItems: function (object) 
     1352        { 
     1353          var options=object.data('options'), 
     1354              objects=object.data('objects'), 
     1355              properties=object.data('properties'); 
     1356 
    11501357          if(properties.nbItems>1) 
    11511358          { 
     
    11571364          } 
    11581365 
    1159         } 
     1366        } // updateNbItems 
    11601367 
    11611368    }; 
  • extensions/GrumPluginClasses/js/ui.inputFilterBox.js

    r16012 r17562  
    644644                  multiple:($.inArray('in', options.filterOperators)>-1), 
    645645                  colsWidth:[], 
     646                  colsCss:['col1', 'col2', 'col3'], 
    646647                  items:itemsList, 
    647648                  serverUrl:serverUrl, 
  • extensions/GrumPluginClasses/main.inc.php

    r16012 r17562  
    22/* 
    33Plugin Name: Grum Plugins Classes.3 
    4 Version: 3.5.2 
     4Version: 3.5.3 
    55Description: Collection de classes partagées entre mes plugins (existants, ou à venir) / Partaged classes between my plugins (actuals or futures) 
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=199 
    77Author: grum@piwigo.org 
    8 Author URI: http://photos.grum.fr/ 
     8Author URI: http://www.grum.fr/ 
    99*/ 
    1010 
     
    1313  Author     : Grum 
    1414    email    : grum@piwigo.org 
    15     website  : http://photos.grum.fr 
     15    website  : http://www.grum.fr 
    1616 
    1717    << May the Little SpaceFrog be with you ! >> 
     
    163163|         |            |   . Request builder interface don't work 
    164164|         |            | 
    165 | 3.5.2   | 2011/05/15 | * Add function to manage special markup 
     165| 3.5.2   | 2012/05/15 | * Add function to manage special markup 
    166166|         |            |   . BB like markup [b],[i],[url]... 
    167167|         |            |   . [var=<name>] markup 
     
    179179|         |            | 
    180180|         |            | * optimization & rename of some JS framework components 
     181|         |            | 
     182| 3.5.3   | 2012/08/14 | * mantis bug:2723 
     183|         |            |   . Error message when on page using GPC tabsheets 
     184|         |            | 
    181185|         |            | 
    182186|         |            | 
Note: See TracChangeset for help on using the changeset viewer.