diff --git a/.travis.yml b/.travis.yml index 7dea8765cb2..a5330042b58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,149 +1,308 @@ # This script is used by Travis CI to run automatically Continuous test integration # from Dolibarr GitHub repository. -# Command run is phpunit # For syntax, see http://about.travis-ci.org/docs/user/languages/php/ +sudo: required + +language: php + +php: +- '5.3' +- '5.4' +- '5.5' +- '5.6' +- '7.0' +- nightly + +addons: + mariadb: '10.0' + # FIXME: find a way to import a MySQL dump into PostgreSQL + #postgresql: '9.3' + apt: + packages: + # We need a webserver to test the webservices + # Let's install Apache with. + - apache2 + # mod_php is not supported by Travis. Add fcgi. We install FPM later on. + - libapache2-mod-fastcgi + +# Start on every boot +services: +- memcached + +env: + global: + # Set to true for very verbose output + - DEBUG=false + matrix: + # MariaDB overrides MySQL installation so it's not possible to test both yet + #- DB=mysql + - DB=mariadb + # FIXME: find a way to import a MySQL dump into PostgreSQL + #- DB=postgresql + # TODO + #- DB=sqlite + # See https://docs.travis-ci.com/user/languages/php/#Apache-%2B-PHP + #- WS=apache + # See https://github.com/DracoBlue/travis-ci-nginx-php-fpm-test + #- WS=nginx + +matrix: + fast_finish: true + allow_failures: + - php: '7.0' + - php: nightly + # FIXME + #- env: DB=postgresql + # TODO + #- env: DB=sqlite + notifications: email: on_success: never # [always|never|change] default: change on_failure: change # [always|never|change] default: always - -addons: - postgresql: "9.3" + irc: + channels: + - "chat.freenode.net#dolibarr" + on_success: change + on_failure: always + use_notice: true -services: - - memcached # will start memcached +before_install: +- | + echo "Disabling Xdebug for composer" + export PHP_VERSION_NAME=$(phpenv version-name) + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/conf.d/xdebug.ini /tmp/xdebug.ini + phpenv config-rm xdebug.ini + echo -# This will tell travis to run phpunit -language: php -php: -# - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 +install: +- | + echo "Updating Composer" + composer self-update + echo -matrix: - allow_failures: - - php: 7.0 +- | + echo "Installing Parallel Lint" + composer -n require jakub-onderka/php-parallel-lint ^0 + composer -n require jakub-onderka/php-console-highlighter ^0 + echo -env: - - DB=mysql -# - DB=postgres +- | + echo "Installing PHP Unit" + if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ] || [ "$TRAVIS_PHP_VERSION" = '5.5' ]; then + composer -n require phpunit/phpunit ^4 + fi + if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + composer -n require phpunit/phpunit ^5 + fi + echo -before_script: - - echo Start travis - - echo Current dir is `pwd` - - echo Home dir is `echo ~` - - export PHPV=`phpenv version-name` - - echo PHP version $PHPV -# - echo Update composer -# - ~/.phpenv/versions/$(phpenv version-name)/bin/composer.phar self-update - - echo PHPUnit version - - which phpunit - - phpunit --version - - echo Install phpcs then show installed rules - - pyrus install pear/PHP_CodeSniffer - - phpenv rehash - - which phpcs - - phpcs --version - - phpcs -i - - echo Create dir $(pwd)/htdocs/documents - - sudo mkdir -p $(pwd)/htdocs/documents/admin/temp; - - sudo touch $(pwd)/htdocs/documents/dolibarr.log; - - sudo chmod a+rwx /home; sudo chmod a+rwx /home/travis; sudo chmod -R a+rwx /home/travis/build; - - sudo chmod -R a+rwx $(pwd); - - sudo chown -R www-data:travis $(pwd)/htdocs/documents; - - find $(pwd)/htdocs/documents -type d -exec ls -alt {} \; - - echo Edit php.ini file - - echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini -# - echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - sh -c "if [ '$PHPV' = '5.3' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - - cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - echo Mysql version - # INSTALL MYSQL 5.6 - # (https://github.com/piwik/piwik/commit/20bd2e1c24e5d673dce3feb256204ad48c29f160) - # TODO: Remove when mysql 5.6 is provided by travis. - # Otherwise, our migrations will raise a syntax error. - - "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5" - - "sudo apt-get autoremove" - - "sudo apt-get install libaio1" - - "wget -O mysql-5.6.14.deb http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-debian6.0-x86_64.deb/from/http://cdn.mysql.com/" - - "sudo dpkg -i mysql-5.6.14.deb" - - "sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server" - - "sudo ln -s /opt/mysql/server-5.6/bin/* /usr/bin/" - - "sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf" - - "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf" - - "sudo sed -i'' 's/basedir[^=]\\+=.*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" - - "sudo /etc/init.d/mysql.server start" - - mysql --version - - mysql -e "SELECT VERSION();" - # /END MYSQL 5.6- mysql --version - - echo Init database - - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi" - - echo Create config file htdocs/conf/conf.php - - echo ' htdocs/conf/conf.php - - sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then echo '$'dolibarr_main_db_type=\'mysqli\'';' >> htdocs/conf/conf.php; fi" - - echo '$'dolibarr_main_url_root=\'http://localhost/\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_document_root=\'$(pwd)/htdocs\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_data_root=\'$(pwd)/htdocs/documents\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_host=\'localhost\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_name=\'myapp_test\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_db_user=\'travis\'';' >> htdocs/conf/conf.php - - echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> htdocs/conf/conf.php - - echo '?>' >> htdocs/conf/conf.php - - echo Show conf.php content - - cat htdocs/conf/conf.php - - echo Install apache server - - sudo apt-get update - - sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-pgsql php5-intl - - sudo sed -i -e "s,/var/www,$(pwd)/htdocs,g" /etc/apache2/sites-available/default - - echo Show default virtual host - - sudo cat /etc/apache2/sites-available/default - - sudo /etc/init.d/apache2 restart - - wget http://localhost/ - - sudo cat /etc/apache2/envvars - - sudo cat /var/log/apache2/error.log - - cat index.html +- | + echo "Installing PHP CodeSniffer" + composer require squizlabs/php_codesniffer ^2 + echo +- | + echo "Adding Composer binaries to the path" + export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH" + echo +before_script: +- | + echo "Re-enabling Xdebug for PHP CodeSniffer and PHP Unit" + phpenv config-add /tmp/xdebug.ini + echo -script: - - cd htdocs/install - - date -# - php upgrade.php 3.4.0 3.5.0 ignoredbversion > upgrade340350.log -# - php upgrade2.php 3.4.0 3.5.0 ignoredbversion > upgrade340350-2.log - - php upgrade.php 3.5.0 3.6.0 ignoredbversion > upgrade350360.log - - php upgrade2.php 3.5.0 3.6.0 ignoredbversion > upgrade350360-2.log - - php upgrade.php 3.6.0 3.7.0 ignoredbversion > upgrade360370.log - - php upgrade2.php 3.6.0 3.7.0 ignoredbversion > upgrade360370-2.log - - php upgrade.php 3.7.0 3.8.0 ignoredbversion > upgrade370380.log -# - cat upgrade370380.log - - php upgrade2.php 3.7.0 3.8.0 ignoredbversion > upgrade370380-2.log - - php upgrade.php 3.8.0 3.9.0 ignoredbversion > upgrade380390.log -# - cat upgrade380390.log - - php upgrade2.php 3.8.0 3.9.0 ignoredbversion > upgrade380390-2.log -# - cat upgrade380390-2.log - - cd ../.. - - date - - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php - - date -# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1 - - phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1 - - date +- | + echo "Setting up PHP" + echo + echo "Set timezone" + echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then + echo + echo "Enabling APC for PHP <= 5.4" + # Documentation says it should be available for PHP <= 5.6 but it's not for 5.5 and 5.6! + echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + echo + echo "Enabling Memcached for PHP <= 5.4" + # Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0 and nightly! + echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + fi + phpenv rehash + echo + +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + # Check PHP + php -i + # Check PHP CodeSniffer installation + which phpcs + phpcs --version + phpcs -i + # Check PHPUnit installation + which phpunit + phpunit --version + # Check MySQL + mysql --version + mysql -e "SELECT VERSION();" + echo + fi + +- | + echo "Setting up database" + if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then + echo "MySQL" + mysql -e 'DROP DATABASE IF EXISTS travis;' + mysql -e 'CREATE DATABASE IF NOT EXISTS travis;' + mysql -D travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql + fi + # FIXME: find a way to import a MySQL dump into PostgreSQL + #if [ "$DB" = 'postgresql' ]; then + # pgsql travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql + #fi + # TODO: SQLite + echo + +- | + echo "Setting up Dolibarr" + export CONF_FILE=htdocs/conf/conf.php + echo ' $CONF_FILE + echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE + echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE + echo '$'dolibarr_main_data_root=\'$TRAVIS_BUILD_DIR/documents\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE + if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then + echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE + fi + # FIXME + #if [ "$DB" = 'postgresql' ]; then + # echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE + #fi + # TODO: SQLite + echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE + echo + +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + cat $CONF_FILE + echo + fi + +- | + echo "Create documents directory and set permissions" + # and admin/temp subdirectory needed for unit tests + mkdir -p documents/admin/temp + echo + +- | + echo "Setting up Apache + FPM" + # enable php-fpm + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf + if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + # Copy the included pool + cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf + fi + if [ "$DEBUG" = true ]; then + cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf + fi + sudo a2enmod rewrite actions fastcgi alias + echo "cgi.fix_pathinfo = 1" >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + if [ "$DEBUG" = true ]; then + cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + fi + ~/.phpenv/versions/$PHP_VERSION_NAME/sbin/php-fpm + # configure apache virtual hosts + sudo cp -f build/travis-ci/apache.conf /etc/apache2/sites-available/default + sudo sed -e "s?%TRAVIS_BUILD_DIR%?$TRAVIS_BUILD_DIR?g" --in-place /etc/apache2/sites-available/default + if [ "$DEBUG" = true ]; then + sudo cat /etc/apache2/sites-available/default + fi + sudo service apache2 restart + echo + +script: +- | + echo "Checking webserver availability" + # Ensure we catch errors + set -e + wget http://127.0.0.1 + if [ "$DEBUG" = true ]; then + cat index.html + fi + set +e + echo + +- | + echo "Checking PHP syntax errors" + # Ensure we catch errors + set -e + parallel-lint --exclude htdocs/includes --blame . + set +e + echo + +# TODO: dev/* checks + +- | + echo "Checking coding style" + # Ensure we catch errors + set -e + # Exclusions are defined in the ruleset.xml file + phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/codesniffer/ruleset.xml --encoding=utf-8 . + set +e + echo + +# TODO: Check Javascript (jshint?) + +# TODO: Check CSS (csslint?) + +# TODO: check SQL syntax (pgsanity?) + +- | + echo "Upgrading Dolibarr" + # Ensure we catch errors + set -e + cd htdocs/install + php upgrade.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360.log + php upgrade2.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360-2.log + php upgrade.php 3.6.0 3.7.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade360370.log + php upgrade2.php 3.6.0 3.7.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade360370-2.log + php upgrade.php 3.7.0 3.8.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade370380.log + php upgrade2.php 3.7.0 3.8.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade370380-2.log + php upgrade.php 3.8.0 3.9.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade380390.log + php upgrade2.php 3.8.0 3.9.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade380390-2.log + cd - + set +e + echo + +- | + echo "Unit testing" + # Ensure we catch errors + set -e + phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php + set +e + echo + +after_success: + +after_failure: +- | + if [ "$DEBUG" = true ]; then + echo "Debugging informations" + # Upgrade log files + cat *.log + # Dolibarr log file + cat documents/dolibarr.log + # Apache log file + sudo cat /var/log/apache2/error.log + # MariaDB log file + sudo cat /var/log/mysql/error.log + # TODO: PostgreSQL log file + echo + fi after_script: -# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log - - echo Output apache log file; sudo cat /var/log/apache2/error.log - - echo End travis - diff --git a/COPYRIGHT b/COPYRIGHT index 9b848744a69..191639ed001 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -19,7 +19,7 @@ EvalMath 1.0 BSD Yes Escpos-php MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers FPDI 1.5.2 Apache Software License 2.0 Yes PDF templates management GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package) -Mobiledetect 2.8.3 MIT License Yes Detect mobile devices browsers +Mobiledetect 2.8.17 MIT License Yes Detect mobile devices browsers NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package) PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files @@ -28,7 +28,7 @@ php-iban 1.4.7 LGPL-3+ Yes PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests Restler 3.0 LGPL-3+ Yes Library to develop REST Web services -TCPDF 6.2.6 LGPL-3+ Yes PDF generation +TCPDF 6.2.12 LGPL-3+ Yes PDF generation TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement JS libraries: diff --git a/ChangeLog b/ChangeLog index 9cb28633bfd..d2b0d63216a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,17 +6,151 @@ WARNING: Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40. Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost. -You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration. +You may also experience troubles with Mysql 5.5.41/42/43 with error "Lost connection" +during migration. Upgrading to any other version or any other database system is abolutely required BEFORE trying make a Dolibarr upgrade. ***** ChangeLog for 3.9 compared to 3.8.* ***** +For users: +NEW: A new and more modern look for "eldy" theme. +NEW: Introduce a new theme called "Material Design". +NEW: #3767 Allow changing multiple prices of a product at once +NEW: Add a button to purge criteria in user list +NEW: Add a filter field to restrict list of member when doing a LDAP list request. Use also this filter into ldap command line script making sync from ldap to dolibarr. +NEW: Add all assigned users and all extrafields data in new event when we createFromClone +NEW: Add hidden option to use standard position address in crabe model For electronic sending solutions +NEW: Add a refresh button on page list of direct print jobs. +NEW: Add a tab "document" in donation card +NEW: Add cancel button on thirdparty create page +NEW: Add chart of product statistics +NEW: Add color on categories +NEW: Add css class and ids on column of detail lines to allow module to easily manipulate fields. +NEW: Add date value filter on account records list +NEW: Add __PROJECT_NAME__ tag for customer invoice emails +NEW: Add option PDF_ALLOW_HTML_FOR_FREE_TEXT to be able to enter pdf footer text with wysiwyg editor. +NEW: Add fields into llx_cronjobs to be able to use job table to queue one shot jobs. +NEW: Add filter on status on invoice list +NEW: Add filter on status on shipments +NEW: Add gender property managed on user card FIX: Better error messages when uploading photo of user when permission to write are not granted +NEW: Add help tooltips on fields of dictionary edit pages. +NEW: Add hidden option MAIN_MAILFORM_DISABLE_ENTERKEY to disable the key enter into the form to send email. +NEW: Add hook in send mail +NEW: Add hooks on list of members to allow an external module to add more fields into list view. +NEW: Add hooks to allow an external module to complete list of events into calendar views. +NEW: Add $ID$ into extrafields management to allow use of current object id on filter for select list from table and checkbox list from table +NEW: Add info page on product card +NEW: Add into about page, a sample text to use to promote new version release (visible only if version is last stable) +NEW: Add none/all selection into list of files for FTP browser module +NEW: Add opportunity amount on project card. +NEW: Add parameter to add a link to use "date of invoice" in one click when fille a payment card. +NEW: Add planned workload and declared progress on project summary list on project home page (data aggregated from tasks of project) +NEW: Add "productpricecard" hook and uniformize code +NEW: Add ref and label of project into export +NEW: Add status into filters of graph +NEW: Add tab document on salaries payment +NEW: Add thumb of users into thumbs stats on home page +NEW: A link to the bugtracker can be enabled in the GUI +NEW: Better look for POS. More responsive design. +NEW: Can add project search on left menu search area +NEW: Can assign a task to yourself to have it appear on timesheet +NEW: Can choose fields to show on project list +NEW: Can close a project that has draft status with no need to switch it to validate status before. +NEW: Can edit Background color for Top menu and Background color for table title line. +NEW: Can edit email template using WYSIWYG editor +NEW: Can edit list of prospect status for customers/prospects. Add a new entry into dictionary table to manage list fo status. Removed deprecated files. +NEW: Can filter on contact status in prospect list. Removed deprecated menu entry. +NEW: Can filter proposal on a tag of a product Enhance also the prototype test_arrays to include select form before table. +NEW: Can filter proposal, orders or invoices with criteria "contain at least one product with following tag" +NEW: Can select fields to show in product list. Extrafields are also supported. +NEW: Can select fields to show into the contact list. Extrafields are also supported. +NEW: Can select which field to show into list of users. Extrafields are also supported. +NEW: Can set default value of event type when creating an event (if type of event option is used). +NEW: Can upload files on leave requests. Use more standard permissions. +NEW: Can use a "|" to make a OR search on several different criterias into text filters of tables. +NEW: Can use the * as a joker characters into search boxes of lists +NEW: Clean code into salary module, debug and add indexes NEW: Can filter on user list and salary payments on user with naural search. +NEW: clone action on agenda events +NEW: Color category is visible onto the thumb of tags on thirdparty, or products cards. +NEW: conf to use next product/service ref when we clone a product/service +NEW: Contract module can be used to follow both sold and bought contracts/recurring subscriptions. +NEW: Enhance prototype, project list and proposal list with new hooks to have an external module able to add more fields. +NEW: Enhance style engine. Add option to set color of links. +NEW: Enter amount for withdraws requests +NEW: FEATURE PROPOSAL: on proposal, order or invoice creation from scratch, reload page after customer selection so its informations can be loaded +NEW: Filter "active" by default on user list. Fix label of permission of project module. +NEW: Forms are using the tab look, even in creation mode. +NEW: Free text for cheque deposit receipt can be HTML content. +NEW: Hidden option THEME_ELDY_USE_HOVER is stable enough to become officialy visible into setup. +NEW: If module salaries is on, you can set a hourly value for time consumed by users. Each time a user enter its time consumed on a project, a calculation is done to provide the cost for human services. This value appears into the "Transversal view" of project. +NEW: Import Sales representatives of third parties +NEW: Increase length of bank code to 128 char #3704 +NEW: info function for product card +NEW: Into the overview of projects, the name of thirdparty appears into combo lists of elements to link to project. +NEW: Introduce a "code" into fiels to describe vat. This will allow to suggest different vat lines with same value with ability to differentiate them. +NEW: Introduce cost price on product. +NEW: Introduce hidden option MAIN_LANDING_PAGE to decide the home page visible just after login. +NEW: Introduce hidden option MAIN_REPLACE_TRANS_xx_XX to allow simple replacement of translated string on the fly. +NEW: Introduce table llx_overwrite_trans to be able to overwrite translations by simple database edition. +NEW: Introduce use of cache for thumbs images of users +NEW: Experimental level multiprice generator based on per cent variations over base price +NEW: List of projects of a thirdparty are visible on a project tab +NEW: Merge all left menu search boxes into one. +NEW: Merge all search fields of an area page into one search box +NEW: next ref on clone doesn't need conf, it's used if mask exists +NEW: ODT generators can set meta properties of ODT file +NEW: On list of thirdparties, user can select fields to show. Make phpunit test working again localy. Add missing columns into llx_expedition. +NEW: Only arrow of current sorted field is visible into table views. This save a lot of spaces. You can click on the column title to sort. This make clickable area larger and click to sort is easier. +NEW: On page to see/edit contact of an ojbect, the status of contact is visible (for both external and internal users). +NEW: Option encrypt password into databae is set to on by default on first install. +NEW: print event type on third party card tab agenda list (only if AGENDA_USE_EVENT_TYPE = 1) +NEW: Provide an easier way to understand if an order can be shipped. +NEW: Quick searh filter works on invoice, proposal, order, intervention, contract +NEW: Rename install "etape" into english "step" +NEW: Replace category edition page on members with new select2 component. +NEW: Show photo of logged user into login top right block. NEW: If no photo is available for user, we show a generic photo depending on gender +NEW: Show photo of user into user list. A new function getImageFileNameForSize was also introduced to choose image best size according to usage to save bandwith. +NEW: Show which fields are used for search when doing a generic search from the quick search form. +NEW: Statistic graphs on products offer a filter on product type (product / service or both) +NEW: Support logging to a Sentry server +NEW: Syslog displays configuration errors +NEW: The clicktodial module is now able to provide link "tel:" on phone numbers. So it is also possible to use clicktodial with a client solution like the "xivo" local client. +NEW: The conditional IF into ODT templates works also on not defined var so we can show data only if defined. Close #3819 +NEW: The free text in PDF footer can now be a HTML content. So the WYSIWYG editor is on by default to edit it into module setup. +NEW: The quick search box on left menu can also search into expense reports. +NEW: The search box and the bookmarks are now rendered by the menu manager. +NEW: The thirdparties tabs, the contacts tabs and the members tabs are now presented using a new top banner, saving space and using a same way to show address, status and navigation arrows. +NEW: Thumbs for statistics on main page are fully clicable (not only link inside the thumb) +NEW: Translate extrafield's labels +NEW: Uniformize way of working for search filters. One filter per object. +NEW: Used matching icons for Material Design theme +NEW: Use new select2 component for juridical status, country and state selection. +NEW: When creating order, proposal or invoice from thirdparty card, the project is asked during creation. A link to create project if it does not exists is also available. NEW: Uniformize form creation of proposal to add public and private notes during creation like done for order and invoice. + +For developers: +NEW: Add a new widget $form->selectArrayAjax() to use combo list with content coming from an Ajax URL. +NEW: Add doActions hook method call in contract card +NEW: Added doActions hooks to user cards +NEW: Add a new component to select categories/tags from the main edit page of product. The dedicated tab is also removed. +NEW: upgrade jQuery Component Datable (and extras) to 1.10.7 +NEW: script to build API class from existing class +NEW: Prepare database to store information per files (for example to define if an image can be used as a cover or not) +NEW: log hooks loading +NEW: Introduce property module_position so a module can decide where it appears into list of modules. +NEW: Introduce function dolGetFirstLineOfText +NEW: Introduce a method getDefaultCreateValueForField for developers to get a default value to use for a form in create mode. Implement it for public and private notes. +NEW: A module can add its entries into cron module. +NEW: Framework feature. To have a page being loaded at same scrollbar level after a click on a href link, just add the class "reposition" on this link. +NEW: Add exemple of setup for multitail to render dolibarr log files +NEW: Add restler framework. First step to build REST API into Dolibarr. + WARNING: Following changes may create regression for some external modules, but were necessary to make Dolibarr better: +- Deprecated Product::setPriceExpression. Use Product::update instead - Deprecated hidden option MAIN_USE_CUSTOM_TRANSLATION has been removed. Use table llx_overwrite_trans instead. - Trigger LINECONTRACT_INSERT has been renamed into LINECONTRACT_CREATE to match common denomination. - A lot hooks used into PDF generation were not correctly implemented. We had to fix this. The result si that @@ -26,6 +160,8 @@ This is list of hooks modified: 'pdf_getlinenum', 'pdf_getlineref', 'pdf_getlineref_supplier', 'pdf_getlinevatrate', 'pdf_getlineupexcltax', 'pdf_getlineupwithtax', 'pdf_getlineqty', 'pdf_getlineqty_asked', 'pdf_getlineqty_shipped', 'pdf_getlineqty_keeptoship', 'pdf_getlineunit', 'pdf_getlineremisepercent', 'pdf_getlineprogress', 'pdf_getlinetotalexcltax', 'pdf_getlinetotalwithtax' +- Renamed Product::isservice and Product::isproduct to match PSR-2 +- Remove deprecated Product::hidden property diff --git a/build/.gitignore b/build/.gitignore old mode 100755 new mode 100644 diff --git a/build/aps/APP-META-1.1.xml b/build/aps/APP-META-1.1.xml old mode 100755 new mode 100644 diff --git a/build/aps/APP-META-1.2.xml b/build/aps/APP-META-1.2.xml old mode 100755 new mode 100644 diff --git a/build/aps/README b/build/aps/README old mode 100755 new mode 100644 diff --git a/build/aps/configure.php b/build/aps/configure.php index f4bd03b5d9e..1b2565e3dc8 100755 --- a/build/aps/configure.php +++ b/build/aps/configure.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php \ No newline at end of file diff --git a/build/debian/conf.php.install b/build/debian/conf.php.install old mode 100755 new mode 100644 index e439e80caef..c0ba3bdb120 --- a/build/debian/conf.php.install +++ b/build/debian/conf.php.install @@ -226,5 +226,3 @@ $dolibarr_main_prod='0'; # Default value: 0 (use database value if exist) # Examples: # $dolibarr_mailing_limit_sendbyweb='0'; - -?> diff --git a/build/debian/dolibarr.install b/build/debian/dolibarr.install old mode 100755 new mode 100644 diff --git a/build/debian/dolibarr.lintian-overrides b/build/debian/dolibarr.lintian-overrides old mode 100755 new mode 100644 diff --git a/build/debian/dolibarr.templates.futur b/build/debian/dolibarr.templates.futur old mode 100755 new mode 100644 diff --git a/build/debian/install.forced.php.install b/build/debian/install.forced.php.install old mode 100755 new mode 100644 index a6347863b1d..099aab0675a --- a/build/debian/install.forced.php.install +++ b/build/debian/install.forced.php.install @@ -42,5 +42,3 @@ $force_install_lockinstall='444'; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; //$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/debian/po/POTFILES.in b/build/debian/po/POTFILES.in old mode 100755 new mode 100644 diff --git a/build/debian/po/fr.po b/build/debian/po/fr.po old mode 100755 new mode 100644 diff --git a/build/doxygen/doxygen_footer.html b/build/doxygen/doxygen_footer.html old mode 100755 new mode 100644 diff --git a/build/doxygen/doxygen_header.html b/build/doxygen/doxygen_header.html old mode 100755 new mode 100644 diff --git a/build/generate_filecheck_xml.php b/build/generate_filecheck_xml.php index dbe96b4c0e9..665bb3a65d1 100644 --- a/build/generate_filecheck_xml.php +++ b/build/generate_filecheck_xml.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index c22c977bdf0..8fc8e49aaf8 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -533,8 +533,10 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PCLZip`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.txt`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/PHPExcel/Shared/PCLZip`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/utils`; diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 2bf516dfe88..b4a13badbf4 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -9,7 +9,7 @@ beta version of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z-w in htdocs/filefunc.inc.php - Commit all changes. @@ -31,7 +31,7 @@ complete release of Dolibarr, step by step. - Check all files are commited. - Update version/info in ChangeLog. -To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" +To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" - Update version number with x.y.z in htdocs/filefunc.inc.php - Commit all changes. diff --git a/build/rpm/conf.php b/build/rpm/conf.php old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr-forrpm.patch b/build/rpm/dolibarr-forrpm.patch old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr.desktop b/build/rpm/dolibarr.desktop old mode 100755 new mode 100644 diff --git a/build/rpm/file_contexts.dolibarr b/build/rpm/file_contexts.dolibarr old mode 100755 new mode 100644 diff --git a/build/rpm/install.forced.php.fedora b/build/rpm/install.forced.php.fedora old mode 100755 new mode 100644 index 994689bbfa1..108455a9403 --- a/build/rpm/install.forced.php.fedora +++ b/build/rpm/install.forced.php.fedora @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.generic b/build/rpm/install.forced.php.generic old mode 100755 new mode 100644 index 718eade3696..161f69cdbb3 --- a/build/rpm/install.forced.php.generic +++ b/build/rpm/install.forced.php.generic @@ -20,4 +20,3 @@ $force_install_lockinstall='444'; // Value to overwrite path to use shared libraries/fonts instead of embedded one // We don't force any external lib with generic package -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.mandriva b/build/rpm/install.forced.php.mandriva old mode 100755 new mode 100644 index 53a8a53b60c..266468c7f33 --- a/build/rpm/install.forced.php.mandriva +++ b/build/rpm/install.forced.php.mandriva @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/rpm/install.forced.php.opensuse b/build/rpm/install.forced.php.opensuse old mode 100755 new mode 100644 index 06a0074b04d..b644cea6e24 --- a/build/rpm/install.forced.php.opensuse +++ b/build/rpm/install.forced.php.opensuse @@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH=''; //$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; //$force_dolibarr_js_JQUERY_FLOT='/javascript/flot'; $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; - -?> \ No newline at end of file diff --git a/build/travis-ci/apache.conf b/build/travis-ci/apache.conf new file mode 100644 index 00000000000..5ba713924f2 --- /dev/null +++ b/build/travis-ci/apache.conf @@ -0,0 +1,18 @@ + + DocumentRoot %TRAVIS_BUILD_DIR%/htdocs + + + Options FollowSymLinks MultiViews ExecCGI + AllowOverride All + Order deny,allow + Allow from all + + + # Wire up Apache to use Travis CI's php-fpm. + + AddHandler php5-fcgi .php + Action php5-fcgi /php5-fcgi + Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi + FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization + + diff --git a/composer.json b/composer.json index 9061efb3bfe..583e08078af 100644 --- a/composer.json +++ b/composer.json @@ -18,12 +18,10 @@ "ccampbell/chromephp": "^4.1", "ckeditor/ckeditor": "dev-full/4.3.x#0b7c3f1", "mike42/escpos-php": "dev-master", - "mobiledetect/mobiledetectlib": "2.8.3", + "mobiledetect/mobiledetectlib": "2.8.17", "phpoffice/phpexcel": "1.8.1", "restler/framework": "^3.0", - "tecnickcom/tcpdf": "6.2.6", - "raven/raven": "^0.12.0", - "firephp/firephp-core": "^0.4.0" + "tecnickcom/tcpdf": "6.2.12" }, "suggest": { "ext-mysqlnd": "To use with MySQL or MariaDB", @@ -38,7 +36,9 @@ "ext-mbstring": "Handle non UTF-8 databases", "ext-soap": "Native SOAP", "ext-zip": "ODT and Excel support", - "ext-xml": "Excel support" + "ext-xml": "Excel support", + "firephp/firephp-core": "Logging to Firebug console support", + "raven/raven": "Sentry logging server support" }, "config": { "vendor-dir": "htdocs/includes" diff --git a/composer.lock b/composer.lock index 99bf8d6fa10..da19c20fbc5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "335eb7bd5c2eb116fd2da80b4f48e857", + "hash": "d8229cbb9aea945c9ca803bbe54d7aa7", + "content-hash": "47929ed42fb67e5159ccec6a3a5a45eb", "packages": [ { "name": "ccampbell/chromephp", @@ -90,54 +91,18 @@ ], "time": "2014-02-26 15:43:10" }, - { - "name": "firephp/firephp-core", - "version": "v0.4.0", - "source": { - "type": "git", - "url": "https://github.com/firephp/firephp-core.git", - "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firephp/firephp-core/zipball/fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf", - "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "lib/FirePHPCore/FirePHP.class.php", - "lib/FirePHPCore/fb.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christoph Dorn", - "email": "christoph@christophdorn.com", - "homepage": "http://christophdorn.com" - } - ], - "description": "Traditional FirePHPCore library for sending PHP variables to the browser.", - "homepage": "https://github.com/firephp/firephp-core", - "time": "2013-04-23 15:28:20" - }, { "name": "mike42/escpos-php", "version": "dev-master", "source": { "type": "git", "url": "https://github.com/mike42/escpos-php.git", - "reference": "0564ff94de45564221eca99c4cd5ab24492894c2" + "reference": "63648d03d47b81e8f6c1020ac92f051a3f3b5793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mike42/escpos-php/zipball/0564ff94de45564221eca99c4cd5ab24492894c2", - "reference": "0564ff94de45564221eca99c4cd5ab24492894c2", + "url": "https://api.github.com/repos/mike42/escpos-php/zipball/63648d03d47b81e8f6c1020ac92f051a3f3b5793", + "reference": "63648d03d47b81e8f6c1020ac92f051a3f3b5793", "shasum": "" }, "require": { @@ -182,26 +147,28 @@ "print", "receipt" ], - "time": "2015-11-02 10:50:46" + "time": "2015-12-04 10:23:55" }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.3", + "version": "2.8.17", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "f5753e4b90daffe50c902e99df5ce3c58fca3fee" + "reference": "b87da5f63a76e9615a0c74fcf168657b1ea7e41d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/f5753e4b90daffe50c902e99df5ce3c58fca3fee", - "reference": "f5753e4b90daffe50c902e99df5ce3c58fca3fee", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/b87da5f63a76e9615a0c74fcf168657b1ea7e41d", + "reference": "b87da5f63a76e9615a0c74fcf168657b1ea7e41d", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "johnkary/phpunit-speedtrap": "~1.0@dev", "phpunit/phpunit": "*" }, "type": "library", @@ -221,7 +188,7 @@ { "name": "Serban Ghita", "email": "serbanghita@gmail.com", - "homepage": "http://ghita.org", + "homepage": "http://mobiledetect.net", "role": "Developer" } ], @@ -234,7 +201,7 @@ "mobile detector", "php mobile detect" ], - "time": "2014-07-10 20:00:25" + "time": "2015-09-17 14:45:21" }, { "name": "phpoffice/phpexcel", @@ -293,60 +260,6 @@ ], "time": "2015-05-01 07:00:55" }, - { - "name": "raven/raven", - "version": "0.12.1", - "source": { - "type": "git", - "url": "https://github.com/getsentry/raven-php.git", - "reference": "b325984c792ff89f985b73da9a3ad8ed8b520bca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/raven-php/zipball/b325984c792ff89f985b73da9a3ad8ed8b520bca", - "reference": "b325984c792ff89f985b73da9a3ad8ed8b520bca", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.2.4" - }, - "require-dev": { - "fabpot/php-cs-fixer": "^1.8.0", - "phpunit/phpunit": "^4.6.6" - }, - "bin": [ - "bin/raven" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12.x-dev" - } - }, - "autoload": { - "psr-0": { - "Raven_": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "authors": [ - { - "name": "David Cramer", - "email": "dcramer@gmail.com" - } - ], - "description": "A PHP client for Sentry (http://getsentry.com)", - "homepage": "http://getsentry.com", - "keywords": [ - "log", - "logging" - ], - "time": "2015-08-25 22:38:46" - }, { "name": "restler/framework", "version": "3.0.0", @@ -423,16 +336,16 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.2.6", + "version": "6.2.12", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb" + "reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb", - "reference": "a2e8f5b505a7a14a4ed960313c4baf699fd1f4bb", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/2f732eaa91b5665274689b1d40b285a7bacdc37f", + "reference": "2f732eaa91b5665274689b1d40b285a7bacdc37f", "shasum": "" }, "require": { @@ -482,7 +395,7 @@ "pdf417", "qrcode" ], - "time": "2015-01-28 18:51:40" + "time": "2015-09-12 10:08:34" } ], "packages-dev": [], diff --git a/dev/codesniffer/README b/dev/codesniffer/README old mode 100755 new mode 100644 diff --git a/dev/codesniffer/php.ini b/dev/codesniffer/php.ini old mode 100755 new mode 100644 diff --git a/dev/codesniffer/ruleset.dtd b/dev/codesniffer/ruleset.dtd old mode 100755 new mode 100644 index e307d564e12..276626a3a16 --- a/dev/codesniffer/ruleset.dtd +++ b/dev/codesniffer/ruleset.dtd @@ -3,6 +3,7 @@ + diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml old mode 100755 new mode 100644 index 321560ff6f9..64194c7b756 --- a/dev/codesniffer/ruleset.xml +++ b/dev/codesniffer/ruleset.xml @@ -3,12 +3,12 @@ Dolibarr coding standard. - */conf.php - */includes/* - */documents/* - */dev/vagrant/* - */custom/* - */nltechno* + build/html + documents + htdocs/custom + htdocs/includes + htdocs/conf.php + */nltechno* diff --git a/dev/codetemplates/README b/dev/codetemplates/README old mode 100755 new mode 100644 diff --git a/dev/codetemplates/codetemplates.dtd b/dev/codetemplates/codetemplates.dtd old mode 100755 new mode 100644 diff --git a/dev/codetemplates/codetemplates.xml b/dev/codetemplates/codetemplates.xml old mode 100755 new mode 100644 diff --git a/dev/examples/README b/dev/examples/README old mode 100755 new mode 100644 diff --git a/dev/examples/create_invoice.php b/dev/examples/create_invoice.php index d59655ef613..bd82d38d306 100755 --- a/dev/examples/create_invoice.php +++ b/dev/examples/create_invoice.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/examples/create_order.php b/dev/examples/create_order.php index d490d230b77..4575e9e28f3 100755 --- a/dev/examples/create_order.php +++ b/dev/examples/create_order.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/examples/create_product.php b/dev/examples/create_product.php index 6ecce081d45..61598ff59d9 100755 --- a/dev/examples/create_product.php +++ b/dev/examples/create_product.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/examples/create_user.php b/dev/examples/create_user.php index d6126af2cba..f745032f575 100755 --- a/dev/examples/create_user.php +++ b/dev/examples/create_user.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/examples/get_contracts.php b/dev/examples/get_contracts.php index d1be3d9d7bf..1262fe3eebd 100755 --- a/dev/examples/get_contracts.php +++ b/dev/examples/get_contracts.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/initdata/generate-invoice.php b/dev/initdata/generate-invoice.php index 321cc6af06a..c1b2f2646a5 100755 --- a/dev/initdata/generate-invoice.php +++ b/dev/initdata/generate-invoice.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/initdata/generate-order.php b/dev/initdata/generate-order.php index 6ba813c5135..082d5428c97 100755 --- a/dev/initdata/generate-order.php +++ b/dev/initdata/generate-order.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * Copyright (C) 2004-2007 Laurent Destailleur diff --git a/dev/initdata/generate-product.php b/dev/initdata/generate-product.php index 38c0e755db3..975fc1ba33d 100755 --- a/dev/initdata/generate-product.php +++ b/dev/initdata/generate-product.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * Copyright (C) 2004-2010 Laurent Destailleur diff --git a/dev/initdata/generate-proposal.php b/dev/initdata/generate-proposal.php index 8e17e673b86..8d413a518c1 100755 --- a/dev/initdata/generate-proposal.php +++ b/dev/initdata/generate-proposal.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * Copyright (C) 2007 Laurent Destailleur diff --git a/dev/initdata/generate-thirdparty.php b/dev/initdata/generate-thirdparty.php index 9d928db6ac0..d6e9d4c9393 100755 --- a/dev/initdata/generate-thirdparty.php +++ b/dev/initdata/generate-thirdparty.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * Copyright (C) 2006-2013 Laurent Destailleur diff --git a/dev/initdata/sftpget_and_loaddump.php b/dev/initdata/sftpget_and_loaddump.php index 72a33cf197c..64c5ddeb24d 100755 --- a/dev/initdata/sftpget_and_loaddump.php +++ b/dev/initdata/sftpget_and_loaddump.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF b/dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF old mode 100755 new mode 100644 diff --git a/dev/iso-normes/address_format.txt b/dev/iso-normes/address_format.txt old mode 100755 new mode 100644 diff --git a/dev/iso-normes/banknumber_format.txt b/dev/iso-normes/banknumber_format.txt old mode 100755 new mode 100644 diff --git a/dev/iso-normes/format_FEC-Lien_outil_de_test_agréé.pdf b/dev/iso-normes/format_FEC-Lien_outil_de_test_agréé.pdf new file mode 100644 index 00000000000..1c0d0c91e73 Binary files /dev/null and b/dev/iso-normes/format_FEC-Lien_outil_de_test_agréé.pdf differ diff --git a/dev/iso-normes/format_FEC.pdf b/dev/iso-normes/format_FEC.pdf index 2b577030550..ad62797a190 100644 Binary files a/dev/iso-normes/format_FEC.pdf and b/dev/iso-normes/format_FEC.pdf differ diff --git a/dev/iso-normes/xmlexport.txt b/dev/iso-normes/xmlexport.txt old mode 100755 new mode 100644 diff --git a/dev/phpunit/README b/dev/phpunit/README old mode 100755 new mode 100644 diff --git a/dev/phpunit/eclipse_setup_for_pti_phpunit.png b/dev/phpunit/eclipse_setup_for_pti_phpunit.png old mode 100755 new mode 100644 diff --git a/dev/skeletons/build_api_class.php b/dev/skeletons/build_api_class.php index 4ed122c95d8..6263eabcd6e 100755 --- a/dev/skeletons/build_api_class.php +++ b/dev/skeletons/build_api_class.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index 803a6c8b8f5..4de319dabc9 100755 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/skeletons/build_webservice_from_class.php b/dev/skeletons/build_webservice_from_class.php old mode 100644 new mode 100755 index ee8772a8a44..c91347a424d --- a/dev/skeletons/build_webservice_from_class.php +++ b/dev/skeletons/build_webservice_from_class.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php index 86d9636809a..ed8f8ed976e 100644 --- a/dev/skeletons/modMyModule.class.php +++ b/dev/skeletons/modMyModule.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2012 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -46,7 +46,7 @@ class modMyModule extends DolibarrModules // Id for module (must be unique). // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). - $this->numero = 100000; + $this->numero = 500000; // TODO Go on page http://wiki.dolibarr.org/index.php/List_of_modules_id to reserve id number for your module // Key text used to identify module (for permissions, menus, etc...) $this->rights_class = 'mymodule'; @@ -166,7 +166,11 @@ class modMyModule extends DolibarrModules // Add here list of php file(s) stored in core/boxes that contains class to show a box. $this->boxes = array(); // List of boxes // Example: - //$this->boxes=array(array(0=>array('file'=>'myboxa.php','note'=>'','enabledbydefaulton'=>'Home'),1=>array('file'=>'myboxb.php','note'=>''),2=>array('file'=>'myboxc.php','note'=>''));); + //$this->boxes=array( + // 0=>array('file'=>'myboxa.php@mymodule','note'=>'','enabledbydefaulton'=>'Home'), + // 1=>array('file'=>'myboxb.php@mymodule','note'=>''), + // 2=>array('file'=>'myboxc.php@mymodule','note'=>'') + //); // Cronjobs $this->cronjobs = array(); // List of cron jobs entries to add diff --git a/dev/skeletons/skeleton_card.php b/dev/skeletons/skeleton_card.php index 7f0ff1fc7d4..03f70955527 100644 --- a/dev/skeletons/skeleton_card.php +++ b/dev/skeletons/skeleton_card.php @@ -88,7 +88,7 @@ $extrafields = new ExtraFields($db); ********************************************************************/ $parameters=array(); -$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index 686549f19a8..834e0b07e2f 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -124,7 +124,7 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab ********************************************************************/ $parameters=array(); -$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; @@ -271,7 +271,7 @@ if ($resql) if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $all) . join(', ',$fieldstosearchall); } if (! empty($moreforfilter)) diff --git a/dev/skeletons/skeleton_script.php b/dev/skeletons/skeleton_script.php index 35904c9bfd3..5eb1565d4a3 100644 --- a/dev/skeletons/skeleton_script.php +++ b/dev/skeletons/skeleton_script.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * Copyright (C) ---Put here your own copyright and developer email--- diff --git a/dev/translation/autotranslator.php b/dev/translation/autotranslator.php index 7fe21adfd73..58314a23b9e 100755 --- a/dev/translation/autotranslator.php +++ b/dev/translation/autotranslator.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php * diff --git a/dev/translation/sanity_check_en_langfiles.php b/dev/translation/sanity_check_en_langfiles.php old mode 100644 new mode 100755 index a3b3911c77f..5eb92509eb1 --- a/dev/translation/sanity_check_en_langfiles.php +++ b/dev/translation/sanity_check_en_langfiles.php @@ -1,82 +1,102 @@ +#!/usr/bin/env php -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ +/* Copyright (c) 2015 Tommaso Basilici + * Copyright (c) 2015 Laurent Destailleur + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -echo ""; -echo ""; +$sapi_type = php_sapi_name(); +$script_file = basename(__FILE__); +$path=dirname(__FILE__).'/'; -echo ""; + + echo ""; } -tr:nth-child(odd) td { - background-color: #f1f1f1; -} +echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.\n"; +if ($web) print "
"; +echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.\n"; +if ($web) print "
"; -"; - -echo ""; - -echo "If you call this file with the argument \"?unused=true\" it searches for the translation strings that exist in en_US but are never used.
"; -echo "IMPORTANT: that can take quite a lot of time (up to 10 minutes), you need to tune the max_execution_time on your php.ini accordingly.
"; -echo "Happy translating :)
"; // STEP 1 - Search duplicates keys // directory containing the php and lang files -$htdocs = "../../htdocs/"; +$htdocs = $path."/../../htdocs/"; // directory containing the english lang files $workdir = $htdocs."langs/en_US/"; @@ -114,8 +134,10 @@ foreach ($files AS $file) { } } -foreach ($langstrings_3d AS $filename => $file) { - foreach ($file AS $linenum => $value) { +foreach ($langstrings_3d AS $filename => $file) +{ + foreach ($file AS $linenum => $value) + { $keys = array_keys($langstrings_full, $value); if (count($keys)>1) { @@ -126,30 +148,95 @@ foreach ($langstrings_3d AS $filename => $file) { } } -echo "

Duplicate strings in lang files in $workdir - ".count($dups)." found

"; +if ($web) print "

"; +print "Duplicate strings in lang files in $workdir - ".count($dups)." found\n"; +if ($web) print "

"; -echo " "; -echo ""; -echo ""; -$count = 0; -foreach ($dups as $string => $pages) { - $count++; - echo ""; - echo ""; - echo ""; - echo "\n"; +if ($web) +{ + echo '
#StringFile and lines
$count$string"; - foreach ($pages AS $page => $lines ) { - echo "$page "; - foreach ($lines as $line => $translatedvalue) { - //echo "($line - ".(substr($translatedvalue,0,20)).") "; - echo "($line - ".htmlentities($translatedvalue).") "; - } - echo "
"; - } - echo "
'."\n"; + echo "\n"; + echo "\n"; +} + +$sduplicateinsamefile=''; +$sinmainandother=''; +$sininstallandadmin=''; +$sother=''; + +$count = 0; +foreach ($dups as $string => $pages) +{ + $count++; + $s=''; + + // Keyword $string + if ($web) $s.=""; + if ($web) $s.=""; + if ($web) $s.=""; + if ($web) $s.=""; + $s.="\n"; + + if ($duplicateinsamefile) $sduplicateinsamefile .= $s; + else if ($inmain) $sinmainandother .= $s; + else if ($inadmin) $sininstallandadmin .= $s; + else $sother .= $s; +} + +if (! $web) print "\n***** Entries duplicated in same file\n"; +print $sduplicateinsamefile; +if (! $web && empty($sduplicateinsamefile)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Entries in main and another (keep only entry in main)\n"; +print $sinmainandother; +if (! $web && empty($sinmainandother)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Entries in admin and another\n"; +print $sininstallandadmin; +if (! $web && empty($sininstallandadmin)) print "None\n"; +if (! $web) print "\n"; + +if (! $web) print "***** Other\n"; +print $sother; +if (! $web && empty($sother)) print "None\n"; +if (! $web) print "\n"; + +if ($web) +{ + echo "\n"; + echo "
#StringFile and lines
"; + if ($web) $s.=$count; + if ($web) $s.=""; + $s.=$string; + if ($web) $s.=""; + if (! $web) $s.= ' : '; + + // Loop on each files keyword was found + $duplicateinsamefile=0; + $inmain=0; + $inadmin=0; + foreach ($pages AS $file => $lines) + { + if ($file == 'main.lang') { $inmain=1; $inadmin=0; } + if ($file == 'admin.lang' && ! $inmain) { $inadmin=1; } + + $s.=$file." "; + + // Loop on each line keword was found into file. + $listoffilesforthisentry=array(); + foreach ($lines as $line => $translatedvalue) + { + if (! empty($listoffilesforthisentry[$file])) $duplicateinsamefile=1; + $listoffilesforthisentry[$file]=1; + + $s.= "(".$line." - ".htmlentities($translatedvalue).") "; + } + if ($web) $s.="
"; + } + if ($web) $s.="
\n"; } -echo ""; -echo ""; // STEP 2 - Search key not used @@ -168,12 +255,20 @@ if (! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') } } - echo "

Strings in en_US that are never used

"; - echo "
";
+	if ($web) print "

\n"; + print "Strings in en_US that are never used\n"; + if ($web) print "

\n"; + if ($web) echo "
";
 	print_r($unused);
-	echo "
"; + if ($web) echo "
\n"; } echo "\n"; -echo ""; -echo ""; +if ($web) +{ + echo "\n"; + echo "\n"; +} + +exit; + diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index d612ff66abf..647b571c788 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -1,4 +1,4 @@ -#!/usr/bin/php +#!/usr/bin/env php diff --git a/doc/images/appicon_128.png b/doc/images/appicon_128.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_16.ico b/doc/images/appicon_16.ico old mode 100755 new mode 100644 diff --git a/doc/images/appicon_16.png b/doc/images/appicon_16.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_32.png b/doc/images/appicon_32.png old mode 100755 new mode 100644 diff --git a/doc/images/appicon_48.ico b/doc/images/appicon_48.ico old mode 100755 new mode 100644 diff --git a/doc/images/appicon_64.png b/doc/images/appicon_64.png old mode 100755 new mode 100644 diff --git a/doc/images/dolibarr_73x73.png b/doc/images/dolibarr_73x73.png old mode 100755 new mode 100644 diff --git a/doc/images/dolibarr_logo.png b/doc/images/dolibarr_logo.png old mode 100755 new mode 100644 diff --git a/htdocs/.gitignore b/htdocs/.gitignore index bf0c3b10ffa..bf6a1487ea6 100644 --- a/htdocs/.gitignore +++ b/htdocs/.gitignore @@ -19,4 +19,5 @@ /dolimed* /allscreens* /ecommerce/ -/cabinetmed* \ No newline at end of file +/cabinetmed* +/conf/conf.php \ No newline at end of file diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 99eb49949e7..dc8dac4f959 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -303,6 +303,7 @@ else if ($id) dol_print_error($db); } } -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); + +$db->close(); \ No newline at end of file diff --git a/htdocs/accountancy/admin/fiscalyear_info.php b/htdocs/accountancy/admin/fiscalyear_info.php index ddd0eaaab98..00d50d273af 100644 --- a/htdocs/accountancy/admin/fiscalyear_info.php +++ b/htdocs/accountancy/admin/fiscalyear_info.php @@ -55,6 +55,5 @@ if ($id) print ''; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b9164329031..951a07d3171 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -30,6 +30,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Langs $langs->load("accountancy"); @@ -43,15 +44,17 @@ $search_doc_ref = GETPOST("search_doc_ref"); $search_account = GETPOST("search_account"); $search_thirdparty = GETPOST("search_thirdparty"); $search_journal = GETPOST("search_journal"); +$limit = $conf->liste_limit; if ($sortorder == "") $sortorder = "ASC"; if ($sortfield == "") $sortfield = "bk.rowid"; -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $formventilation = new FormVentilation($db); +$formother = new FormOther($db); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -77,7 +80,33 @@ if ($action == 'delbookkeeping') { setEventMessages($object->error, $object->errors, 'errors'); } } -} // Export +} +elseif ($action == 'delbookkeepingyear') { + + $delyear = GETPOST('delyear', 'int'); + + if (! empty($delyear)) { + $object = new BookKeeping($db); + $result = $object->delete_by_year($delyear); + Header("Location: list.php"); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + } +} +elseif ($action == 'delbookkeepingyear') { + + $delyear = GETPOST('delyear', 'int'); + + if (! empty($delyear)) { + $object = new BookKeeping($db); + $result = $object->delete_by_year($delyear); + Header("Location: list.php"); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } + } +}// Export else if ($action == 'export_csv') { header('Content-Type: text/csv'); @@ -147,7 +176,7 @@ else { print_barre_liste($langs->trans("Bookkeeping"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num); - print '
'; + /*print ''; print ''; print ''; @@ -155,6 +184,16 @@ else { print '
'; + print '
';*/ + + print '
'; + print ''; + print ''; + + print $formother->select_year(GETPOST('delyear'),'delyear'); + + print '
'; + print '
'; print '
'; diff --git a/htdocs/accountancy/bookkeeping/listbyyear.php b/htdocs/accountancy/bookkeeping/listbyyear.php index ce6d10f9730..fe185fd1118 100644 --- a/htdocs/accountancy/bookkeeping/listbyyear.php +++ b/htdocs/accountancy/bookkeeping/listbyyear.php @@ -36,6 +36,7 @@ $langs->load("accountancy"); $page = GETPOST("page"); $sortorder = GETPOST("sortorder"); $sortfield = GETPOST("sortfield"); +$limit = $conf->liste_limit; // Filter $year = GETPOST("year", 'int'); @@ -52,7 +53,7 @@ if ($sortorder == "") if ($sortfield == "") $sortfield = "bk.rowid"; -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; llxHeader('', $langs->trans("Bookkeeping")); diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 141b122690c..d3801b4a4d1 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -372,6 +372,36 @@ class BookKeeping extends CommonObject $this->db->commit(); return 1; } + + /** + * Delete bookkepping by importkey + * + * @param string $delyear year to delete + * @return int Result + */ + function delete_by_year($delyear) { + $this->db->begin(); + + // first check if line not yet in bookkeeping + $sql = "DELETE"; + $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping "; + $sql .= " WHERE YEAR(doc_date) = ".$delyear; + + $resql = $this->db->query($sql); + + if (! $resql) { + $this->errors[] = "Error " . $this->db->lasterror(); + foreach ( $this->errors as $errmsg ) { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); + } + $this->db->rollback(); + return - 1; + } + + $this->db->commit(); + return 1; + } /** * Create object into database diff --git a/htdocs/accountancy/class/html.formventilation.class.php b/htdocs/accountancy/class/html.formventilation.class.php index de94d645c92..f92f5b3ab88 100644 --- a/htdocs/accountancy/class/html.formventilation.class.php +++ b/htdocs/accountancy/class/html.formventilation.class.php @@ -70,7 +70,7 @@ class FormVentilation extends Form $selected = ' selected '; } - $out .= ''; + $out .= ''; $i ++; } diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 820596de166..4800737528d 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -87,10 +87,10 @@ if (! $user->rights->accounting->ventilation->dispatch) accessforbidden(); $formventilation = new FormVentilation($db); - $accounting = new AccountingAccount($db); -$aarowid_s = $accounting->fetch('', ACCOUNTING_SERVICE_SOLD_ACCOUNT); -$aarowid_p = $accounting->fetch('', ACCOUNTING_PRODUCT_SOLD_ACCOUNT); +$aarowid_s = $accounting->fetch('', $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT,1); +$aarowid_p = $accounting->fetch('',$conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT,1); + // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) { @@ -278,6 +278,8 @@ if ($result) { $code_sell_p_notset = ''; $objp->aarowid_suggest = $objp->aarowid; + + if (! empty($objp->code_sell)) { $objp->code_sell_p = $objp->code_sell; } else { @@ -290,12 +292,14 @@ if ($result) { } if ($objp->type_l == 1) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_s; + } } elseif ($objp->type_l == 0) { $objp->code_sell_l = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT) ? $conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT : $langs->trans("CodeNotDef")); - if ($objp->aarowid == '') + if ($objp->aarowid == '') { $objp->aarowid_suggest = $aarowid_p; + } } if ($objp->code_sell_l != $objp->code_sell_p) $code_sell_p_l_differ = 'color:red'; @@ -311,10 +315,12 @@ if ($result) { $product_static->id = $objp->product_id; $product_static->type = $objp->type; print ''; + if ($product_static->id) print $product_static->getNomUrl(1); else print ' '; + print ''; print '' . dol_trunc($objp->product_label, 24) . ''; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index be136a38b98..10dd38807a4 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -16,7 +16,7 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License fr more details. + * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . @@ -57,7 +57,7 @@ $langs->load("bank"); $langs->load('bills'); $langs->load("accountancy"); -$id_accountancy_journal = GETPOST('id_account','int'); +$id_bank_account = GETPOST('id_account','int'); $date_startmonth = GETPOST('date_startmonth'); $date_startday = GETPOST('date_startday'); @@ -70,17 +70,12 @@ $action = GETPOST('action'); $now = dol_now(); // Security check -if ($user->societe_id > 0) +if ($user->societe_id > 0 && empty($id_bank_account)) accessforbidden(); /* * View */ -if (empty($id_accountancy_journal)) -{ - accessforbidden(); -} - $year_current = strftime("%Y", dol_now()); $pastmonth = strftime("%m", dol_now()) - 1; $pastmonthyear = $year_current; @@ -107,7 +102,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; -$sql .= " WHERE ba.rowid=".$id_accountancy_journal; +$sql .= " WHERE ba.rowid=".$id_bank_account; if (! empty($conf->multicompany->enabled)) { $sql .= " AND ba.entity = " . $conf->entity; } @@ -125,7 +120,12 @@ $paymentdonstatic = new PaymentDonation($db); $paymentvatstatic = new TVA($db); $paymentsalstatic = new PaymentSalary($db); -dol_syslog("accountancy/journal/bankjournal.php:: sql=" . $sql, LOG_DEBUG); +// Get code of finance journal +$bank_code_journal = new Account($db); +$result=$bank_code_journal->fetch($id_bank_account); +$journal=$bank_code_journal->accountancy_journal; + +dol_syslog("accountancy/journal/bankjournal.php", LOG_DEBUG); $result = $db->query($sql); if ($result) { @@ -288,8 +288,10 @@ if ($result) { */ // Write bookkeeping -if ($action == 'writeBookKeeping') +if ($action == 'writebookkeeping') { + $now=dol_now(); + $error = 0; foreach ( $tabpay as $key => $val ) { @@ -309,8 +311,9 @@ if ($action == 'writeBookKeeping') $bookkeeping->sens = ($mt >= 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt >= 0 ? $mt : 0); $bookkeeping->credit = ($mt < 0 ? - $mt : 0); - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'payment') { @@ -327,7 +330,7 @@ if ($action == 'writeBookKeeping') } } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -336,7 +339,7 @@ if ($action == 'writeBookKeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')';; } } @@ -360,8 +363,9 @@ if ($action == 'writeBookKeeping') $bookkeeping->sens = ($mt < 0) ? 'D' : 'C'; $bookkeeping->debit = ($mt < 0 ? - $mt : 0); $bookkeeping->credit = ($mt >= 0) ? $mt : 0; - $bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; + $bookkeeping->code_journal = $journal; $bookkeeping->fk_user_author = $user->id; + $bookkeeping->date_create=$now; if ($tabtype[$key] == 'sc') { $bookkeeping->code_tiers = ''; @@ -383,7 +387,7 @@ if ($action == 'writeBookKeeping') $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; } else if ($tabtype[$key] == 'payment_supplier') { - $sqlmid = 'SELECT facf.facnumber'; + $sqlmid = 'SELECT facf.ref_supplier,facf.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; @@ -392,7 +396,7 @@ if ($action == 'writeBookKeeping') $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; + $bookkeeping->doc_ref = $objmid->ref_supplier.' ('.$objmid->ref.')'; } $bookkeeping->code_tiers = $k; $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; @@ -433,7 +437,6 @@ if ($action == 'writeBookKeeping') if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - $journal = $conf->global->ACCOUNTING_BANK_JOURNAL; include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php'; @@ -443,16 +446,20 @@ if ($action == 'export_csv') { $sep = ";"; - foreach ( $tabpay as $key => $val ) { + foreach ($tabpay as $key => $val) + { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; + $companystatic->client = $tabcompany[$key]['code_client']; + + $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); // Bank foreach ( $tabbq[$key] as $k => $mt ) { print $date . $sep; - print $bank_journal . $sep; + print $journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; @@ -557,67 +564,26 @@ if ($action == 'export_csv') } } } -} -else +} +else { - $form = new Form($db); - llxHeader('', $langs->trans("BankJournal")); + llxHeader('', $langs->trans("FinanceJournal")); - $namereport = $langs->trans("BankJournal"); - $description = $langs->trans("DescBankJournal"); + $nom = $langs->trans("FinanceJournal" . ' - ' . $journal); + $builddate = time(); + $description = $langs->trans("DescFinanceJournal") . '
'; $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - // Report - $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; - $head[$h][1] = $langs->trans("Report"); - $head[$h][2] = 'card'; - - dol_fiche_head($head, 'card', $langs->trans("BankJournal"), 0, 'payment'); - - print ''; - print ''; - - // Title - print ''; - print ''; - print ''; - print ''; - print ''; - - // Period report - print ''; - print ''; - if (! $periodlink) print ''; - print ''; - - // Description - print ''; - print ''; - print ''; - print ''; - - print ''; - print ''; - print ''; - - print '
'.$langs->trans("ReportName").''.$namereport.'
'.$langs->trans("ReportPeriod").''; - else print ''; - if ($period) print $period; - if ($periodlink) print ''.$periodlink; - print '
'.$langs->trans("ReportDescription").''.$description.'
'; - - print ''; - - print ''; - // End report + $varlink = 'id_account='.$id_bank_account; + report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), '', $varlink); + print ''; - print ''; - + print ''; + print ' + '; + + return $ret; + } + /** * Return combo list of activated countries, into language of user * @@ -1261,10 +1332,11 @@ class Form * @param string $show_every 0=default list, 1=add also a value "Everybody" at beginning of list * @param string $enableonlytext If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. * @param string $morecss More css + * @param int $noactive Show only active users (this will also happened whatever is this option if USER_HIDE_INACTIVE_IN_COMBOBOX is on). * @return string HTML select string * @see select_dolgroups */ - function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='') + function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='', $noactive=0) { global $conf,$user,$langs; @@ -1324,7 +1396,7 @@ class Form if (! empty($user->societe_id)) $sql.= " AND u.fk_soc = ".$user->societe_id; if (is_array($exclude) && $excludeUsers) $sql.= " AND u.rowid NOT IN ('".$excludeUsers."')"; if (is_array($include) && $includeUsers) $sql.= " AND u.rowid IN ('".$includeUsers."')"; - if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND u.statut <> 0"; + if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX) || $noactive) $sql.= " AND u.statut <> 0"; if (! empty($morefilter)) $sql.=" ".$morefilter; $sql.= " ORDER BY u.lastname ASC"; @@ -1945,8 +2017,8 @@ class Form { $dur=array("h"=>$langs->trans("Hour"),"d"=>$langs->trans("Day"),"w"=>$langs->trans("Week"),"m"=>$langs->trans("Month"),"y"=>$langs->trans("Year")); } - $opt.= ' - '.$duration_value.' '.$langs->trans($dur[$duration_unit]); - $outval.=' - '.$duration_value.' '.$langs->transnoentities($dur[$duration_unit]); + $opt.= ' - '.$duration_value.' '.($dur[$duration_unit]?$langs->trans($dur[$duration_unit]):''); + $outval.=' - '.$duration_value.' '.($dur[$duration_unit]?$langs->transnoentities($dur[$duration_unit]):''); } $opt.= "\n"; @@ -2643,7 +2715,7 @@ class Form * @param int $maxlength Max length of label * @return void */ - function select_types_paiements($selected='',$htmlname='paiementtype',$filtertype='',$format=0, $empty=0, $noadmininfo=0,$maxlength=0) + function select_types_paiements($selected='', $htmlname='paiementtype', $filtertype='', $format=0, $empty=0, $noadmininfo=0, $maxlength=0) { global $langs,$user; @@ -4231,7 +4303,7 @@ class Form $retstring.=''; } $retstring.=''; - if (empty($conf->dol_optimize_smallscreen)) $retstring.=":"; + if ($m && empty($conf->dol_optimize_smallscreen)) $retstring.=":"; } if ($m) @@ -4954,7 +5026,7 @@ class Form if (((! is_array($restrictlinksto)) || in_array('order',$restrictlinksto)) && ! empty($conf->commande->enabled)) { - $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; + $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; print ' '."\n"; + print ''."\n"; } else { @@ -288,4 +288,4 @@ function displayBox($selectedDate,$month,$year) "; - if (! function_exists("mysqli_connect")) + if (! class_exists('mysqli')) { $this->connected = false; $this->ok = false; diff --git a/htdocs/core/extrafieldsinexport.inc.php b/htdocs/core/extrafieldsinexport.inc.php new file mode 100644 index 00000000000..1a608f6bc2e --- /dev/null +++ b/htdocs/core/extrafieldsinexport.inc.php @@ -0,0 +1,50 @@ +entity.')'; +//print $sql; +$resql=$this->db->query($sql); +if ($resql) // This can fail when class is used on old database (during migration for example) +{ + while ($obj=$this->db->fetch_object($resql)) + { + $fieldname=$keyforaliasextra.'.'.$obj->name; + $fieldlabel=ucfirst($obj->label); + $typeFilter="Text"; + switch($obj->type) + { + case 'int': + case 'double': + case 'price': + $typeFilter="Numeric"; + break; + case 'date': + case 'datetime': + $typeFilter="Date"; + break; + case 'boolean': + $typeFilter="Boolean"; + break; + case 'sellist': + $tmp=''; + $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null + if ($tmpparam['options'] && is_array($tmpparam['options'])) { + $tmpkeys=array_keys($tmpparam['options']); + $tmp=array_shift($tmpkeys); + } + if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; + break; + } + $this->export_fields_array[$r][$fieldname]=$fieldlabel; + $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; + $this->export_entities_array[$r][$fieldname]=$keyforelement; + } +} +// End add axtra fields diff --git a/htdocs/core/filemanagerdol/browser/default/browser.css b/htdocs/core/filemanagerdol/browser/default/browser.css old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/Folder.gif b/htdocs/core/filemanagerdol/browser/default/images/Folder.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/FolderUp.gif b/htdocs/core/filemanagerdol/browser/default/images/FolderUp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/ai.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/ai.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/avi.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/avi.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/bmp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/bmp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/cs.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/cs.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/default.icon.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/default.icon.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/dll.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/dll.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/doc.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/doc.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/exe.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/exe.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/fla.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/fla.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/gif.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/gif.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/htm.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/htm.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/html.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/html.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/jpg.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/jpg.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/js.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/js.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/mdb.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/mdb.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/mp3.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/mp3.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/pdf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/pdf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/png.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/png.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/ppt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/ppt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/rdp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/rdp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/swf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/swf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/swt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/swt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/txt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/txt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/vsd.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/vsd.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/xls.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/xls.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/xml.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/xml.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/32/zip.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/32/zip.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/ai.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/ai.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/avi.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/avi.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/bmp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/bmp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/cs.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/cs.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/default.icon.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/default.icon.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/dll.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/dll.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/doc.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/doc.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/exe.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/exe.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/fla.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/fla.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/gif.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/gif.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/htm.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/htm.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/html.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/html.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/jpg.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/jpg.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/js.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/js.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/mdb.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/mdb.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/mp3.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/mp3.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/pdf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/pdf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/png.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/png.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/ppt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/ppt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/rdp.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/rdp.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/swf.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/swf.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/swt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/swt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/txt.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/txt.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/vsd.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/vsd.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/xls.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/xls.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/xml.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/xml.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/images/icons/zip.gif b/htdocs/core/filemanagerdol/browser/default/images/icons/zip.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/js/common.js b/htdocs/core/filemanagerdol/browser/default/js/common.js old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/js/fckxml.js b/htdocs/core/filemanagerdol/browser/default/js/fckxml.js old mode 100755 new mode 100644 diff --git a/htdocs/core/filemanagerdol/browser/default/spacer.gif b/htdocs/core/filemanagerdol/browser/default/spacer.gif old mode 100755 new mode 100644 diff --git a/htdocs/core/js/lib_head.js b/htdocs/core/js/lib_head.js.php similarity index 83% rename from htdocs/core/js/lib_head.js rename to htdocs/core/js/lib_head.js.php index eab995d062b..b843f83e1d0 100644 --- a/htdocs/core/js/lib_head.js +++ b/htdocs/core/js/lib_head.js.php @@ -1,25 +1,49 @@ -// Copyright (C) 2005-2014 Laurent Destailleur -// Copyright (C) 2005-2014 Regis Houssin -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// or see http://www.gnu.org/ + + * Copyright (C) 2005-2014 Regis Houssin + * Copyright (C) 2015 Raphaël Doursenaud + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ -// -// \file htdocs/core/js/lib_head.js -// \brief File that include javascript functions (included if option use_javascript activated) -// +/** + * \file htdocs/core/js/lib_head.js.php + * \brief File that include javascript functions (included if option use_javascript activated) + */ +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); +if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations +if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); +if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); +if (! defined('NOLOGIN')) define('NOLOGIN',1); +if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); +if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); +if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); + +session_cache_limiter(FALSE); + +require_once '../../main.inc.php'; + +// Define javascript type +header('Content-type: text/javascript; charset=UTF-8'); +// Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +else header('Cache-Control: no-cache'); +?> /* * ================================================================= @@ -864,8 +888,8 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton, .addClass( "ui-widget ui-widget-content ui-corner-left dolibarrcombobox" ); input.data("ui-autocomplete")._renderItem = function( ul, item ) { - return $("
  • ") - .data( "item.autocomplete", item ) + return $("
  • ") + .data( "ui-autocomplete-item", item ) // jQuery UI > 1.10.0 .append( "" + item.label + "" ) .appendTo( ul ); }; @@ -916,14 +940,13 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton, function copyToClipboard(text,text2) { text = text.replace(/
    /g,"\n"); - var newElem = "

    "+text2; + var newElem = '

    '+text2; $("#dialog").html(newElem); $("#dialog").dialog(); $("#coords").select(); return false; } - /* * Provide a function to get an URL GET parameter in javascript * @@ -938,3 +961,99 @@ function getParameterByName(name, valueifnotfound) results = regex.exec(location.search); return results === null ? valueifnotfound : decodeURIComponent(results[1].replace(/\+/g, " ")); } + +// Code in the public domain from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round +(function() { + /** + * Decimal adjustment of a number. + * + * @param {String} type The type of adjustment. + * @param {Number} value The number. + * @param {Integer} exp The exponent (the 10 logarithm of the adjustment base). + * @returns {Number} The adjusted value. + */ + function decimalAdjust(type, value, exp) { + // If the exp is undefined or zero... + if (typeof exp === 'undefined' || +exp === 0) { + return Math[type](value); + } + value = +value; + exp = +exp; + // If the value is not a number or the exp is not an integer... + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + return NaN; + } + // Shift + value = value.toString().split('e'); + value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); + // Shift back + value = value.toString().split('e'); + return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); + } + + // Decimal round + if (!Math.round10) { + Math.round10 = function(value, exp) { + return decimalAdjust('round', value, exp); + }; + } + // Decimal floor + if (!Math.floor10) { + Math.floor10 = function(value, exp) { + return decimalAdjust('floor', value, exp); + }; + } + // Decimal ceil + if (!Math.ceil10) { + Math.ceil10 = function(value, exp) { + return decimalAdjust('ceil', value, exp); + }; + } +})(); + + +/** + * Function similar to PHP price2num() + * + * @param {number|string} amount The amount to convert/clean + * @returns {string} The amount in universal numeric format (Example: '99.99999') + * @todo Implement rounding parameter + */ +function price2numjs(amount) { + if (amount == '') return ''; + + transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") { + $dec = $langs->transnoentitiesnoconv("SeparatorDecimal"); + } + if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") { + $thousand = $langs->transnoentitiesnoconv("SeparatorThousand"); + } + print "var dec='" . $dec . "'; var thousand='" . $thousand . "';\n"; // Set var in javascript + ?> + + var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN; ?>; + var main_rounding_unit = global->MAIN_MAX_DECIMALS_UNIT; ?>; + var main_rounding_tot = global->MAIN_MAX_DECIMALS_TOT; ?>; + + var amount = amount.toString(); + + // rounding for unit price + var rounding = main_rounding_unit; + var pos = amount.indexOf(dec); + var decpart = ''; + if (pos >= 0) decpart = amount.substr(pos + 1).replace('/0+$/i', ''); // Remove 0 for decimal part + var nbdec = decpart.length; + if (nbdec > rounding) rounding = nbdec; + // If rounding higher than max shown + if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; + + if (thousand != ',' && thousand != '.') amount = amount.replace(',', '.'); + amount = amount.replace(' ', ''); // To avoid spaces + amount = amount.replace(thousand, ''); // Replace of thousand before replace of dec to avoid pb if thousand is . + amount = amount.replace(dec, '.'); + + return Math.round10(amount, rounding); +} diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 6e6da6bd686..502e83010f7 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -91,6 +91,19 @@ function accounting_prepare_head(AccountingAccount $object) return $head; } +/** + * Return accounting account without zero on the right + * + * @param string $account Accounting account + * @return string String without zero on the right + */ +function clean_account($account) +{ + $account = rtrim($account,"0"); + + return $account; +} + /** * Return general accounting account with defined length * @@ -131,7 +144,7 @@ function length_accountg($account) */ function length_accounta($accounta) { - global $conf, $langs; + global $conf; $a = $conf->global->ACCOUNTING_LENGTH_AACCOUNT; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 74815f7bdbd..165c93fa9a1 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -41,11 +41,12 @@ * @param int $socid Third party id * @param string $action Action string * @param array $showextcals Array with list of external calendars (used to show links to select calendar), or -1 to show no legend - * @param string $actioncode Preselected value of actioncode for filter on type + * @param string|array $actioncode Preselected value(s) of actioncode for filter on type * @param int $usergroupid Id of group to filter on users + * @param string $excludetype A type to exclude ('systemauto', 'system', '') * @return void */ -function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='') +function print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='', $excludetype='') { global $conf, $user, $langs, $db, $hookmanager; global $begin_h, $end_h, $begin_d, $end_d; @@ -74,7 +75,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; print $langs->trans("ActionsToDoBy").'   '; print ''; - print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit); + print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or") . ' '.$langs->trans("Group").'   '; print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); print ''; @@ -87,8 +88,12 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; print $langs->trans("Type"); print '  '; - //select_type_actions($selected='',$htmlname='actioncode',$excludetype='',$onlyautoornot=0, $hideinfohelp=0, $multiselect=true) - print $formactions->select_type_actions($actioncode, "actioncode", '', (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?0:1)); + $multiselect=0; + if (! empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) // We use an option here because it adds bugs when used on agenda page "peruser" and "list" + { + $multiselect=(!empty($conf->global->AGENDA_USE_EVENT_TYPE)); + } + print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, $multiselect); print ''; // Status diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 97ca06be08a..fa150e6fbb7 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -170,8 +170,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt } ,delay: 500 }).data("ui-autocomplete")._renderItem = function( ul, item ) { - return $("
  • ") - .data( "item.autocomplete", item ) + return $("
  • ") + .data( "ui-autocomplete-item", item ) // jQuery UI > 1.10.0 .append( \'\' + item.label + "" ) .appendTo(ul); }; @@ -345,7 +345,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ { global $conf; - //if (! empty($conf->browser->phone)) return ''; // combobox disabled for smartphones (does not works) + if (! empty($conf->browser->phone)) return ''; // select2 disabled for smartphones with standard browser (does not works, popup appears outside screen) if (! empty($conf->dol_use_jmobile)) return ''; // select2 works with jmobile but it breaks the autosize feature of jmobile. if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return ''; if (empty($conf->use_javascript_ajax)) return ''; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 70988d7e330..c7b370b287f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -658,6 +658,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') if ($num || (GETPOST('button_search') || GETPOST('button_search.x') || GETPOST('button_search_x'))) { print ''; + // Name - Position print ''; print ''; @@ -766,10 +767,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ''."\n"; - print "
    \n"; -?> - -trans('Address')).'" style="display: none;">'; return $i; } @@ -1343,7 +1342,7 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='',$noprint=0) $i++; } $out.="\n"; - $out.="
    \n"; + //$out.="
    \n"; } if ($noprint) return $out; diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 931f30ce998..b06baaa9288 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -540,9 +540,11 @@ function dol_get_first_day_week($day,$month,$year,$gm=false) * @param int $timestampStart Timestamp de debut * @param int $timestampEnd Timestamp de fin * @param string $countrycode Country code + * @param int $lastday Last day is included, 0: no, 1:yes * @return int Nombre de jours feries + * @see num_between_day, num_open_day */ -function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') +function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR', $lastday=0) { $nbFerie = 0; @@ -550,7 +552,8 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') if ((($timestampEnd - $timestampStart) % 86400) != 0) return 'ErrorDates must use same hours and must be GMT dates'; $i=0; - while ($timestampStart < $timestampEnd && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) + while (( ($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd) ) + && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) { $ferie=false; $countryfound=0; @@ -718,8 +721,9 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') * * @param int $timestampStart Timestamp start UTC * @param int $timestampEnd Timestamp end UTC - * @param int $lastday Last day is included, 0: non, 1:oui + * @param int $lastday Last day is included, 0: no, 1:yes * @return int Number of days + * @see also num_public_holiday, num_open_day */ function num_between_day($timestampStart, $timestampEnd, $lastday=0) { @@ -749,6 +753,7 @@ function num_between_day($timestampStart, $timestampEnd, $lastday=0) * @param int $halfday Tag to define half day when holiday start and end * @param string $country_code Country code (company country code if not defined) * @return int Number of days or hours + * @see also num_between_day, num_public_holiday */ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='') { @@ -766,7 +771,7 @@ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $ha if ($timestampStart < $timestampEnd) { $numdays = num_between_day($timestampStart, $timestampEnd, $lastday); - $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code); + $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code, $lastday); $nbOpenDay = $numdays - $numholidays; $nbOpenDay.= " " . $langs->trans("Days"); if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e9251da148e..82d5c52c575 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1520,14 +1520,18 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) if (! empty($addlink)) { - $newskype='trans("Call").' '.$skype.'" title="'.$langs->trans("Call").' '.$skype.'">'; - $newskype.=''; - $newskype.='    '; + $newskype.='   '; - $newskype.=''; + $newskype.=''; $newskype.=''; if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 5ca0389455f..73c74cfb97e 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2006-2015 Laurent Destailleur * Copyright (C) 2007 Rodolphe Quiedeville * Copyright (C) 2009-2010 Regis Houssin * Copyright (C) 2015 Raphaël Doursenaud @@ -46,14 +46,16 @@ function product_prepare_head($object) $h++; $head[$h][0] = DOL_URL_ROOT."/product/price.php?id=".$object->id; - $head[$h][1] = $langs->trans("CustomerPrices"); + $head[$h][1] = $langs->trans("SellingPrices"); $head[$h][2] = 'price'; $h++; - if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + if ((! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) + || (! empty($conf->margin->enabled) && $user->rights->margin->liretous) + ) { $head[$h][0] = DOL_URL_ROOT."/product/fournisseurs.php?id=".$object->id; - $head[$h][1] = $langs->trans("SuppliersPrices"); + $head[$h][1] = $langs->trans("BuyingPrices"); $head[$h][2] = 'suppliers'; $h++; } diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 0569e90d903..efbaa78557e 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -344,13 +344,13 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { // Project ref print ""; - if ($showlineingray) print ''; + //if ($showlineingray) print ''; $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; $projectstatic->public=$lines[$i]->public; if ($lines[$i]->public || in_array($lines[$i]->fk_project,$projectsArrayId) || ! empty($user->rights->projet->all->lire)) print $projectstatic->getNomUrl(1); else print $projectstatic->getNomUrl(1,'nolink'); - if ($showlineingray) print ''; + //if ($showlineingray) print ''; print ""; // Project status @@ -794,14 +794,14 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ $dayWorkLoad = $projectstatic->weekWorkLoadPerTask[$tmpday][$lines[$i]->id]; $alreadyspent=''; if ($dayWorkLoad > 0) $alreadyspent=convertSecondToTime($dayWorkLoad,'allhourmin'); - $tableCell =''; - $tableCell.=''; + $tableCell =''; + $tableCell.=''; //$placeholder=' placeholder="00:00"'; $placeholder=''; //if (! $disabledtask) //{ $tableCell.='+'; - $tableCell.='trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" title="'.$langs->trans("AddHereTimeSpentForDay",$tmparray['day'],$tmparray['mon']).'" '.($disabledtask?'disabled':$placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.$idw.']" name="task['.$lines[$i]->id.']['.$idw.']" value="" cols="2" maxlength="5"'; $tableCell.=' onkeypress="return regexEvent(this,event,\'timeChar\')"'; $tableCell.= 'onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$idw.',\''.$modeinput.'\')" />'; //} @@ -874,11 +874,11 @@ function searchTaskInChild(&$inc, $parent, &$lines, &$taskrole) * @param DoliDB $db Database handler * @param Form $form Object form * @param int $socid Id thirdparty - * @param int $projectsListId Id of project i have permission on - * @param int $mytasks Limited to task i am contact to + * @param int $projectsListId Id of project I have permission on + * @param int $mytasks Limited to task I am contact to * @param int $statut -1=No filter on statut, 0 or 1 = Filter on status * @param array $listofoppstatus List of opportunity status - * @param array $hiddenfields List of fields to not show + * @param array $hiddenfields List of info to not show ('projectlabel', 'declaredprogress', '...', ) * @return void */ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks=0, $statut=-1, $listofoppstatus=array(),$hiddenfields=array()) @@ -993,7 +993,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= if (empty($conf->global->PROJECT_HIDE_TASKS)) { print_liste_field_titre($langs->trans("Tasks"),"","","","",'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("PlannedWorkload"),"","","","",'align="right"',$sortfield,$sortorder); + if (! in_array('plannedworkload', $hiddenfields)) print_liste_field_titre($langs->trans("PlannedWorkload"),"","","","",'align="right"',$sortfield,$sortorder); if (! in_array('declaredprogress', $hiddenfields)) print_liste_field_titre($langs->trans("ProgressDeclared"),"","","","",'align="right"',$sortfield,$sortorder); } print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder); @@ -1016,7 +1016,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= print ''; $projectstatic->ref=$objp->ref; print $projectstatic->getNomUrl(1); - print ' - '.dol_trunc($objp->title,24); + if (! in_array('projectlabel', $hiddenfields)) print ' - '.dol_trunc($objp->title,24); print ''; print ''; if ($objp->fk_soc > 0) @@ -1044,8 +1044,10 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= $plannedworkload=$objp->planned_workload; $total_plannedworkload+=$plannedworkload; - print ''.($plannedworkload?convertSecondToTime($plannedworkload):'').''; - + if (! in_array('plannedworkload', $hiddenfields)) + { + print ''.($plannedworkload?convertSecondToTime($plannedworkload):'').''; + } if (! in_array('declaredprogress', $hiddenfields)) { $declaredprogressworkload=$objp->declared_progess_workload; @@ -1073,12 +1075,12 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { print ''.price($total_opp_amount, 0, '', 1, -1, -1, $conf->currency).''; - print ''.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmount"), 1).''; + print ''.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1).''; } if (empty($conf->global->PROJECT_HIDE_TASKS)) { print ''.$total_task.''; - print ''.($total_plannedworkload?convertSecondToTime($total_plannedworkload):'').''; + if (! in_array('plannedworkload', $hiddenfields)) print ''.($total_plannedworkload?convertSecondToTime($total_plannedworkload):'').''; if (! in_array('declaredprogress', $hiddenfields)) print ''.($total_plannedworkload?round(100*$total_declaredprogressworkload/$total_plannedworkload,0).'%':'').''; } print ''; diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 8946449d5ac..e8cecacf589 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -26,33 +26,38 @@ /** * Show header of a VAT report * -* @param string $nom Name of report +* @param string $nom Name of report * @param string $variante Link for alternate report * @param string $period Period of report * @param string $periodlink Link to switch period * @param string $description Description * @param timestamp|integer $builddate Date generation * @param string $exportlink Link for export or '' -* @param array $moreparam Array with list of params to add into form -* @param string $calcmode Calculation mode +* @param array $moreparam Array with list of params to add into form +* @param string $calcmode Calculation mode +* @param string $varlink Add a variable into the address of the page * @return void */ -function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') +function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='', $varlink='') { global $langs; if (empty($hselected)) $hselected='report'; print "\n\n\n"; + + if(! empty($varlink)) $varlink = '?'.$varlink; + + if(! empty($varlink)) $varlink = '?'.$varlink; $h=0; - $head[$h][0] = $_SERVER["PHP_SELF"]; + $head[$h][0] = $_SERVER["PHP_SELF"].$varlink; $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; dol_fiche_head($head, 'report'); - print '
    '; + print ''; foreach($moreparam as $key => $value) { print ''; @@ -115,7 +120,8 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat print '
    '; - print ''; + dol_fiche_end(); + print "\n\n\n"; } diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index b653cfbf5c0..c1d13b49429 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -1,6 +1,7 @@ * Copyright (C) 2010-2012 Regis Houssin + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -93,6 +94,15 @@ function user_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'user'); + if (! empty($conf->hrm->enabled) && $user->rights->hrm->employee->read) + { + // Bank + $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id; + $head[$h][1] = $langs->trans("Bank"); + $head[$h][2] = 'bank'; + $h++; + } + //Info on users is visible only by internal user if (empty($user->societe_id)) { @@ -307,8 +317,8 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { print ''.$langs->trans("DefaultSkin").''; print ''; - $url='http://www.dolistore.com/lang-en/4-skins'; - if (preg_match('/fr/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-fr/4-themes'; + $url='https://www.dolistore.com/lang-en/4-skins'; + if (preg_match('/fr/i',$langs->defaultlang)) $url='https://www.dolistore.com/fr/4-themes'; //if (preg_match('/es/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-es/4-themes'; print ''; print $langs->trans('DownloadMoreSkins'); @@ -467,7 +477,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': 6e7896, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print '   ('.$langs->trans("Default").': 7882aa, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print ''; } @@ -496,6 +506,32 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; } + + // TextTitleColor + if ($foruserprofile) + { + + + } + else + { + $var=!$var; + print ''; + print ''.$langs->trans("TextTitleColor").''; + print ''; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLENOTAB,array()),''),'THEME_ELDY_TEXTTITLENOTAB','formcolor',1).' '; + } + else + { + print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); + } + print '   ('.$langs->trans("Default").': 3c3c14, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print ''; + + print ''; + } // Use Hover $var=!$var; @@ -529,7 +565,11 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),''); - if ($color) print ''; + if ($color) + { + if ($color != 'edf4fb') print ''; + else print $langs->trans("Default"); + } else print $langs->trans("None"); } print '   ('.$langs->trans("Default").': edf4fb, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index cfb5348c4c9..9f583ed4c04 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -259,12 +259,12 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3700__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects', 'Activities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3701__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3702__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3702__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks/list.php?leftmenu=projects', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3703__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3800__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects&mode=mine', 'MyActivities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3801__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create&mode=mine', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3802__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects&mode=mine', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3802__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks/list.php?leftmenu=projects&mode=mine', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3803__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects&mode=mine', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); -- Tools insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->mailing->enabled', __HANDLER__, 'left', 3900__+MAX_llx_menu__, 'tools', 'mailing', 8__+MAX_llx_menu__, '/comm/mailing/index.php?leftmenu=mailing', 'EMailings', 0, 'mails', '$user->rights->mailing->lire', '', 0, 0, __ENTITY__); @@ -304,11 +304,13 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->hrm->enabled', __HANDLER__, 'left', 4601__+MAX_llx_menu__, 'hrm', '', 4600__+MAX_llx_menu__, '/user/card.php?&action=create', 'NewEmployee', 1, 'hrm', '$user->rights->hrm->employee->write', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->hrm->enabled', __HANDLER__, 'left', 4602__+MAX_llx_menu__, 'hrm', '', 4600__+MAX_llx_menu__, '/user/index.php?$leftmenu=hrm&mode=employee', 'List', 1, 'hrm', '$user->rights->hrm->employee->read', '', 0, 2, __ENTITY__); -- HRM - Holiday -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5001__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/card.php?&action=request', 'MenuAddCP', 1, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->view_log', '', 0, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/month_report.php?&action=request', 'MenuReportMonth', 1, 'holiday', '$user->rights->holiday->month_report', '', 0, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'List', 1, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5002__+MAX_llx_menu__, '/holiday/list.php?select_statut=2&leftmenu=hrm', 'ListToApprove', 2, 'trips', '$user->rights->holiday->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5005__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5006__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/month_report.php?&action=request', 'MenuReportMonth', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 4, __ENTITY__); -- HRM - Expense reports insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->deplacement->enabled', __HANDLER__, 'left', 2100__+MAX_llx_menu__, 'accountancy', 'tripsandexpenses', 15__+MAX_llx_menu__, '/compta/deplacement/index.php?leftmenu=tripsandexpenses', 'TripsAndExpenses', 0, 'trips', '$user->rights->deplacement->lire', '', 0, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->deplacement->enabled', __HANDLER__, 'left', 2101__+MAX_llx_menu__, 'accountancy', '', 2100__+MAX_llx_menu__, '/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses', 'New', 1, 'trips', '$user->rights->deplacement->creer', '', 0, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 4a48898b74e..a04448b60d6 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -698,8 +698,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders" && ! empty($conf->expedition->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderToBill"), 2, $user->rights->commande->lire); // The translation key is StatusOrderToBill but it means StatusDelivered. TODO We should renamed this later - if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); + if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire); + //if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire); if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders", $langs->trans("Statistics"), 1, $user->rights->commande->lire); } @@ -720,7 +720,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusOrderCanceled"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusOrderRefused"), 2, $user->rights->fournisseur->commande->lire); - if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); + // Billed is another field. We should add instead a dedicated filter on list. if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("StatusOrderBilled"), 2, $user->rights->fournisseur->commande->lire); $newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire); @@ -730,8 +730,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->contrat->enabled)) { $langs->load("contracts"); - $newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000); - $newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer); + $newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("ContractsSubscriptions"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000); + $newmenu->add("/contrat/card.php?action=create&leftmenu=contracts", $langs->trans("NewContractSubscription"), 1, $user->rights->contrat->creer); $newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire); $newmenu->add("/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire); if (empty($leftmenu) || $leftmenu=="contracts") $newmenu->add("/contrat/services.php?leftmenu=contracts&mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire); @@ -1213,13 +1213,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Project affected to user $newmenu->add("/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer); - $newmenu->add("/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); + $newmenu->add("/projet/tasks/list.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add("/projet/activity/perweek.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); // All project i have permission on $newmenu->add("/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $user->rights->projet->creer); - $newmenu->add("/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); + $newmenu->add("/projet/tasks/list.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/activity/perweek.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer); } } diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 0bba9873a52..76a386c48c1 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -487,7 +487,7 @@ class pdf_einstein extends ModelePDFCommandes if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/dons/html_cerfafr.html b/htdocs/core/modules/dons/html_cerfafr.html index ea9dbee01e3..df6f58af77d 100644 --- a/htdocs/core/modules/dons/html_cerfafr.html +++ b/htdocs/core/modules/dons/html_cerfafr.html @@ -151,8 +151,8 @@ (1) ou n'indiquez que les renseignements concernant l'organisme
    (2) dons effectués par les entreprises - +
    diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 5be6bc09847..935c2c3f400 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -262,9 +262,11 @@ class pdf_merou extends ModelePdfExpedition $pdf->SetFont('','', $default_font_size - 3); - //Creation des cases a cocher + // Check boxes + $pdf->SetDrawColor(120,120,120); $pdf->Rect(10+3, $curY, 3, 3); $pdf->Rect(20+3, $curY, 3, 3); + //Insertion de la reference du produit $pdf->SetXY(30, $curY); $pdf->SetFont('','B', $default_font_size - 3); @@ -280,7 +282,7 @@ class pdf_merou extends ModelePdfExpedition if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); @@ -522,7 +524,7 @@ class pdf_merou extends ModelePdfExpedition $origin_id = $object->origin_id; // Add list of linked elements - $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size, $hookmanager); + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size - 1, $hookmanager); //$this->Code39($Xoff+43, $Yoff+1, $object->commande->ref,$ext = true, $cks = false, $w = 0.4, $h = 4, $wide = true); //Definition Emplacement du bloc Societe @@ -560,18 +562,18 @@ class pdf_merou extends ModelePdfExpedition $Yoff = $Yoff+7; $pdf->SetXY($blSocX-80,$blSocY+17); - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetTextColor(0,0,0); - $pdf->MultiCell(50, 8, $outputlangs->transnoentities("DateDelivery")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L'); + $pdf->MultiCell(50, 8, $outputlangs->transnoentities("DateDeliveryPlanned")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L'); $pdf->SetXY($blSocX-80,$blSocY+20); - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetTextColor(0,0,0); $pdf->MultiCell(50, 8, $outputlangs->transnoentities("TrackingNumber")." : " . $object->tracking_number, '', 'L'); // Deliverer $pdf->SetXY($blSocX-80,$blSocY+23); - $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetFont('','', $default_font_size - 3); $pdf->SetTextColor(0,0,0); if (! empty($object->tracking_number)) @@ -592,7 +594,7 @@ class pdf_merou extends ModelePdfExpedition $label.=" : "; $label.=$object->tracking_url; } - $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetFont('','B', $default_font_size - 3); $pdf->writeHTMLCell(50, 8, '', '', $label, '', 'L'); } } @@ -603,9 +605,7 @@ class pdf_merou extends ModelePdfExpedition } - /**********************************/ - //Emplacement Informations Expediteur (My Company) - /**********************************/ + // Shipping company (My Company) $Yoff = $blSocY; $blExpX=$Xoff-20; $blW=52; @@ -623,7 +623,7 @@ class pdf_merou extends ModelePdfExpedition $result=$object->fetch_contact($arrayidcontact[0]); } - //Recipient name + // Recipient name // On peut utiliser le nom de la societe du contact if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; @@ -631,15 +631,15 @@ class pdf_merou extends ModelePdfExpedition $thirdparty = $object->client; } - $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); + $carac_client_name=pdfBuildThirdpartyName($thirdparty, $outputlangs); $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,((!empty($object->contact))?$object->contact:null),$usecontact,'targetwithdetails'); $blDestX=$blExpX+55; - $blW=50; + $blW=54; $Yoff = $Ydef +1; - // Show recipient frame + // Show Recipient frame $pdf->SetFont('','B', $default_font_size - 3); $pdf->SetXY($blDestX,$Yoff-4); $pdf->MultiCell($blW,3, $outputlangs->transnoentities("Recipient"), 0, 'L'); @@ -653,8 +653,8 @@ class pdf_merou extends ModelePdfExpedition $posy = $pdf->getY(); // Show recipient information - $pdf->SetFont('','', $default_font_size - 1); - $pdf->SetXY($posx+2,$posy); + $pdf->SetFont('','', $default_font_size - 3); + $pdf->SetXY($blDestX,$posy); $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); } } diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 57afdac711d..091f754a01c 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -71,6 +71,14 @@ class pdf_rouget extends ModelePdfExpedition $this->posxdesc=$this->marge_gauche+1; $this->posxqtyordered=$this->page_largeur - $this->marge_droite - 70; $this->posxqtytoship=$this->page_largeur - $this->marge_droite - 35; + $this->posxpicture=$this->posxqtyordered - (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?20:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images + + if ($this->page_largeur < 210) // To work with US executive format + { + $this->posxpicture-=20; + $this->posxqtyordered-=20; + $this->posxqtytoship-=20; + } } /** @@ -103,6 +111,68 @@ class pdf_rouget extends ModelePdfExpedition $outputlangs->load("deliveries"); $outputlangs->load("sendings"); + $nblignes = count($object->lines); + + // Loop on each lines to detect if there is at least one image to show + $realpatharray=array(); + if (! empty($conf->global->MAIN_GENERATE_SHIPMENT_WITH_PICTURE)) + { + $objphoto = new Product($this->db); + + for ($i = 0 ; $i < $nblignes ; $i++) + { + if (empty($object->lines[$i]->fk_product)) continue; + + $objphoto->fetch($object->lines[$i]->fk_product); + //var_dump($objphoto->ref);exit; + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) + { + $pdir[0] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; + $pdir[1] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; + } + else + { + $pdir[0] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; // default + $pdir[1] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; // alternative + } + + $arephoto = false; + foreach ($pdir as $midir) + { + if (! $arephoto) + { + $dir = $conf->product->dir_output.'/'.$midir; + + foreach ($objphoto->liste_photos($dir,1) as $key => $obj) + { + if (empty($conf->global->CAT_HIGH_QUALITY_IMAGES)) // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo + { + if ($obj['photo_vignette']) + { + $filename= $obj['photo_vignette']; + } + else + { + $filename=$obj['photo']; + } + } + else + { + $filename=$obj['photo']; + } + + $realpath = $dir.$filename; + $arephoto = true; + } + } + } + + if ($realpath && $arephoto) $realpatharray[$i]=$realpath; + } + } + + if (count($realpatharray) == 0) $this->posxpicture=$this->posxqtyordered; + if ($conf->expedition->dir_output) { // Definition de $dir et $file @@ -140,8 +210,6 @@ class pdf_rouget extends ModelePdfExpedition global $action; $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - $nblignes = count($object->lines); - $pdf=pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); $heightforinfotot = 0; // Height reserved to output the info and total part @@ -278,27 +346,98 @@ class pdf_rouget extends ModelePdfExpedition $curY = $tab_top + 7; $nexY = $tab_top + 7; - $num=count($object->lines); // Loop on each lines - for ($i = 0; $i < $num; $i++) + for ($i = 0; $i < $nblignes; $i++) { $curY = $nexY; $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage $pdf->SetTextColor(0,0,0); + // Define size of image if we need it + $imglinesize=array(); + if (! empty($realpatharray[$i])) $imglinesize=pdf_getSizeForImage($realpatharray[$i]); + $pdf->setTopMargin($tab_top_newpage); $pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); - // Description de la ligne produit - pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxqtyordered-10,3,$this->posxdesc,$curY,0,1); + $showpricebeforepagebreak=1; + $posYAfterImage=0; + $posYAfterDescription=0; + // We start with Photo of product line + if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur-($heightforfooter+$heightforfreetext+$heightforinfotot))) // If photo too high, we moved completely on new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposbefore+1); + + $curY = $tab_top_newpage; + $showpricebeforepagebreak=0; + } + + if (isset($imglinesize['width']) && isset($imglinesize['height'])) + { + $curX = $this->posxpicture-1; + $pdf->Image($realpatharray[$i], $curX + (($this->posxqtyordered-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi + // $pdf->Image does not increase value return by getY, so we save it manually + $posYAfterImage=$curY+$imglinesize['height']; + } + + // Description of product line + $curX = $this->posxdesc-1; + + $pdf->startTransaction(); + // Description de la ligne produit + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + if ($pageposafter > $pageposbefore) // There is a pagebreak + { + $pdf->rollbackTransaction(true); + $pageposafter=$pageposbefore; + //print $pageposafter.'-'.$pageposbefore;exit; + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + $posyafter=$pdf->GetY(); + //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; + if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text + { + if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposafter+1); + } + } + else + { + // We found a page break + $showpricebeforepagebreak=0; + } + } + else // No pagebreak + { + $pdf->commitTransaction(); + } + $posYAfterDescription=$pdf->GetY(); + $nexY = $pdf->GetY(); $pageposafter=$pdf->getPage(); + $pdf->setPage($pageposbefore); $pdf->setTopMargin($this->marge_haute); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + // We suppose that a too long description or photo were moved completely on next page + if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + // We suppose that a too long description is moved completely on next page if ($pageposafter > $pageposbefore) { $pdf->setPage($pageposafter); $curY = $tab_top_newpage; @@ -316,7 +455,7 @@ class pdf_rouget extends ModelePdfExpedition if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); @@ -563,12 +702,15 @@ class pdf_rouget extends ModelePdfExpedition $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R'); - // Date Expedition - $posy+=4; - $pdf->SetXY($posx,$posy); - $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"daytext",false,$outputlangs,true), '', 'R'); - + // Date planned delivery + if (! empty($object->date_delivery)) + { + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); + } + if (! empty($object->client->code_client)) { $posy+=4; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 71050008e07..c0f3ffcc069 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -582,7 +582,7 @@ class pdf_crabe extends ModelePDFFactures if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index f0db8f9e61b..ace4f5e0139 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -422,7 +422,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 2716bdc1e4c..ca9f2b11f0d 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -28,16 +28,16 @@ include_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; /** - * Class to generate target according to rule Fraise + * Class to generate target according to rule Fraise */ class mailing_fraise extends MailingTargets { - // CHANGE THIS: Put here a name not already used - var $name='FundationMembers'; // Identifiant du module mailing - // CHANGE THIS: Put here a description of your selector module. - // This label is used if no translation found for key MailingModuleDescXXX where XXX=name is found + // CHANGE THIS: Put here a name not already used + var $name='FundationMembers'; // Identifiant du module mailing + // CHANGE THIS: Put here a description of your selector module. + // This label is used if no translation found for key MailingModuleDescXXX where XXX=name is found var $desc='Foundation members with emails (by status)'; - // CHANGE THIS: Set to 1 if selector is available for admin users only + // CHANGE THIS: Set to 1 if selector is available for admin users only var $require_admin=0; var $require_module=array('adherent'); @@ -46,11 +46,11 @@ class mailing_fraise extends MailingTargets var $db; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ + /** + * Constructor + * + * @param DoliDB $db Database handler + */ function __construct($db) { $this->db=$db; @@ -58,37 +58,37 @@ class mailing_fraise extends MailingTargets /** - * On the main mailing area, there is a box with statistics. - * If you want to add a line in this report you must provide an - * array of SQL request that returns two field: - * One called "label", One called "nb". - * - * @return string[] Array with SQL requests - */ + * On the main mailing area, there is a box with statistics. + * If you want to add a line in this report you must provide an + * array of SQL request that returns two field: + * One called "label", One called "nb". + * + * @return array Array with SQL requests + */ function getSqlArrayForStats() - { + { global $langs; $langs->load("members"); - // Array for requests for statistics board - $statssql=array(); + // Array for requests for statistics board + $statssql=array(); $statssql[0] ="SELECT '".$this->db->escape($langs->trans("FundationMembers"))."' as label, count(*) as nb"; - $statssql[0].=" FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; + $statssql[0].=" FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; - return $statssql; - } + return $statssql; + } /** - * Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * - * @param string $sql Requete sql de comptage - * @return int Nb of recipients - */ + * Return here number of distinct emails returned by your selector. + * For example if this selector is used to extract 500 different + * emails from a text file, this function must return 500. + * + * @param string $sql Requete sql de comptage + * @return int Nb of recipients + */ function getNbOfRecipients($sql='') { $sql = "SELECT count(distinct(a.email)) as nb"; @@ -108,7 +108,7 @@ class mailing_fraise extends MailingTargets */ function formFilter() { - global $langs; + global $conf, $langs; $langs->load("members"); $form=new Form($this->db); @@ -121,6 +121,36 @@ class mailing_fraise extends MailingTargets $s.=''; $s.=''; $s.=''; + $s.=' '; + $s.=$langs->trans("Type").': '; + $s.=''; $s.='
    '; $s.=$langs->trans("DateEndSubscription").':  '; @@ -135,7 +165,7 @@ class mailing_fraise extends MailingTargets /** * Renvoie url lien vers fiche de la source du destinataire du mailing * - * @param int $id ID + * @param int $id ID * @return string Url lien */ function url($id) @@ -147,9 +177,9 @@ class mailing_fraise extends MailingTargets /** * Ajoute destinataires dans table des cibles * - * @param int $mailing_id Id of emailing - * @param array $filtersarray Param to filter sql request. Deprecated. Should use $_POST instead. - * @return int < 0 si erreur, nb ajout si ok + * @param int $mailing_id Id of emailing + * @param array $filtersarray Param to filter sql request. Deprecated. Should use $_POST instead. + * @return int < 0 si erreur, nb ajout si ok */ function add_to_target($mailing_id,$filtersarray=array()) { @@ -162,7 +192,7 @@ class mailing_fraise extends MailingTargets $langs->load("members"); $langs->load("companies"); - $cibles = array(); + $cibles = array(); $now=dol_now(); $dateendsubscriptionafter=dol_mktime($_POST['subscriptionafterhour'],$_POST['subscriptionaftermin'],$_POST['subscriptionaftersec'],$_POST['subscriptionaftermonth'],$_POST['subscriptionafterday'],$_POST['subscriptionafteryear']); @@ -171,8 +201,8 @@ class mailing_fraise extends MailingTargets // La requete doit retourner: id, email, fk_contact, name, firstname $sql = "SELECT a.rowid as id, a.email as email, null as fk_contact, "; $sql.= " a.lastname, a.firstname,"; - $sql.= " a.datefin, a.civility as civility_id, a.login, a.societe"; // Other fields - $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a"; + $sql.= " a.datefin, a.civility as civility_id, a.login, a.societe"; // Other fields + $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a, ".MAIN_DB_PREFIX."adherent_type as ta"; $sql.= " WHERE a.email <> ''"; // Note that null != '' is false $sql.= " AND a.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".$mailing_id.")"; if (isset($_POST["filter"]) && $_POST["filter"] == '-1') $sql.= " AND a.statut=-1"; @@ -181,6 +211,8 @@ class mailing_fraise extends MailingTargets if (isset($_POST["filter"]) && $_POST["filter"] == '0') $sql.= " AND a.statut=0"; if ($dateendsubscriptionafter > 0) $sql.=" AND datefin > '".$this->db->idate($dateendsubscriptionafter)."'"; if ($dateendsubscriptionbefore > 0) $sql.=" AND datefin < '".$this->db->idate($dateendsubscriptionbefore)."'"; + $sql.= " AND a.fk_adherent_type = ta.rowid"; + if ($_POST['filter']) $sql.= " AND ta.rowid='".$_POST['filter']."'"; $sql.= " ORDER BY a.email"; //print $sql; @@ -202,11 +234,11 @@ class mailing_fraise extends MailingTargets if ($old <> $obj->email) { $cibles[$j] = array( - 'email' => $obj->email, - 'fk_contact' => $obj->fk_contact, - 'lastname' => $obj->lastname, - 'firstname' => $obj->firstname, - 'other' => + 'email' => $obj->email, + 'fk_contact' => $obj->fk_contact, + 'lastname' => $obj->lastname, + 'firstname' => $obj->firstname, + 'other' => ($langs->transnoentities("Login").'='.$obj->login).';'. ($langs->transnoentities("UserTitle").'='.($obj->civility_id?$langs->transnoentities("Civility".$obj->civility_id):'')).';'. ($langs->transnoentities("DateEnd").'='.dol_print_date($this->db->jdate($obj->datefin),'day')).';'. @@ -214,7 +246,7 @@ class mailing_fraise extends MailingTargets 'source_url' => $this->url($obj->id), 'source_id' => $obj->id, 'source_type' => 'member' - ); + ); $old = $obj->email; $j++; } @@ -230,7 +262,6 @@ class mailing_fraise extends MailingTargets } return parent::add_to_target($mailing_id, $cibles); - } + } } - diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index 24a1c87182a..8390e1f10a0 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -183,52 +183,23 @@ class modCommande extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande' AND entity IN (0, ".$conf->entity.')'; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='order'; - } - } - // End add extra fields + $keyforselect='commande'; $keyforelement='order'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='commandedet'; $keyforelement='order_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande as c'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_extrafields as extra ON c.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'commandedet as cd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet_extrafields as extra2 on cd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_commande'; $this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('commande',1).')'; } diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 807a2673849..0b237c02c77 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -185,46 +185,12 @@ class modFacture extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.label'=>"invoice_line",'fd.description'=>"invoice_line",'fd.subprice'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.special_code'=>'invoice_line','fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_sell'=>'product','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) { - $tmpkeys=array_keys($tmpparam['options']); - $tmp=array_shift($tmpkeys); - } - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='facture'; - } - } - // End add axtra fields + $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='facturedet'; $keyforelement='invoice_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; @@ -233,7 +199,9 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON f.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facturedet as fd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet_extrafields as extra2 on fd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture'; $this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')'; $r++; @@ -242,51 +210,13 @@ class modFacture extends DolibarrModules $this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("facture","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.fk_bank'=>'IdTransaction'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','p.ref'=>'PaymentRef','p.amount'=>'AmountPayment','pf.amount'=>'AmountPaymentDistributedOnInvoice','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.note'=>'PaymentNote','p.fk_bank'=>'IdTransaction'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) { - $tmpkeys=array_keys($tmpparam['options']); - $tmp=array_shift($tmpkeys); - } - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='facture'; - } - } - // End add axtra fields + $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; diff --git a/htdocs/core/modules/modPropale.class.php b/htdocs/core/modules/modPropale.class.php index 62fe7d2defe..65f5a4729b5 100644 --- a/htdocs/core/modules/modPropale.class.php +++ b/htdocs/core/modules/modPropale.class.php @@ -176,52 +176,23 @@ class modPropale extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields - $sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'propal' AND entity IN (0, ".$conf->entity.')'; - $resql=$this->db->query($sql); - if ($resql) // This can fail when class is used on old database (during migration for example) - { - while ($obj=$this->db->fetch_object($resql)) - { - $fieldname='extra.'.$obj->name; - $fieldlabel=ucfirst($obj->label); - $typeFilter="Text"; - switch($obj->type) - { - case 'int': - case 'double': - case 'price': - $typeFilter="Numeric"; - break; - case 'date': - case 'datetime': - $typeFilter="Date"; - break; - case 'boolean': - $typeFilter="Boolean"; - break; - case 'sellist': - $tmp=''; - $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); - if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; - break; - } - $this->export_fields_array[$r][$fieldname]=$fieldlabel; - $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; - $this->export_entities_array[$r][$fieldname]='propal'; - } - } - // End add extra fields + $keyforselect='propal'; $keyforelement='propal'; $keyforaliasextra='extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='propaldet'; $keyforelement='propal_line'; $keyforaliasextra='extra2'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s '; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'propal as c'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propal_extrafields as extra ON c.rowid = extra.fk_object'; $this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet_extrafields as extra2 on cd.rowid = extra2.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; $this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal'; $this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('propal',1).')'; } diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php index 280b871e475..d6017b06c16 100644 --- a/htdocs/core/modules/modSkype.class.php +++ b/htdocs/core/modules/modSkype.class.php @@ -42,8 +42,8 @@ class modSkype extends DolibarrModules $this->db = $db; $this->numero = 3100; - // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' - // It is used to group modules in module setup page + // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' + // It is used to group modules in module setup page $this->family = "crm"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index f684f0f786d..24b0bcb627d 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -79,7 +79,7 @@ class pdf_baleine extends ModelePDFProjects $this->posxref=$this->marge_gauche+1; $this->posxlabel=$this->marge_gauche+25; $this->posxworkload=$this->marge_gauche+100; - $this->posxprogress=$this->marge_gauche+140; + $this->posxprogress=$this->marge_gauche+130; $this->posxdatestart=$this->marge_gauche+150; $this->posxdateend=$this->marge_gauche+170; } @@ -250,7 +250,7 @@ class pdf_baleine extends ModelePDFProjects if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index cb7bad2c6c7..8f5109eb4ec 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -177,7 +177,7 @@ class pdf_azur extends ModelePDFPropales if (empty($object->lines[$i]->fk_product)) continue; $objphoto->fetch($object->lines[$i]->fk_product); - + //var_dump($objphoto->ref);exit; if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { $pdir[0] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; @@ -395,7 +395,7 @@ class pdf_azur extends ModelePDFPropales $nexY = $tab_top + 7; // Loop on each lines - for ($i = 0 ; $i < $nblignes ; $i++) + for ($i = 0; $i < $nblignes; $i++) { $curY = $nexY; $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage @@ -575,7 +575,7 @@ class pdf_azur extends ModelePDFPropales if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); @@ -1567,6 +1567,7 @@ class pdf_azur extends ModelePDFPropales // Total HT $pdf->SetFillColor(255,255,255); $pdf->SetXY($posx, $tab_top + 0); + $pdf->SetFont('','', $default_font_size - 2); $pdf->MultiCell($largcol, $tab_hl, $outputlangs->transnoentities("ProposalCustomerSignature"), 0, 'L', 1); $pdf->SetXY($posx, $tab_top + $tab_hl); diff --git a/htdocs/core/modules/security/generate/README b/htdocs/core/modules/security/generate/README old mode 100755 new mode 100644 diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 743e333208d..c456bd7e0db 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -451,7 +451,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index a9247534165..e84416e114e 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -473,7 +473,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php index a0d565d5337..4a14998d0c4 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -497,7 +497,7 @@ class pdf_aurore extends ModelePDFSupplierProposal if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) { $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(60,60,60))); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80))); //$pdf->SetDrawColor(190,190,200); $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); $pdf->SetLineStyle(array('dash'=>0)); diff --git a/htdocs/core/search.php b/htdocs/core/search.php index 0307a8c77d1..ccb8838e42f 100644 --- a/htdocs/core/search.php +++ b/htdocs/core/search.php @@ -74,6 +74,11 @@ if (GETPOST('search_supplier_invoice') != '') header("Location: ".DOL_URL_ROOT.'/fourn/facture/list.php?sall='.urlencode(GETPOST('search_supplier_invoice'))); exit; } +if (GETPOST('search_supplier_proposal') != '') +{ + header("Location: ".DOL_URL_ROOT.'/supplier_proposal/list.php?sall='.urlencode(GETPOST('search_supplier_proposal'))); + exit; +} if (GETPOST('search_donation') != '') { header("Location: ".DOL_URL_ROOT.'/don/list.php?sall='.urlencode(GETPOST('search_donation'))); @@ -121,7 +126,7 @@ if (GETPOST('search_project') != '') } if (GETPOST('search_task') != '') { - header("Location: ".DOL_URL_ROOT.'/projet/tasks/index.php?mode=search&search_all='.urlencode(GETPOST('search_task'))); + header("Location: ".DOL_URL_ROOT.'/projet/tasks/list.php?mode=search&search_all='.urlencode(GETPOST('search_task'))); exit; } diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index d7949fa1d52..31ad9716155 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -464,43 +464,6 @@ if (! empty($usemargins) && $user->rights->margins->creer) return true; } - - /* Function similar to price2num in PHP */ - function price2numjs(num) - { - if (num == '') return ''; - - transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); - if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); - print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript - ?> - - var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN; ?>; - var main_rounding_unit = global->MAIN_MAX_DECIMALS_UNIT; ?>; - var main_rounding_tot = global->MAIN_MAX_DECIMALS_TOT; ?>; - - var amount = num.toString(); - - // rounding for unit price - var rounding = main_rounding_unit; - var pos = amount.indexOf(dec); - var decpart = ''; - if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale - var nbdec = decpart.length; - if (nbdec > rounding) rounding = nbdec; - // If rounding higher than max shown - if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; - - if (thousand != ',' && thousand != '.') amount=amount.replace(',','.'); - amount=amount.replace(' ',''); // To avoid spaces - amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is . - amount=amount.replace(dec,'.'); - - return parseFloat(amount).toFixed(rounding); - } - @@ -518,7 +481,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (CKEDITOR) + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } @@ -594,7 +557,7 @@ jQuery(document).ready(function() { /* Define default price at loading */ var defaultprice = $("#fournprice_predef").find('option:selected').attr("price"); - $("#buying_price").val(Math.round(defaultprice,global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); + $("#buying_price").val(defaultprice); $("#fournprice_predef").change(function() { console.log("change on fournprice_predef"); @@ -624,7 +587,7 @@ jQuery(document).ready(function() { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); /* focus if CKEDITOR */ - if (CKEDITOR) + if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined") { var editor = CKEDITOR.instances['dp_desc']; if (editor) { editor.focus(); } diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 883c1f5eea9..4316ab0b318 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -375,42 +375,6 @@ if (! empty($conf->margin->enabled)) return true; } - /* Function similar to price2num in PHP */ - function price2numjs(num) - { - if (num == '') return ''; - - transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->transnoentitiesnoconv("SeparatorDecimal"); - if ($langs->transnoentitiesnoconv("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->transnoentitiesnoconv("SeparatorThousand"); - print "var dec='".$dec."'; var thousand='".$thousand."';\n"; // Set var in javascript - ?> - - var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN; ?>; - var main_rounding_unit = global->MAIN_MAX_DECIMALS_UNIT; ?>; - var main_rounding_tot = global->MAIN_MAX_DECIMALS_TOT; ?>; - - var amount = num.toString(); - - // rounding for unit price - var rounding = main_rounding_unit; - var pos = amount.indexOf(dec); - var decpart = ''; - if (pos >= 0) decpart = amount.substr(pos+1).replace('/0+$/i',''); // Remove 0 for decimal part - var nbdec = decpart.length; - if (nbdec > rounding) rounding = nbdec; - // If rounding higher than max shown - if (rounding > main_max_dec_shown) rounding = main_max_dec_shown; - - if (thousand != ',' && thousand != '.') amount=amount.replace(',','.'); - amount=amount.replace(' ',''); // To avoid spaces - amount=amount.replace(thousand,''); // Replace of thousand before replace of dec to avoid pb if thousand is . - amount=amount.replace(dec,'.'); - - return parseFloat(amount).toFixed(rounding); - } - diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php index a5e5ab21919..dd775662db6 100644 --- a/htdocs/core/tpl/resource_view.tpl.php +++ b/htdocs/core/tpl/resource_view.tpl.php @@ -37,7 +37,10 @@ if( (array) $linked_resources && count($linked_resources) > 0) { $var=!$var; $object_resource = fetchObjectByElement($linked_resource['resource_id'],$linked_resource['resource_type']); - if($mode == 'edit' && $linked_resource['rowid'] == GETPOST('lineid')) + + //$element_id = $linked_resource['rowid']; + + if ($mode == 'edit' && $linked_resource['rowid'] == GETPOST('lineid')) { print ''; @@ -58,7 +61,7 @@ if( (array) $linked_resources && count($linked_resources) > 0) else { $style=''; - if($linked_resource['rowid'] == GETPOST('lineid')) + if ($linked_resource['rowid'] == GETPOST('lineid')) $style='style="background: orange;"'; print '
    '; @@ -91,8 +94,6 @@ if( (array) $linked_resources && count($linked_resources) > 0) print '
    '; } - - } print ''; diff --git a/htdocs/core/triggers/dolibarrtriggers.class.php b/htdocs/core/triggers/dolibarrtriggers.class.php index d4cffc24a01..61a89b083f8 100644 --- a/htdocs/core/triggers/dolibarrtriggers.class.php +++ b/htdocs/core/triggers/dolibarrtriggers.class.php @@ -121,9 +121,9 @@ abstract class DolibarrTriggers $langs->load("admin"); if ($this->version == self::VERSION_DEVELOPMENT) { - return $langs->trans("Development"); + return $langs->trans("VersionDevelopment"); } elseif ($this->version == self::VERSION_EXPERIMENTAL) { - return $langs->trans("Experimental"); + return $langs->trans("VersionExperimental"); } elseif ($this->version == self::VERSION_DOLIBARR) { return DOL_VERSION; } elseif ($this->version) { diff --git a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN index bd1328e6eae..f25a99f3b59 100644 --- a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN +++ b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN @@ -150,7 +150,7 @@ class InterfaceDemo extends DolibarrTriggers case 'LINEPROPAL_UPDATE': case 'LINEPROPAL_DELETE': - // Askpricesupplier + // SupplierProposal case 'SUPPLIER_PROPOSAL_CREATE': case 'SUPPLIER_PROPOSAL_CLONE': case 'SUPPLIER_PROPOSAL_MODIFY': diff --git a/htdocs/cron/info.php b/htdocs/cron/info.php index 1e13bd725b3..334a5da6890 100644 --- a/htdocs/cron/info.php +++ b/htdocs/cron/info.php @@ -55,6 +55,5 @@ dol_print_object_info($object); print '
    '; print '
    '; - -$db->close(); -llxFooter(); \ No newline at end of file +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/don/info.php b/htdocs/don/info.php index daa5c6e62de..1c51a1fa9f8 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -57,6 +57,5 @@ if ($id) print ''; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 14389887faa..9477e91837e 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -34,13 +34,13 @@ $langs->load("donations"); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="d.datedon"; -$limit = $conf->liste_limit; $statut=isset($_GET["statut"])?$_GET["statut"]:"-1"; $search_all=GETPOST('sall','alpha'); @@ -149,7 +149,7 @@ if ($resql) if ($search_all) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall); } print ""; @@ -236,7 +236,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index da33a92e750..a0062632770 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -308,7 +308,5 @@ if (GETPOST("action") == 'create') print "\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/don/stats/index.php b/htdocs/don/stats/index.php index c5cd34caf5f..bf773fcab62 100644 --- a/htdocs/don/stats/index.php +++ b/htdocs/don/stats/index.php @@ -244,7 +244,7 @@ print '
    '; print ''; // User print '
    '; // Year print ''; // User print ''; // Year print '
    '.$langs->trans("CreatedBy").''; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '
    '.$langs->trans("Year").''; diff --git a/htdocs/ecm/docfile.php b/htdocs/ecm/docfile.php index d533e1cf559..ce4bf480668 100644 --- a/htdocs/ecm/docfile.php +++ b/htdocs/ecm/docfile.php @@ -285,6 +285,5 @@ if ($_GET["action"] != 'edit') // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ecm/docmine.php b/htdocs/ecm/docmine.php index 2ec6dfc4aae..ae4e6c6b08c 100644 --- a/htdocs/ecm/docmine.php +++ b/htdocs/ecm/docmine.php @@ -114,8 +114,8 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') $langs->load("other"); $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); $result=$ecmdir->changeNbOfFiles('-'); } @@ -364,6 +364,5 @@ if ($user->rights->ecm->read) */ // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ecm/docother.php b/htdocs/ecm/docother.php index 2f0f231523f..addf559e01c 100644 --- a/htdocs/ecm/docother.php +++ b/htdocs/ecm/docother.php @@ -167,6 +167,5 @@ if ($mesg) { print $mesg."
    "; } print $langs->trans("FeatureNotYetAvailable"); // End of page -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index b3db0a40e12..9fcc5e83b27 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -109,7 +109,7 @@ if (($action == 'create') || ($action == 'add')) if (! (GETPOST('entrepot_id','int') > 0)) { $langs->load("errors"); - setEventMessage($langs->trans("WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn"),'errors'); + setEventMessages($langs->trans("WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn"), null, 'errors'); header("Location: ".DOL_URL_ROOT.'/expedition/shipment.php?id='.$origin_id); exit; } @@ -276,7 +276,7 @@ if (empty($reshook)) $ret=$object->addline($entrepot_id,GETPOST($idl,'int'),GETPOST($qty,'int'),$array_options[$i]); if ($ret < 0) { - $mesg='
    '.$object->error.'
    '; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } @@ -289,7 +289,7 @@ if (empty($reshook)) $ret=$object->addline_batch($batch_line[$i],$array_options[$i]); if ($ret < 0) { - $mesg='
    '.$object->error.'
    '; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } @@ -304,14 +304,14 @@ if (empty($reshook)) $ret=$object->create($user); // This create shipment (like Odoo picking) and line of shipments. Stock movement will when validating shipment. if ($ret <= 0) { - $mesg='
    '.$object->error.'
    '; + setEventMessages($object->error, $object->errors, 'errors'); $error++; } } } else { - $mesg='
    '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Qty")).'
    '; + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("QtyToShip")), null, 'errors'); $error++; } @@ -342,7 +342,7 @@ if (empty($reshook)) } else { - $mesg=$object->error; + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -358,7 +358,7 @@ if (empty($reshook)) if ($result < 0) { $langs->load("errors"); - setEventMessage($langs->trans($object->error),'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); } else { @@ -392,19 +392,18 @@ if (empty($reshook)) } else { - $langs->load("errors"); - setEventMessage($langs->trans($object->error),'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } - - else if ($action == 'reopen' && (! empty($user->rights->expedition->creer) || ! empty($user->rights->expedition->shipping_advance->validate))) + // TODO add alternative status + /*else if ($action == 'reopen' && (! empty($user->rights->expedition->creer) || ! empty($user->rights->expedition->shipping_advance->validate))) { $result = $object->setStatut(0); if ($result < 0) { - $mesg = $object->error; + setEventMessages($object->error, $object->errors, 'errors'); } - } + }*/ else if ($action == 'setdate_livraison' && $user->rights->expedition->creer) { @@ -415,7 +414,7 @@ if (empty($reshook)) $result=$object->set_date_livraison($user,$datedelivery); if ($result < 0) { - $mesg='
    '.$object->error.'
    '; + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -450,7 +449,7 @@ if (empty($reshook)) header("Location: card.php?id=".$object->id); exit; } - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } $action=""; @@ -488,8 +487,8 @@ if (empty($reshook)) $upload_dir = $conf->expedition->dir_output . "/sending"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } elseif ($action == 'classifybilled') @@ -537,11 +536,9 @@ if ($action == 'create') print load_fiche_titre($langs->trans("CreateASending")); if (! $origin) { - setEventMessage($langs->trans("ErrorBadParameters"),'errors'); + setEventMessages($langs->trans("ErrorBadParameters"), null, 'errors'); } - dol_htmloutput_mesg($mesg); - if ($origin) { $classname = ucfirst($origin); @@ -999,8 +996,6 @@ else if ($id || $ref) if ($object->id > 0) { - dol_htmloutput_mesg($mesg); - if (!empty($object->origin)) { $typeobject = $object->origin; @@ -1016,8 +1011,6 @@ else if ($id || $ref) $head=shipping_prepare_head($object); dol_fiche_head($head, 'shipping', $langs->trans("Shipment"), 0, 'sending'); - dol_htmloutput_mesg($mesg); - /* * Confirmation de la suppression */ diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 39b69ffb447..b8bb8f65b95 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1125,6 +1125,7 @@ class Expedition extends CommonObject break; } } + if ($error) break; // break for loop incase of error } } } @@ -1237,7 +1238,7 @@ class Expedition extends CommonObject */ function fetch_lines() { - global $conf; + global $conf, $mysoc; // TODO: recuperer les champs du document associe a part $sql = "SELECT cd.rowid, cd.fk_product, cd.label as custom_label, cd.description, cd.qty as qty_asked"; @@ -1313,7 +1314,7 @@ class Expedition extends CommonObject $line->volume_units = $obj->volume_units; // For invoicing - $tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type); // We force type to 0 + $tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type, $mysoc); // We force type to 0 $line->desc = $obj->description; // We need ->desc because some code into CommonObject use desc (property defined for other elements) $line->qty = $line->qty_shipped; $line->total_ht = $tabprice[0]; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 6d8dc1d22df..bee47fe25bd 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -43,15 +43,14 @@ $optioncss = GETPOST('optioncss','alpha'); $sortfield = GETPOST('sortfield','alpha'); $sortorder = GETPOST('sortorder','alpha'); $page = GETPOST('page','int'); +$limit = $conf->liste_limit; if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; if (! $sortfield) $sortfield="e.ref"; if (! $sortorder) $sortorder="DESC"; -$limit = $conf->liste_limit; $viewstatut=GETPOST('viewstatut'); @@ -237,6 +236,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/expedition/stats/index.php b/htdocs/expedition/stats/index.php index 76755360869..f0f5198bee5 100644 --- a/htdocs/expedition/stats/index.php +++ b/htdocs/expedition/stats/index.php @@ -243,7 +243,7 @@ print '
    '; print '
    '.$langs->trans("CreatedBy").''; - print $form->select_dolusers($userid,'userid',1); + print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '
    '.$langs->trans("Year").''; diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php index 4f420957660..8b7066adc09 100644 --- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php @@ -29,7 +29,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("sendings"); echo '
    '; -print load_fiche_titre($langs->trans('RelatedShippings')); +print load_fiche_titre($langs->trans('RelatedShippings'), '', ''); ?> diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index f456bc0db8b..30642ad09c5 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -51,6 +51,8 @@ $date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('d $fk_projet=GETPOST('fk_projet'); $vatrate=GETPOST('vatrate'); $ref=GETPOST("ref",'alpha'); +$comments=GETPOST('comments'); +$fk_c_type_fees=GETPOST('fk_c_type_fees','int'); // If socid provided by ajax company selector if (! empty($_REQUEST['socid_id'])) @@ -92,7 +94,19 @@ $hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (! empty($co * Actions */ -if ($cancel) $action=''; +if ($cancel) +{ + $action=''; + $fk_projet=''; + $date_start=''; + $date_end=''; + $date=''; + $comments=''; + $vatrate=''; + $value_unit=''; + $qty=1; + $fk_c_type_fees=-1; +} if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer) { @@ -125,7 +139,7 @@ if ($action == 'add' && $user->rights->expensereport->creer) if ($object->periode_existe($user,$object->date_debut,$object->date_fin)) { $error++; - setEventMessage($langs->trans("ErrorDoubleDeclaration"),'errors'); + setEventMessages($langs->trans("ErrorDoubleDeclaration"), null, 'errors'); $action='create'; } @@ -253,7 +267,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2)); - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } @@ -265,11 +279,11 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ $mesg=''; $mesg.=$langs->trans('ErrorFailedToSendMail', $emailFrom, $emailTo); $mesg.='
    '.$mailfile->error; - setEventMessage($mesg,'errors'); + setEventMessages($mesg, null, 'errors'); } else { - setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings'); + setEventMessages('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', null, 'warnings'); } } } @@ -281,7 +295,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $ } else { - setEventMessage($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), 'warnings'); + setEventMessages($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), null, 'warnings'); $action=''; } } @@ -476,15 +490,15 @@ if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $u // SEND $result=$mailfile->sendfile(); if ($result): - setEventMessage($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo)); + setEventMessages($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo), null, 'mesgs'); Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; else: - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); endif; else: - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); endif; // END - Send mail else : // if ($resultPDF) @@ -562,13 +576,13 @@ if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user $result=$mailfile->sendfile(); if ($result) { - setEventMessage($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo)); + setEventMessages($langs->trans("MailSuccessfulySent",$emailFrom,$emailTo), null, 'mesgs'); Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; } else { - setEventMessage($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo),'errors'); + setEventMessages($langs->trans("ErrorFailedToSendMail",$emailFrom,$emailTo), null, 'errors'); $mesg="Impossible d'envoyer l'email."; } // END - Send mail @@ -863,7 +877,7 @@ if ($action == "addline") if($object_ligne->value_unit==0) { $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UP")), null, 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("PriceUTTC")), null, 'errors'); } // S'il y'a eu au moins une erreur @@ -872,7 +886,8 @@ if ($action == "addline") $object_ligne->fk_expensereport = $_POST['fk_expensereport']; $type = 0; // TODO What if service ? - $tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type); + $seller = ''; // seller is unknown + $tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type, $seller); $object_ligne->vatrate = price2num($vatrate); $object_ligne->total_ttc = $tmp[2]; @@ -1045,8 +1060,8 @@ else if ($action == 'remove_file') $upload_dir = $conf->expensereport->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); $action=''; } } @@ -1184,9 +1199,8 @@ else print $langs->trans('NotUserRightToView'); print ''; - $db->close(); - llxFooter(); + $db->close(); exit; } @@ -1615,7 +1629,19 @@ else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; $sql.= ' WHERE fde.fk_expensereport = '.$object->id; - $resql = $db->query($sql); + print '
    '; + + $actiontouse='updateligne'; + if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') $actiontouse='addline'; + + print '
    '; + print ''; + print ''; + print ''; + print ''; + print '
    '; + + $resql = $db->query($sql); if ($resql) { $num_lignes = $db->num_rows($resql); @@ -1623,34 +1649,21 @@ else if ($num_lignes) { - print '
    '; - - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - if ($action != 'editline') print ''; + print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; if ($action != 'editline') { print ''; print ''; } - // Ajout des boutons de modification/suppression - if ($object->fk_statut < 2 || $object->fk_statut==99) - { - print ''; - } + print ''; print ''; @@ -1663,14 +1676,11 @@ else if ($action != 'editline' || $objp->rowid != GETPOST('rowid')) { print ''; - if ($action != 'editline') - { - print ''; - } - print ''; print ''; + print ''; + print ''; print ''; print ''; + if ($action != 'editline') { print ''; @@ -1690,17 +1701,18 @@ else } // Ajout des boutons de modification/suppression + print ''; } + print ''; + print ''; } @@ -1708,6 +1720,9 @@ else { //modif ligne!!!!! print ''; + + print ''; + // Select date print ''; + if ($action != 'editline') + { + print ''; + print ''; + } + print '
    '.$langs->trans('Piece').''.$langs->trans('Piece').''.$langs->trans('Date').''.$langs->trans('Project').''.$langs->trans('Project').''.$langs->trans('Type').''.$langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('UnitPriceTTC').''.$langs->trans('PriceUTTC').''.$langs->trans('Qty').''.$langs->trans('AmountHT').''.$langs->trans('AmountTTC').'
    '; - print img_picto($langs->trans("Document"), "object_generic"); - print ' '.$piece_comptable.''.dol_print_date($db->jdate($objp->date), 'day').''; + print img_picto($langs->trans("Document"), "object_generic"); + print ' '.$piece_comptable.''.dol_print_date($db->jdate($objp->date), 'day').''; if ($objp->projet_id > 0) { $projecttmp->id=$objp->projet_id; @@ -1683,6 +1693,7 @@ else print ''.vatrate($objp->vatrate,true).''.price($objp->value_unit).''.$objp->qty.''.price($objp->total_ht).''; if($object->fk_statut<2 OR $object->fk_statut==99) { - print ''; print 'rowid.'#'.$objp->rowid.'">'; print img_edit(); print '   '; print 'rowid.'">'; print img_delete(); print ''; - print '
    '; $form->select_date($objp->date,'date'); @@ -1743,6 +1758,12 @@ else print ''; print ''.$langs->trans('AmountHT').''.$langs->trans('AmountTTC').''; print ''; print ''; @@ -1754,12 +1775,6 @@ else } $db->free($resql); - - print '
    '; - - print ''; - - print ''; } else { @@ -1772,27 +1787,23 @@ else // Add a line if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') { - print load_fiche_titre($langs->trans("AddLine"),'',''); - - print '
    '; - print ''; - print ''; - print ''; - - print ''; print ''; - print ''; + print ''; + //print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; + print ''; + print ''; + // Select date print ''; // Select type - print ''; // Add comments - print ''; // Select VAT @@ -1819,28 +1830,37 @@ else if (! empty($conf->global->EXPENSEREPORT_NO_DEFAULT_VAT)) $conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS = 'none'; print ''; print ''; // Unit price print ''; // Quantity print ''; + if ($action != 'editline') + { + print ''; + print ''; + } + print ''; + print ''; - - print '
    '.$langs->trans('Date').''.$langs->trans('Date').''.$langs->trans('Project').''.$langs->trans('Type').''.$langs->trans('Type').''.$langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('PriceUTTC').''.$langs->trans('Qty').'
    '; $form->select_date($date?$date:-1,'date'); @@ -1800,17 +1811,17 @@ else // Select project print ''; - $formproject->select_projects(-1, GETPOST('fk_projet'), 'fk_projet', 0, 0, 1, 1); + $formproject->select_projects(-1, $fk_projet, 'fk_projet', 0, 0, 1, 1); print ''; - select_type_fees_id(GETPOST('fk_c_type_fees'),'fk_c_type_fees',1); + print ''; + select_type_fees_id($fk_c_type_fees,'fk_c_type_fees',1); print ''; - print ''; + print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print '
    '; - - print '
    '; } // Fin si c'est payé/validé + print '
    '; + + print ''; + + print ''; + } else { diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 0dba68b5b5c..b781d4f3dc6 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1503,7 +1503,6 @@ class ExpenseReport extends CommonObject $this->error=$this->db->error(); return -1; } - } /** @@ -1591,7 +1590,7 @@ class ExpenseReportLine * * @param DoliDB $db Handlet database */ - function ExpenseReportLine($db) + function __construct($db) { $this->db= $db; } @@ -1801,9 +1800,10 @@ class ExpenseReportLine * @param int $selected preselect status * @param string $htmlname Name of HTML select * @param int $useempty 1=Add empty line + * @param int $useshortlabel Use short labels * @return string HTML select with status */ -function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempty=1) +function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempty=1, $useshortlabel=0) { global $db, $langs; @@ -1811,7 +1811,9 @@ function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempt print ''; print ''; print "\n"; @@ -344,10 +354,12 @@ if ($resql) print dol_print_date($db->jdate($obj->date_livraison), 'day'); print ''; - // Statut print ''.$commandestatic->LibStatut($obj->fk_statut, 5).''; + // Billed + print ''.yn($obj->billed).''; + print ''; print "\n"; diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php index c72386e3728..96b014e2cab 100644 --- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php @@ -29,7 +29,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("orders"); echo '
    '; -print load_fiche_titre($langs->trans('RelatedSupplierOrders')); +print load_fiche_titre($langs->trans('RelatedSupplierOrders'), '', ''); ?> diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index fe6582fd355..41837da45c9 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -5,7 +5,7 @@ * Copyright (C) 2005 Marc Barilley * Copyright (C) 2005-2013 Regis Houssin * Copyright (C) 2010-2014 Juanjo Menent - * Copyright (C) 2013 Philippe Grand + * Copyright (C) 2013-2015 Philippe Grand * Copyright (C) 2013 Florian Henry * Copyright (C) 2014 Marcos García * @@ -128,7 +128,7 @@ if (empty($reshook)) else { $langs->load("errors"); - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); $action=''; } // } @@ -161,7 +161,7 @@ if (empty($reshook)) if (! $idwarehouse || $idwarehouse == -1) { $error++; - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $action=''; } } @@ -188,7 +188,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -219,7 +219,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); /* Fix bug 1485 : Reset action to avoid asking again confirmation on failure */ $action=''; } @@ -231,7 +231,7 @@ if (empty($reshook)) $result=$object->set_paid($user); if ($result<0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -242,13 +242,13 @@ if (empty($reshook)) if ($result < 0) dol_print_error($db, $object->error); } - // conditions de reglement + // payments conditions if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer) { $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int')); } - // mode de reglement + // payment mode else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer) { $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int')); @@ -282,7 +282,7 @@ if (empty($reshook)) if (! empty($object->date_echeance) && $object->date_echeance < $object->date) { $object->date_echeance=$object->date; - setEventMessage($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"),'warnings'); + setEventMessages($langs->trans("DatePaymentTermCantBeLowerThanObjectDate"), null, 'warnings'); } $result=$object->update($user); if ($result < 0) dol_print_error($db,$object->error); @@ -298,7 +298,7 @@ if (empty($reshook)) $result=$paiementfourn->fetch(GETPOST('paiement_id')); if ($result > 0) $result=$paiementfourn->delete(); // If fetch ok and found if ($result < 0) { - setEventMessage($paiementfourn->error, 'errors'); + setEventMessages($paiementfourn->error, $paiementfourn->errors, 'errors'); } } } @@ -313,21 +313,21 @@ if (empty($reshook)) if (GETPOST('socid','int')<1) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Supplier')), null, 'errors'); $action='create'; $error++; } if ($datefacture == '') { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('DateInvoice')), null, 'errors'); $action='create'; $_GET['socid']=$_POST['socid']; $error++; } if (! GETPOST('ref_supplier')) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('RefSupplier')), null, 'errors'); $action='create'; $_GET['socid']=$_POST['socid']; $error++; @@ -575,8 +575,8 @@ if (empty($reshook)) $type = $_POST["type"]?$_POST["type"]:0; } - $date_start=dol_mktime(GETPOST('date_start'.$date_pf.'hour'), GETPOST('date_start'.$date_pf.'min'), 0, GETPOST('date_start'.$date_pf.'month'), GETPOST('date_start'.$date_pf.'day'), GETPOST('date_start'.$date_pf.'year')); - $date_end=dol_mktime(GETPOST('date_end'.$date_pf.'hour'), GETPOST('date_end'.$date_pf.'min'), 0, GETPOST('date_end'.$date_pf.'month'), GETPOST('date_end'.$date_pf.'day'), GETPOST('date_end'.$date_pf.'year')); + $date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end=dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $localtax1_tx= get_localtax($_POST['tauxtva'], 1, $mysoc,$object->thirdparty); $localtax2_tx= get_localtax($_POST['tauxtva'], 2, $mysoc,$object->thirdparty); @@ -602,7 +602,7 @@ if (empty($reshook)) else { $db->rollback(); - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -640,6 +640,9 @@ if (empty($reshook)) $qty = GETPOST('qty'.$predef); $remise_percent=GETPOST('remise_percent'.$predef); + $date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start' . $predef . 'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); + $date_end=dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end' . $predef . 'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); + // Extrafields $extrafieldsline = new ExtraFields($db); $extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line); @@ -654,27 +657,27 @@ if (empty($reshook)) if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht') < 0 && $qty < 0) { - setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('idprodfournprice') && GETPOST('type') < 0) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && GETPOST('price_ht')==='' && GETPOST('price_ttc')==='') // Unit price can be 0 but not '' { - setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors'); + setEventMessages($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), null, 'errors'); $error++; } if (GETPOST('prod_entry_mode')=='free' && ! GETPOST('dp_desc')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors'); $error++; } if (! GETPOST('qty')) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors'); $error++; } @@ -710,7 +713,7 @@ if (empty($reshook)) $price_base_type = 'HT'; // TODO Save the product supplier ref into database into field ref_supplier (must rename field ref into ref_supplier first) - $result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1_tx, $localtax2_tx, $qty, $idprod, $remise_percent, '', '', 0, $npr, $price_base_type, $type, -1, 0, $array_options, $productsupplier->fk_unit); + $result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1_tx, $localtax2_tx, $qty, $idprod, $remise_percent, $date_start, $date_end, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $productsupplier->fk_unit); } if ($idprod == -2 || $idprod == 0) { @@ -724,7 +727,7 @@ if (empty($reshook)) // Quantity too low $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors'); + setEventMessages($langs->trans("ErrorQtyTooLowForThisSupplier"), null, 'errors'); } } else if( GETPOST('price_ht')!=='' || GETPOST('price_ttc')!=='' ) @@ -757,7 +760,7 @@ if (empty($reshook)) $price_base_type = 'HT'; } - $result=$object->addline($product_desc, $ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit); + $result=$object->addline($product_desc, $ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $date_start, $date_end, 0, $npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit); } //print "xx".$tva_tx; exit; @@ -817,7 +820,7 @@ if (empty($reshook)) else { $db->rollback(); - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } $action = ''; @@ -883,7 +886,7 @@ if (empty($reshook)) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -992,7 +995,7 @@ if (empty($reshook)) $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1); if ($mailfile->error) { - setEventMessage($mailfile->error,'errors'); + setEventMessages($mailfile->error, $mailfile->errors, 'errors'); } else { @@ -1000,7 +1003,7 @@ if (empty($reshook)) if ($result) { $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain " - setEventMessage($mesg); + setEventMessages($mesg, null, 'mesgs'); $error=0; @@ -1045,7 +1048,7 @@ if (empty($reshook)) { $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; } - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); } } } @@ -1053,14 +1056,14 @@ if (empty($reshook)) else { $langs->load("other"); - setEventMessage($langs->trans('ErrorMailRecipientIsEmpty'), 'errors'); + setEventMessages($langs->trans('ErrorMailRecipientIsEmpty'), null, 'errors'); dol_syslog('Recipient email is empty'); } } else { $langs->load("other"); - setEventMessage($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), 'errors'); + setEventMessages($langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")), null, 'errors'); dol_syslog('Unable to read data from the invoice. The invoice file has perhaps not been generated.'); } @@ -1117,8 +1120,8 @@ if (empty($reshook)) $upload_dir = $conf->fournisseur->facture->dir_output . "/"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } } @@ -1182,11 +1185,11 @@ if (empty($reshook)) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -1521,7 +1524,7 @@ if ($action == 'create') $cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']); if ($cntinvoice>=1) { - setEventMessage('WarningBillExist','warnings'); + setEventMessages('WarningBillExist', null, 'warnings'); echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['invoice_supplier'])->getNomUrl(1).')'; } echo ''; @@ -2338,13 +2341,13 @@ else $formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste; $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtopic=$outputlangs->trans('SendBillRef','__FACREF__'); + $formmail->withtopic=$outputlangs->trans('SendBillRef','__REF__'); $formmail->withfile=2; $formmail->withbody=1; $formmail->withdeliveryreceipt=1; $formmail->withcancel=1; // Tableau des substitutions - $formmail->substit['__FACREF__']=$object->ref; + $formmail->substit['__REF__']=$object->ref; $formmail->substit['__SIGNATURE__']=$user->signature; $formmail->substit['__PERSONALIZED__']=''; $formmail->substit['__CONTACTCIVNAME__']=''; diff --git a/htdocs/fourn/facture/contact.php b/htdocs/fourn/facture/contact.php index 7348f3b7590..664101848a6 100644 --- a/htdocs/fourn/facture/contact.php +++ b/htdocs/fourn/facture/contact.php @@ -69,11 +69,11 @@ if ($action == 'addcontact' && $user->rights->fournisseur->facture->creer) if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); - setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } diff --git a/htdocs/fourn/facture/impayees.php b/htdocs/fourn/facture/impayees.php index ecb6b990a64..ccb6671ba3a 100644 --- a/htdocs/fourn/facture/impayees.php +++ b/htdocs/fourn/facture/impayees.php @@ -299,5 +299,5 @@ if ($user->rights->fournisseur->facture->lire) } // End of page -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index a46c5e6ca38..6b69adceb3e 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -273,7 +273,7 @@ if ($resql) if ($search_all) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->transnoentities("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall); } print '
    '; diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 82bccf3df19..599ce879d8e 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -117,7 +117,7 @@ if (empty($reshook)) { $langs->load("errors"); //$error++; - setEventMessage($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), 'warnings'); + setEventMessages($langs->transnoentities("WarningPaymentDateLowerThanInvoiceDate", dol_print_date($datepaye,'day'), dol_print_date($tmpinvoice->date, 'day'), $tmpinvoice->ref), null, 'warnings'); } } @@ -128,7 +128,7 @@ if (empty($reshook)) // Check parameters if ($_POST['paiementid'] <= 0) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('PaymentMode')), null, 'errors'); $error++; } @@ -137,20 +137,20 @@ if (empty($reshook)) // If bank module is on, account is required to enter a payment if (GETPOST('accountid') <= 0) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')), null, 'errors'); $error++; } } if (empty($totalpayment) && empty($atleastonepaymentnotnull)) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')), null, 'errors'); $error++; } if (empty($datepaye)) { - setEventMessage($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), 'errors'); + setEventMessages($langs->transnoentities('ErrorFieldRequired',$langs->transnoentities('Date')), null, 'errors'); $error++; } } @@ -193,7 +193,7 @@ if (empty($reshook)) $paiement_id = $paiement->create($user,(GETPOST('closepaidinvoices')=='on'?1:0)); if ($paiement_id < 0) { - setEventMessage($paiement->error, 'errors'); + setEventMessages($paiement->error, $paiement->errors, 'errors'); $error++; } } @@ -203,7 +203,7 @@ if (empty($reshook)) $result=$paiement->addPaymentToBank($user,'payment_supplier','(SupplierInvoicePayment)',$accountid,'',''); if ($result < 0) { - setEventMessage($paiement->error, 'errors'); + setEventMessages($paiement->error, $paiement->errors, 'errors'); $error++; } } @@ -621,6 +621,5 @@ if (empty($action)) } } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php index 29357b49dc3..10a83ade2f9 100644 --- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php @@ -30,7 +30,7 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("bills"); echo '
    '; -print load_fiche_titre($langs->trans("RelatedSupplierInvoices")); +print load_fiche_titre($langs->trans("RelatedSupplierInvoices"), '', ''); ?>
    @@ -65,7 +65,7 @@ foreach($linkedObjectBlock as $key => $objectlink) } ?> - + '; print ''; @@ -821,10 +824,10 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print ''; print ''; print ''; print ''; @@ -943,7 +946,7 @@ else break; } - setEventMessage($errors, 'errors'); + setEventMessages($errors, null, 'errors'); } // On vérifie si l'utilisateur à le droit de lire cette demande @@ -984,7 +987,6 @@ else $head=holiday_prepare_head($cp); - dol_fiche_head($head,'card',$langs->trans("CPTitreMenu"),0,'holiday'); if ($action == 'edit' && $cp->statut == 1) { @@ -994,6 +996,8 @@ else print ''."\n"; } + dol_fiche_head($head,'card',$langs->trans("CPTitreMenu"),0,'holiday'); + print '
    trans("TotalHT"); ?>trans("TotalHT"); ?> rights->fournisseur->facture->lire) { echo price($total); diff --git a/htdocs/fourn/paiement/card.php b/htdocs/fourn/paiement/card.php index de070a2b3b0..f3295bf744c 100644 --- a/htdocs/fourn/paiement/card.php +++ b/htdocs/fourn/paiement/card.php @@ -59,7 +59,7 @@ if ($action == 'setnote' && $user->rights->fournisseur->facture->creer) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -78,7 +78,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisse } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -99,7 +99,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); } } @@ -110,11 +110,11 @@ if ($action == 'setnum_paiement' && ! empty($_POST['num_paiement'])) $res = $object->update_num($_POST['num_paiement']); if ($res === 0) { - setEventMessage($langs->trans('PaymentNumberUpdateSucceeded')); + setEventMessages($langs->trans('PaymentNumberUpdateSucceeded'), null, 'mesgs'); } else { - setEventMessage($langs->trans('PaymentNumberUpdateFailed'), 'errors'); + setEventMessages($langs->trans('PaymentNumberUpdateFailed'), null, 'errors'); } } @@ -125,11 +125,11 @@ if ($action == 'setdatep' && ! empty($_POST['datepday'])) $res = $object->update_date($datepaye); if ($res === 0) { - setEventMessage($langs->trans('PaymentDateUpdateSucceeded')); + setEventMessages($langs->trans('PaymentDateUpdateSucceeded'), null, 'mesgs'); } else { - setEventMessage($langs->trans('PaymentDateUpdateFailed'), 'errors'); + setEventMessages($langs->trans('PaymentDateUpdateFailed'), null, 'errors'); } } diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index fc04c6838ab..f21390776d3 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -249,7 +249,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/fourn/recap-fourn.php b/htdocs/fourn/recap-fourn.php index eb976acb4a0..acf4c9400d3 100644 --- a/htdocs/fourn/recap-fourn.php +++ b/htdocs/fourn/recap-fourn.php @@ -213,7 +213,5 @@ else dol_print_error($db); } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/ftp/index.php b/htdocs/ftp/index.php index b26e7b96f86..62bb22bf328 100644 --- a/htdocs/ftp/index.php +++ b/htdocs/ftp/index.php @@ -108,15 +108,15 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) $langs->load("errors"); if ($resupload < 0) // Unknown error { - setEventMessage($langs->trans("ErrorFileNotUploaded"), 'errors'); + setEventMessages($langs->trans("ErrorFileNotUploaded"), null, 'errors'); } else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus { - setEventMessage($langs->trans("ErrorFileIsInfectedWithAVirus"), 'errors'); + setEventMessages($langs->trans("ErrorFileIsInfectedWithAVirus"), null, 'errors'); } else // Known error { - setEventMessage($langs->trans($resupload), 'errors'); + setEventMessages($langs->trans($resupload), null, 'errors'); } } } @@ -124,7 +124,7 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) { // Echec transfert (fichier depassant la limite ?) $langs->load("errors"); - setEventMessage($langs->trans("ErrorFailToCreateDir",$upload_dir), 'errors'); + setEventMessages($langs->trans("ErrorFailToCreateDir",$upload_dir), null, 'errors'); } } @@ -143,8 +143,7 @@ if ($action == 'add' && $user->rights->ftp->setup) } else { - //TODO: Translate - setEventMessage('Error '.$langs->trans($ecmdir->error)); + setEventMessages($langs->trans("ErrorFailToCreateDir"), null, 'errors'); $action = "create"; } } @@ -176,12 +175,12 @@ if ($action == 'confirm_deletefile' && $_REQUEST['confirm'] == 'yes') $result=@ftp_delete($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("FileWasRemoved",$file)); + setEventMessages($langs->trans("FileWasRemoved",$file), null, 'mesgs'); } else { dol_syslog("ftp/index.php ftp_delete", LOG_ERR); - setEventMessage($langs->trans("FTPFailedToRemoveFile",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveFile",$file), null, 'errors'); } //ftp_close($conn_id); Close later @@ -226,12 +225,12 @@ if ($_POST["const"] && $_POST["delete"] && $_POST["delete"] == $langs->trans("De $result=@ftp_delete($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("FileWasRemoved",$file)); + setEventMessages($langs->trans("FileWasRemoved",$file), null, 'mesgs'); } else { dol_syslog("ftp/index.php ftp_delete", LOG_ERR); - setEventMessage($langs->trans("FTPFailedToRemoveFile",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveFile",$file), null, 'errors'); } //ftp_close($conn_id); Close later @@ -270,11 +269,11 @@ if ($action == 'confirm_deletesection' && $confirm == 'yes') $result=@ftp_rmdir($conn_id, $newremotefileiso); if ($result) { - setEventMessage($langs->trans("DirWasRemoved",$file)); + setEventMessages($langs->trans("DirWasRemoved",$file), null, 'mesgs'); } else { - setEventMessage($langs->trans("FTPFailedToRemoveDir",$file), 'errors'); + setEventMessages($langs->trans("FTPFailedToRemoveDir",$file), null, 'errors'); } //ftp_close($conn_id); Close later diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index d9200363f6d..80d06fdb446 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -60,7 +60,7 @@ if ($action == 'create') if (($userid == $user->id && empty($user->rights->holiday->write)) || ($userid != $user->id && empty($user->rights->holiday->write_all))) { $error++; - setEventMessage($langs->trans('CantCreateCP')); + setEventMessages($langs->trans('CantCreateCP'), null, 'errors'); $action='request'; } @@ -130,12 +130,18 @@ if ($action == 'create') // If no validator designated if ($valideur < 1) { - header('Location: card.php?action=request&error=Valideur'); - exit; + setEventMessages($langs->transnoentitiesnoconv('InvalidValidatorCP'), null, 'errors'); + $error++; } $result = 0; - + + if ($type < 1) + { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Type")), null, 'errors'); + $error++; + } + if (! $error) { $cp->fk_user = $userid; @@ -150,7 +156,7 @@ if ($action == 'create') } // If no SQL error we redirect to the request card - if ($result > 0) + if (! $error && $result > 0) { $db->commit(); @@ -160,10 +166,6 @@ if ($action == 'create') else { $db->rollback(); - - // Otherwise we display the request form with the SQL error message - header('Location: card.php?action=request'); - exit; } } } @@ -721,7 +723,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create break; } - setEventMessage($errors, 'errors'); + setEventMessages($errors, null, 'errors'); } @@ -793,7 +795,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print ''; if (empty($user->rights->holiday->write_all)) { - print $form->select_dolusers($userid,'useridbis',0,'',1); + print $form->select_dolusers($userid, 'useridbis', 0, '', 1, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print ''; } else print $form->select_dolusers(GETPOST('userid')?GETPOST('userid'):$user->id,'userid',0,'',0); @@ -813,6 +815,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create $arraytypeleaves[$val['rowid']]=$labeltoshow; } print $form->selectarray('type', $arraytypeleaves, (GETPOST('type')?GETPOST('type'):''), 1); + if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
    '.$langs->trans("DateDebCP").' ('.$langs->trans("FirstDayOfHoliday").')'; // Si la demande ne vient pas de l'agenda - if(!isset($_GET['datep'])) { + if (! GETPOST('date_debut_')) { $form->select_date(-1,'date_debut_'); } else { - $tmpdate = dol_mktime(0, 0, 0, GETPOST('datepmonth'), GETPOST('datepday'), GETPOST('datepyear')); + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year')); $form->select_date($tmpdate,'date_debut_'); } print '     '; @@ -837,10 +840,10 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print ''.$langs->trans("DateFinCP").' ('.$langs->trans("LastDayOfHoliday").')'; // Si la demande ne vient pas de l'agenda - if(!isset($_GET['datep'])) { + if (! GETPOST('date_fin_')) { $form->select_date(-1,'date_fin_'); } else { - $tmpdate = dol_mktime(0, 0, 0, GETPOST('datefmonth'), GETPOST('datefday'), GETPOST('datefyear')); + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year')); $form->select_date($tmpdate,'date_fin_'); } print '     '; @@ -857,7 +860,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create $valideurarray = array(); foreach($valideurobjects as $val) $valideurarray[$val->id]=$val->id; print ''; - print $form->select_dolusers($user->fk_user, "valideur", 1, "", 0, $valideurarray); // By default, hierarchical parent + print $form->select_dolusers((GETPOST('valideur')>0?GETPOST('valideur'):$user->fk_user), "valideur", 1, "", 0, $valideurarray, 0, 0, 0, 0, '', 0, '', '', 1); // By default, hierarchical parent print '
    '; print ''; @@ -1168,19 +1172,20 @@ else print ''; print '
    '; + dol_fiche_end(); + if ($action == 'edit' && $cp->statut == 1) { - print '
    '; + print '
    '; if ($canedit && $cp->statut == 1) { - print ''; + print ''; } print '
    '; print ''; } - dol_fiche_end(); if (! $edit) { diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 62ad088a5ef..c64e89b342f 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -130,10 +130,15 @@ elseif($action == 'add_event') $add_holiday = $holiday->getValueEventCp($event); $new_holiday = $nb_holiday + $add_holiday; - // On ajoute la modification dans le LOG - $holiday->addLogCP($user->id,$userCP, $holiday->getNameEventCp($event),$new_holiday); + // add event to existing types of vacation + foreach ($typeleaves as $key => $leave) { + $vacationTypeID = $leave['rowid']; - $holiday->updateSoldeCP($userCP,$new_holiday); + // On ajoute la modification dans le LOG + $holiday->addLogCP($user->id,$userCP, $holiday->getNameEventCp($event),$new_holiday, $vacationTypeID); + + $holiday->updateSoldeCP($userCP,$new_holiday, $vacationTypeID); + } setEventMessages('AddEventToUserOkCP', '', 'mesgs'); } @@ -178,7 +183,7 @@ if ($cp_events == 1) print $langs->trans('MotifCP').' : '; print $holiday->selectEventCP(); print '   '.$langs->trans('UserCP').' : '; - print $form->select_dolusers('',"userCP",1,"",0,''); + print $form->select_dolusers('', 'userCP', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print ' '; print '
    '; diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 2f008e5ccd1..1c82288973e 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -275,7 +275,7 @@ print ''; if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); - print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } print ''; @@ -419,7 +419,7 @@ if (! empty($holiday->holiday)) if($holiday_payes == '2') { print ''; - print ''; + print ''; print ''; } diff --git a/htdocs/hrm/establishment/card.php b/htdocs/hrm/establishment/card.php index 10a1b42e961..fb6f41f4f39 100644 --- a/htdocs/hrm/establishment/card.php +++ b/htdocs/hrm/establishment/card.php @@ -62,7 +62,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -75,7 +75,7 @@ else if ($action == 'add') $object->name = GETPOST('name', 'alpha'); if (empty($object->name)) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Name")), 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Name")), null, 'errors'); $error++; } @@ -124,7 +124,7 @@ else if ($action == 'update') $name = GETPOST('name', 'alpha'); if (empty($name)) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->trans('Name')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired', $langs->trans('Name')), null, 'errors'); $error ++; } diff --git a/htdocs/hrm/establishment/info.php b/htdocs/hrm/establishment/info.php index 806bd893fbb..1ef523fa607 100644 --- a/htdocs/hrm/establishment/info.php +++ b/htdocs/hrm/establishment/info.php @@ -53,6 +53,5 @@ if ($id) print ''; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index dd228af1847..9e729fb36ac 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -139,11 +139,11 @@ if ($action == 'builddoc') $result=$objimport->build_file($user, GETPOST('model','alpha'), $datatoimport, $array_match_file_to_database); if ($result < 0) { - setEventMessage($objimport->error, 'errors'); + setEventMessages($objimport->error, $objimport->errors, 'errors'); } else { - setEventMessage($langs->trans("FileSuccessfullyBuilt")); + setEventMessages($langs->trans("FileSuccessfullyBuilt"), null, 'mesgs'); } } @@ -176,17 +176,17 @@ if ($action == 'add_import_model') $result = $objimport->create($user); if ($result >= 0) { - setEventMessage($langs->trans("ImportModelSaved",$objimport->model_name)); + setEventMessages($langs->trans("ImportModelSaved", $objimport->model_name), null, 'mesgs'); } else { $langs->load("errors"); if ($objimport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - setEventMessage($langs->trans("ErrorImportDuplicateProfil"), 'errors'); + setEventMessages($langs->trans("ErrorImportDuplicateProfil"), null, 'errors'); } else { - setEventMessage($objimport->error, 'errors'); + setEventMessages($objimport->error, null, 'errors'); } } } @@ -211,7 +211,7 @@ if ($step == 3 && $datatoimport) else { $langs->load("errors"); - setEventMessage($langs->trans("ErrorFailedToSaveFile"), 'errors'); + setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } } @@ -225,8 +225,8 @@ if ($step == 3 && $datatoimport) $file = $conf->import->dir_temp . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $ret=dol_delete_file($file); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); Header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.$param); exit; } diff --git a/htdocs/includes/fpdfi/README.txt b/htdocs/includes/fpdfi/README.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.css b/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.js b/htdocs/includes/jquery/plugins/colorpicker/jquery.colorpicker.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif b/htdocs/includes/jquery/plugins/jcrop/css/Jcrop.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css b/htdocs/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/index.html b/htdocs/includes/jquery/plugins/jcrop/index.html old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.js b/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js b/htdocs/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify.css b/htdocs/includes/jquery/plugins/jnotify/jquery.jnotify.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/ChangeLog.txt b/htdocs/includes/jquery/plugins/jpicker/ChangeLog.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/Example.html b/htdocs/includes/jquery/plugins/jpicker/Example.html old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/ReadMe.txt b/htdocs/includes/jquery/plugins/jpicker/ReadMe.txt old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css b/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.min.css b/htdocs/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.min.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/AlphaBar.png b/htdocs/includes/jquery/plugins/jpicker/images/AlphaBar.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/Bars.png b/htdocs/includes/jquery/plugins/jpicker/images/Bars.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/Maps.png b/htdocs/includes/jquery/plugins/jpicker/images/Maps.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/NoColor.png b/htdocs/includes/jquery/plugins/jpicker/images/NoColor.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/bar-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/bar-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/map-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/map-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/mappoint.gif b/htdocs/includes/jquery/plugins/jpicker/images/mappoint.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/picker.gif b/htdocs/includes/jquery/plugins/jpicker/images/picker.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/preview-opacity.png b/htdocs/includes/jquery/plugins/jpicker/images/preview-opacity.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/images/rangearrows.gif b/htdocs/includes/jquery/plugins/jpicker/images/rangearrows.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jPicker.css b/htdocs/includes/jquery/plugins/jpicker/jPicker.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.js b/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.min.js b/htdocs/includes/jquery/plugins/jpicker/jpicker-1.1.6.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/application.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/code.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/css.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/db.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/directory.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/doc.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/file.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/film.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/flash.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/folder_open.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/html.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/java.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/linux.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/music.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/pdf.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/php.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/picture.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ppt.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/psd.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/ruby.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/script.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif b/htdocs/includes/jquery/plugins/jqueryFileTree/images/spinner.gif old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/txt.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/xls.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png b/htdocs/includes/jquery/plugins/jqueryFileTree/images/zip.png old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js b/htdocs/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.js b/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.min.js b/htdocs/includes/jquery/plugins/tiptip/jquery.tipTip.min.js old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/plugins/tiptip/tipTip.css b/htdocs/includes/jquery/plugins/tiptip/tipTip.css old mode 100755 new mode 100644 diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore b/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore index 5e9bd942345..48b35e71455 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore +++ b/htdocs/includes/mobiledetect/mobiledetectlib/.gitignore @@ -6,4 +6,6 @@ nbproject/ /error.log /export/nicejson .idea/ -*.iml \ No newline at end of file +*.iml +/coverage +/phpunit.phar diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml b/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml index 7c5ebf36c2a..29af5249f0d 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml +++ b/htdocs/includes/mobiledetect/mobiledetectlib/.travis.yml @@ -1,14 +1,17 @@ language: php php: - "5.2" - - "hhvm" + - "5.3" + - "5.4" + - "5.5" + - "5.6" branches: only: - devel script: - - phpunit --configuration tests/phpunit.xml + - phpunit -v -c tests/phpunit.xml notifications: email: false diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt b/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt index 101abf8be5f..90e632a7875 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt +++ b/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) <2011-2014> +Copyright (c) <2011-2015> Serban Ghita, Nick Ilyin and contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json index 7d61f6f9dee..323b1e2a50a 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json @@ -1,189 +1 @@ -{ - "version": "2.8.3", - "headerMatch": { - "HTTP_ACCEPT": { - "matches": [ - "application\/x-obml2d", - "application\/vnd.rim.html", - "text\/vnd.wap.wml", - "application\/vnd.wap.xhtml+xml" - ] - }, - "HTTP_X_WAP_PROFILE": null, - "HTTP_X_WAP_CLIENTID": null, - "HTTP_WAP_CONNECTION": null, - "HTTP_PROFILE": null, - "HTTP_X_OPERAMINI_PHONE_UA": null, - "HTTP_X_NOKIA_GATEWAY_ID": null, - "HTTP_X_ORANGE_ID": null, - "HTTP_X_VODAFONE_3GPDPCONTEXT": null, - "HTTP_X_HUAWEI_USERID": null, - "HTTP_UA_OS": null, - "HTTP_X_MOBILE_GATEWAY": null, - "HTTP_X_ATT_DEVICEID": null, - "HTTP_UA_CPU": { - "matches": [ - "ARM" - ] - } - }, - "uaHttpHeaders": [ - "HTTP_USER_AGENT", - "HTTP_X_OPERAMINI_PHONE_UA", - "HTTP_X_DEVICE_USER_AGENT", - "HTTP_X_ORIGINAL_USER_AGENT", - "HTTP_X_SKYFIRE_PHONE", - "HTTP_X_BOLT_PHONE_UA", - "HTTP_DEVICE_STOCK_UA", - "HTTP_X_UCBROWSER_DEVICE_UA" - ], - "uaMatch": { - "phones": { - "iPhone": "\\biPhone.*(Mobile|PhoneGap)|\\biPod", - "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", - "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", - "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile", - "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", - "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925", - "Samsung": "Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E", - "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)", - "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i", - "Asus": "Asus.*Galaxy|PadFone.*Mobile", - "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", - "Palm": "PalmSource|Palm", - "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", - "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", - "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", - "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", - "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", - "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" - }, - "tablets": { - "iPad": "iPad|iPad.*Mobile", - "NexusTablet": "Android.*Nexus[\\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$", - "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331", - "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\\b", - "SurfaceTablet": "Windows NT [0-9.]+; ARM;", - "HPTablet": "HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8", - "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|TX201LA", - "BlackBerryTablet": "PlayBook|RIM Tablet", - "HTCtablet": "HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200", - "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", - "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", - "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\\b|W3-810|\\bA3-A10\\b", - "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", - "LGTablet": "\\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\\b", - "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", - "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD", - "LenovoTablet": "IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)", - "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", - "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", - "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT", - "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab", - "IRUTablet": "M702pro", - "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", - "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", - "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", - "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon", - "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", - "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551", - "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", - "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", - "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733", - "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", - "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", - "FlyTablet": "IQ310|Fly Vision", - "bqTablet": "bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus", - "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", - "NecTablet": "\\bN-06D|\\bN-08D", - "PantechTablet": "Pantech.*P4100", - "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", - "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", - "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", - "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", - "NabiTablet": "Android.*\\bNabi", - "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", - "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", - "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", - "PlaystationTablet": "Playstation.*(Portable|Vita)", - "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A", - "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", - "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", - "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", - "GalapadTablet": "Android.*\\bG1\\b", - "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", - "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", - "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", - "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", - "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", - "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", - "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", - "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", - "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", - "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", - "DPSTablet": "DPS Dream 9|DPS Dual 7", - "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", - "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", - "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", - "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", - "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", - "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", - "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", - "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", - "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", - "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10", - "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", - "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", - "iMobileTablet": "i-mobile i-note", - "TolinoTablet": "tolino tab [0-9.]+|tolino shine", - "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", - "AMPETablet": "Android.* A78 ", - "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", - "TecnoTablet": "TECNO P9", - "JXDTablet": "Android.*\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", - "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", - "FX2Tablet": "FX2 PAD7|FX2 PAD10", - "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", - "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", - "OdysTablet": "LOOX|XENO10|ODYS Space", - "CaptivaTablet": "CAPTIVA PAD", - "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", - "Hudl": "Hudl HT7S3", - "TelstraTablet": "T-Hub2", - "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4" - }, - "browsers": { - "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", - "Dolfin": "\\bDolfin\\b", - "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", - "Skyfire": "Skyfire", - "IE": "IEMobile|MSIEMobile", - "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", - "Bolt": "bolt", - "TeaShark": "teashark", - "Blazer": "Blazer", - "Safari": "Version.*Mobile.*Safari|Safari.*Mobile", - "Tizen": "Tizen", - "UCBrowser": "UC.*Browser|UCWEB", - "DiigoBrowser": "DiigoBrowser", - "Puffin": "Puffin", - "Mercury": "\\bMercury\\b", - "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger" - }, - "os": { - "AndroidOS": "Android", - "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", - "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", - "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", - "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", - "WindowsPhoneOS": "Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7", - "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", - "MeeGoOS": "MeeGo", - "MaemoOS": "Maemo", - "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", - "webOS": "webOS|hpwOS", - "badaOS": "\\bBada\\b", - "BREWOS": "BREW" - } - } -} \ No newline at end of file +{"version":"2.8.17","headerMatch":{"HTTP_ACCEPT":{"matches":["application\/x-obml2d","application\/vnd.rim.html","text\/vnd.wap.wml","application\/vnd.wap.xhtml+xml"]},"HTTP_X_WAP_PROFILE":null,"HTTP_X_WAP_CLIENTID":null,"HTTP_WAP_CONNECTION":null,"HTTP_PROFILE":null,"HTTP_X_OPERAMINI_PHONE_UA":null,"HTTP_X_NOKIA_GATEWAY_ID":null,"HTTP_X_ORANGE_ID":null,"HTTP_X_VODAFONE_3GPDPCONTEXT":null,"HTTP_X_HUAWEI_USERID":null,"HTTP_UA_OS":null,"HTTP_X_MOBILE_GATEWAY":null,"HTTP_X_ATT_DEVICEID":null,"HTTP_UA_CPU":{"matches":["ARM"]}},"uaHttpHeaders":["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA"],"uaMatch":{"phones":{"iPhone":"\\biPhone\\b|\\biPod\\b","BlackBerry":"BlackBerry|\\bBB10\\b|rim[0-9]+","HTC":"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m","Nexus":"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6","Dell":"Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b","Motorola":"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b","Samsung":"Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205","LG":"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)","Sony":"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533","Asus":"Asus.*Galaxy|PadFone.*Mobile","Micromax":"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b","Palm":"PalmSource|Palm","Vertu":"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature","Pantech":"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790","Fly":"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250","Wiko":"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM","iMobile":"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)","SimValley":"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b","Wolfgang":"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q","Alcatel":"Alcatel","Nintendo":"Nintendo 3DS","Amoi":"Amoi","INQ":"INQ","GenericPhone":"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},"tablets":{"iPad":"iPad|iPad.*Mobile","NexusTablet":"Android.*Nexus[\\s]+(7|9|10)","SamsungTablet":"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T360","Kindle":"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b","SurfaceTablet":"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)","HPTablet":"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10","AsusTablet":"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C","BlackBerryTablet":"PlayBook|RIM Tablet","HTCtablet":"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410","MotorolaTablet":"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617","NookTablet":"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2","AcerTablet":"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b","ToshibaTablet":"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO","LGTablet":"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b","FujitsuTablet":"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b","PrestigioTablet":"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002","LenovoTablet":"Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)","DellTablet":"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7","YarvikTablet":"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b","MedionTablet":"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB","ArnovaTablet":"AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2","IntensoTablet":"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004","IRUTablet":"M702pro","MegafonTablet":"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b","EbodaTablet":"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)","AllViewTablet":"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)","ArchosTablet":"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b","AinolTablet":"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark","SonyTablet":"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31","PhilipsTablet":"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b","CubeTablet":"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT","CobyTablet":"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010","MIDTablet":"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733","MSITablet":"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b","SMiTTablet":"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)","RockChipTablet":"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A","FlyTablet":"IQ310|Fly Vision","bqTablet":"Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus","HuaweiTablet":"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim","NecTablet":"\\bN-06D|\\bN-08D","PantechTablet":"Pantech.*P4100","BronchoTablet":"Broncho.*(N701|N708|N802|a710)","VersusTablet":"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b","ZyncTablet":"z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900","PositivoTablet":"TB07STA|TB10STA|TB07FTA|TB10FTA","NabiTablet":"Android.*\\bNabi","KoboTablet":"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build","DanewTablet":"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b","TexetTablet":"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE","PlaystationTablet":"Playstation.*(Portable|Vita)","TrekstorTablet":"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab","PyleAudioTablet":"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b","AdvanTablet":"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ","DanyTechTablet":"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1","GalapadTablet":"Android.*\\bG1\\b","MicromaxTablet":"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b","KarbonnTablet":"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b","AllFineTablet":"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide","PROSCANTablet":"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b","YONESTablet":"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026","ChangJiaTablet":"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503","GUTablet":"TX-A1301|TX-M9002|Q702|kf026","PointOfViewTablet":"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10","OvermaxTablet":"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)","HCLTablet":"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync","DPSTablet":"DPS Dream 9|DPS Dual 7","VistureTablet":"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10","CrestaTablet":"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989","MediatekTablet":"\\bMT8125|MT8389|MT8135|MT8377\\b","ConcordeTablet":"Concorde([ ]+)?Tab|ConCorde ReadMan","GoCleverTablet":"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042","ModecomTablet":"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003","VoninoTablet":"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b","ECSTablet":"V07OT2|TM105A|S10OT1|TR10CS1","StorexTablet":"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab","VodafoneTablet":"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7","EssentielBTablet":"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2","RossMoorTablet":"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711","iMobileTablet":"i-mobile i-note","TolinoTablet":"tolino tab [0-9.]+|tolino shine","AudioSonicTablet":"\\bC-22Q|T7-QC|T-17B|T-17P\\b","AMPETablet":"Android.* A78 ","SkkTablet":"Android.* (SKYPAD|PHOENIX|CYCLOPS)","TecnoTablet":"TECNO P9","JXDTablet":"Android.*\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b","iJoyTablet":"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)","FX2Tablet":"FX2 PAD7|FX2 PAD10","XoroTablet":"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151","ViewsonicTablet":"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a","OdysTablet":"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10","CaptivaTablet":"CAPTIVA PAD","IconbitTablet":"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S","TeclastTablet":"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi","OndaTablet":"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+","JaytechTablet":"TPC-PA762","BlaupunktTablet":"Endeavour 800NG|Endeavour 1010","DigmaTablet":"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b","EvolioTablet":"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b","LavaTablet":"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b","CelkonTablet":"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b","WolderTablet":"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b","MiTablet":"\\bMI PAD\\b|\\bHM NOTE 1W\\b","NibiruTablet":"Nibiru M1|Nibiru Jupiter One","NexoTablet":"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI","LeaderTablet":"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100","UbislateTablet":"UbiSlate[\\s]?7C","PocketBookTablet":"Pocketbook","Hudl":"Hudl HT7S3","TelstraTablet":"T-Hub2","GenericTablet":"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b"},"browsers":{"Chrome":"\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?","Dolfin":"\\bDolfin\\b","Opera":"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+","Skyfire":"Skyfire","IE":"IEMobile|MSIEMobile","Firefox":"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile","Bolt":"bolt","TeaShark":"teashark","Blazer":"Blazer","Safari":"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari","Tizen":"Tizen","UCBrowser":"UC.*Browser|UCWEB","baiduboxapp":"baiduboxapp","baidubrowser":"baidubrowser","DiigoBrowser":"DiigoBrowser","Puffin":"Puffin","Mercury":"\\bMercury\\b","ObigoBrowser":"Obigo","NetFront":"NF-Browser","GenericBrowser":"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger"},"os":{"AndroidOS":"Android","BlackBerryOS":"blackberry|\\bBB10\\b|rim tablet os","PalmOS":"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino","SymbianOS":"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b","WindowsMobileOS":"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;","WindowsPhoneOS":"Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;","iOS":"\\biPhone.*Mobile|\\biPod|\\biPad","MeeGoOS":"MeeGo","MaemoOS":"Maemo","JavaOS":"J2ME\/|\\bMIDP\\b|\\bCLDC\\b","webOS":"webOS|hpwOS","badaOS":"\\bBada\\b","BREWOS":"BREW"},"utilities":{"Bot":"Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom","MobileBot":"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2","DesktopMode":"WPDesktop","TV":"SonyDTV|HbbTV","WebKit":"(webkit)[ \/]([\\w.]+)","Console":"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b","Watch":"SM-V700"}}} \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php index b6eb0da21b3..fe55d7fedc9 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.php @@ -8,7 +8,9 @@ * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment. * - * @author Current authors: Serban Ghita , Nick Ilyin + * @author Current authors: Serban Ghita + * Nick Ilyin + * * Original author: Victor Stanciu * * @license Code and contributions have 'MIT License' @@ -20,7 +22,7 @@ * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples * - * @version 2.8.3 + * @version 2.8.17 */ class Mobile_Detect @@ -64,7 +66,7 @@ class Mobile_Detect /** * Stores the version number of the current release. */ - const VERSION = '2.8.3'; + const VERSION = '2.8.17'; /** * A type for the version() method indicating a string return value. @@ -76,6 +78,12 @@ class Mobile_Detect */ const VERSION_TYPE_FLOAT = 'float'; + /** + * A cache for resolved matches + * @var array + */ + protected $cache = array(); + /** * The User-Agent HTTP header is stored in here. * @var string @@ -88,6 +96,26 @@ class Mobile_Detect */ protected $httpHeaders = array(); + /** + * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer. + * @var array + */ + protected $cloudfrontHeaders = array(); + + /** + * The matching Regex. + * This is good for debug. + * @var string + */ + protected $matchingRegex = null; + + /** + * The matches extracted from the regex expression. + * This is good for debug. + * @var string + */ + protected $matchesArray = null; + /** * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED. * @@ -127,7 +155,7 @@ class Mobile_Detect 'HTTP_UA_OS' => null, // Reported by Verizon, Vodafone proxy system. 'HTTP_X_MOBILE_GATEWAY' => null, - // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e. + // Seen this on HTC Sensation. SensationXE_Beats_Z715e. 'HTTP_X_ATT_DEVICEID' => null, // Seen this on a HTC. 'HTTP_UA_CPU' => array('matches' => array('ARM')), @@ -139,33 +167,45 @@ class Mobile_Detect * @var array */ protected static $phoneDevices = array( - 'iPhone' => '\biPhone.*(Mobile|PhoneGap)|\biPod', // |\biTunes + 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', - 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile', + 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6', // @todo: Is 'Dell Streak' a tablet or a phone? ;) 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', - 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925', - 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E', - 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', - 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i', + 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b', + 'Samsung' => 'Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205', + 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)', + 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533', 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', - // @ref: http://www.micromaxinfo.com/mobiles/smartphones + // http://www.micromaxinfo.com/mobiles/smartphones // Added because the codes might conflict with Acer Tablets. 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', - 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex. + // @todo Complete the regex. + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) - // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) + // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH) // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android. 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', - // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. + // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones. 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', - 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', + // http://fr.wikomobile.com + 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', + 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', // Added simvalley mobile just for fun. They have some interesting devices. - // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html + // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', - // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 - 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser' + // Wolfgang - a brand that is sold by Aldi supermarkets. + // http://www.wolfgangmobile.com/ + 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', + 'Alcatel' => 'Alcatel', + 'Nintendo' => 'Nintendo 3DS', + // http://en.wikipedia.org/wiki/Amoi + 'Amoi' => 'Amoi', + // http://en.wikipedia.org/wiki/INQ + 'INQ' => 'INQ', + // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039 + 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', ); /** @@ -174,78 +214,94 @@ class Mobile_Detect * @var array */ protected static $tabletDevices = array( - 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. - 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$', - 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone. - // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/ - 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b', + // @todo: check for mobile friendly emails topic. + 'iPad' => 'iPad|iPad.*Mobile', + // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$ + // @see #442 + 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T360', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. + // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html + 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\b', // Only the Surface tablets with Windows RT are considered mobile. - // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx - 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;', - // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT - 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8', - // @note: watch out for PadFone, see #132 - 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA', + // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx + 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', + // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT + 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', + // Watch out for PadFone, see #132. + // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/ + 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C', 'BlackBerryTablet' => 'PlayBook|RIM Tablet', - 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', + 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', - // @ref: http://www.acer.ro/ac/ro/RO/content/drivers - // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) - // @ref: http://us.acer.com/ac/en/US/content/group/tablets - // @note: Can conflict with Micromax and Motorola phones codes. - 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\b|W3-810|\bA3-A10\b', - // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ - // @ref: http://us.toshiba.com/tablets/tablet-finder - // @ref: http://www.toshiba.co.jp/regza/tablet/ + // http://www.acer.ro/ac/ro/RO/content/drivers + // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer) + // http://us.acer.com/ac/en/US/content/group/tablets + // http://www.acer.de/ac/de/DE/content/models/tablets/ + // Can conflict with Micromax and Motorola phones codes. + 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b', + // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/ + // http://us.toshiba.com/tablets/tablet-finder + // http://www.toshiba.co.jp/regza/tablet/ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', - // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html - // @ref: http://www.lg.com/us/tablets - 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\b', + // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html + // http://www.lg.com/us/tablets + 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b', 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', // Prestigio Tablets http://www.prestigio.com/support - 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD', - // @ref: http://support.lenovo.com/en_GB/downloads/default.page?# - 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)', - // @ref: http://www.yarvik.com/en/matrix/tablets/ + 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', + // http://support.lenovo.com/en_GB/downloads/default.page?# + 'LenovoTablet' => 'Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)', + // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets + 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', + // http://www.yarvik.com/en/matrix/tablets/ 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', - 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT', + 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', // http://www.intenso.de/kategorie_en.php?kategorie=33 // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate - 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab', + 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/ 'IRUTablet' => 'M702pro', 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', - // @ref: http://www.e-boda.ro/tablete-pc.html + // http://www.e-boda.ro/tablete-pc.html 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', - // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/ + // http://www.allview.ro/produse/droseries/lista-tablete-pc/ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', - // @reference: http://wiki.archosfans.com/index.php?title=Main_Page - 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon', - // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product + // http://wiki.archosfans.com/index.php?title=Main_Page + 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b', + // http://www.ainol.com/plugin.php?identifier=ainol&module=product 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER - // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser - // @ref: http://www.sony.jp/support/tablet/ - 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551', - // @ref: db + http://www.cube-tablet.com/buy-products.html + // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser + // http://www.sony.jp/support/tablet/ + 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31', + // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8 + 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b', + // db + http://www.cube-tablet.com/buy-products.html 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', - // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 + // http://www.cobyusa.com/?p=pcat&pcat_id=3001 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', - // @ref: http://www.match.net.cn/products.asp + // http://www.match.net.cn/products.asp 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733', - // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) - // @ref: http://www.imp3.net/14/show.php?itemid=20454 + // http://www.msi.com/support + // @todo Research the Windows Tablets. + 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b', + // @todo http://www.kyoceramobile.com/support/drivers/ + // 'KyoceraTablet' => null, + // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/ + // 'IntextTablet' => null, + // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets) + // http://www.imp3.net/14/show.php?itemid=20454 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', - // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2 + // http://www.rock-chips.com/index.php?do=prod&pid=2 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', - // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ + // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/ 'FlyTablet' => 'IQ310|Fly Vision', - // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html - 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus', - // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 - // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) + // http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bqTablet' => 'Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus', + // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290 + // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets) 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', // Nec or Medias Tab 'NecTablet' => '\bN-06D|\bN-08D', @@ -253,63 +309,63 @@ class Mobile_Detect 'PantechTablet' => 'Pantech.*P4100', // Broncho Tablets: http://www.broncho.cn/ (hard to find) 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', - // @ref: http://versusuk.com/support.html + // http://versusuk.com/support.html 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', - // @ref: http://www.zync.in/index.php/our-products/tablet-phablets + // http://www.zync.in/index.php/our-products/tablet-phablets 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', - // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ + // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', - // @ref: https://www.nabitablet.com/ + // https://www.nabitablet.com/ 'NabiTablet' => 'Android.*\bNabi', 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', // French Danew Tablets http://www.danew.com/produits-tablette.php 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', // Texet Tablets and Readers http://www.texet.ru/tablet/ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', - // @note: Avoid detecting 'PLAYSTATION 3' as mobile. + // Avoid detecting 'PLAYSTATION 3' as mobile. 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', - // @ref: http://www.trekstor.de/surftabs.html - 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A', - // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets + // http://www.trekstor.de/surftabs.html + 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', + // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', - // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001 - // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts. + // http://www.advandigital.com/index.php?link=content-product&jns=JP001 + // because of the short codenames we have to include whitespaces to reduce the possible conflicts. 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', - // @ref: http://www.danytech.com/category/tablet-pc + // http://www.danytech.com/category/tablet-pc 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', - // @ref: http://www.galapad.net/product.html + // http://www.galapad.net/product.html 'GalapadTablet' => 'Android.*\bG1\b', - // @ref: http://www.micromaxinfo.com/tablet/funbook + // http://www.micromaxinfo.com/tablet/funbook 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', // http://www.karbonnmobiles.com/products_tablet.php 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', - // @ref: http://www.myallfine.com/Products.asp + // http://www.myallfine.com/Products.asp 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', - // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= + // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr= 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', - // @ref: http://www.yonesnav.com/products/products.php + // http://www.yonesnav.com/products/products.php 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', - // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 + // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001 // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html) 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', - // @ref: http://www.gloryunion.cn/products.asp - // @ref: http://www.allwinnertech.com/en/apply/mobile.html - // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) + // http://www.gloryunion.cn/products.asp + // http://www.allwinnertech.com/en/apply/mobile.html + // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB) // @todo: Softwiner tablets? // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions. 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G - // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 + // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', - // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ + // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/ // @todo: add more tests. 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', - // @ref: http://hclmetablet.com/India/index.php + // http://hclmetablet.com/India/index.php 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', - // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html + // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', - // @ref: http://www.visture.com/index.asp + // http://www.visture.com/index.asp 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', - // @ref: http://www.mijncresta.nl/tablet + // http://www.mijncresta.nl/tablet 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', @@ -327,7 +383,7 @@ class Mobile_Detect // @note: no need to add all the tablet codes since they are guided by the first regex. 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', // Generic Vodafone tablets. - 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10', + 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7', // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb // Aka: http://www.essentielb.fr/ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', @@ -335,7 +391,7 @@ class Mobile_Detect 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', // i-mobile http://product.i-mobilephone.com/Mobile_Device 'iMobileTablet' => 'i-mobile i-note', - // @ref: http://www.tolino.de/de/vergleichen/ + // http://www.tolino.de/de/vergleichen/ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', // AudioSonic - a Kmart brand // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1 @@ -359,16 +415,48 @@ class Mobile_Detect // http://www1.viewsonic.com/products/computing/tablets/ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', // http://www.odys.de/web/internet-tablet_en.html - 'OdysTablet' => 'LOOX|XENO10|ODYS Space', + 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', // http://www.captiva-power.de/products.html#tablets-en 'CaptivaTablet' => 'CAPTIVA PAD', // IconBIT - http://www.iconbit.com/products/tablets/ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', - // @ref: http://www.tesco.com/direct/hudl/ + // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63 + 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi', + // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price + 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+', + 'JaytechTablet' => 'TPC-PA762', + 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', + // http://www.digma.ru/support/download/ + // @todo: Ebooks also (if requested) + 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b', + // http://www.evolioshop.com/ro/tablete-pc.html + // http://www.evolio.ro/support/downloads_static.html?cat=2 + // @todo: Research some more + 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b', + // @todo http://www.lavamobiles.com/tablets-data-cards + 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b', + // https://www.celkonmobiles.com/?_a=categoryphones&sid=2 + 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b', + // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab + 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b', + // http://www.mi.com/en + 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b', + // http://www.nbru.cn/index.html + 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', + // http://navroad.com/products/produkty/tablety/ + 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', + // http://leader-online.com/new_site/product-category/tablets/ + // http://www.leader-online.net.au/List/Tablet + 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', + // http://www.datawind.com/ubislate/ + 'UbislateTablet' => 'UbiSlate[\s]?7C', + // http://www.pocketbook-int.com/ru/support + 'PocketBookTablet' => 'Pocketbook', + // http://www.tesco.com/direct/hudl/ 'Hudl' => 'Hudl HT7S3', - // @ref: http://www.telstra.com.au/home-phone/thub-2/ + // http://www.telstra.com.au/home-phone/thub-2/ 'TelstraTablet' => 'T-Hub2', - 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4', + 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bJolla\b|\bTP750\b' ); /** @@ -386,7 +474,8 @@ class Mobile_Detect // @reference: http://en.wikipedia.org/wiki/Windows_Phone // http://wifeng.cn/?r=blog&a=view&id=106 // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx - 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7', + // http://msdn.microsoft.com/library/ms537503.aspx + 'WindowsPhoneOS' => 'Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', // http://en.wikipedia.org/wiki/MeeGo // @todo: research MeeGo in UAs @@ -417,20 +506,26 @@ class Mobile_Detect 'TeaShark' => 'teashark', 'Blazer' => 'Blazer', // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3 - 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile', - // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser) + 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', + // http://en.wikipedia.org/wiki/Midori_(web_browser) //'Midori' => 'midori', 'Tizen' => 'Tizen', 'UCBrowser' => 'UC.*Browser|UCWEB', - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7 + 'baiduboxapp' => 'baiduboxapp', + 'baidubrowser' => 'baidubrowser', + // https://github.com/serbanghita/Mobile-Detect/issues/7 'DiigoBrowser' => 'DiigoBrowser', // http://www.puffinbrowser.com/index.php 'Puffin' => 'Puffin', - // @ref: http://mercury-browser.com/index.html + // http://mercury-browser.com/index.html 'Mercury' => '\bMercury\b', + // http://en.wikipedia.org/wiki/Obigo_Browser + 'ObigoBrowser' => 'Obigo', + // http://en.wikipedia.org/wiki/NetFront + 'NetFront' => 'NF-Browser', // @reference: http://en.wikipedia.org/wiki/Minimo // http://en.wikipedia.org/wiki/Vision_Mobile_Browser - 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger' + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', ); /** @@ -440,15 +535,16 @@ class Mobile_Detect */ protected static $utilities = array( // Experimental. When a mobile device wants to switch to 'Desktop Mode'. - // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ - // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/ + // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011 + // https://developers.facebook.com/docs/sharing/best-practices + 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom', + 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', 'DesktopMode' => 'WPDesktop', 'TV' => 'SonyDTV|HbbTV', // experimental 'WebKit' => '(webkit)[ /]([\w.]+)', - 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit', - 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2', // @todo: Include JXD consoles. - 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b', + 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\b', 'Watch' => 'SM-V700', ); @@ -500,8 +596,9 @@ class Mobile_Detect // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference 'Firefox' => 'Firefox/[VER]', 'Fennec' => 'Fennec/[VER]', - // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx - 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'), + // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx + // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx + 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), // http://en.wikipedia.org/wiki/NetFront 'NetFront' => 'NetFront/[VER]', 'NokiaBrowser' => 'NokiaBrowser/[VER]', @@ -511,6 +608,9 @@ class Mobile_Detect 'UC Browser' => 'UC Browser[VER]', 'MQQBrowser' => 'MQQBrowser/[VER]', 'MicroMessenger' => 'MicroMessenger/[VER]', + 'baiduboxapp' => 'baiduboxapp/[VER]', + 'baidubrowser' => 'baidubrowser/[VER]', + 'Iron' => 'Iron/[VER]', // @note: Safari 7534.48.3 is actually Version 5.1. // @note: On BlackBerry the Version is overwriten by the OS. 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ), @@ -524,7 +624,7 @@ class Mobile_Detect 'Presto' => 'Presto/[VER]', // OS - 'iOS' => ' \bOS\b [VER] ', + 'iOS' => ' \bi?OS\b [VER][ ;]{1}', 'Android' => 'Android [VER]', 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), 'BREW' => 'BREW [VER]', @@ -543,15 +643,15 @@ class Mobile_Detect /** * Construct an instance of this class. * - * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. - * If left empty, will use the global _SERVER['HTTP_*'] vars instead. + * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored. + * If left empty, will use the global _SERVER['HTTP_*'] vars instead. * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT * from the $headers array instead. */ public function __construct( array $headers = null, $userAgent = null - ){ + ) { $this->setHttpHeaders($headers); $this->setUserAgent($userAgent); } @@ -577,21 +677,24 @@ class Mobile_Detect */ public function setHttpHeaders($httpHeaders = null) { - //use global _SERVER if $httpHeaders aren't defined + // use global _SERVER if $httpHeaders aren't defined if (!is_array($httpHeaders) || !count($httpHeaders)) { $httpHeaders = $_SERVER; } - //clear existing headers + // clear existing headers $this->httpHeaders = array(); - //Only save HTTP headers. In PHP land, that means only _SERVER vars that - //start with HTTP_. + // Only save HTTP headers. In PHP land, that means only _SERVER vars that + // start with HTTP_. foreach ($httpHeaders as $key => $value) { - if (substr($key,0,5) == 'HTTP_') { + if (substr($key, 0, 5) === 'HTTP_') { $this->httpHeaders[$key] = $value; } } + + // In case we're dealing with CloudFront, we need to know. + $this->setCfHeaders($httpHeaders); } /** @@ -616,13 +719,13 @@ class Mobile_Detect */ public function getHttpHeader($header) { - //are we using PHP-flavored headers? + // are we using PHP-flavored headers? if (strpos($header, '_') === false) { $header = str_replace('-', '_', $header); $header = strtoupper($header); } - //test the alternate, too + // test the alternate, too $altHeader = 'HTTP_' . $header; //Test both the regular and the HTTP_ prefix @@ -651,6 +754,47 @@ class Mobile_Detect return self::$uaHttpHeaders; } + + /** + * Set CloudFront headers + * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device + * + * @param array $cfHeaders List of HTTP headers + * + * @return boolean If there were CloudFront headers to be set + */ + public function setCfHeaders($cfHeaders = null) { + // use global _SERVER if $cfHeaders aren't defined + if (!is_array($cfHeaders) || !count($cfHeaders)) { + $cfHeaders = $_SERVER; + } + + // clear existing headers + $this->cloudfrontHeaders = array(); + + // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that + // start with cloudfront-. + $response = false; + foreach ($cfHeaders as $key => $value) { + if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') { + $this->cloudfrontHeaders[strtoupper($key)] = $value; + $response = true; + } + } + + return $response; + } + + /** + * Retrieves the cloudfront headers. + * + * @return array + */ + public function getCfHeaders() + { + return $this->cloudfrontHeaders; + } + /** * Set the User-Agent to be used. * @@ -660,21 +804,28 @@ class Mobile_Detect */ public function setUserAgent($userAgent = null) { - if (!empty($userAgent)) { + // Invalidate cache due to #375 + $this->cache = array(); + + if (false === empty($userAgent)) { return $this->userAgent = $userAgent; } else { - $this->userAgent = null; - - foreach($this->getUaHttpHeaders() as $altHeader){ - if(!empty($this->httpHeaders[$altHeader])){ // @todo: should use getHttpHeader(), but it would be slow. (Serban) + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban) $this->userAgent .= $this->httpHeaders[$altHeader] . " "; } } - return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null); - + if (!empty($this->userAgent)) { + return $this->userAgent = trim($this->userAgent); + } } + + if (count($this->getCfHeaders()) > 0) { + return $this->userAgent = 'Amazon CloudFront'; + } + return $this->userAgent = null; } /** @@ -702,13 +853,23 @@ class Mobile_Detect $type = self::DETECTION_TYPE_MOBILE; } - if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) { + if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) { return; } $this->detectionType = $type; } + public function getMatchingRegex() + { + return $this->matchingRegex; + } + + public function getMatchesArray() + { + return $this->matchesArray; + } + /** * Retrieve the list of known phone devices. * @@ -847,14 +1008,15 @@ class Mobile_Detect public function checkHttpHeadersForMobile() { - foreach($this->getMobileHeaders() as $mobileHeader => $matchType){ - if( isset($this->httpHeaders[$mobileHeader]) ){ - if( is_array($matchType['matches']) ){ - foreach($matchType['matches'] as $_match){ - if( strpos($this->httpHeaders[$mobileHeader], $_match) !== false ){ + foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { + if (isset($this->httpHeaders[$mobileHeader])) { + if (is_array($matchType['matches'])) { + foreach ($matchType['matches'] as $_match) { + if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) { return true; } } + return false; } else { return true; @@ -877,8 +1039,8 @@ class Mobile_Detect */ public function __call($name, $arguments) { - //make sure the name starts with 'is', otherwise - if (substr($name, 0, 2) != 'is') { + // make sure the name starts with 'is', otherwise + if (substr($name, 0, 2) !== 'is') { throw new BadMethodCallException("No such method exists: $name"); } @@ -892,7 +1054,7 @@ class Mobile_Detect /** * Find a detection rule that matches the current User-agent. * - * @param null $userAgent deprecated + * @param null $userAgent deprecated * @return boolean */ protected function matchDetectionRulesAgainstUA($userAgent = null) @@ -902,6 +1064,7 @@ class Mobile_Detect if (empty($_regex)) { continue; } + if ($this->match($_regex, $userAgent)) { return true; } @@ -913,36 +1076,38 @@ class Mobile_Detect /** * Search for a certain key in the rules array. * If the key is found the try to match the corresponding - * regex agains the User-Agent. + * regex against the User-Agent. * * @param string $key - * @param null $userAgent deprecated - * @return mixed + * + * @return boolean */ - protected function matchUAAgainstKey($key, $userAgent = null) + protected function matchUAAgainstKey($key) { // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc. $key = strtolower($key); + if (false === isset($this->cache[$key])) { - //change the keys to lower case - $_rules = array_change_key_case($this->getRules()); + // change the keys to lower case + $_rules = array_change_key_case($this->getRules()); - if (array_key_exists($key, $_rules)) { - if (empty($_rules[$key])) { - return null; + if (false === empty($_rules[$key])) { + $this->cache[$key] = $this->match($_rules[$key]); } - return $this->match($_rules[$key], $userAgent); + if (false === isset($this->cache[$key])) { + $this->cache[$key] = false; + } } - return false; + return $this->cache[$key]; } /** * Check if the device is mobile. * Returns true if any type of mobile device detected, including special ones - * @param null $userAgent deprecated - * @param null $httpHeaders deprecated + * @param null $userAgent deprecated + * @param null $httpHeaders deprecated * @return bool */ public function isMobile($userAgent = null, $httpHeaders = null) @@ -956,6 +1121,14 @@ class Mobile_Detect $this->setUserAgent($userAgent); } + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') { + return true; + } + } + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); if ($this->checkHttpHeadersForMobile()) { @@ -976,6 +1149,14 @@ class Mobile_Detect */ public function isTablet($userAgent = null, $httpHeaders = null) { + // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront' + if ($this->getUserAgent() === 'Amazon CloudFront') { + $cfHeaders = $this->getCfHeaders(); + if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') { + return true; + } + } + $this->setDetectionType(self::DETECTION_TYPE_MOBILE); foreach (self::$tabletDevices as $_regex) { @@ -992,9 +1173,9 @@ class Mobile_Detect * userAgent. * @todo: The httpHeaders part is not yet used. * - * @param string $key - * @param string $userAgent deprecated - * @param string $httpHeaders deprecated + * @param string $key + * @param string $userAgent deprecated + * @param string $httpHeaders deprecated * @return bool|int|null */ public function is($key, $userAgent = null, $httpHeaders = null) @@ -1030,10 +1211,14 @@ class Mobile_Detect */ public function match($regex, $userAgent = null) { - // Escape the special character which is the delimiter. - $regex = str_replace('/', '\/', $regex); + $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches); + // If positive match is found, store the results for debug. + if ($match) { + $this->matchingRegex = $regex; + $this->matchesArray = $matches; + } - return (bool) preg_match('/'.$regex.'/is', (!empty($userAgent) ? $userAgent : $this->userAgent)); + return $match; } /** @@ -1072,11 +1257,11 @@ class Mobile_Detect * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param string $propertyName The name of the property. See self::getProperties() array - * keys for all possible properties. - * @param string $type Either self::VERSION_TYPE_STRING to get a string value or - * self::VERSION_TYPE_FLOAT indicating a float value. This parameter - * is optional and defaults to self::VERSION_TYPE_STRING. Passing an - * invalid parameter will default to the this type as well. + * keys for all possible properties. + * @param string $type Either self::VERSION_TYPE_STRING to get a string value or + * self::VERSION_TYPE_FLOAT indicating a float value. This parameter + * is optional and defaults to self::VERSION_TYPE_STRING. Passing an + * invalid parameter will default to the this type as well. * * @return string|float The version of the property we are trying to extract. */ @@ -1086,15 +1271,15 @@ class Mobile_Detect return false; } - //set the $type to the default if we don't recognize the type - if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) { + // set the $type to the default if we don't recognize the type + if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) { $type = self::VERSION_TYPE_STRING; } $properties = self::getProperties(); // Check if the property exists in the properties array. - if (array_key_exists($propertyName, $properties)) { + if (true === isset($properties[$propertyName])) { // Prepare the pattern to be matched. // Make sure we always deal with an array (string is converted). @@ -1104,14 +1289,11 @@ class Mobile_Detect $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); - // Escape the special character which is the delimiter. - $propertyPattern = str_replace('/', '\/', $propertyPattern); - // Identify and extract the version. - preg_match('/'.$propertyPattern.'/is', $this->userAgent, $match); + preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); - if (!empty($match[1])) { - $version = ( $type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1] ); + if (false === empty($match[1])) { + $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); return $version; } @@ -1133,10 +1315,10 @@ class Mobile_Detect $isMobile = $this->isMobile(); if ( - // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)>=4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)>=3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)>=3.1 || + // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM @@ -1144,31 +1326,30 @@ class Mobile_Detect // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) || - // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 - $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT)>=7.0 || + // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8) + $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 || - // Blackberry 7 - Tested on BlackBerry Torch 9810 - // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 - $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=6.0 || + // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10) + $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook $this->match('Playbook.*Tablet') || - // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) - ( $this->version('webOS', self::VERSION_TYPE_FLOAT)>=1.4 && $this->match('Palm|Pre|Pixi') ) || + // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0) + ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad $this->match('hp.*TouchPad') || - // Firefox Mobile (12 Beta) - Tested on Android 2.3 device - ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=12 ) || + // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices + ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device - ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=4.0 ) || + ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device - ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT)>=4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || + ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 - ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>11 && $this->is('AndroidOS') ) || + ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 $this->is('MeeGoOS') || @@ -1178,71 +1359,76 @@ class Mobile_Detect // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! - $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT)>=2.0 || + $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || // UC Browser - Tested on Android 2.3 device - ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) || + ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( $this->match('Kindle Fire') || - $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT)>=3.0 ) || + $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet $this->is('AndroidOS') && $this->is('NookTablet') || - // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 - $this->version('Chrome', self::VERSION_TYPE_FLOAT)>=11 && !$isMobile || + // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7 + $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile || - // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 - $this->version('Safari', self::VERSION_TYPE_FLOAT)>=5.0 && !$isMobile || + // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7 + $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || - // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 - $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=4.0 && !$isMobile || + // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7 + $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 - $this->version('MSIE', self::VERSION_TYPE_FLOAT)>=7.0 && !$isMobile || + $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 - // @reference: http://my.opera.com/community/openweb/idopera/ - $this->version('Opera', self::VERSION_TYPE_FLOAT)>=10 && !$isMobile - + $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile ){ return self::MOBILE_GRADE_A; } if ( - $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || - $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<3.1 || - $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)<3.1 || + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 - $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || + $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 - ( $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)>=5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)<=6.5 && - ($this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 || $this->is('iOS')) ) || + ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 && + ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) - $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>=11 && $this->is('SymbianOS') + $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS') ){ return self::MOBILE_GRADE_B; } if ( // Blackberry 4.x - Tested on the Curve 8330 - $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<5.0 || + $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) - $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT)<=5.2 + $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 || + // Tested on original iPhone (3.1), iPhone 3 (3.2) + $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 || + $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 || + + // Internet Explorer 7 and older - Tested on Windows XP + $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile ){ return self::MOBILE_GRADE_C; } - //All older smartphone platforms and featurephones - Any device that doesn't support media queries - //will receive the basic, C grade experience. + // All older smartphone platforms and featurephones - Any device that doesn't support media queries + // will receive the basic, C grade experience. return self::MOBILE_GRADE_C; } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/README.md b/htdocs/includes/mobiledetect/mobiledetectlib/README.md index acc861a1927..d96db2dea3d 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/README.md +++ b/htdocs/includes/mobiledetect/mobiledetectlib/README.md @@ -1,38 +1,66 @@ - +[![Build Status](https://travis-ci.org/serbanghita/Mobile-Detect.svg?branch=devel)](https://travis-ci.org/serbanghita/Mobile-Detect) [![Latest Stable Version](https://poser.pugx.org/mobiledetect/mobiledetectlib/v/stable.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib) [![Total Downloads](https://poser.pugx.org/mobiledetect/mobiledetectlib/downloads.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib) [![Daily Downloads](https://poser.pugx.org/mobiledetect/mobiledetectlib/d/daily.png)](https://packagist.org/packages/mobiledetect/mobiledetectlib) [![License](https://poser.pugx.org/mobiledetect/mobiledetectlib/license.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib) +[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/serbanghita/Mobile-Detect?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +![Mobile Detect](http://demo.mobiledetect.net/logo-github.png) > Motto: "Every business should have a mobile detection script to detect mobile readers." -Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). -It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment. +*Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). +It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.* -Nowadays web site/app content strategy matters, this is why you need all the tools to deliver the best and the fastest experience for the small screens. Mobile_Detect class is a [server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool, it is not a replacement for Responsive Web Design (media queries) or other forms of client-side feature detection. +We're committed to make Mobile_Detect the best open-source mobile detection resource and this is why before +each release we're running [unit tests](./tests), we also research and update the detection rules on **daily** +and **weekly** basis. -We're commited to make Mobile_Detect the best open-source mobile detection resource and this is why before each release we're running [unit tests](./tests), we also research and update the detection rules on daily and weekly basis. +Your website's _content strategy_ is important! You need a complete toolkit to deliver an experience that is _optimized_, _fast_ and _relevant_ to your users. Mobile_Detect class is a [server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool that can help you with your RWD strategy, it is not a replacement for CSS3 media queries or other forms of client-side feature detection. -

    -
    -Thanks ImpressPages CMS for showing us some love!

    +##### This month updates +**THANK YOU** for your continuous support and feedback! +Still working on `3.0.0` branch to provide you with device detection! We're really excited on this one! +We would like to speed this up, but life and family gets in the way ;) + +Special thanks to **JetBrains** for providing licenses for **PHPStorm**. In case you never heard or tried PHPStorm, you're +clearly missing out! [Check PHPStorm](https://www.jetbrains.com/phpstorm/) out! ##### Download and demo -Latest releases, Latest dev branch, composer package +|Download|Docs|Examples| +|-------------|-------------|-------------| +|[Go to releases](../../tags)|[Become a contributor](../../wiki/Become-a-contributor)|[Code examples](../../wiki/Code-examples) +|[Mobile_Detect.php](./Mobile_Detect.php)|[History](../../wiki/History)|[:iphone: Live demo!](http://is.gd/mobiletest) +|[Composer package](https://packagist.org/packages/mobiledetect/mobiledetectlib)| -See also: :bulb: Become a contributor / :coffee: History / :point_right: Code examples / -:iphone: Live demo! (point your device browser to this URL) +#### Continuous updates + +You can use [composer](https://getcomposer.org/doc/00-intro.md) in your release and update process to make sure you have the latest Mobile_Detect version. + +``` +composer require mobiledetect/mobiledetectlib +``` + +```json +{ + "require": { + "mobiledetect/mobiledetectlib": "^2.8" + } +} +``` ##### Help -Click here to lend your support to: Research and development of Mobile Detect library! - +|Pledgie|Paypal| +|-------|------| +|[Donate :+1:](http://pledgie.com/campaigns/21856)|[Donate :beer:](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mobiledetectlib%40gmail%2ecom&lc=US&item_name=Mobile%20Detect¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted)| -I'm currently paying for hosting and spend a lot of my family time :family: to maintain the project and planning the future releases. + +I'm currently paying for hosting and spend a lot of my family time to maintain the project and planning the future releases. I would highly appreciate any money donations that will keep the research going. Special thanks to the community :+1: for donations, [BrowserStack](http://browserstack.com) - for providing access to their great platform, [Zend](http://zend.com) - for donating licenses, [Dragos Gavrila](https://twitter.com/grafician) who contributed with the logo. -##### 3rd party modules / [Submit new](https://github.com/serbanghita/Mobile-Detect/issues/new?title=New%203rd%20party%20module&body=Name, Link and Description of the module.) +##### 3rd party modules / [Submit new](../../issues/new?title=New%203rd%20party%20module&body=Name, Link and Description of the module.) :point_right: Keep `Mobile_Detect.php` class in a separate `module` and do NOT include it in your script core because of the high frequency of updates. :point_right: When including the class into you `web application` or `module` always use `include_once '../path/to/Mobile_Detect.php` to prevent conflicts. @@ -40,20 +68,23 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse
    '.$langs->trans('None').''.$langs->trans('None').'
    - - + + @@ -63,16 +94,23 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse

    Drupal Mobile Switch - The Mobile Switch Drupal module provides a automatic theme switch functionality for mobile devices, detected by Browscap or Mobile Detect. Made by Siegfried Neumann.

    -

    Drupal Context Mobile Detect - This is a Drupal context module which integrates Context and PHP Mobile Detect library. +

    Drupal Context Mobile Detect - This is a Drupal context module which integrates Context and PHP Mobile Detect library. Created by Artem Shymko.

    -

    Drupal Mobile Detect - Lightweight mobile detect module for Drupal created by Matthew Donadio

    +

    Drupal Mobile Detect - Lightweight mobile detect module for Drupal created by Matthew Donadio

    - + @@ -91,7 +129,7 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse @@ -107,7 +145,7 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse @@ -118,7 +156,13 @@ Special thanks to the community :+1: for donations, [BrowserStack](http://browse - + @@ -139,7 +183,12 @@ It overrides the Fuelphp Agent class its methods. Made by Statamic CMS Mobile Detect - plugin. Made by Sergei Filippov of Haiku Lab.

    + + + + + + @@ -147,14 +196,29 @@ It overrides the Fuelphp Agent class its methods. Made by JavaScript port of Mobile-Detect class. Made by Heinrich Goebl

    + + + + + + + + + + - + + + + + + diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/composer.json b/htdocs/includes/mobiledetect/mobiledetectlib/composer.json index 0131e4937ec..c56611fb6b7 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/composer.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/composer.json @@ -17,7 +17,9 @@ "php": ">=5.0.0" }, "require-dev": { - "phpunit/phpunit": "*" + "phpunit/phpunit": "*", + "johnkary/phpunit-speedtrap": "~1.0@dev", + "codeclimate/php-test-reporter": "dev-master" }, "autoload": { "classmap": ["Mobile_Detect.php"], diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock b/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock deleted file mode 100644 index 2b214625190..00000000000 --- a/htdocs/includes/mobiledetect/mobiledetectlib/composer.lock +++ /dev/null @@ -1,439 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" - ], - "hash": "5b2d87ea9e6c115194bd355b7b697cec", - "packages": [ - - ], - "packages-dev": [ - { - "name": "phpunit/php-code-coverage", - "version": "1.2.12", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1.2.12" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1.2.12", - "reference": "1.2.12", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": ">=1.3.0@stable", - "phpunit/php-text-template": ">=1.1.1@stable", - "phpunit/php-token-stream": ">=1.1.3@stable" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*@dev" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2013-07-06 06:26:16" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.3", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "1.3.3" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3", - "reference": "1.3.3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2012-10-11 04:44:38" - }, - { - "name": "phpunit/php-text-template", - "version": "1.1.4", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/php-text-template.git", - "reference": "1.1.4" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4", - "reference": "1.1.4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Text/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2012-10-31 11:15:28" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1.0.5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1.0.5", - "reference": "1.0.5", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2013-08-02 07:42:54" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1.2.0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1.2.0", - "reference": "1.2.0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2013-08-04 05:57:48" - }, - { - "name": "phpunit/phpunit", - "version": "3.7.23", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3.7.23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3.7.23", - "reference": "3.7.23", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2.1", - "phpunit/php-file-iterator": ">=1.3.1", - "phpunit/php-text-template": ">=1.1.1", - "phpunit/php-timer": ">=1.0.4", - "phpunit/phpunit-mock-objects": "~1.2.0", - "symfony/yaml": "~2.0" - }, - "require-dev": { - "pear-pear/pear": "1.9.4" - }, - "suggest": { - "ext-json": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "phpunit/php-invoker": ">=1.1.0,<1.2.0" - }, - "bin": [ - "composer/bin/phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2013-08-02 19:14:44" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "1.2.3", - "source": { - "type": "git", - "url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "1.2.3" - }, - "dist": { - "type": "zip", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip", - "reference": "1.2.3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": ">=1.1.1@stable" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHPUnit/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2013-01-13 10:24:48" - }, - { - "name": "symfony/yaml", - "version": "v2.3.2", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "v2.3.2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.3.2", - "reference": "v2.3.2", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2013-07-11 19:36:36" - } - ], - "aliases": [ - - ], - "minimum-stability": "stable", - "stability-flags": [ - - ], - "platform": { - "php": ">=5.0.0" - }, - "platform-dev": [ - - ] -} diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php b/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php index 82fec6cdb3e..38dad6b2879 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/examples/demo.php @@ -34,6 +34,7 @@ require_once '../Mobile_Detect.php'; $detect = new Mobile_Detect; + $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); $scriptVersion = $detect->getScriptVersion(); @@ -157,7 +158,7 @@ $scriptVersion = $detect->getScriptVersion();

    This is a . Your UA is

    Please help us improve the mobile detection by choosing the correct answer.
    - Before sending an answer double check if you are using the browser in 'Desktop mode'.
    + Before sending an answer double check that you are using the browser in its normal mode, not in 'Desktop mode'.
    You can contribute by:
    1. forking the project
    2. submiting an issue
    @@ -250,6 +251,19 @@ $scriptVersion = $detect->getScriptVersion();

    + + + + + + + + + + + + +
    Varnish Cache

    Varnish Mobile Detect - Drop-in varnish solution to mobile user detection based on the Mobile-Detect library. Made by willemk

    Varnish Cache +

    Varnish Mobile Detect - Drop-in varnish solution to mobile user detection based on the Mobile-Detect library. Made by willemk

    +

    mobiledetect2vcl - Python script to transform the Mobile Detect JSON database into an UA-based mobile detection VCL subroutine easily integrable in any Varnish Cache configuration. Made by Carlos Abalde

    +
    WordPress -

    WordPress Mobile Detect - Gives you the ability to wrap that infographic in a [notdevice][/notdevice] shortcode so at the server level WordPress will decide to show that content only if the user is NOT on a phone or tablet. Made by Jesse Friedman.

    +

    WordPress Mobile Detect - Gives you the ability to wrap that infographic in a [notdevice][/notdevice] shortcode so at the server level WordPress will decide to show that content only if the user is NOT on a phone or tablet. Made by Jesse Friedman.

    mobble - provides mobile related conditional functions for your site. e.g. is_iphone(), is_mobile() and is_tablet(). Made by Scott Evans.

    WordPress Responsage - A small WordPress theme plugin that allows you to make your images responsive. Made by Adrian Ciaschetti.

    - -

    Social PopUP - This plugin will display a popup or splash screen when a new user visit your site showing a Google+, Twitter and Facebook follow links. It uses Mobile_Detect to detect mobile devices.

    + +

    WP247 Body Classes - Add unique classes to the body tag for easy styling based on various attributes (archive, user, post, mobile) and various WordPress "is" functions. Mobile attributes include type of device, Operating System, Browser, etc. Examples: .is-mobile, .is-not-mobile, .is-tablet, .is-ios, .is-not-ios, .is-androidos, .is-chromebrowser. Made by wescleveland56

    Joomla

    yagendoo Joomla! Mobile Detection Plugin - Lightweight PHP plugin for Joomla! that detects a mobile browser using the Mobile Detect class. Made by yagendoo media.

    +

    yagendoo Joomla! Mobile Detection Plugin - Lightweight PHP plugin for Joomla! + that detects a mobile browser using the Mobile Detect class. Made by yagendoo media.

    + +

    User Agent Detector plugin by @ReneKreijveld. This system plugin detects the user agent of your + website visitor and sets a session variable accordingly. Based on the user agent, the plugin detects if the site is running on a desktop pc, tablet or smartphone. + It can also detect if the visitor is a spider bot (search engine). Session variable that is set: ualayout. Possible values: desktop, tablet, mobile, bot..

    +

    ZF2 Mobile-Detect - Zend Framework 2 module that provides Mobile-Detect features (Mobile_Detect class as a service, helper for views and plugin controllers). Made by neilime

    -

    ZF2 MobileDetectModule - Facilitates integration of a PHP MobileDetect class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module, but differs in initialization and provision routine of the actual Mobile_Detect class. Appropriate view helper and controller plugin also have different conceptions. Made by Nikola Posa

    +

    ZF2 MobileDetectModule - Facilitates integration of a PHP MobileDetect class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module, but differs in initialization and provision routine of the actual Mobile_Detect class. Appropriate view helper and controller plugin also have different conceptions. Made by Nikola Posa

    Laravel

    Laravel-Agent a user agent class for Laravel, based on Mobile Detect with some additional functionality. Made by Jens Segers.

    -

    BrowserDetectis a browser & mobile detection package, collects and wrap together the best user-agent identifiers for Laravel. Created by Varga Zsolt.

    +

    BrowserDetect is a browser & mobile detection package, collects and wrap together the best user-agent identifiers for Laravel. Created by Varga Zsolt.

    Yii Framework

    Yii Extension - Mobile detect plugin for Yii framework. Made by Alexey Salnikov.

    +

    Yii Extension - Mobile detect plugin for Yii framework. + Made by Alexey Salnikov.

    + +

    Yii2 Device Detect - Yii2 extension for Mobile-Detect library. Made by Alexander Nestorov

    + +

    Statamic CMS Mobile Detect - plugin. Made by Sergei Filippov of Haiku Lab.

    Kohana

    Kohana Mobile Detect - an example of implementation of Mobile_Detect class with Kohana framework. Written by Luiz Alberto S. Ribeiro.

    Perl

    MobileDetect.pm - Perl module for Mobile Detect. Made by Sebastian Enger.

    python

    pymobiledetect - Mobile detect python package. Made by Bas van Oostveen.

    Ruby

    mobile_detect.rb - A Ruby gem using the JSON data exposed by the php project and implementing a basic subset of the API (as much as can be done by the exposed data). Made by Karthik T.

    GoMobileDetect

    GoMobileDetect - Go port of Mobile Detect class. Made by Shaked.

    GoMobileDetect - Go port of Mobile Detect class. Made by Shaked.

    LUA

    ua-lua is a small lib written in LUA providing device type detection. ua-lua is detecting mobile or tablet devices based on user-agent inside nginx daemon. Made by Frédéric Robinet.

    isWhateverYouWant()); ?>
    Debug
    Matching RegexgetMatchingRegex()); ?>
    Matching ArraygetMatchesArray()); ?>
    diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php b/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php new file mode 100644 index 00000000000..85f3c2c0b07 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/examples/test.php @@ -0,0 +1,29 @@ +setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1.4'); +var_dump($detect->version('Chrome')); +var_dump($detect->version('iPhone')); +*/ + +/* +$user_agents = array( + 'android' => 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', + 'iphone6' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25', + 'blackberry' => 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' +); +$mobile_detect = new Mobile_Detect; + +foreach($user_agents as $user_agent) +{ + $mobile_detect->setUserAgent($user_agent); + var_dump($mobile_detect->isAndroidOS()); +} +*/ + +$detect = new Mobile_Detect; +//$detect->setUserAgent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'); +//var_dump($detect->version('IE')); +$detect->setUserAgent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko'); +var_dump($detect->version('IE')); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php b/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php index f7735de7bf7..88ff6a10991 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/export/exportToJSON.php @@ -47,7 +47,9 @@ $json = array( // If match is found, triggers 'isMobile' to be true. 'browsers' => $detect->getBrowsers(), // If match is found, triggers 'isMobile' to be true. - 'os' => $detect->getOperatingSystems() + 'os' => $detect->getOperatingSystems(), + // Various utilities. To be further discussed. + 'utilities' => $detect->getUtilities() ) ); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php old mode 100644 new mode 100755 index 897a3ec764c..5519665ee7a --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/BasicsTest.php @@ -1,29 +1,5 @@ * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ @@ -177,7 +153,8 @@ class BasicTest extends PHPUnit_Framework_TestCase /** * @dataProvider userAgentProvider - * @covers Mobile_Detect::setUserAgent, Mobile_Detect::getUserAgent + * @covers Mobile_Detect::setUserAgent + * @covers Mobile_Detect::getUserAgent */ public function testGetUserAgent($headers, $expectedUserAgent) { @@ -203,7 +180,56 @@ class BasicTest extends PHPUnit_Framework_TestCase } /** - * @covers Mobile_Detect::setUserAgent, Mobile_Detect::getUserAgent + * Read response from cloudfront, if the cloudfront headers are detected + * @covers Mobile_Detect::setCfHeaders + */ + public function testSetCfHeaders() + { + // Test mobile detected + $header1 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'true', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false' + ); + $md = new Mobile_Detect($header1); + $this->assertSame($md->getCfHeaders(), $header1); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), false); + $this->assertSame($md->isMobile(), true); + + // Test neither mobile nor tablet (desktop) + $header2 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'true', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false' + ); + $md->setHttpHeaders($header2); + $this->assertSame($md->getCfHeaders(), $header2); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), false); + $this->assertSame($md->isMobile(), false); + + // Test tablet detected + $header3 = array( + 'HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', + 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'true' + ); + $md->setCfHeaders($header3); + $this->assertSame($md->getCfHeaders(), $header3); + $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); + $this->assertSame($md->isTablet(), true); + $this->assertSame($md->isMobile(), false); + + // Check if the headers are cleared + $header4 = array(); + $md->setHttpHeaders($header4); + $this->assertSame($md->getCfHeaders(), $header4); + } + + /** + * @covers Mobile_Detect::setUserAgent + * @covers Mobile_Detect::getUserAgent */ public function testSetUserAgent() { @@ -461,7 +487,7 @@ class BasicTest extends PHPUnit_Framework_TestCase public function testScriptVersion() { $v = Mobile_Detect::getScriptVersion(); - $formatCheck = (bool)preg_match('/^[0-9]+\.[0-9]+\.[0-9](-[a-zA-Z0-9])?$/', $v); + $formatCheck = (bool)preg_match('/^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9])?$/', $v); $this->assertTrue($formatCheck, "Fails the semantic version test. The version " . var_export($v, true) . ' does not match X.Y.Z pattern'); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php index dc87bfb2b14..5c4df79b9a4 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UA_List.inc.php @@ -1,1220 +1,27 @@ - * * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net * - * This file is updated weekly. + * Compile the providers list. + * The providers list is updated weekly. * You can contribute by adding new user agents and tests. - * */ -return array( - - 'Acer' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build/HTK55D) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; A110 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'IML74K'), 'model' => 'A200' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; A701 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-710 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.36', 'Chrome' => '32.0.1700.99')), - 'Mozilla/5.0 (Linux; Android 4.2.2; A1-830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'AdvanDigital' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Ainol' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; Novo10 Hero Build/20121115) AppleWebKit/535.19 (KHTML like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - 'AllFine' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'ASUS' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03L', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.2.1; ME301T Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), - 'Mozilla/5.0 (Linux; Android 4.2.1; ME173X Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), - 'Mozilla/5.0 (Linux; Android 4.2.2; TF300T Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39E') ), - ), - - 'Alcatel' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.5', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 918D' ), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.6', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 991' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build/ICECREAM) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'ICECREAM'), 'model' => 'ONE TOUCH 993D' ), - ), - - 'Allview' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.5.3.246/145/355' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Amazon' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '528.5+', 'Kindle' => '3.0', 'Safari' => '4.0'), 'model' => 'Kindle' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Apple' => array( - 'iTunes/9.1.1' => array('isMobile' => false, 'isTablet' => false), - 'iTunes/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit/536.27.1' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '420+', 'Safari' => '3.0') ), - 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '3_0', 'Webkit' => '528.18', 'Safari' => '4.0'), 'model' => 'iPhone', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46', 'Mobile' => '9B206', 'Safari' => '5.1'), 'model' => 'iPhone' ), - 'Mozilla/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Mobile' => '10A403', 'Safari' => '6.0'), 'model' => 'iPod'), - 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B206 Safari/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.80', 'Mobile' => '9B206'), 'model' => 'iPad' ), - 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A403'), 'model' => 'iPad' ), - 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '4_2_1', 'Webkit' => '533.17.9', 'Safari' => '5.0.2', 'Mobile' => '8C148'), 'model' => 'iPad', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '3_2', 'Webkit' => '531.21.10', 'Safari' => '4.0.4', 'Mobile' => '7B334b'), 'model' => 'iPad', 'mobileGrade' => 'B' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A523 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.82', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10B142 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1', 'Webkit' => '536.26', 'Chrome' => '23.0.1271.100', 'Mobile' => '10B142'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1_3', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10B329'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), - 'Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Coast/1.0.2.62956 Mobile/10B329 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Coast' => '1.0.2.62956')), - ), - - 'Archos' => array( - - 'Mozilla/5.0 (Linux; Android 4.2.2; Qilive 97R Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( - 'isMobile' => true, 'isTablet' => true - ), - ), - - 'AudioSonic' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'BlackBerry' => array( - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.8+', 'BlackBerry' => '6.0.0.546'), 'model' => 'BlackBerry 9300' ), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.400 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.723 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.714 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.11+', 'BlackBerry' => '7.1.0.714'), 'model' => 'BlackBerry 9790' ), - 'Opera/9.80 (BlackBerry; Opera Mini/7.0.29990/28.2504; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.342 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.480 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.0.0.583 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.576 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.523 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.1067 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603' => array('isMobile' => true, 'isTablet' => false), - 'BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/611' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '5.0.0.1036', 'VendorID' => '611'), 'model' => 'BlackBerry8520' ), - 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.337 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (BB10; Touch) /537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '10.0.9.2372') ), - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A200' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A500' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A501' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer' ), - 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer Pad TF300T' ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JZO54K'), 'model' => 'Transformer' ), - 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'B1-A71' ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0', 'IE' => '9.0'), 'model' => 'Allegro' ), - ), - - 'Broncho' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - - ), - - // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html - 'bq' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build/1.1.7 20121018-10:33) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build/1.1.10-1015 20121230-18:00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; Maxwell Lite Build/v1.0.0.ICS.maxwell.20120920) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build/1.0.0 20120913-10:39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Captiva' => array( - 'Opera/9.80 (X11; Linux zvav; U; de) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( - 'isMobile' => true, 'isTablet' => true, - ), - ), - - 'Casio' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build/C771M120) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'ChangJia' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - - ), - - // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 - 'Coby' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build/FRF85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Concorde' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Cresta' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Cube' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Danew' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array( 'Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0' ), 'model' => 'Dslide 700' ) - - ), - - 'DanyTech' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Dell' => array( - 'Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; DELL; Venue Pro)' => array('isMobile' => true, 'isTablet' => false), - ), - - 'DPS' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'ECS' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30')) - ), - - 'Eboda' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build/ICS.g12refM806A1YBD.20120925) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Fly' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Fujitsu' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build/V21R48A) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'V21R48A', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), - - ), - - 'FX2' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - // @ref: http://www.galapad.net/product.html - 'Galapad' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JRO03C') ), - - ), - - 'GoClever' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build/MID) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Google' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.40 Mobile Safari/537.31 OPR/14.0.1074.54070' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Opera' => '14.0.1074.54070') ), - 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Chrome' => '26.0.1410.58')), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Chrome' => '18.0.1025.166') ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build/JZO54K; CyanogenMod-10.0.0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android; en_us; Nexus 7 Build/) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 NetFrontLifeBrowser/2.3 Mobile (Dragonfruit)' => array('isMobile' => true, 'isTablet' => true), - ), - - 'GU' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0')), - - ), - - 'HCL' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build/HCL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build/HCL ME Tablet X1) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'HP' => array( - 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-GB) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; HP Slate 7 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build/1.0.7_WW-FIR-13) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'HTC' => array( - 'Mozilla/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' => array('isMobile' => true, 'isTablet' => false), - 'HTC_Touch_HD_T8282 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build/FRF91) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180/1.0 Android/2.2 release/06.23.2010 Browser/WAP 2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; HTC/DesireS/1.07.163.1 Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC/DesireS/2.10.161.3 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build/GRI40; ILWT-CM7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U/1.05.161.1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; PG86100 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build/MIUI) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; HTC Butterfly Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.1; EVO Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; HTCSensation Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC 7 Mozart T8698; QSD8x50)' => array( - 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => '7 Mozart T8698', - ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 HTC MOZART)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mondrian T8788)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro T7576)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Surround)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy T8686)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Eternity)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Gold)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2 LEO)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; iPad 3)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; LEO)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mazaa)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mondrian)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; mwp6985)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40200)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PD67100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI39100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI86100)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar 4G)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 1.08.164.02)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.164.01)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.168.02)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schuber)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Spark)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T7575)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8697)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8788)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9295)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9296)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Torphy T8686)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; X310e)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC_blocked; T8788)' => array( - 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'T8788', - ), - - ), - - 'Hudl' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Huwaei' => array( - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build/HuaweiU8660) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build/HuaweiU8850) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'HUAWEI_T8951_TD/1.0 Android/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release/05.31.2012 Browser/WAP2.0 (AppleWebKit/534.30) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build/HuaweiMediaPad) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815/C8815V100R001C541B135; 540*960; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D/C8813DV100R001C92B172; 480*854; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C/Y300CV100R001C92B168; 480*800; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) - ), - - 'Iconbit' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; NT-3702M Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36 OPR/16.0.1212.65583' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'iJoy' => array('Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Intenso' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build/JR003H) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1.', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'IRU' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'JXD' => array('Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - ), - - 'Karbonn' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; ST10 Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Kobo' => array( - 'Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Kobo Touch)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.0', 'Webkit' => '533.1', 'Safari' => '4.0') ), - ), - - 'Lenovo' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build/ThinkPadTablet_A400_03) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IdeaTabA1000-G) U2/1.0.0 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.360' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H/S100) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.300' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.300' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'LG' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v/V10f Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; LG-F180K Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; LG-V500 Build/JDQ39B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V510 Build/KOT49H.L004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG E-900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900k)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900h)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-Optimus 7)' => array('isMobile' => true, 'isTablet' => false), - // @ref: http://ja.wikipedia.org/wiki/L-06C - 'Mozilla/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build/HRI66) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Megafon' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; MT7A Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'MediaTek' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Micromax' => array( - - 'Mozilla/5.0 (Linux; Android 4.1.1; Micromax A110 Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.22', 'Chrome' => '25.0.1364.169') ), - 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '534.30', 'Android' => '4.0', 'Build' => 'IMM76D', 'Safari' => '4.0') ), - - ), - - 'Microsoft' => array( - - // Surface tablet - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('IE' => '10.0', 'Windows NT' => '6.2', 'Trident' => '6.0') ), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; ARMBJS)' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - - // Thanks to Jonathan Donzallaz! - // Firefox (nightly) in metro mode on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko/20130626 Firefox/25.0' => array('isMobile' => false, 'isTablet' => false), - // Firefox in desktop mode on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), - // IE10 in metro mode on Dell XPS 12 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), - // IE10 in desktop mode on Dell XPS 12 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), - // Opera on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130' => array('isMobile' => false, 'isTablet' => false), - // Chrome on Dell XPS 12 - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - // Google search app from Windows Store - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MDDCJS; WebView/1.0)' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Modecom' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Motorola' => array( - 'MOT-W510/08.11.05R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0 UP.Link/6.3.0.0.0' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build/MLS2GC_2.6.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build/4.5.1_57_DX8-51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build/4.5.1A-1_SUN-254_13) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build/4.5.2-51_DFL-50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build/4.5.2A-51_OLL-17.8) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build/V1.540) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.1; en-us; Xoom Build/HMJ25) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build/6.7.2-180_DHD-16_M4-31) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build/V2.27D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'XT687' ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build/6.7.2-180_SPU-19-TA-11.6) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT910 Build/9.8.2O-124_SPUL-17) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT915 Build/2_32A_2031) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2017) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT925 Build/9.8.2Q-50-XT925_VQLM-20) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT907 Build/9.8.1Q-66) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; XT901 Build/9.8.2Q-50_SLS-13) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; DROID BIONIC Build/9.8.2O-72_VZW-22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - ), - - // @ref: https://www.nabitablet.com/ - 'Nabi' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'NEC' => array( - // @ref: http://www.n-keitai.com/n-08d/?from=mediasnet - // @ref: http://devlog.dcm-gate.com/2012/03/medias-tab-n-06duseragnet.html - // @ref: http://keitaiall.jp/N-08D.html aka MEDIAS TAB - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build/A5001911) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android AAA; BBB; N-06D Build/CCC) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Nook' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build/ERD79 1.4.3) Apple WebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2.1', 'Webkit' => '533.1', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build/ICS) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'ICS', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.0.4; BNTV600 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36 Hughes-PFB/CID5391275.AID1376709964' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76L', 'Webkit' => '537.36', 'Chrome' => '28.0.1500.94') ), - - ), - - 'Nokia' => array( - 'Nokia200/2.0 (12.04) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2/1.0.0 UCBrowser/8.9.0.251 U2/1.0.0 Mobile UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), - 'Nokia6303iclassic/5.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' => array('isMobile' => true, 'isTablet' => false), - 'nokian73-1/UC Browser7.8.0.95/69/400 UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), - 'Nokia2760/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Nokia3650/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' => array('isMobile' => true, 'isTablet' => false), - 'NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UC Browser7.8.0.95/27/352' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2)/UC Browser8.5.0.183/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/28/352/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Series40; NokiaC3-00/08.63; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Series 60; Opera Mini/7.0.31380/28.2725; U; es) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Opera Mini' => '7.0.31380', 'Presto' => '2.8.119')), - 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaX7-00/022.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaE6-00/111.140.0058; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.020.0308; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaN8-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120ci/7.02; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/7.10; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE66-1/510.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95-3/20.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/200.34.36; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/500.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/10.0.046; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/@version@; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/031.022; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/32.001; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/06.101; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/071.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/061.005; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaX6-00/40.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gb' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/60.0.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC5-03/12.0.023; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5228/40.1.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5230/51.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5530c-2/32.0.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/21.0.045; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.4' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-4/30.0.004; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.28 3gpp-gba' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Symbian' => '9.4', 'Webkit' => '533.4', 'NokiaBrowser' => '7.3.1.28'), 'model' => 'NokiaN97-4' ), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; LG E-900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Vodafone)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800) UP.Link/5.1.2.6' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; SFR)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; vodafone)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 800c)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 920)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '10.0', 'Windows Phone OS' => '8.0', 'Trident' => '6.0'), 'model' => 'Lumia 920' ), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; lumia800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 710)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800C)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 900)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Nokia)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'TITAN X310e' ), - ), - - 'Odys' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build/ODYS XENO 10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - 'OverMax' => array( - 'OV-SteelCore(B) Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build/ICS.g08refem611.20121010) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'YONESTablet' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - // @todo: Research http://www.pantech.com/ - 'Pantech' => array( - 'PANTECH-C790/JAUS08312009 Browser/Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build/GRI40) AppleWebKit/533.1 (KHTML like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Philips' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'PointOfView' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Prestigio' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'PMP7100D3G' ), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'PROSCAN' => array( - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'PyleAudio' => array( - 'Mozilla/5.0 (Linux; Android 4.0.4; PTBL92BC Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '537.36', 'Chrome' => '31.0.1650.59')), - - ), - - 'RockChip' => array( - 'Mozilla/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build/ECLAIR) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), - ), - - 'RossMoor' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) - - ), - - // @ref: http://www.qmobile.com.pk/complete_range.php# - 'QMobile' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Samsung' => array( - 'MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('MQQBrowser' => '4.0')), - 'SAMSUNG-SGH-P250-ORANGE/P250BVHH8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-B2710/B271MCXKF1 SHP/VPP/R5 Dolfin/2.0 QTV/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Dolfin' => '2.0') ), - 'SAMSUNG-SGH-D900i/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-S5233T/S5233TXEJE3 SHP/VPP/R5 Jasmine/0.8 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380FXXKL3; U; Bada/2.0; ru-ru) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build/CUPCAKE) AppleWebKit/528.5 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'SAMSUNG-GT-S3650/S3650XEII3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94/140/352' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XEKJ3; U; Bada/1.0; ru-ru) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530XXJKA; U; Bada/1.2; cs-cz) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - // @about FROYO: http://gizmodo.com/5543853/what-is-froyo - 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build/FROYO) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.261' => array('isMobile' => true, 'isTablet' => false, 'version' => array('MicroMessenger' => '4.5.1.261')), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE/I9001BVKPC Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '16.0.912.75') ), - 'Mozilla/5.0 (Linux; Android 4.0.3; SGH-T989 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '18.0.1025.166') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GT-I9300 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; SPH-D710 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE/I9300BVBLG2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/355' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.4; GT-P5110 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD/1.0 Android/4.0.4 Release/07.15.2012 Browser/AppleWebKit534.30 Build/IMM76D) ApplelWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.30' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4') ), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; GT-N7100 Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22 OPR/14.0.1025.52315' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array( 'Build' => 'JZO54K', 'Webkit' => '537.22', 'Opera' => '14.0.1025.52315' ) ), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.1; SGH-i747M Build/JRO03L) AppleWebKit/535.19(KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; GT-I8262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; GT-P5210 Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; CETUS)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus I917 By TC)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; FOCUS S)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-i8700)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Hljchm\'s Wp)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; I917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7 By MWP_HS)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i677)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917.)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917R)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i937)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SMG-917R)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SUMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'simvalley' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - - ), - - 'Sony' => array( - 'SonyEricssonK800i/R1AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build/2.0.1.A.0.47) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build/2.1.1.A.0.6) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build/3.0.1.G.0.75) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build/TID0092) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'TID0092', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0R0110) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build/TISU0143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build/6.1.A.2.45) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; LT22i Build/6.1.B.0.544) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build/6.1.B.0.544) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.5.5) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.2.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.0.4; LT28h Build/6.1.E.3.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build/TJDS0170) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build/10.1.E.0.265) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Build' => '10.1.E.0.265', 'Webkit' => '534.30', 'Safari' => '4.0') ), - 'Mozilla/5.0 (Linux; Android 4.1.2; LT26w Build/6.2.B.1.96) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; SGP321 Build/10.3.1.A.0.33) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => '10.3.1.A.0.33', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58') ), - - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build/10.1.1.A.1.273) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build/10.1.1.A.1.310) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build/14.1.M.0.202) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build/14.1.n.0.63) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build/12.0.B.5.37) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.1.2; M35c Build/12.0.B.2.42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build/12.0.C.2.42) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.2.349 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6502 Build/17.1.A.2.69) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6503 Build/17.1.A.0.504) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D6543 Build/17.1.A.2.55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.0.29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build/20.0.A.1.12) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2105 Build/20.0.B.0.74) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build/20.0.B.0.85) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2302 Build/18.0.B.1.23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build/18.0.b.1.23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.6.3.413 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2303 Build/18.0.C.1.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2305 Build/18.0.A.1.30) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D2306 Build/18.0.C.1.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D5303 Build/19.0.1.A.0.207) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; D5306 Build/19.1.A.0.264) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build/19.0.D.0.269) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.6.428 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build/19.0.C.2.59) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; D5322 Build/19.0.D.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build/14.2.A.1.146) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.3; M51w Build/14.2.A.1.146) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5102 Build/18.2.A.0.9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5103 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.1; D5106 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 GSA/3.2.17.1009776.arm' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build/14.1.G.2.257) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.4.2; C6943 Build/14.3.A.0.681) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; Android 4.2.2; SGP412 Build/14.1.B.3.320) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), - - 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build/10.2.C.0.143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.1.2; SGP351 Build/10.1.1.A.1.307) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.3; SGP341 Build/10.4.B.0.569) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP511 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP512 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build/17.1.A.2.69) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build/17.1.A.2.36) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.4.2; SGP551 Build/17.1.A.2.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - - 'SonyEricssonU5i/R2CA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), - 'SonyEricssonU5i/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Skk' => array('Mozilla/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build/F10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Storex' => array( - 'Mozilla/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '537.36')), - "Mozilla/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.36')), - "Mozilla/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '535.19')), - ), - - 'Tecno' => array('Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), - - 'Telstra' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build/TVA301TELBG3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - ), - - // @info: http://www.texet.ru/tablet/ - 'texet' => array( - - 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build/GB.m1ref.20120116) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.3.4', 'Webkit' => '533.1', 'Safari' => '4.0'), 'model' => 'TM-7021' ), - - ), - - 'Tolino' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), - 'Mozilla/5.0 (Linux; Android 4.2.2; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1290.67495' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Toshiba' => array( - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; TOSHIBA; TSUNAGI)' => array('isMobile' => true, 'isTablet' => false), - // @ref: http://www.toshiba.co.uk/discontinued-products/folio-100/ - 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build/TOSHIBA_FOLIO_AND_A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2', 'Webkit' => '533.1', 'Safari' => '4.0') ), - ), - - 'Trekstor' => array( - 'Mozilla/5.0 (Linux; Android 4.2.2; ST70408-1 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58')), - 'Mozilla/5.0 (Linux; Android 4.2.2; VT10416-2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( - 'isMobile' => true, 'isTablet' => true - ), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30;SurfTab_10.1' => array( - 'isMobile' => true, 'isTablet' => true - ), - ), - - 'Visture' => array( - - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build/LR-97JC) Apple WebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build/Visture V4 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build/Visture V5 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Versus' => array( - 'Mozilla/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 BMID/E67A45B1AB' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 TwonkyBeamBrowser/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build/meizhi_V2.80.wifi8723.20121225.b11c800)' => array('isMobile' => true, 'isTablet' => true), - 'OneBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), - ), - - 'Viewsonic' => array( - 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' =>array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Vodafone' => array( - 'Mozilla/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.0.3; SmartTabII10 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Vonino' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - ), - - 'Xoro' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build/PAD 9719QR) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; Android 4.2.2; PAD720 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true) - ), - - 'ZTE' => array( - 'Mozilla/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build/tejosunhsine) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; V965W)' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; Windows Phone - Internet 7; SFR)' => array('isMobile' => true, 'isTablet' => false), - ), - - 'Zync' => array( - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/444' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Console' => array( - - //Nintendo Wii: - 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/{Version No} NintendoBrowser/{Version No}.US' => array('isMobile' => false, 'isTablet' => false), - - //Sony PlayStation: - 'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)' => array('isMobile' => false, 'isTablet' => false), - - //Microsoft Xbox: - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), - // WTF? Must investigate. - //'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), - - ), - - 'Other' => array( - 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 AlexaToolbar/psPCtGhf-2.2' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Linux ppc; rv:17.0) Gecko/20130626 Firefox/17.0 Iceweasel/17.0.7' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; Linux) AppleWebKit/535.22+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.20+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Windows NT 5.2; WOW64) Presto/2.12.388 Version/12.14' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko/20100101 Firefox/14.0.1' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MANMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto/2.12.388 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - // IE 10 - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' => array('isMobile' => false, 'isTablet' => false), - // IE 11 @todo: Trident(.*)rv.(\d+)\.(\d+) - 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), - 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), - - // TV - 'Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)' => array('isMobile' => false, 'isTablet' => false), - 'HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)' => array('isMobile' => false, 'isTablet' => false), - 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), - ), - - 'Generic' => array( - - 'Mozilla/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), - 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - 'Java/1.6.0_22' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Java' => '1.6.0_22') ), - 'Opera/9.80 (Series 60; Opera Mini/6.5.29260/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - 'Opera/9.80 (Android; Opera Mini/6.5.27452/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), - // New Opera - 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17 OPR/14.0.1025.52315' => array('isMobile' => false, 'isTablet' => false), - // Unknown yet - // Looks like Chromebook - 'Mozilla/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.103 Safari/537.36', - 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5', - 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; GT-I9070 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/46154) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build/IMM76L; CyanogenMod-9) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - - 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // Acer Iconia Tab - 'Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25', - 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', - 'Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mercury/7.2 Mobile/10A523 Safari/8536.25', // Mercurio Browser - 'Opera/9.80 (Android 2.3.7; Linux; Opera Tablet/46154) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // sdk - 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // sdk - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10', - 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // 7" Verso Android tablet - 'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', // sony xperia tablet s unforts - 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US', - 'Mozilla/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17', // PocketBook IQ701 (tablet) - 'Mozilla/5.0 (Linux; Android 4.0.4; z1000 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', // It is a tablet with calling - 'Mozilla/5.0 (Linux; Android 4.0.3; cm_tenderloin Build/GWK74) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19', // HP touch pad running android cyanogenmod - 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', // My device is tablet but its detected as phone - 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136', - 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17', // its a lenovo tablet 2 with windows 8 pro - 'Mozilla/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)', - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // MS Surface RT tablet actually! - 'Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)', - 'Mozilla/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', // Wrong detection - 7-inch tablet was detected as a phone. Android 3.2.1, native browser - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // Nope, its a Microsoft Surface tablet running Windows RT (8) with MSIE 10 - 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', // Tablet! - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // its a Microsoft surface rt (tablet) - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; WebView/1.0)', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', // Nextbook 7SE Tablet - 'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10', // allview alldro speed tablet, android ics, opera mobile - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)', // Its a surface in portrait - 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-es; SAMSUNG GT-S5830/S5830BUKT2 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', - 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build/HTK75C) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13', - // Am ramas la pozitia: 207 - - // Android on Windows :) www.socketeq.com - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - - // TV - 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00', - - 'Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0', - // Maxthon - 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12', - 'Opera/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02', - 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)', - 'PalmCentro/v0001 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D061; Blazer/4.5) 16;320x320', - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)', - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)', - // @todo: research N880E - 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880E; China Telecom)', - 'Opera/9.80 (Series 60; Opera Mini/7.0.29482/28.2859; U; ru) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (S60; SymbOS; Opera Mobi/SYB-1202242143; U; en-GB) Presto/2.10.254 Version/12.00', - 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', - 'Opera/9.80 (Android; Opera Mini/7.0.29952/28.2647; U; ru) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (Android; Opera Mini/6.1.25375/28.2555; U; en) Presto/2.8.119 Version/11.10', - 'Opera/9.80 (Mac OS X; Opera Tablet/35779; U; en) Presto/2.10.254 Version/12.00', - 'Mozilla/5.0 (Android; Tablet; rv:10.0.4) Gecko/10.0.4 Firefox/10.0.4 Fennec/10.0.4', - 'Mozilla/5.0 (Android; Tablet; rv:18.0) Gecko/18.0 Firefox/18.0', - 'Opera/9.80 (Linux armv7l; Maemo; Opera Mobi/14; U; en) Presto/2.9.201 Version/11.50', - 'Opera/9.80 (Android 2.2.1; Linux; Opera Mobi/ADR-1207201819; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), - 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build/JRO03E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', - 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build/ONDA_MID) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), // Blaupunkt Endeavour 1010 - 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build/ICS.g08refem618.20121102) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), - ), - - 'Bot' => array( - 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'Googlebot-Image/1.0' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'Python-urllib/2.5' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), - 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/) - ), - -); +// Setup. +$includeBasePath = dirname(__FILE__) . '/providers/vendors'; +$list = array(); + +// Scan. +$dir = new DirectoryIterator($includeBasePath); +foreach ($dir as $fileInfo) { + if ($fileInfo->isDot()) { + continue; + } + $listNew = include $includeBasePath . '/' . $fileInfo->getFilename(); + if (is_array($listNew)) { + $list = array_merge($list, $listNew); + } +} + +return $list; diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php index 77cbc753858..6aca913ae66 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/UserAgentTest.php @@ -1,37 +1,19 @@ * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ class UserAgentTest extends PHPUnit_Framework_TestCase { + protected $detect; protected static $ualist = array(); protected static $json; + public function setUp() + { + $this->detect = new Mobile_Detect; + } + public static function generateJson() { //in case this gets run multiple times @@ -43,6 +25,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase $jsonFile = dirname(__FILE__) . '/ualist.json'; $phpFile = dirname(__FILE__) . '/UA_List.inc.php'; + //currently stored as a PHP array + $list = include $phpFile; + //check recency of the file if (file_exists($jsonFile) && is_readable($jsonFile)) { //read the json file @@ -51,7 +36,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase //check that the hash matches $hash = isset($json['hash']) ? $json['hash'] : null; - if ($hash == sha1_file($phpFile)) { + if ($hash == sha1(serialize($list))) { //file is up to date, just read the json file self::$json = $json['user_agents']; @@ -59,6 +44,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } } + //uses the UA_List.inc.php to generate a json file if (file_exists($jsonFile) && !is_writable($jsonFile)) { throw new RuntimeException("Need to be able to create/update $jsonFile from UA_List.inc.php."); @@ -68,8 +54,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase throw new RuntimeException("Insufficient permissions to create this file: $jsonFile"); } - //currently stored as a PHP array - $list = include $phpFile; + + + //print_r($list['Acer']); exit; $json = array(); @@ -107,7 +94,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } //save the hash - $hash = sha1_file($phpFile); + $hash = sha1(serialize($list)); $json = array( 'hash' => $hash, 'user_agents' => $json @@ -149,8 +136,9 @@ class UserAgentTest extends PHPUnit_Framework_TestCase public function userAgentData() { - if (!count(self::$ualist)) + if (!count(self::$ualist)) { self::setUpBeforeClass(); + } return self::$ualist; } @@ -169,25 +157,24 @@ class UserAgentTest extends PHPUnit_Framework_TestCase } //setup - $md = new Mobile_Detect; - $md->setUserAgent($userAgent); + $this->detect->setUserAgent($userAgent); //is mobile? - $this->assertEquals($md->isMobile(), $isMobile); + $this->assertEquals($this->detect->isMobile(), $isMobile); //is tablet? - $this->assertEquals($md->isTablet(), $isTablet); + $this->assertEquals($this->detect->isTablet(), $isTablet, 'FAILED: ' . $userAgent . ' isTablet: ' . $isTablet); if (isset($version)) { foreach ($version as $condition => $assertion) { - $this->assertEquals($assertion, $md->version($condition), 'FAILED UA (version("'.$condition.'")): '.$userAgent); + $this->assertEquals($assertion, $this->detect->version($condition), 'FAILED UA (version("'.$condition.'")): '.$userAgent); } } //version property tests if (isset($version)) { foreach ($version as $property => $stringVersion) { - $v = $md->version($property); + $v = $this->detect->version($property); $this->assertSame($stringVersion, $v); } } @@ -196,7 +183,7 @@ class UserAgentTest extends PHPUnit_Framework_TestCase //@todo: vendor test. The below is theoretical, but fails 50% of the tests... /*if (isset($vendor)) { $method = "is$vendor"; - $this->assertTrue($md->{$method}(), "Expected Mobile_Detect::{$method}() to be true."); + $this->assertTrue($this->detect->{$method}(), "Expected Mobile_Detect::{$method}() to be true."); }*/ } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php similarity index 60% rename from htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php rename to htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php index 06724144505..b2d7bf215d8 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest.php +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/VendorsTest_tmp.php @@ -1,29 +1,5 @@ * @license MIT License https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt * @link http://mobiledetect.net */ @@ -49,21 +25,21 @@ class VendorsTest extends PHPUnit_Framework_TestCase public function testisMobileIsTablet() { foreach (self::$items as $brand => $deviceArr) { - foreach ($deviceArr as $userAgent => $conditions) { - - if (!is_array($conditions)) { continue; } + if (!is_array($conditions)) { + continue; + } $this->detect->setUserAgent($userAgent); foreach ($conditions as $condition => $assert) { - // Currently not supporting version and model here. // @todo: I need to split this tests! - if ( in_array($condition, array('model') ) ) { continue; } // 'version', + if (in_array($condition, array('model'))) { + continue; + } // 'version', switch ($condition) { - case 'version': // Android, iOS, Chrome, Build, etc. foreach ($assert as $assertKey => $assertValue) { @@ -72,13 +48,11 @@ class VendorsTest extends PHPUnit_Framework_TestCase //} $this->assertTrue( $this->detect->$condition( $assertKey ) == $assertValue, 'UA ('.$condition.'('.$assertKey.') === '.$assertValue.'): '.$userAgent); } - - break; + break; default: - $this->assertTrue( $this->detect->$condition() === $assert, 'UA ('.$condition.'): '.$userAgent); - break; - + $this->assertTrue($this->detect->$condition() === $assert, 'UA ('.$condition.'): '.$userAgent); + break; } } diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml b/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml index c780cebe223..2b10958d550 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/phpunit.xml @@ -1,15 +1,15 @@ + mapTestClassNameToCoveredClassName="true"> @@ -17,9 +17,11 @@ - ./ + ./ - + + + diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php new file mode 100644 index 00000000000..d8fc582085f --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Acer.php @@ -0,0 +1,28 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build/HTK55D) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; A110 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'IML74K'), 'model' => 'A200' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; A701 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-710 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, 'version' => array( + 'Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.36', 'Chrome' => '32.0.1700.99', + ), + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; A1-811 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; A1-830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; A3-A11 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36'=> array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php new file mode 100644 index 00000000000..96a36ac35e0 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Alcatel.php @@ -0,0 +1,49 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.5', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 918D' ), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '2.3.6', 'Webkit' => '533.1', 'Safari' => '4.0', 'Build' => 'GRJ90'), 'model' => 'ONE TOUCH 991' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build/ICECREAM) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'ICECREAM'), 'model' => 'ONE TOUCH 993D' ), + 'ALCATEL_A392G/1.0 ObigoInternetBrowser/Q05A[TF013513002719521000000013182904148]' => array('isMobile' => true, 'isTablet' => false, 'model' => 'A392G'), + 'ALCATEL_3020D/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2; ALCATEL ONE TOUCH 5037A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'ALCATEL_3020G/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'ALCATEL_3041D/1.0 ObigoInternetBrowser/Q03C' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037E Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 5037X Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012A Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-nz; ONE TOUCH 6012A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; ONE TOUCH 6012D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; En-us; ONE TOUCH 6012E Build/JDQ39) AppleWebKit/534.30 (KHTML, Like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.12975 YaBrowser/13.12.1599.12975 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; bg-bg; ONE TOUCH 6012X Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6012X_orange Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; fr-fr; ALCATEL ONE TOUCH 6012X_orange Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; fr-fr; 6016E Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; ALCATEL ONE TOUCH 6016E Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; 6016X Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; ALCATEL ONE TOUCH 6016X Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; ru-ru; 6016X Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6032A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-ru; ALCATEL ONE TOUCH 6032X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-nz; ALCATEL ONE TOUCH 7040A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; th-th; ALCATEL ONE TOUCH 7040D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040E Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; ALCATEL ONE TOUCH 7041D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041D Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; pt-pt; ALCATEL ONE TOUCH 7041X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020A Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020D Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; ALCATEL ONE TOUCH 8020D Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020E Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php new file mode 100644 index 00000000000..7bbcb5ea25d --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Allview.php @@ -0,0 +1,11 @@ + array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.5.3.246/145/355' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php new file mode 100644 index 00000000000..82fa5ac44d2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Amazon.php @@ -0,0 +1,14 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated =true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '528.5+', 'Kindle' => '3.0', 'Safari' => '4.0'), 'model' => 'Kindle' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFJWI Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; en-us; KFSOWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.21 Safari/535.19 Silk-Accelerated=true' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; T720-WIFI Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php new file mode 100644 index 00000000000..931de962eba --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Apple.php @@ -0,0 +1,27 @@ + array( + 'iTunes/9.1.1' => array('isMobile' => false, 'isTablet' => false), + 'iTunes/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit/536.27.1' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '420+', 'Safari' => '3.0') ), + 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '3_0', 'Webkit' => '528.18', 'Safari' => '4.0'), 'model' => 'iPhone', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46', 'Mobile' => '9B206', 'Safari' => '5.1'), 'model' => 'iPhone' ), + 'Mozilla/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Mobile' => '10A403', 'Safari' => '6.0'), 'model' => 'iPod'), + 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B206 Safari/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '5_1_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.80', 'Mobile' => '9B206'), 'model' => 'iPad' ), + 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '6_0', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A403'), 'model' => 'iPad' ), + 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '4_2_1', 'Webkit' => '533.17.9', 'Safari' => '5.0.2', 'Mobile' => '8C148'), 'model' => 'iPad', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10' => array('isMobile' => true, 'isTablet' => true, 'version' => array('iOS' => '3_2', 'Webkit' => '531.21.10', 'Safari' => '4.0.4', 'Mobile' => '7B334b'), 'model' => 'iPad', 'mobileGrade' => 'B' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A523 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '534.46.0', 'Chrome' => '21.0.1180.82', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_0_1', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10A523'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10B142 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1', 'Webkit' => '536.26', 'Chrome' => '23.0.1271.100', 'Mobile' => '10B142'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '6_1_3', 'Webkit' => '536.26', 'Safari' => '6.0', 'Mobile' => '10B329'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Coast/1.0.2.62956 Mobile/10B329 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Coast' => '1.0.2.62956')), + 'CheckMyBus iOS mobile App 0.9.0 (iPhone; iPhone OS/7.1.1)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1.4' => array('isMobile' => true, 'isTablet' => false), + 'VendorAppName/1.7.0 (iPhone; iOS 8.1.2; Scale/3.00)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('iOS' => '8.1.2'), 'model' => 'iPhone', 'mobileGrade' => 'A' ), + 'Mozilla/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit/601.1.17 (KHTML, like Gecko) Version/8.0 Mobile/13A175 Safari/600.1.4' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.37 (KHTML, like Gecko) Version/8.0 Mobile/13A4293g Safari/600.1.4' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php new file mode 100644 index 00000000000..3fda3c9ab9c --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Archos.php @@ -0,0 +1,67 @@ + array( + + 'Mozilla/5.0 (Linux; Android 4.2.2; Qilive 97R Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 101 Cobalt Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80 TITANIUM Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ARCHOS 101 Titanium Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 70b TITANIUM Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; Archos 80 Xenon Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 79 Xenon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 101 Titanium Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80XSK Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS FAMILYPAD 2 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ARCHOS 97B TITANIUM Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; ARCHOS 101 XS 2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; ARCHOS 80b PLATINUM Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 70 Xenon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ARCHOS 97 CARBON Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 97 TITANIUMHD Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Archos 90 Neon Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 1.6; de-de; Archos5 Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS GAMEPAD Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php new file mode 100644 index 00000000000..5d817e34a94 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Asus.php @@ -0,0 +1,22 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03L', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.2.1; ME301T Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), + 'Mozilla/5.0 (Linux; Android 4.2.1; ME173X Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.1', 'Build' => 'JOP40D') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; TF300T Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39E') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00C Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; K00L Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; ME302KL Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; K010 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; K017 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php new file mode 100644 index 00000000000..7f1c106e47d --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Blackberry.php @@ -0,0 +1,35 @@ + array( + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.8+', 'BlackBerry' => '6.0.0.546'), 'model' => 'BlackBerry 9300' ), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.400 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.723 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.714 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Webkit' => '534.11+', 'BlackBerry' => '7.1.0.714'), 'model' => 'BlackBerry 9790' ), + 'Opera/9.80 (BlackBerry; Opera Mini/7.0.29990/28.2504; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.342 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit/534.8 (KHTML, like Gecko) Version/6.0.0.480 Mobile Safari/534.8' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.0.0.583 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.576 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.523 Mobile Safari/534.11' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.1067 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/603' => array('isMobile' => true, 'isTablet' => false), + 'BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/611' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '5.0.0.1036', 'VendorID' => '611'), 'model' => 'BlackBerry8520' ), + 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.337 Mobile Safari/534.11+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (BB10; Touch) /537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('BlackBerry' => '10.0.9.2372') ), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '3.2.1', 'Webkit' => '534.13', 'Safari' => '4.0'), 'model' => 'Transformer TF101' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A200' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A500' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'A501' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; Transformer Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer' ), + 'Mozilla/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'Transformer Pad TF300T' ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JZO54K'), 'model' => 'Transformer' ), + 'Mozilla/5.0 (Linux; Android 4.1.2; B1-A71 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Webkit' => '535.19', 'Chrome' => '18.0.1025.166'), 'model' => 'B1-A71' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0', 'IE' => '9.0'), 'model' => 'Allegro' ), + ), + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php new file mode 100644 index 00000000000..2c94b9728a1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Dell.php @@ -0,0 +1,13 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build/Donut AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/ 525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build/GWK74; CyanogenMod-7.2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; DELL; Venue Pro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 8 3830 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 7 3730 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Venue 7 HSPA+ Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; Venue 8 3830 Build/JSS15Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; Dell Streak 10 Pro Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php new file mode 100644 index 00000000000..688653304cd --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Google.php @@ -0,0 +1,18 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.40 Mobile Safari/537.31 OPR/14.0.1074.54070' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Opera' => '14.0.1074.54070') ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Nexus 4 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.2.2', 'Chrome' => '26.0.1410.58')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Chrome' => '18.0.1025.166') ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build/JZO54K; CyanogenMod-10.0.0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android; en_us; Nexus 7 Build/) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 NetFrontLifeBrowser/2.3 Mobile (Dragonfruit)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 5.1; Nexus 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 momoWebView/6.3.1 android/404(Nexus 5;android 5.1;zh_CN;10;netType/1)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php new file mode 100644 index 00000000000..4f8b14a8217 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HP.php @@ -0,0 +1,21 @@ + array( + 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-GB) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; HP Slate 7 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build/1.0.7_WW-FIR-13) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; HP Slate 10 HD Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.4.2; HP Slate 8 Pro Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; Slate 21 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36 OPR/22.0.1485.78487' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; Android 4.3; HP SlateBook 10 x2 PC Build/4.3-17r20-03-23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php new file mode 100644 index 00000000000..cf6caebacc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/HTC.php @@ -0,0 +1,363 @@ + array( + 'Mozilla/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' => array('isMobile' => true, 'isTablet' => false), + 'HTC_Touch_HD_T8282 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build/FRF91) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180/1.0 Android/2.2 release/06.23.2010 Browser/WAP 2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; HTC/DesireS/1.07.163.1 Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC/DesireS/2.10.161.3 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build/GRI40; ILWT-CM7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U/1.05.161.1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC Sensation XE with Beats Audio Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; PG86100 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build/MIUI) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC Butterfly Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; EVO Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTCSensation Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S6312 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC 7 Mozart T8698; QSD8x50)' => array( + 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => '7 Mozart T8698', + ), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build/HTK75C) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (Linux; U; Android 3.1; zh-tw; HTC PG09410 Build/HMJ15) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 HTC MOZART)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mondrian T8788)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro T7576)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Surround)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy T8686)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Eternity)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Gold)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2 LEO)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; iPad 3)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; LEO)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mazaa)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mondrian)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; mwp6985)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40200)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PD67100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI39100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI86100)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar 4G)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 1.08.164.02)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.164.01)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e; 2.05.168.02)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schuber)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Spark)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T7575)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8697)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8788)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9295)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9296)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Torphy T8686)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; X310e)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC_blocked; T8788)' => array( + 'isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '9.0', 'Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'T8788', + ), + + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One S Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; HTC One X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-th; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-id; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-at; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One X Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-pe; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Maxthon/4.0.4.1000' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19 AlexaToolbar/alxf-2.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One S Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; HTC One Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31 OPR/14.0.1074.58201' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39E) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One XL Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.60140' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.24 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'HTC One X Linux/3.0.13 Android/4.1.9 Release/10.12.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One 801e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.61541' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One XL Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X+ Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC One X Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-in; HTC One V Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; HTC One X Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One SV Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; HTC One Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One 801e Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-ch; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC One S Build/IML74K) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 T5/2.0 baidubrowser/3.1.6.4 (Baidu; P1 4.0.3)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X+ Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HTC One 801e Build/JSS15J) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.4.1.362 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; HTC One Build/KRT16S.H5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One SV Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; HTC One Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-ru; HTC One 801e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One 801e Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.12975 YaBrowser/13.12.1599.12975 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; HTC One Build/KRT16S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HTC One Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JWR66Y.H1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; de-at; HTC One Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One dual sim Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One S Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One max Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.132 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One mini Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One 801e Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HTC One Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.132 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; HTC One X Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; HTC One S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-kw; HTC One X+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One max Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/5.3.0.49_r693790.420' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.5.418 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/5.2.1.381' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One mini Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; ru-ru; HTC One mini Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.0.435 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One 801e Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; HTC One X - 4.2.2 - API 17 - 720x1280 Build/JDQ39E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; HTC One VX Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.76 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One V Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36 OPR/22.0.1485.78487' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One 801e Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One 801e Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36 OPR/22.0.1485.81203' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One 801e Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; HTC One S Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC One V Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One mini Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; HTC One_M8 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One dual sim Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Mobile Safari/537.36 OPR/19.0.1340.69721' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One SV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 ACHEETAHI/2100050056' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One_M8 Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JWR66Y.H1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One SV Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/21.0.0.23.12;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-si; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/6.0.0.67_r853700.483 NetType/WIFI' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-US; HTC One X Build/JRO03C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One Build/KTU84P.H1) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One SV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FBAN/FB4A;FBAV/22.0.0.15.13;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One X+ Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 BingWeb/5.2.0.20140710' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; HTC One Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-mx; HTC One S Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FBAN/FB4A;FBAV/23.0.0.22.14;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.3; es-es; HTC One 801e Build/KTU84L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X+ Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.69 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One S Build/JRO03C) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-th; HTC One Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-ar; HTC One X Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One_M8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-us; HTC One X+ Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-mx; HTC One S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/24.0.0.30.15;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; HTC One Build/KTU84L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One dual sim Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/25.0.0.19.30;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.1; HTC One_M8 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/25.0.0.19.30;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; HTC One_M8 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; HTC One X Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; HTC One mini Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.1; HTC One_M8 Build/LRX22C.H5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php new file mode 100644 index 00000000000..f5ffca8e568 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Huawei.php @@ -0,0 +1,17 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build/ERE27) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build/HuaweiU8660) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build/HuaweiU8850) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build/HuaweiMediaPad) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'HUAWEI_T8951_TD/1.0 Android/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release/05.31.2012 Browser/WAP2.0 (AppleWebKit/534.30) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build/HuaweiMediaPad) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815/C8815V100R001C541B135; 540*960; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D/C8813DV100R001C92B172; 480*854; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C/Y300CV100R001C92B168; 480*800; CTC/2.0) AppleWebKit/534.30 (KHTML, like Gecko) Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) + ), + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php new file mode 100644 index 00000000000..1b0bc7dd767 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/LG.php @@ -0,0 +1,35 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; LG-VS410PP Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v/V10f Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; LG-F180K Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; LG-V500 Build/JDQ39B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V510 Build/KOT49H.L004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG E-900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900k)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900h)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-Optimus 7)' => array('isMobile' => true, 'isTablet' => false), + // @ref: http://ja.wikipedia.org/wiki/L-06C + 'Mozilla/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build/HRI66) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-gb; LG-V700 Build/KOT49I.A1403851714) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; LG-V500 Build/KOT49I.V50020d) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LG-V410/V41010d Build/KOT49I.V41010d) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php new file mode 100644 index 00000000000..95c37868842 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lava.php @@ -0,0 +1,23 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Iris 349 Build/MocorDroid2.3.5) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris402+ Build/iris402+) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; IRIS402 Build/LAVAIRIS402) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; iris405 Build/LAVAIRIS405) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; IRIS_501 Build/LAVAIRIS501) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris402e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris503e Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IRIS402) U2/1.0.0 UCBrowser/9.1.1.420 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.2.2; en-US; IRIS402) U2/1.0.0 UCBrowser/9.1.1.420 U2/1.0.0 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IRIS355) U2/1.0.0 UCBrowser/9.1.1.420 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; iris356 Build/irisIRIS356) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.5.0.360 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; iris356) U2/1.0.0 UCBrowser/9.0.2.389 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; iris500 Build/iris500) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; iris700 Build/iris700) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; QPAD E704 Build/JDQ39) AppleWebKit/537.36 (KHTML like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; IvoryS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-US; E-TAB IVORY Build/E702) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.0.321 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; tr-tr; E-TAB Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php new file mode 100644 index 00000000000..fbdf4b5cdc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Leader.php @@ -0,0 +1,6 @@ + array('isMobile' => true, 'isTablet' => true) + ) +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php new file mode 100644 index 00000000000..d4f6e6fd53e --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Lenovo.php @@ -0,0 +1,46 @@ + array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build/ThinkPadTablet_A400_03) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; en-US; IdeaTabA1000-G) U2/1.0.0 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.117 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.360' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H/S100) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.300' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build/JRO03R) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.300' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2.2 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; IdeaPadA10 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.1.2; Ideapad K1 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; IdeaPad A1 Build/GRK393; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.3; Lenovo B8080-H Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; hu-hu; Lenovo A3500-FL Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Lenovo A7600-F Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.4.2; Lenovo A5500-F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Lenovo A390 Linux/3.0.13 Android/4.4.2 Release/04.03.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php new file mode 100644 index 00000000000..4cd332fcdd2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Mi.php @@ -0,0 +1,22 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; HM NOTE 1W Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2SC Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; MI 1S Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.8; zh-cn; xiaomi2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.4 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; MI 2A Build/miui.es JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; MI 3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; MI 1S Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; MI 3W Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; HM 1SC Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; HM 1SW Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; HM NOTE 1W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; MI-ONE C1 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.4; en-us; MI 4W Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4; MI PAD Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php new file mode 100644 index 00000000000..e46edc0904b --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Microsoft.php @@ -0,0 +1,30 @@ + array( + // Surface tablet + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('IE' => '10.0', 'Windows NT' => '6.2', 'Trident' => '6.0') ), + // Ambiguos. + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)' => array('isMobile' => true, 'isTablet' => false), + // Ambiguos. + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => array('isMobile' => true, 'isTablet' => false), + // http://www.whatismybrowser.com/developers/unknown-user-agent-fragments + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; ARMBJS)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + + // Thanks to Jonathan Donzallaz! + // Firefox (nightly) in metro mode on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko/20130626 Firefox/25.0' => array('isMobile' => false, 'isTablet' => false), + // Firefox in desktop mode on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), + // IE10 in metro mode on Dell XPS 12 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), + // IE10 in desktop mode on Dell XPS 12 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MDDCJS)' => array('isMobile' => false, 'isTablet' => false), + // Opera on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130' => array('isMobile' => false, 'isTablet' => false), + // Chrome on Dell XPS 12 + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + // Google search app from Windows Store + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; MDDCJS; WebView/1.0)' => array('isMobile' => false, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php new file mode 100644 index 00000000000..d322660d1f3 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Motorola.php @@ -0,0 +1,52 @@ + array( + 'MOT-W510/08.11.05R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0 UP.Link/6.3.0.0.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build/MLS2GC_2.6.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build/4.5.1_57_DX8-51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build/4.5.1A-1_SUN-254_13) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build/4.5.2-51_DFL-50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build/4.5.2A-51_OLL-17.8) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build/V1.540) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.1; en-us; Xoom Build/HMJ25) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build/6.7.2-180_DHD-16_M4-31) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build/V2.27D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'XT687' ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build/6.7.2-180_SPU-19-TA-11.6) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT910 Build/9.8.2O-124_SPUL-17) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT915 Build/2_32A_2031) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2017) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT925 Build/9.8.2Q-50-XT925_VQLM-20) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT907 Build/9.8.1Q-66) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT901 Build/9.8.2Q-50_SLS-13) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; DROID BIONIC Build/9.8.2O-72_VZW-22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1022 Build/KXC20.82-14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.4; en-in; XT1022 Build/KXC21.5-40) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16'=> array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1025 Build/KXC20.82-13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1052 Build/KLA20.16-2.16.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; XT1052 Build/13.9.0Q2.X_83) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; XT1053 Build/13.9.0Q2.X_61) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; XT1053 Build/13.9.0Q2.X_55) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; XT1056 Build/13.9.0Q2.X-116-MX-17-6-2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1031 Build/KXB20.9-1.10-1.18-1.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; XT1032 Build/KXB21.14-L1.40) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; XT1032 Build/KLB20.9-1.10-1.24-1.1) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT1034 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; XT1034 Build/14.10.0Q3.X-84-16) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; XT1035 Build/14.10.0Q3.X-23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.3; XT1039 Build/KXB21.14-L1.31) AppleWebKit/537.36 (KHTML like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; XT919 Build/2_290_2002) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; XT920 Build/2_290_2014) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; XT920 Build/2_310_2014) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; XT905 Build/7.7.1Q_GCIRD-16) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; XT908 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT897 Build/7.7.1Q-6_SPR-ASANTI_LE-18) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.0.2; XT1032 Build/LXB22.46-28.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 5.1.1; Moto E Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; XT1021 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php new file mode 100644 index 00000000000..99cf9d9bb62 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Nokia.php @@ -0,0 +1,84 @@ + array( + 'Nokia200/2.0 (12.04) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2/1.0.0 UCBrowser/8.9.0.251 U2/1.0.0 Mobile UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Nokia6303iclassic/5.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' => array('isMobile' => true, 'isTablet' => false), + 'nokian73-1/UC Browser7.8.0.95/69/400 UNTRUSTED/1.0' => array('isMobile' => true, 'isTablet' => false), + 'Nokia2760/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Nokia3650/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' => array('isMobile' => true, 'isTablet' => false), + 'NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UC Browser7.8.0.95/27/352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2)/UC Browser8.5.0.183/28/444/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.7.0.218/28/352/UCWEB Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Series40; NokiaC3-00/08.63; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.33' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Series 60; Opera Mini/7.0.31380/28.2725; U; es) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Opera Mini' => '7.0.31380', 'Presto' => '2.8.119')), + 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaX7-00/022.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaE6-00/111.140.0058; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC6-01; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia700/111.020.0308; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaN8-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Symbian/3; Series60/5.3 Nokia701/111.030.0609; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.2.6 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120ci/7.02; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/7.10; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE66-1/510.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95-3/20.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/200.34.36; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/500.21.009; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/10.0.046; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/052.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-1/@version@; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/031.022; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/32.001; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/06.101; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/071.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/081.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.32 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00/061.005; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaX6-00/40.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gb' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/60.0.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC5-03/12.0.023; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5228/40.1.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5230/51.0.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.33 Mobile Safari/533.4 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5530c-2/32.0.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.9 3gpp-gba' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/21.0.045; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.4' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-4/30.0.004; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.28 3gpp-gba' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Symbian' => '9.4', 'Webkit' => '533.4', 'NokiaBrowser' => '7.3.1.28'), 'model' => 'NokiaN97-4' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 7 Mozart T8698)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; HD7 T9292)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; LG E-900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710; Vodafone)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800) UP.Link/5.1.2.6' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; SFR)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; T-Mobile)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800; vodafone)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 800c)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 920)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('IE' => '10.0', 'Windows Phone OS' => '8.0', 'Trident' => '6.0'), 'model' => 'Lumia 920' ), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; lumia800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 710)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800C)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 900)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Nokia)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; TITAN X310e)' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Windows Phone OS' => '7.5', 'Trident' => '5.0'), 'model' => 'TITAN X310e' ), + 'Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' => array('isMobile' => true, 'isTablet' => false), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php new file mode 100644 index 00000000000..3887f5d8018 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Onda.php @@ -0,0 +1,12 @@ + array( + 'Mozilla/5.0 (Linux; Android 4.2.2; V975i Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.108 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:37.0) Gecko/37.0 Firefox/37.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; V975m Core4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.3; fr-fr; V975m Core4 Build/JSS15J) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; V975m Core4 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; V812 Core4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ) + +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php new file mode 100644 index 00000000000..56d64079ca2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Others.php @@ -0,0 +1,531 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Ainol' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; Novo10 Hero Build/20121115) AppleWebKit/535.19 (KHTML like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + 'AllFine' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Amoi' => array( + 'Amoi 8512/R18.0 NF-Browser/3.3' => array('isMobile' => true, 'isTablet' => false, 'model' => '8512'), + ), + + 'Arnova' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; fr-fr; AN9G2I Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'AudioSonic' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + + 'Blaupunkt' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; Endeavour 800NG Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Broncho' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + + ), + + // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html + 'bq' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build/1.1.7 20121018-10:33) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build/1.1.10-1015 20121230-18:00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; Maxwell Lite Build/v1.0.0.ICS.maxwell.20120920) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build/1.0.0 20120913-10:39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; Aquaris E10 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Captiva' => array( + 'Opera/9.80 (X11; Linux zvav; U; de) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Casio' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build/C771M120) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'ChangJia' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + + ), + + + 'Celkon' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Celkon CT 910+ Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-in; CT-1 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'CELKON.C64/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A125 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-US; Celkon*A86 Build/Celkon_A86) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/8.7.0.315 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A.R 40 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001 + 'Coby' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build/FRF85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Concorde' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Cresta' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Cube' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Danew' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array( 'Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0' ), 'model' => 'Dslide 700' ) + + ), + + 'DanyTech' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + + + 'Digma' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; iDx10 3G Build/ICS.b02ref.20120331) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'DPS' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'ECS' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30')) + ), + + 'Eboda' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build/ICS.g12refM806A1YBD.20120925) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme X80 Dual Core Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme XL200IPS Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Evolio' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Evolio X7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ro-ro; ARIA_Mini_wifi Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Fly' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Fujitsu' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build/V21R48A) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'V21R48A', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0') ), + + ), + + 'FX2' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + // @ref: http://www.galapad.net/product.html + 'Galapad' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Webkit' => '534.30', 'Safari' => '4.0', 'Build' => 'JRO03C') ), + + ), + + 'GoClever' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build/MID) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'GU' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '534.30', 'Safari' => '4.0')), + + ), + + 'HCL' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build/HCL ME Tablet U1) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build/HCL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build/HCL ME Tablet X1) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + + + 'Hudl' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + + 'Iconbit' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; NT-3702M Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36 OPR/16.0.1212.65583' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'iJoy' => array('Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), + + 'Intenso' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build/JR003H) AppleWebKit/534.30 (KHTML, like Gecko)Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, 'version' => array( + 'Android' => '4.1.1.', 'Webkit' => '534.30', 'Safari' => '4.0' + ), + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; TAB1004 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'INQ' => array( + 'INQ1/R3.9.12 NF-Browser/3.5' => array('isMobile' => true, 'isTablet' => false, 'model' => 'INQ1'), + ), + + // @todo: Test this + 'Intex' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3; en-US; Cloud_X2 Build/MocorDroid4.0.1) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/9.2.0.419 Mobile' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Cloud Y2 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-in; Cloud X5 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + 'IRU' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'JXD' => array('Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Karbonn' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; ST10 Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Kobo' => array( + 'Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Kobo Touch)' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.0', 'Webkit' => '533.1', 'Safari' => '4.0') ), + ), + + 'Megafon' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; MT7A Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true), + ), + + 'MediaTek' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build/JRO03C) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30/4.05d.1002.m7' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Micromax' => array( + + 'Mozilla/5.0 (Linux; Android 4.1.1; Micromax A110 Build/JRO03C) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.22', 'Chrome' => '25.0.1364.169') ), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Webkit' => '534.30', 'Android' => '4.0', 'Build' => 'IMM76D', 'Safari' => '4.0') ), + + ), + + 'Modecom' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'MSI' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.5; el-gr; MSI Enjoy 10 Plus Build/1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + // @ref: https://www.nabitablet.com/ + 'Nabi' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'NEC' => array( + // @ref: http://www.n-keitai.com/n-08d/?from=mediasnet + // @ref: http://devlog.dcm-gate.com/2012/03/medias-tab-n-06duseragnet.html + // @ref: http://keitaiall.jp/N-08D.html aka MEDIAS TAB + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build/A5001911) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android AAA; BBB; N-06D Build/CCC) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'Nexo' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; pl-pl; NEXO 3G Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 ACHEETAHI/2100050074' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Nibiru' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-tw; Nibiru H1 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Nook' => array( + + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build/ERD79 1.4.3) Apple WebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2.1', 'Webkit' => '533.1', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build/ICS) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'ICS', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.0.4; BNTV600 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36 Hughes-PFB/CID5391275.AID1376709964' => array( 'isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76L', 'Webkit' => '537.36', 'Chrome' => '28.0.1500.94') ), + + ), + + 'Oneplus' => array( + 'Mozilla/5.0 (Linux; Android 4.3; A0001 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; xx-xx; A0001 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Odys' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build/ODYS XENO 10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ODYS-EVO Build/ODYS-EVO) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; Xelio 10 Pro Build/ODYS_Xelio) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; NEO_QUAD10 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.X; de-de; Xelio10Pro Build/ODYS_Xelio) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 2.3.1; en-us; ODYS-Xpress Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; XELIO7PHONETAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; XELIO10EXTREME Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; XELIO Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 Mobile UCBrowser/3.2.1.441' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; XELIOPT2 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; nl-nl; ODYS-NOON Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'OverMax' => array( + 'OV-SteelCore(B) Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build/ICS.g08refem611.20121010) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'YONESTablet' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + // @todo: Research http://www.pantech.com/ + 'Pantech' => array( + 'PANTECH-C790/JAUS08312009 Browser/Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build/GRI40) AppleWebKit/533.1 (KHTML like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array( + 'isMobile' => true, 'isTablet' => true), + ), + + 'Philips' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; Philips W336 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.45 Mobile Safari/537.36 OPR/15.0.1162.59192' => array('isMobile' => true, 'isTablet' => false), + 'Philips_T3500/V1 Linux/3.4.5 Android/4.2.2 Release/03.26.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.2;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Philips W3568 Build/Philips_W3568) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; Philips W832 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux;U;Android 4.2.2;es-us;Philips S388 Build/JDQ39) AppleWebkit/534.30 (HTML,like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; Philips W536 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux;U;Android 4.2.2;es-us;Philips S308 Build/JDQ39) AppleWebkit/534.30 (HTML,like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ru-ru; Philips-W8500 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru; Philips W8510 Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.9.457 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; ru-RU; Philips W3568 Build/Philips W3568) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; Philips S388 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.1; Build/PI3100.00.00.24) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.1; PI7100_93 Build/PI7100.C.00.00.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + ), + + 'PocketBook' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-ru; PocketBook A10 3G Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'PointOfView' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Praktica' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; TP750 3GGSM Build/IMM76I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true) + ), + + 'PROSCAN' => array( + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), + ), + + 'PyleAudio' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; PTBL92BC Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '537.36', 'Chrome' => '31.0.1650.59')), + + ), + + 'RockChip' => array( + 'Mozilla/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build/ECLAIR) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => true), + ), + + 'RossMoor' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + + ), + + // @ref: http://www.qmobile.com.pk/complete_range.php# + 'QMobile' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'simvalley' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Skk' => array('Mozilla/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build/F10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true)), + + 'Storex' => array( + 'Mozilla/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '537.36')), + "Mozilla/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03C', 'Webkit' => '537.36')), + "Mozilla/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'IML74K', 'Webkit' => '535.19')), + ), + + 'Teclast' => array( + 'Mozilla/5.0 (Linux; Android 4.4.2; P98 3G\xE5\x85\xAB\xE6\xA0\xB8(A3HY) Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'QQ\xe9\x9f\xb3\xe4\xb9\x90HD 4.0.1 (iPad; iPhone OS 8.0; zh_CN)' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0; xx-xx; A15(E6C2) Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; A10 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Teclast A10T Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; Teclast P85(A9D3) Build/IMM76D) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; A70H Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.0.435 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Tecno' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Telstra' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build/TVA301TELBG3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + ), + + // @info: http://www.texet.ru/tablet/ + 'texet' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build/GB.m1ref.20120116) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.3.4', 'Webkit' => '533.1', 'Safari' => '4.0'), 'model' => 'TM-7021' ), + ), + + 'Tolino' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build/JDQ39) AppleWebKit/534.30 (KHTML like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '534.30', 'Safari' => '4.0')), + 'Mozilla/5.0 (Linux; Android 4.2.2; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1290.67495' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build/JDQ39) AppleWebkit/537.36 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Toshiba' => array( + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; TOSHIBA; TSUNAGI)' => array('isMobile' => true, 'isTablet' => false), + // @ref: http://www.toshiba.co.uk/discontinued-products/folio-100/ + 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build/TOSHIBA_FOLIO_AND_A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '2.2', 'Webkit' => '533.1', 'Safari' => '4.0') ), + ), + + 'Trekstor' => array( + 'Mozilla/5.0 (Linux; Android 4.2.2; ST70408-1 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => 'JDQ39', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58')), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; engb; Build/IMM76D) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3 SurfTab_7.0' => array( + 'isMobile' => true, 'isTablet' => true, + ), + 'Mozilla/5.0 (Linux; Android 4.2.2; VT10416-2 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array( + 'isMobile' => true, 'isTablet' => true + ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30;SurfTab_10.1' => array( + 'isMobile' => true, 'isTablet' => true + ), + ), + + 'Ubislate' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; UBISLATE7C+ Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true) + ), + + 'Visture' => array( + + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build/LR-97JC) Apple WebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build/Visture V4 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build/Visture V5 HD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Versus' => array( + 'Mozilla/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 BMID/E67A45B1AB' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 TwonkyBeamBrowser/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build/meizhi_V2.80.wifi8723.20121225.b11c800)' => array('isMobile' => true, 'isTablet' => true), + 'OneBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.1', 'Build' => 'JRO03H', 'Webkit' => '534.30', 'Safari' => '4.0') ), + ), + + 'Viewsonic' => array( + 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' =>array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Vonino' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + ), + + 'Wolder' => array( + 'Mozilla/5.0 (Linux; Android 4.4; miTab LIVE Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; pt-pt; miTab FUNK Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), + + 'Wolfgang' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1; nl-nl; AT-AS45q2 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false) + ), + + 'Xoro' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build/PAD 9719QR) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; PAD720 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true) + ), + + 'ZTE' => array( + 'Mozilla/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30;' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build/tejosunhsine) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; V965W)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; Windows Phone - Internet 7; SFR)' => array('isMobile' => true, 'isTablet' => false), + ), + + 'Zync' => array( + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/444' => array('isMobile' => true, 'isTablet' => true) + ) + +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php new file mode 100644 index 00000000000..c86e3b192eb --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Prestigio.php @@ -0,0 +1,12 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.4', 'Build' => 'IMM76D', 'Webkit' => '534.30', 'Safari' => '4.0'), 'model' => 'PMP7100D3G' ), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobilSafari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT3017_WI Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT3037_3G Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; PMT5002_Wi Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; el-gr; PMT5887_3G Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + ), +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php new file mode 100644 index 00000000000..e7099c5efc2 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Samsung.php @@ -0,0 +1,131 @@ + array( + 'MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true, 'version' => array('MQQBrowser' => '4.0')), + 'SAMSUNG-SGH-P250-ORANGE/P250BVHH8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-B2710/B271MCXKF1 SHP/VPP/R5 Dolfin/2.0 QTV/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Dolfin' => '2.0') ), + 'SAMSUNG-SGH-D900i/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-S5233T/S5233TXEJE3 SHP/VPP/R5 Jasmine/0.8 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380FXXKL3; U; Bada/2.0; ru-ru) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build/CUPCAKE) AppleWebKit/528.5 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'SAMSUNG-GT-S3650/S3650XEII3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94/140/352' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XEKJ3; U; Bada/1.0; ru-ru) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530XXJKA; U; Bada/1.2; cs-cz) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + // @about FROYO: http://gizmodo.com/5543853/what-is-froyo + 'Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build/FROYO) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.261' => array('isMobile' => true, 'isTablet' => false, 'version' => array('MicroMessenger' => '4.5.1.261')), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE/I9001BVKPC Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build/HRI83) AppleWebkit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '16.0.912.75') ), + 'Mozilla/5.0 (Linux; Android 4.0.3; SGH-T989 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false, 'version' => array('Chrome' => '18.0.1025.166') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GT-I9300 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; SPH-D710 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE/I9300BVBLG2 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build/IMM76D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1/UCBrowser/8.4.1.204/145/355' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.4; GT-P5110 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD/1.0 Android/4.0.4 Release/07.15.2012 Browser/AppleWebKit534.30 Build/IMM76D) ApplelWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.30' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array('Android' => '4.0.4') ), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; GT-N7100 Build/JZO54K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22 OPR/14.0.1025.52315' => array( 'isMobile' => true, 'isTablet' => false, 'version' => array( 'Build' => 'JZO54K', 'Webkit' => '537.22', 'Opera' => '14.0.1025.52315' ) ), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.1; SGH-i747M Build/JRO03L) AppleWebKit/535.19(KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; GT-I8262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; GT-P5210 Build/JDQ39) AppleWebKit/537.36 (KHTML, Like Gecko) Chrome/27.0.1453.90 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T800 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; fr-fr; SAMSUNG SM-T800 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; CETUS)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus I917 By TC)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Focus i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; FOCUS S)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-i8700)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Hljchm\'s Wp)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; I917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7 By MWP_HS)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i677)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917.)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917R)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i937)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SMG-917R)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SUMSUNG; OMNIA 7)' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; SAMSUNG; GT-I8750) like Gecko' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; GT-I8750) like Gecko' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; en-gb; SAMSUNG GT-I9205 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SHV-E160K/VI10.1802 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 5.0.2; SM-T805 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.4; SM-T116NQ Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.92 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 5.0.2; SM-G9250 Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/35.0.0.48.273;]' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T705Y Build/KOT49H) AppleWebKit/537.36(KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; SM-T705 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.45 Safari/537.36' => array('isMobile' => true, 'isTablet' => true) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php new file mode 100644 index 00000000000..4155daf0496 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Sony.php @@ -0,0 +1,85 @@ + array( + 'SonyEricssonK800i/R1AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build/2.0.1.A.0.47) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build/2.1.1.A.0.6) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build/3.0.1.G.0.75) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build/6.0.B.3.184) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build/TID0092) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.0.3', 'Build' => 'TID0092', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0R0110) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build/TISU0143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build/4.1.B.0.587) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build/6.1.A.2.45) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; LT22i Build/6.1.B.0.544) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build/6.1.B.0.544) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.5.5) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; ST23i Build/11.0.A.2.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.0.4; LT28h Build/6.1.E.3.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build/TJDS0170) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build/10.1.E.0.265) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.1.2', 'Build' => '10.1.E.0.265', 'Webkit' => '534.30', 'Safari' => '4.0') ), + 'Mozilla/5.0 (Linux; Android 4.1.2; LT26w Build/6.2.B.1.96) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; SGP321 Build/10.3.1.A.0.33) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' => array('isMobile' => true, 'isTablet' => true, 'version' => array('Android' => '4.2.2', 'Build' => '10.3.1.A.0.33', 'Webkit' => '537.31', 'Chrome' => '26.0.1410.58') ), + 'Mozilla/5.0 (Linux; Android 4.3; C5303 Build/12.1.A.1.205) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build/10.1.1.A.1.273) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build/10.1.1.A.1.310) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build/14.1.M.0.202) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build/14.1.n.0.63) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build/12.0.B.5.37) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.1.2; M35c Build/12.0.B.2.42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build/12.0.C.2.42) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.3.2.349 U3/0.8.0 Mobile Safari/534.31' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6502 Build/17.1.A.2.69) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6503 Build/17.1.A.0.504) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D6543 Build/17.1.A.2.55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.0.29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build/20.0.A.1.12) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2105 Build/20.0.B.0.74) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build/20.0.B.0.85) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2302 Build/18.0.B.1.23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build/18.0.b.1.23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.6.3.413 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2303 Build/18.0.C.1.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2305 Build/18.0.A.1.30) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D2306 Build/18.0.C.1.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D5303 Build/19.0.1.A.0.207) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D5306 Build/19.1.A.0.264) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build/19.0.D.0.269) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.6.428 U3/0.8.0 Mobile Safari/533.1' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build/19.0.C.2.59) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; D5322 Build/19.0.D.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build/14.2.A.1.146) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.3; M51w Build/14.2.A.1.146) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5102 Build/18.2.A.0.9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5103 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.1; D5106 Build/18.1.A.0.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build/14.2.A.1.136) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 GSA/3.2.17.1009776.arm' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build/14.1.G.2.257) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; C6943 Build/14.3.A.0.681) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.2.2; SGP412 Build/14.1.B.3.320) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build/10.2.C.0.143) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.1.2; SGP351 Build/10.1.1.A.1.307) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.3; SGP341 Build/10.4.B.0.569) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP511 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP512 Build/17.1.A.2.36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build/10.1.C.0.344) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build/17.1.A.2.69) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build/17.1.A.2.36) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.4.2; SGP551 Build/17.1.A.2.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'SonyEricssonU5i/R2CA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), + 'SonyEricssonU5i/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; es-ve; SonyST21a2 Build/11.0.A.6.5) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.2; D2533 Build/19.2.A.0.391) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; Android 4.4.4; Xperia SP Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla / 5.0 (Linux; Android 5.0.2; SOT31 Build / 28.0.D.6.71) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 39.0.2171.93 Safari / 537.36' => array('isMobile' => true, 'isTablet' => true), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php new file mode 100644 index 00000000000..363aac9fcc1 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/SpecialCases.php @@ -0,0 +1,206 @@ + array( + 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; Avant Browser; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; Avant TriCore) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.1; rv:27.0; Avant TriCore) Gecko/20100101 Firefox/27.0' => array('isMobile' => false, 'isTablet' => false), + ), + 'Console' => array( + + //Nintendo Wii: + 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.12.14 NintendoBrowser/3.1.1.9577.EU' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/{Version No} NintendoBrowser/{Version No}.US' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7567.US' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US' => array('isMobile' => true, 'isTablet' => false), + //Sony PlayStation: + 'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)' => array('isMobile' => false, 'isTablet' => false), + //Microsoft Xbox: + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), + // WTF? Must investigate. + //'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' => array('isMobile' => false, 'isTablet' => false), + + ), + + 'Other' => array( + // Unknown + 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SV1; [eburo v4.0]; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)' => array('isMobile' => false, 'isTablet' => false), + + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + + // @todo 3Q - http://3q-int.com/en/download/tablets7/ + //'Mozilla/5.0 (Linux; U; Android 4.0.4; it-it; MT0729B Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; uk-us; RC9716B Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + // Sogou Explorer (Browser) + //'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 SE 2.X MetaSr 1.0' => null, + //'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; SV1; SE 2.x)' => null, + + 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Iron/37.0.2000.0 Chrome/37.0.2000.0 Safari/537.36' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Iron' => '37.0.2000.0')), + // Liebao Browser + //'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER', + 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.102 Chrome/32.0.1700.102 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 AlexaToolbar/psPCtGhf-2.2' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Linux ppc; rv:17.0) Gecko/20130626 Firefox/17.0 Iceweasel/17.0.7' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; Linux) AppleWebKit/535.22+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.20+ Midori/0.4' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 5.2; WOW64) Presto/2.12.388 Version/12.14' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko/20100101 Firefox/14.0.1' => array('isMobile' => false, 'isTablet' => false), + // @todo Inspect https://gist.githubusercontent.com/pongacm/b7775bebf2b26c09e1f8/raw/0aff83747959386663f3a5c68d7f7150764a8e2d/Varnish%20-%20Tablet%20PC%20(TAB) + // https://github.com/varnish/varnish-devicedetect/issues/19 + 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MANMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch; MASMJS)' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto/2.12.388 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + // IE 10 + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' => array('isMobile' => false, 'isTablet' => false), + // IE 11 @todo: Trident(.*)rv.(\d+)\.(\d+) + 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' => array('isMobile' => false, 'isTablet' => false), + + // TV + 'Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)' => array('isMobile' => false, 'isTablet' => false), + 'HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11' => array('isMobile' => false, 'isTablet' => false), + ), + + 'TV' => array( + //'Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70' => null + ), + + 'Generic' => array( + + 'Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 like Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + + // Generic Firefox User-agents + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference#Firefox_OS + 'Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0' => array('isMobile' => true, 'isTablet' => true), + + // Facebook WebView + //'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 [FBAN/FBIOS;FBAV/12.1.0.24.20;FBBV/3214247;FBDV/iPhone6,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/7.1.1;FBSS/2; FBCR/AT&T;FBID/phone;FBLC/en_US;FBOP/5]' => null, + + // Outlook + //'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; IM-2014-026; IM-2014-043; Microsoft Outlook 14.0.7113; ms-office; MSOffice 14)' => null, + + // Carrefour tablet + 'Mozilla/5.0 (Linux; Android 4.2.2; CT1020W Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + // @comment: Pipo m6pro tablet + 'Mozilla/5.0 (Linux; Android 4.2.2; M6pro Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + + // https://github.com/varnish/varnish-devicedetect/issues/17 + // To be researched. + 'MobileSafari/9537.53 CFNetwork/672.1.13 Darwin/13.1.0' => array('isMobile' => true, 'isTablet' => false), + 'Appcelerator Titanium/3.2.2.GA (iPod touch/6.1.6; iPhone OS; en_US;)' => array('isMobile' => true, 'isTablet' => false), + + 'Opera Coast/3.0.3.78307 CFNetwork/672.1.15 Darwin/14.0.0' => array('isMobile' => true, 'isTablet' => false), + + 'Mozilla/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + + 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Java/1.6.0_22' => array('isMobile' => false, 'isTablet' => false, 'version' => array('Java' => '1.6.0_22') ), + 'Opera/9.80 (Series 60; Opera Mini/6.5.29260/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android; Opera Mini/6.5.27452/29.3417; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (iPhone; Opera Mini/7.1.32694/27.1407; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + // New Opera + 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17 OPR/14.0.1025.52315' => array('isMobile' => false, 'isTablet' => false), + // Unknown yet + // Looks like Chromebook + //'Mozilla/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.103 Safari/537.36' => null, + 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/46154) Presto/2.11.355 Version/12.10' => array('isMobile' => true, 'isTablet' => false), + //'Mozilla/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build/IMM76L; CyanogenMod-9) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + //'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, // Acer Iconia Tab + 'Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25' => array('isMobile' => true, 'isTablet' => true), + //'Mozilla/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, + //'Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mercury/7.2 Mobile/10A523 Safari/8536.25' => null, // Mercurio Browser + //'Opera/9.80 (Android 2.3.7; Linux; Opera Tablet/46154) Presto/2.11.355 Version/12.10' => null, + 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => false), // sdk + 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), // sdk + + //'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => null, // 7" Verso Android tablet + //'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build/TID0142) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, // sony xperia tablet s unforts + //'Mozilla/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' => null, // PocketBook IQ701 (tablet) + //'Mozilla/5.0 (Linux; Android 4.0.4; z1000 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => null, // It is a tablet with calling + //'Mozilla/5.0 (Linux; Android 4.0.3; cm_tenderloin Build/GWK74) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => null, // HP touch pad running android cyanogenmod + //'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, // My device is tablet but its detected as phone + //'BlackBerry8520/5.0.0.592 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/136' => null, + //'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17' => null, // its a lenovo tablet 2 with windows 8 pro + //'Mozilla/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => null, + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)' => null, + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // MS Surface RT tablet actually! + //'Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)' => null, + //'Mozilla/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => null, // Wrong detection - 7-inch tablet was detected as a phone. Android 3.2.1, native browser + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // Nope, its a Microsoft Surface tablet running Windows RT (8) with MSIE 10 + //'Mozilla/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => null, // Tablet! + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // its a Microsoft surface rt (tablet) + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch; WebView/1.0)' => null, + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => null, // Nextbook 7SE Tablet + //'Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10' => null, // allview alldro speed tablet, android ics, opera mobile + //'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)' => null, // Its a surface in portrait + // Am ramas la pozitia: 207 + + // Android on Windows :) www.socketeq.com + //'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => null, + + // TV + //'Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC/BEL; en) Presto/2.7.61 Version/11.00' => null, + + 'Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0' => array('isMobile' => true, 'isTablet' => false), + // Maxthon + 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/18.0.966.0 Safari/535.12' => array('isMobile' => false, 'isTablet' => false), + 'Opera/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02' => array('isMobile' => false, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; sdk Build/JB_MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)' => array('isMobile' => true, 'isTablet' => false), + 'PalmCentro/v0001 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D061; Blazer/4.5) 16;320x320' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)' => array('isMobile' => true, 'isTablet' => false), + // ZTE phone + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880E; China Telecom)' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Series 60; Opera Mini/7.0.29482/28.2859; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (S60; SymbOS; Opera Mobi/SYB-1202242143; U; en-GB) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Opera/9.80 (Android; Opera Mini/7.0.29952/28.2647; U; ru) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android; Opera Mini/6.1.25375/28.2555; U; en) Presto/2.8.119 Version/11.10' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Mac OS X; Opera Tablet/35779; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:10.0.4) Gecko/10.0.4 Firefox/10.0.4 Fennec/10.0.4' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Android; Tablet; rv:18.0) Gecko/18.0 Firefox/18.0' => array('isMobile' => true, 'isTablet' => true), + 'Opera/9.80 (Linux armv7l; Maemo; Opera Mobi/14; U; en) Presto/2.9.201 Version/11.50' => array('isMobile' => true, 'isTablet' => false), + 'Opera/9.80 (Android 2.2.1; Linux; Opera Mobi/ADR-1207201819; U; en) Presto/2.10.254 Version/12.00' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build/JRO03E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' => array('isMobile' => true, 'isTablet' => false), + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build/ONDA_MID) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), // Blaupunkt Endeavour 1010 + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build/ICS.g08refem618.20121102) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + // Tagi tablets + 'Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; Tagi Tab S10 Build/8089) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), + + 'Bot' => array( + 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Googlebot-Image/1.0' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Python-urllib/2.5' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'AdsBot-Google (+http://www.google.com/adsbot.html)' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari' => array('isMobile' => true, 'isTablet' => false, /*'isBot' => true*/), + 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko, Google Keyword Suggestion) Chrome/10.0.648.127 Safari/534.16' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/), + 'Facebot' => array('isMobile' => false, 'isTablet' => false, /*'isBot' => true*/) + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php new file mode 100644 index 00000000000..2074a041de0 --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/Vodafone.php @@ -0,0 +1,11 @@ + array( + 'Mozilla/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; Android 4.0.3; SmartTabII10 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array('isMobile' => true, 'isTablet' => true), + 'Mozilla/5.0 (Linux; U; Android 4.0.4; de-de, SmartTabII7 Build/A2107A_A404_107_055_130124_VODA) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' => array( + 'isMobile' => true, 'isTablet' => true, + ), + ), +); diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php new file mode 100644 index 00000000000..4f29b7a633b --- /dev/null +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/providers/vendors/ZTE.php @@ -0,0 +1,6 @@ + array( + 'Mozilla/5.0 (Linux; Android 4.0.4; V8200plus Build/IMM76I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' => array('isMobile' => true, 'isTablet' => false) + ) +); \ No newline at end of file diff --git a/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json b/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json index c8b6db5b3ee..165832d6e6f 100644 --- a/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json +++ b/htdocs/includes/mobiledetect/mobiledetectlib/tests/ualist.json @@ -1 +1,8196 @@ -{"hash":"0f2ce8fdb263e38dc366cecd67ec5ac87ad4c637","user_agents":[{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build\/HTK55D) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; A110 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0","Build":"IML74K"},"model":"A200"},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; A701 Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-710 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A1-810 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)","mobile":true,"tablet":false},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A3-A10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.36","Chrome":"32.0.1700.99"}},{"vendor":"Acer","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; A1-830 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"AdvanDigital","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"AdvanDigital","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Novo10 Hero Build\/20121115) AppleWebKit\/535.19 (KHTML like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Ainol","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"AllFine","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true,"version":{"Android":"3.2.1","Webkit":"534.13","Safari":"4.0"},"model":"Transformer TF101"},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03L","Webkit":"534.30","Safari":"4.0"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; ME301T Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.1","Build":"JOP40D"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; ME173X Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.2.1","Build":"JOP40D"}},{"vendor":"ASUS","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; TF300T Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39E"}},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false,"version":{"Android":"2.3.5","Webkit":"533.1","Safari":"4.0","Build":"GRJ90"},"model":"ONE TOUCH 918D"},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false,"version":{"Android":"2.3.6","Webkit":"533.1","Safari":"4.0","Build":"GRJ90"},"model":"ONE TOUCH 991"},{"vendor":"Alcatel","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build\/ICECREAM) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4","Webkit":"534.30","Safari":"4.0","Build":"ICECREAM"},"model":"ONE TOUCH 993D"},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.5.3.246\/145\/355","mobile":true,"tablet":true},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Allview","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.4 Mobile Safari\/535.19 Silk-Accelerated=true","mobile":true,"tablet":true},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; en-US) AppleWebKit\/528.5+ (KHTML, like Gecko, Safari\/528.5+) Version\/4.0 Kindle\/3.0 (screen 600x800; rotate)","mobile":true,"tablet":true,"version":{"Webkit":"528.5+","Kindle":"3.0","Safari":"4.0"},"model":"Kindle"},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Amazon","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Apple","user_agent":"iTunes\/9.1.1","mobile":false,"tablet":false},{"vendor":"Apple","user_agent":"iTunes\/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit\/536.27.1","mobile":false,"tablet":false},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A4449d Safari\/9537.53","mobile":true,"tablet":false},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit\/420+ (KHTML, like Gecko) Version\/3.0 Mobile\/1A543 Safari\/419.3","mobile":true,"tablet":false,"version":{"Webkit":"420+","Safari":"3.0"}},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit\/528.18 (KHTML, like Gecko) Version\/4.0 Mobile\/7A341 Safari\/528.16","mobile":true,"tablet":false,"version":{"iOS":"3_0","Webkit":"528.18","Safari":"4.0"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9B206 Safari\/7534.48.3","mobile":true,"tablet":false,"version":{"iOS":"5_1_1","Webkit":"534.46","Mobile":"9B206","Safari":"5.1"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_0","Webkit":"536.26","Mobile":"10A403","Safari":"6.0"},"model":"iPod"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.80 Mobile\/9B206 Safari\/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)","mobile":true,"tablet":true,"version":{"iOS":"5_1_1","Webkit":"534.46.0","Chrome":"21.0.1180.80","Mobile":"9B206"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25","mobile":true,"tablet":true,"version":{"iOS":"6_0","Webkit":"536.26","Safari":"6.0","Mobile":"10A403"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8C148 Safari\/6533.18.5","mobile":true,"tablet":true,"version":{"iOS":"4_2_1","Webkit":"533.17.9","Safari":"5.0.2","Mobile":"8C148"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit\/531.21.10 (KHTML, like Gecko) Version\/4.0.4 Mobile\/7B334b Safari\/531.21.10","mobile":true,"tablet":true,"version":{"iOS":"3_2","Webkit":"531.21.10","Safari":"4.0.4","Mobile":"7B334b"},"model":"iPad"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.82 Mobile\/10A523 Safari\/7534.48.3","mobile":true,"tablet":false,"version":{"iOS":"6_0_1","Webkit":"534.46.0","Chrome":"21.0.1180.82","Mobile":"10A523"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A523 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_0_1","Webkit":"536.26","Safari":"6.0","Mobile":"10A523"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit\/536.26 (KHTML, like Gecko) CriOS\/23.0.1271.100 Mobile\/10B142 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_1","Webkit":"536.26","Chrome":"23.0.1271.100","Mobile":"10B142"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B329 Safari\/8536.25","mobile":true,"tablet":false,"version":{"iOS":"6_1_3","Webkit":"536.26","Safari":"6.0","Mobile":"10B329"},"model":"iPhone"},{"vendor":"Apple","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Coast\/1.0.2.62956 Mobile\/10B329 Safari\/7534.48.3","mobile":true,"tablet":true,"version":{"Coast":"1.0.2.62956"}},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Qilive 97R Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Archos","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"AudioSonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+","mobile":true,"tablet":false,"version":{"Webkit":"534.8+","BlackBerry":"6.0.0.546"},"model":"BlackBerry 9300"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.400 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.723 Mobile Safari\/534.8+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.448 Mobile Safari\/534.8","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.714 Mobile Safari\/534.11+","mobile":true,"tablet":false,"version":{"Webkit":"534.11+","BlackBerry":"7.1.0.714"},"model":"BlackBerry 9790"},{"vendor":"BlackBerry","user_agent":"Opera\/9.80 (BlackBerry; Opera Mini\/7.0.29990\/28.2504; U; en) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.342 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.480 Mobile Safari\/534.8","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.0.0.583 Mobile Safari\/534.11","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.576 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.1.0.523 Mobile Safari\/534.11","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.1067 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/603","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"BlackBerry8520\/5.0.0.1036 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/611","mobile":true,"tablet":false,"version":{"BlackBerry":"5.0.0.1036","VendorID":"611"},"model":"BlackBerry8520"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.337 Mobile Safari\/534.11+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit\/536.2+ (KHTML, like Gecko) Version\/7.2.1.0 Safari\/536.2+","mobile":true,"tablet":true},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.1+ (KHTML, like Gecko) Version\/10.0.0.1337 Mobile Safari\/537.1+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+","mobile":true,"tablet":false},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (BB10; Touch) \/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+","mobile":true,"tablet":false,"version":{"BlackBerry":"10.0.9.2372"}},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true,"version":{"Android":"3.2.1","Webkit":"534.13","Safari":"4.0"},"model":"Transformer TF101"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A200"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A500"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Webkit":"534.30","Safari":"4.0"},"model":"A501"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"Transformer"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"Transformer Pad TF300T"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Webkit":"534.30","Safari":"4.0","Build":"JZO54K"},"model":"Transformer"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Webkit":"535.19","Chrome":"18.0.1025.166"},"model":"B1-A71"},{"vendor":"BlackBerry","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)","mobile":true,"tablet":false,"version":{"Windows Phone OS":"7.5","Trident":"5.0","IE":"9.0"},"model":"Allegro"},{"vendor":"Broncho","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build\/1.1.7 20121018-10:33) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build\/1.1.10-1015 20121230-18:00) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; Maxwell Lite Build\/v1.0.0.ICS.maxwell.20120920) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"bq","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build\/1.0.0 20120913-10:39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Captiva","user_agent":"Opera\/9.80 (X11; Linux zvav; U; de) Presto\/2.8.119 Version\/11.10 Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Casio","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build\/C771M120) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"ChangJia","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ChangJia","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build\/FRF85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Coby","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Concorde","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Concorde","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Cresta","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Cube","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Danew","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"},"model":"Dslide 700"},{"vendor":"DanyTech","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build\/Donut AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/ 525.20.1","mobile":true,"tablet":false},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Dell","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; DELL; Venue Pro)","mobile":true,"tablet":false},{"vendor":"DPS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"ECS","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30"}},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build\/ICS.g12refM806A1YBD.20120925) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Eboda","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Fly","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Fly","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Fujitsu","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build\/V21R48A) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"V21R48A","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Fujitsu","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"FX2","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Galapad","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Webkit":"534.30","Safari":"4.0","Build":"JRO03C"}},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"GoClever","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build\/MID) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.40 Mobile Safari\/537.31 OPR\/14.0.1074.54070","mobile":true,"tablet":false,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.31","Opera":"14.0.1074.54070"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31","mobile":true,"tablet":false,"version":{"Android":"4.2.2","Chrome":"26.0.1410.58"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Nexus 7 Build\/JRO03D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.2; Nexus 7 Build\/JOP40C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Nexus 7 Build\/JZ054K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Chrome":"18.0.1025.166"}},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build\/JZO54K; CyanogenMod-10.0.0) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Google","user_agent":"Mozilla\/5.0 (Linux; U; Android; en_us; Nexus 7 Build\/) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 NetFrontLifeBrowser\/2.3 Mobile (Dragonfruit)","mobile":true,"tablet":true},{"vendor":"GU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30","Safari":"4.0"}},{"vendor":"GU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"534.30","Safari":"4.0"}},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build\/HCL) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"HCL","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build\/HCL ME Tablet X1) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (hp-tablet; Linux; hpwOS\/3.0.5; U; en-GB) AppleWebKit\/534.6 (KHTML, like Gecko) wOSBrowser\/234.83 Safari\/534.6 TouchPad\/1.0","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HP Slate 7 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"HP","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build\/1.0.7_WW-FIR-13) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit\/534.24 (KHTML, like Gecko) Chrome\/11.0.696.34 Safari\/534.24","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"HTC_Touch_HD_T8282 Mozilla\/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build\/CUPCAKE) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build\/FRF91) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180\/1.0 Android\/2.2 release\/06.23.2010 Browser\/WAP 2.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; HTC\/DesireS\/1.07.163.1 Build\/GRH78C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC\/DesireS\/2.10.161.3 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build\/GRI40; ILWT-CM7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U\/1.05.161.1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; PG86100 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build\/MIUI) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; Desire HD Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; HTC Butterfly Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; EVO Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; HTCSensation Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC 7 Mozart T8698; QSD8x50)","mobile":true,"tablet":false,"version":{"IE":"9.0","Windows Phone OS":"7.5","Trident":"5.0"},"model":"7 Mozart T8698"},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 HTC MOZART)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mondrian T8788)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart T8698)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart; Orange)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro T7576)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Schubert T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Surround)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy T8686)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Eternity)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Gold)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2 LEO)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7 T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; iPad 3)","mobile":true,"tablet":true},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; LEO)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mazaa)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mondrian)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart T8698)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; mwp6985)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40200)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PD67100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI39100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI86100)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar 4G)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 1.08.164.02)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.164.01)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.168.02)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar; Orange)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schuber)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert T9292)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Spark)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Surround)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T7575)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8697)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8788)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9295)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9296)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; TITAN X310e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Titan)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Torphy T8686)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; X310e)","mobile":true,"tablet":false},{"vendor":"HTC","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC_blocked; T8788)","mobile":true,"tablet":false,"version":{"IE":"9.0","Windows Phone OS":"7.5","Trident":"5.0"},"model":"T8788"},{"vendor":"Hudl","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build\/HuaweiU8660) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build\/HuaweiU8850) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"HUAWEI_T8951_TD\/1.0 Android\/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release\/05.31.2012 Browser\/WAP2.0 (AppleWebKit\/534.30) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build\/HuaweiMediaPad) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815\/C8815V100R001C541B135; 540*960; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D\/C8813DV100R001C92B172; 480*854; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Huwaei","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C\/Y300CV100R001C92B168; 480*800; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Iconbit","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; NT-3702M Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36 OPR\/16.0.1212.65583","mobile":true,"tablet":true},{"vendor":"Iconbit","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"iJoy","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Intenso","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build\/JR003H) AppleWebKit\/534.30 (KHTML, like Gecko)Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1.","Webkit":"534.30","Safari":"4.0"}},{"vendor":"IRU","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"JXD","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Karbonn","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; ST10 Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Kobo","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 (Kobo Touch)","mobile":true,"tablet":true,"version":{"Android":"2.0","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build\/ThinkPadTablet_A400_03) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IdeaTabA1000-G) U2\/1.0.0 UCBrowser\/9.2.0.419 Mobile","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.117 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.360","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H\/S100) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.300","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.300","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Lenovo","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build\/IML74K) AppleWebkit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v\/V10f Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; LG-F180K Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; LG-V500 Build\/JDQ39B) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; LG-V510 Build\/KOT49H.L004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG E-900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900k)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900; Orange)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900h)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-Optimus 7)","mobile":true,"tablet":false},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build\/HRI66) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"LG","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Megafon","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Megafon","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; MT7A Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true},{"vendor":"MediaTek","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30\/4.05d.1002.m7","mobile":true,"tablet":true},{"vendor":"Micromax","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; Micromax A110 Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22","mobile":true,"tablet":false,"version":{"Android":"4.1.1","Build":"JRO03C","Webkit":"537.22","Chrome":"25.0.1364.169"}},{"vendor":"Micromax","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Webkit":"534.30","Android":"4.0","Build":"IMM76D","Safari":"4.0"}},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)","mobile":true,"tablet":true,"version":{"IE":"10.0","Windows NT":"6.2","Trident":"6.0"}},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; ARMBJS)","mobile":true,"tablet":true},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MASMJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko\/20130626 Firefox\/25.0","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko\/20100101 Firefox\/22.0","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MDDCJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MDDCJS)","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.52 Safari\/537.36 OPR\/15.0.1147.130","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.116 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Microsoft","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MDDCJS; WebView\/1.0)","mobile":false,"tablet":false},{"vendor":"Modecom","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"MOT-W510\/08.11.05R MIB\/BER2.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 EGE\/1.0 UP.Link\/6.3.0.0.0","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build\/MLS2GC_2.6.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build\/4.5.1_57_DX8-51) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build\/4.5.1A-1_SUN-254_13) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build\/4.5.2-51_DFL-50) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build\/4.5.2A-51_OLL-17.8) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build\/V1.540) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build\/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0; en-us; Xoom Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.1; en-us; Xoom Build\/HMJ25) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build\/6.7.2-180_DHD-16_M4-31) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build\/V2.27D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4","Webkit":"534.30","Safari":"4.0"},"model":"XT687"},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build\/6.7.2-180_SPU-19-TA-11.6) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT910 Build\/9.8.2O-124_SPUL-17) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT915 Build\/2_32A_2031) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2017) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT925 Build\/9.8.2Q-50-XT925_VQLM-20) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT907 Build\/9.8.1Q-66) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; XT901 Build\/9.8.2Q-50_SLS-13) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Motorola","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; DROID BIONIC Build\/9.8.2O-72_VZW-22) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Nabi","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"NEC","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build\/A5001911) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"NEC","user_agent":"Mozilla\/5.0 (Linux; U; Android AAA; BBB; N-06D Build\/CCC) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build\/ERD79 1.4.3) Apple WebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.2.1","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build\/ICS) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"ICS","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Nook","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; BNTV600 Build\/IMM76L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36 Hughes-PFB\/CID5391275.AID1376709964","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76L","Webkit":"537.36","Chrome":"28.0.1500.94"}},{"vendor":"Nokia","user_agent":"Nokia200\/2.0 (12.04) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 UCWEB\/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2\/1.0.0 UCBrowser\/8.9.0.251 U2\/1.0.0 Mobile UNTRUSTED\/1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia6303iclassic\/5.0 (06.61) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 Mozilla\/5.0 AppleWebKit\/420+ (KHTML, like Gecko) Safari\/420+","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"nokian73-1\/UC Browser7.8.0.95\/69\/400 UNTRUSTED\/1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia2760\/2.0 (06.82) Profile\/MIDP-2.1 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Nokia3650\/1.0 SymbianOS\/6.1 Series60\/1.2 Profile\/MIDP-1.0 Configuration\/CLDC-1.0","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"NokiaN70-1\/5.0737.3.0.1 Series60\/2.8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1\/UC Browser7.8.0.95\/27\/352","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.6.0.199\/28\/444\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2)\/UC Browser8.5.0.183\/28\/444\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.7.0.218\/28\/352\/UCWEB Mobile","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Series40; NokiaC3-00\/08.63; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) Gecko\/20100401 S40OviBrowser\/2.2.0.0.33","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/7.0.31380\/28.2725; U; es) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false,"version":{"Opera Mini":"7.0.31380","Presto":"2.8.119"}},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaC7-00\/025.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaX7-00\/022.014; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaE6-00\/111.140.0058; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.020.0308; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.1.14 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaN8-00\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia701\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/3.83; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120ci\/7.02; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/7.10; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE66-1\/510.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE71-1\/110.07.127; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN95-3\/20.2.011 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE51-1\/200.34.36; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE63-1\/500.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN82\/10.0.046; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/052.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/@version@; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/031.022; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.3.1","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 NokiaN79-1\/32.001; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 Nokia6220c-1\/06.101; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/071.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE72-1\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/061.005; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaX6-00\/40.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gb","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5800d-1\/60.0.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaC5-03\/12.0.023; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5228\/40.1.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.7.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5230\/51.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5530c-2\/32.0.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-1\/21.0.045; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) BrowserNG\/7.1.4","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-4\/30.0.004; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.28 3gpp-gba","mobile":true,"tablet":false,"version":{"Symbian":"9.4","Webkit":"533.4","NokiaBrowser":"7.3.1.28"},"model":"NokiaN97-4"},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 7 Mozart T8698)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; HD7 T9292)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; LG E-900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 610)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; T-Mobile)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Vodafone)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800) UP.Link\/5.1.2.6","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; Orange)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; SFR)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; T-Mobile)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; vodafone)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 800c)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 920)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; NOKIA; Lumia 920)","mobile":true,"tablet":false,"version":{"IE":"10.0","Windows Phone OS":"8.0","Trident":"6.0"},"model":"Lumia 920"},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; lumia800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 610)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 710)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800C)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 900)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Nokia)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Nokia","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; TITAN X310e)","mobile":true,"tablet":false,"version":{"Windows Phone OS":"7.5","Trident":"5.0"},"model":"TITAN X310e"},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build\/ODYS XENO 10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Odys","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build\/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"OverMax","user_agent":"OV-SteelCore(B) Mozilla\/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3","mobile":true,"tablet":true},{"vendor":"OverMax","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build\/ICS.g08refem611.20121010) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"YONESTablet","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Pantech","user_agent":"PANTECH-C790\/JAUS08312009 Browser\/Obigo\/Q05A Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build\/GRI40) AppleWebKit\/533.1 (KHTML like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Pantech","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Philips","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"PointOfView","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"534.30","Safari":"4.0"},"model":"PMP7100D3G"},{"vendor":"Prestigio","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30","mobile":true,"tablet":true},{"vendor":"PROSCAN","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"534.30","Safari":"4.0"}},{"vendor":"PyleAudio","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; PTBL92BC Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.0.4","Build":"IMM76D","Webkit":"537.36","Chrome":"31.0.1650.59"}},{"vendor":"RockChip","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"RockChip","user_agent":"Mozilla\/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build\/ECLAIR) AppleWebKit\/530.17 (KHTML like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":true},{"vendor":"RossMoor","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"QMobile","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"MQQBrowser\/4.0\/Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"MQQBrowser":"4.0"}},{"vendor":"Samsung","user_agent":"SAMSUNG-SGH-P250-ORANGE\/P250BVHH8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-B2710\/B271MCXKF1 SHP\/VPP\/R5 Dolfin\/2.0 QTV\/5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B","mobile":true,"tablet":false,"version":{"Dolfin":"2.0"}},{"vendor":"Samsung","user_agent":"SAMSUNG-SGH-D900i\/1.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-S5233T\/S5233TXEJE3 SHP\/VPP\/R5 Jasmine\/0.8 Qtv5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5380D\/S5380FXXKL3; U; Bada\/2.0; ru-ru) AppleWebKit\/534.20 (KHTML, like Gecko) Dolfin\/3.0 Mobile HVGA SMM-MMS\/1.2.0 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-C3312\/1.0 NetFront\/4.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build\/CUPCAKE) AppleWebKit\/528.5 (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"SAMSUNG-GT-S3650\/S3650XEII3 SHP\/VPP\/R5 Jasmine\/1.0 Nextreaming SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94\/140\/352","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5250\/S5250XEKJ3; U; Bada\/1.0; ru-ru) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.0 Mobile WQVGA SMM-MMS\/1.2.0 NexPlayer\/3.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident\/3.1; IEMobile\/7.0; SAMSUNG; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S8530\/S8530XXJKA; U; Bada\/1.2; cs-cz) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.2 Mobile WVGA SMM-MMS\/1.2.0 OPN-B","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build\/FROYO) UC AppleWebKit\/534.31 (KHTML, like Gecko) Mobile Safari\/534.31","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MicroMessenger\/4.5.1.261","mobile":true,"tablet":false,"version":{"MicroMessenger":"4.5.1.261"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE\/I9001BVKPC Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build\/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build\/HRI83) AppleWebkit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build\/IML74K) AppleWebKit\/535.7 (KHTML, like Gecko) CrMo\/16.0.912.75 Mobile Safari\/535.7","mobile":true,"tablet":false,"version":{"Chrome":"16.0.912.75"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; SGH-T989 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false,"version":{"Chrome":"18.0.1025.166"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GT-I9300 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; SPH-D710 Build\/IMM76I) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE\/I9300BVBLG2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/355","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; GT-P5110 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD\/1.0 Android\/4.0.4 Release\/07.15.2012 Browser\/AppleWebKit534.30 Build\/IMM76D) ApplelWebkit\/534.30 (KHTML,like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false,"version":{"Android":"4.0.4"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; GT-N7100 Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22 OPR\/14.0.1025.52315","mobile":true,"tablet":false,"version":{"Build":"JZO54K","Webkit":"537.22","Opera":"14.0.1025.52315"}},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; SGH-i747M Build\/JRO03L) AppleWebKit\/535.19(KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; GT-I8262 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; GT-P5210 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/27.0.1453.90 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; CETUS)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus I917 By TC)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; FOCUS S)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-I8350)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-i8700)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-S7530)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Hljchm's Wp)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; I917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA 7)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7 By MWP_HS)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i677)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917.)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917R)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i937)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SMG-917R)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)","mobile":true,"tablet":false},{"vendor":"Samsung","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SUMSUNG; OMNIA 7)","mobile":true,"tablet":false},{"vendor":"simvalley","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"SonyEricssonK800i\/R1AA Browser\/NetFront\/3.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build\/2.0.1.A.0.47) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build\/2.1.1.A.0.6) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build\/3.0.1.G.0.75) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build\/TID0092) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"TID0092","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; LT18i Build\/4.1.A.0.562) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; Sony Tablet S Build\/TISU0R0110) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build\/TISU0143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build\/6.1.A.2.45) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; LT22i Build\/6.1.B.0.544) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build\/6.1.B.0.544) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.5.5) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.2.10) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; LT28h Build\/6.1.E.3.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build\/TJDS0170) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build\/10.1.E.0.265) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.2","Build":"10.1.E.0.265","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; LT26w Build\/6.2.B.1.96) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; SGP321 Build\/10.3.1.A.0.33) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"10.3.1.A.0.33","Webkit":"537.31","Chrome":"26.0.1410.58"}},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build\/10.1.1.A.1.273) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build\/10.1.1.A.1.310) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build\/14.1.M.0.202) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build\/14.1.n.0.63) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build\/12.0.B.5.37) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; M35c Build\/12.0.B.2.42) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build\/12.0.C.2.42) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.2.349 U3\/0.8.0 Mobile Safari\/534.31","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6502 Build\/17.1.A.2.69) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6503 Build\/17.1.A.0.504) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D6543 Build\/17.1.A.2.55) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2004 Build\/20.0.A.0.29) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build\/20.0.A.1.12) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2104 Build\/20.0.B.0.84) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2105 Build\/20.0.B.0.74) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build\/20.0.B.0.85) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2302 Build\/18.0.B.1.23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build\/18.0.b.1.23) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.6.3.413 U3\/0.8.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2303 Build\/18.0.C.1.13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2305 Build\/18.0.A.1.30) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D2306 Build\/18.0.C.1.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D5303 Build\/19.0.1.A.0.207) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; D5306 Build\/19.1.A.0.264) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build\/19.0.D.0.269) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.6.428 U3\/0.8.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build\/19.0.C.2.59) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; D5322 Build\/19.0.D.0.253) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.131","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build\/14.2.A.1.146) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; M51w Build\/14.2.A.1.146) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5102 Build\/18.2.A.0.9) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5103 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.1; D5106 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 GSA\/3.2.17.1009776.arm","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build\/14.1.G.2.257) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; C6943 Build\/14.3.A.0.681) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; SGP412 Build\/14.1.B.3.320) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build\/10.2.C.0.143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.2; SGP351 Build\/10.1.1.A.1.307) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.3; SGP341 Build\/10.4.B.0.569) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP511 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP512 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build\/17.1.A.2.69) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build\/17.1.A.2.36) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"Mozilla\/5.0 (Linux; Android 4.4.2; SGP551 Build\/17.1.A.2.72) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Sony","user_agent":"SonyEricssonU5i\/R2CA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"SonyEricssonU5i\/R2AA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Mozilla\/4.0 (PDA; PalmOS\/sony\/model prmr\/Revision:1.1.54 (en)) NetFront\/3.0","mobile":true,"tablet":false},{"vendor":"Sony","user_agent":"Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00","mobile":false,"tablet":false},{"vendor":"Sony","user_agent":"Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Skk","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build\/F10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"537.36"}},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03C","Webkit":"537.36"}},{"vendor":"Storex","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true,"version":{"Android":"4.0.3","Build":"IML74K","Webkit":"535.19"}},{"vendor":"Tecno","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Telstra","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build\/TVA301TELBG3) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"texet","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build\/GB.m1ref.20120116) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.3.4","Webkit":"533.1","Safari":"4.0"},"model":"TM-7021"},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.57 Safari\/537.36 OPR\/18.0.1290.67495","mobile":true,"tablet":true},{"vendor":"Tolino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Toshiba","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; TOSHIBA; TSUNAGI)","mobile":true,"tablet":false},{"vendor":"Toshiba","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build\/TOSHIBA_FOLIO_AND_A) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true,"version":{"Android":"2.2","Webkit":"533.1","Safari":"4.0"}},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; ST70408-1 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31","mobile":true,"tablet":true,"version":{"Android":"4.2.2","Build":"JDQ39","Webkit":"537.31","Chrome":"26.0.1410.58"}},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; VT10416-2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Trekstor","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30;SurfTab_10.1","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build\/LR-97JC) Apple WebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build\/Visture V4 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build\/Visture V5 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Visture","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 BMID\/E67A45B1AB","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 TwonkyBeamBrowser\/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build\/meizhi_V2.80.wifi8723.20121225.b11c800)","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"OneBrowser\/3.5\/Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Versus","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true,"version":{"Android":"4.1.1","Build":"JRO03H","Webkit":"534.30","Safari":"4.0"}},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":true},{"vendor":"Viewsonic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; SmartTabII10 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19","mobile":true,"tablet":true},{"vendor":"Vodafone","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vonino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Vonino","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Xoro","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build\/PAD 9719QR) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Xoro","user_agent":"Mozilla\/5.0 (Linux; Android 4.2.2; PAD720 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19","mobile":true,"tablet":true},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1;zh-cn; ZTE V987 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30;","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.5; pt-pt; Blade Build\/tejosunhsine) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; N880e_Dawoer_Fulllock; China Telecom)","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; V965W)","mobile":true,"tablet":false},{"vendor":"ZTE","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; ZTE; Windows Phone - Internet 7; SFR)","mobile":true,"tablet":false},{"vendor":"Zync","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/444","mobile":true,"tablet":true},{"vendor":"Console","user_agent":"Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/534.52 (KHTML, like Gecko) NX\/{Version No} NintendoBrowser\/{Version No}.US","mobile":false,"tablet":false},{"vendor":"Console","user_agent":"Mozilla\/5.0 (PLAYSTATION 3 4.21) AppleWebKit\/531.22.8 (KHTML, like Gecko)","mobile":false,"tablet":false},{"vendor":"Console","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident\/5.0; Xbox)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux i686) AppleWebKit\/537.36 (KHTML, like Gecko) Ubuntu Chromium\/32.0.1700.102 Chrome\/32.0.1700.102 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko\/20100101 Firefox\/24.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko\/20100101 Firefox\/18.0 AlexaToolbar\/psPCtGhf-2.2","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko\/20100101 Firefox\/22.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux ppc; rv:17.0) Gecko\/20130626 Firefox\/17.0 Iceweasel\/17.0.7","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; Linux) AppleWebKit\/535.22+ Midori\/0.4","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit\/535+ (KHTML, like Gecko) Version\/5.0 Safari\/535.20+ Midori\/0.4","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.20 Safari\/537.36 OPR\/15.0.1147.18 (Edition Next)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 5.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko\/20100101 Firefox\/21.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Windows NT 5.2; WOW64) Presto\/2.12.388 Version\/12.14","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko\/20100101 Firefox\/19.0","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko\/20100101 Firefox\/14.0.1","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MANMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; Touch; MASMJS)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto\/2.12.388 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident\/6.0)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.3; Trident\/7.0; rv 11.0) like Gecko","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Windows NT 6.3; WOW64; Trident\/7.0; Touch; rv:11.0) like Gecko","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Mozilla\/5.0 (Unknown; Linux armv7l) AppleWebKit\/537.1+ (KHTML, like Gecko) Safari\/537.1+ HbbTV\/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"HbbTV\/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)","mobile":false,"tablet":false},{"vendor":"Other","user_agent":"Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11","mobile":false,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Java\/1.6.0_22","mobile":false,"tablet":false,"version":{"Java":"1.6.0_22"}},{"vendor":"Generic","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/6.5.29260\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/6.5.27452\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.60 Safari\/537.17 OPR\/14.0.1025.52315","mobile":false,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (X11; CrOS armv7l 4920.83.0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.103 Safari\/537.36"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8H7 Safari\/6533.18.5"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; GT-I9070 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.3.7; Linux; Opera Mobi\/46154) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; it-it; DATAM819HD_C Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; SGPT12 Build\/TID0142) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; cm_tenderloin Build\/IMM76L; CyanogenMod-9) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; A210 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B141 Safari\/8536.25"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Mercury\/7.2 Mobile\/10A523 Safari\/8536.25"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.3.7; Linux; Opera Tablet\/46154) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build\/MASTER) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (X11; Linux zbov) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit\/532.9 (KHTML, like Gecko) Version\/5.0.3 Mobile\/8B5097d Safari\/6531.22.7"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; SGPT12 Build\/TID0142) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7498.US"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.0.6_b1; ru-ru Build\/ECLAIR) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.4; z1000 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; Android 4.0.3; cm_tenderloin Build\/GWK74) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; Android for Techvision TV1T808 Board Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.56 Safari\/537.17"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.1; ru-ru; LG-V900 Build\/HMJ37) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (PLAYSTATION 3 4.11) AppleWebKit\/531.22.8 (KHTML, like Gecko)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2; ru-ru; V9S_V1.4) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; WebView\/1.0)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; Next7P12 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (X11; Linux zbov) Presto\/2.11.355 Version\/12.10"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 2.3.6; es-es; SAMSUNG GT-S5830\/S5830BUKT2 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build\/HTK75C) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; full Android on Microsoft Windows, pad, pc, n*books Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Mobile; rv:18.0) Gecko\/18.0 Firefox\/18.0"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/535.12 (KHTML, like Gecko) Maxthon\/3.0 Chrome\/18.0.966.0 Safari\/535.12"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto\/2.10.289 Version\/12.02"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)"},{"vendor":"Generic","user_agent":"PalmCentro\/v0001 Mozilla\/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource\/Palm-D061; Blazer\/4.5) 16;320x320"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Microsoft; XDeviceEmulator)"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; MAL; N880E; China Telecom)"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Series 60; Opera Mini\/7.0.29482\/28.2859; U; ru) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (S60; SymbOS; Opera Mobi\/SYB-1202242143; U; en-GB) Presto\/2.10.254 Version\/12.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/7.0.29952\/28.2647; U; ru) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android; Opera Mini\/6.1.25375\/28.2555; U; en) Presto\/2.8.119 Version\/11.10"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Mac OS X; Opera Tablet\/35779; U; en) Presto\/2.10.254 Version\/12.00"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Tablet; rv:10.0.4) Gecko\/10.0.4 Firefox\/10.0.4 Fennec\/10.0.4"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Android; Tablet; rv:18.0) Gecko\/18.0 Firefox\/18.0"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Linux armv7l; Maemo; Opera Mobi\/14; U; en) Presto\/2.9.201 Version\/11.50"},{"vendor":"Generic","user_agent":"Opera\/9.80 (Android 2.2.1; Linux; Opera Mobi\/ADR-1207201819; U; en) Presto\/2.10.254 Version\/12.00","mobile":true,"tablet":false},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build\/JRO03E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30"},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build\/ONDA_MID) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Generic","user_agent":"Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build\/ICS.g08refem618.20121102) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30","mobile":true,"tablet":true},{"vendor":"Bot","user_agent":"Mozilla\/5.0 (compatible; Googlebot\/2.1; +http:\/\/www.google.com\/bot.html)","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http:\/\/grub.org)","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"Googlebot-Image\/1.0","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"Python-urllib\/2.5","mobile":false,"tablet":false},{"vendor":"Bot","user_agent":"facebookexternalhit\/1.0 (+http:\/\/www.facebook.com\/externalhit_uatext.php)","mobile":false,"tablet":false}]} \ No newline at end of file +{ + "hash": "169521cbf4b919b69880fa76746cd4f78bbc99f5", + "user_agents": [ + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; A100 Build\/HTK55D) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; A110 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "IML74K" + }, + "model": "A200" + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; A701 Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-710 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A1-810 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; A1-810 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A3-A10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.36", + "Chrome": "32.0.1700.99" + } + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; A1-811 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A1-830 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Acer", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; A3-A11 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-in; MB525 Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; it-it; ALCATEL ONE TOUCH 918D Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false, + "version": { + "Android": "2.3.5", + "Webkit": "533.1", + "Safari": "4.0", + "Build": "GRJ90" + }, + "model": "ONE TOUCH 918D" + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; ALCATEL ONE TOUCH 991 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false, + "version": { + "Android": "2.3.6", + "Webkit": "533.1", + "Safari": "4.0", + "Build": "GRJ90" + }, + "model": "ONE TOUCH 991" + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; ALCATEL ONE TOUCH 993D Build\/ICECREAM) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "ICECREAM" + }, + "model": "ONE TOUCH 993D" + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_A392G\/1.0 ObigoInternetBrowser\/Q05A[TF013513002719521000000013182904148]", + "mobile": true, + "tablet": false, + "model": "A392G" + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3020D\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2; ALCATEL ONE TOUCH 5037A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3020G\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "ALCATEL_3041D\/1.0 ObigoInternetBrowser\/Q03C", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 5037X Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 5037X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012A Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-nz; ONE TOUCH 6012A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; ONE TOUCH 6012D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; En-us; ONE TOUCH 6012E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, Like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ONE TOUCH 6012X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.12975 YaBrowser\/13.12.1599.12975 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; bg-bg; ONE TOUCH 6012X Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6012X_orange Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; fr-fr; ALCATEL ONE TOUCH 6012X_orange Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; fr-fr; 6016E Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; ALCATEL ONE TOUCH 6016E Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; 6016X Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; ALCATEL ONE TOUCH 6016X Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; ru-ru; 6016X Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 6032A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-ru; ALCATEL ONE TOUCH 6032X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-nz; ALCATEL ONE TOUCH 7040A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; th-th; ALCATEL ONE TOUCH 7040D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7040E Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; ALCATEL ONE TOUCH 7041D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041D Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7041X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; pt-pt; ALCATEL ONE TOUCH 7041X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020A Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020A Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020D Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; ALCATEL ONE TOUCH 8020D Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020E Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020E Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 8020X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Alcatel", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; ALCATEL ONE TOUCH 8020X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; ALLVIEW P5 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; ALLVIEW SPEEDI Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.5.3.246\/145\/355", + "mobile": true, + "tablet": true + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; AllviewCity Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Allview", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ALLVIEWSPEED Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.4 Mobile Safari\/535.19 Silk-Accelerated =true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-US) AppleWebKit\/528.5+ (KHTML, like Gecko, Safari\/528.5+) Version\/4.0 Kindle\/3.0 (screen 600x800; rotate)", + "mobile": true, + "tablet": true, + "version": { + "Webkit": "528.5+", + "Kindle": "3.0", + "Safari": "4.0" + }, + "model": "Kindle" + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; KFOTE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; WFJWAE Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFTT Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFTHWI Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFJWI Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; en-us; KFSOWI Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Silk\/3.21 Safari\/535.19 Silk-Accelerated=true", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amazon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; T720-WIFI Build\/ECLAIR) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "iTunes\/9.1.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "iTunes\/11.0.2 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit\/536.27.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPod touch; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A4449d Safari\/9537.53", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit\/420+ (KHTML, like Gecko) Version\/3.0 Mobile\/1A543 Safari\/419.3", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "420+", + "Safari": "3.0" + } + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit\/528.18 (KHTML, like Gecko) Version\/4.0 Mobile\/7A341 Safari\/528.16", + "mobile": true, + "tablet": false, + "version": { + "iOS": "3_0", + "Webkit": "528.18", + "Safari": "4.0" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9B206 Safari\/7534.48.3", + "mobile": true, + "tablet": false, + "version": { + "iOS": "5_1_1", + "Webkit": "534.46", + "Mobile": "9B206", + "Safari": "5.1" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPod; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0", + "Webkit": "536.26", + "Mobile": "10A403", + "Safari": "6.0" + }, + "model": "iPod" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.80 Mobile\/9B206 Safari\/7534.48.3 (6FF046A0-1BC4-4E7D-8A9D-6BF17622A123)", + "mobile": true, + "tablet": true, + "version": { + "iOS": "5_1_1", + "Webkit": "534.46.0", + "Chrome": "21.0.1180.80", + "Mobile": "9B206" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A403 Safari\/8536.25", + "mobile": true, + "tablet": true, + "version": { + "iOS": "6_0", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10A403" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8C148 Safari\/6533.18.5", + "mobile": true, + "tablet": true, + "version": { + "iOS": "4_2_1", + "Webkit": "533.17.9", + "Safari": "5.0.2", + "Mobile": "8C148" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit\/531.21.10 (KHTML, like Gecko) Version\/4.0.4 Mobile\/7B334b Safari\/531.21.10", + "mobile": true, + "tablet": true, + "version": { + "iOS": "3_2", + "Webkit": "531.21.10", + "Safari": "4.0.4", + "Mobile": "7B334b" + }, + "model": "iPad" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; da-dk) AppleWebKit\/534.46.0 (KHTML, like Gecko) CriOS\/21.0.1180.82 Mobile\/10A523 Safari\/7534.48.3", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0_1", + "Webkit": "534.46.0", + "Chrome": "21.0.1180.82", + "Mobile": "10A523" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10A523 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_0_1", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10A523" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; ru-ru) AppleWebKit\/536.26 (KHTML, like Gecko) CriOS\/23.0.1271.100 Mobile\/10B142 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_1", + "Webkit": "536.26", + "Chrome": "23.0.1271.100", + "Mobile": "10B142" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B329 Safari\/8536.25", + "mobile": true, + "tablet": false, + "version": { + "iOS": "6_1_3", + "Webkit": "536.26", + "Safari": "6.0", + "Mobile": "10B329" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Coast\/1.0.2.62956 Mobile\/10B329 Safari\/7534.48.3", + "mobile": true, + "tablet": true, + "version": { + "Coast": "1.0.2.62956" + } + }, + { + "vendor": "Apple", + "user_agent": "CheckMyBus iOS mobile App 0.9.0 (iPhone; iPhone OS\/7.1.1)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit\/537.51.1 (KHTML, like Gecko) Version\/7.0 Mobile\/11A465 Safari\/9537.53", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit\/600.1.4 (KHTML, like Gecko) CriOS\/38.0.2125.59 Mobile\/12A405 Safari\/600.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Apple", + "user_agent": "VendorAppName\/1.7.0 (iPhone; iOS 8.1.2; Scale\/3.00)", + "mobile": true, + "tablet": false, + "version": { + "iOS": "8.1.2" + }, + "model": "iPhone" + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit\/601.1.17 (KHTML, like Gecko) Version\/8.0 Mobile\/13A175 Safari\/600.1.4", + "mobile": true, + "tablet": true + }, + { + "vendor": "Apple", + "user_agent": "Mozilla\/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit\/601.1.37 (KHTML, like Gecko) Version\/8.0 Mobile\/13A4293g Safari\/600.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Qilive 97R Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Archos 50 Platinum Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ARCHOS 80G9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; fr-fr; A101IT Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 101 Cobalt Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80 TITANIUM Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ARCHOS 101 Titanium Build\/JRO03H) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 70b TITANIUM Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; de-de; Archos 80 Xenon Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 79 Xenon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 101 Titanium Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 80XSK Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS FAMILYPAD 2 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ARCHOS 97B TITANIUM Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ARCHOS 101 XS 2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; ARCHOS 80b PLATINUM Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 70 Xenon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ARCHOS 97 CARBON Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS 97 TITANIUMHD Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Archos 90 Neon Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; de-de; Archos5 Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Archos", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ARCHOS GAMEPAD Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true, + "version": { + "Android": "3.2.1", + "Webkit": "534.13", + "Safari": "4.0" + }, + "model": "Transformer TF101" + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; asus_laptop Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; PadFone 2 Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03L", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; ME301T Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.1", + "Build": "JOP40D" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; ME173X Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.1", + "Build": "JOP40D" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; TF300T Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39E" + } + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00C Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00E Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; K00L Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ME302KL Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; K010 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "ASUS", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; K017 Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "534.8+", + "BlackBerry": "6.0.0.546" + }, + "model": "BlackBerry 9300" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9360; en-US) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.400 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; he) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.723 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9700; en-US) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.448 Mobile Safari\/534.8", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9790; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.714 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false, + "version": { + "Webkit": "534.11+", + "BlackBerry": "7.1.0.714" + }, + "model": "BlackBerry 9790" + }, + { + "vendor": "BlackBerry", + "user_agent": "Opera\/9.80 (BlackBerry; Opera Mini\/7.0.29990\/28.2504; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9981; en-GB) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.342 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9800; en-GB) AppleWebKit\/534.8+ (KHTML, like Gecko) Version\/6.0.0.546 Mobile Safari\/534.8+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9780; es) AppleWebKit\/534.8 (KHTML, like Gecko) Version\/6.0.0.480 Mobile Safari\/534.8", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9810; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.0.0.583 Mobile Safari\/534.11", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9860; es) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.0.0.576 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit\/534.11 (KHTML, like Gecko) Version\/7.1.0.523 Mobile Safari\/534.11", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.592 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/136", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.1067 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/603", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "BlackBerry8520\/5.0.0.1036 Profile\/MIDP-2.1 Configuration\/CLDC-1.1 VendorID\/611", + "mobile": true, + "tablet": false, + "version": { + "BlackBerry": "5.0.0.1036", + "VendorID": "611" + }, + "model": "BlackBerry8520" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BlackBerry; U; BlackBerry 9220; en) AppleWebKit\/534.11+ (KHTML, like Gecko) Version\/7.1.0.337 Mobile Safari\/534.11+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit\/536.2+ (KHTML, like Gecko) Version\/7.2.1.0 Safari\/536.2+", + "mobile": true, + "tablet": true + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.1+ (KHTML, like Gecko) Version\/10.0.0.1337 Mobile Safari\/537.1+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) AppleWebKit\/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+", + "mobile": true, + "tablet": false + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (BB10; Touch) \/537.10+ (KHTML, like Gecko) Version\/10.0.9.2372 Mobile Safari\/537.10+", + "mobile": true, + "tablet": false, + "version": { + "BlackBerry": "10.0.9.2372" + } + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; Transformer TF101 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true, + "version": { + "Android": "3.2.1", + "Webkit": "534.13", + "Safari": "4.0" + }, + "model": "Transformer TF101" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; A200 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A200" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A500 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A500" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; A501 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "A501" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Transformer Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "Transformer" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ASUS Transformer Pad TF300T Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "Transformer Pad TF300T" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-fr; Transformer Build\/JZO54K; CyanogenMod-10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "JZO54K" + }, + "model": "Transformer" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; B1-A71 Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Webkit": "535.19", + "Chrome": "18.0.1025.166" + }, + "model": "B1-A71" + }, + { + "vendor": "BlackBerry", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Acer; Allegro)", + "mobile": true, + "tablet": false, + "version": { + "Windows Phone OS": "7.5", + "Trident": "5.0", + "IE": "9.0" + }, + "model": "Allegro" + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; en-gb; Dell Streak Build\/Donut AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/ 525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; hd-us; Dell Venue Build\/GWK74; CyanogenMod-7.2.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; DELL; Venue Pro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 8 3830 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 7 3730 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Venue 7 HSPA+ Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; Venue 8 3830 Build\/JSS15Q) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Dell", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; Dell Streak 10 Pro Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.40 Mobile Safari\/537.31 OPR\/14.0.1074.54070", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.31", + "Opera": "14.0.1074.54070" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Nexus 4 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.2.2", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Nexus 7 Build\/JRO03D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2; Nexus 7 Build\/JOP40C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Nexus 7 Build\/JZ054K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Chrome": "18.0.1025.166" + } + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; cs-cz; Nexus S Build\/JZO54K; CyanogenMod-10.0.0) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; U; Android; en_us; Nexus 7 Build\/) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 NetFrontLifeBrowser\/2.3 Mobile (Dragonfruit)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.1; Nexus 5 Build\/LMY47D) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/39.0.0.0 Mobile Safari\/537.36 momoWebView\/6.3.1 android\/404(Nexus 5;android 5.1;zh_CN;10;netType\/1)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Google", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Nexus 10 Build\/JWR66Y) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (hp-tablet; Linux; hpwOS\/3.0.5; U; en-GB) AppleWebKit\/534.6 (KHTML, like Gecko) wOSBrowser\/234.83 Safari\/534.6 TouchPad\/1.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HP Slate 7 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HP Slate 7 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; HP 8 Build\/1.0.7_WW-FIR-13) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HP Slate 10 HD Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HP Slate 8 Pro Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Slate 21 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36 OPR\/22.0.1485.78487", + "mobile": true, + "tablet": true + }, + { + "vendor": "HP", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HP SlateBook 10 x2 PC Build\/4.3-17r20-03-23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (X11; Linux x86_64; Z520m; en-ca) AppleWebKit\/534.24 (KHTML, like Gecko) Chrome\/11.0.696.34 Safari\/534.24", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "HTC_Touch_HD_T8282 Mozilla\/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.5; en-us; ADR6200 Build\/CUPCAKE) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; xx-xx; Desire_A8181 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; en-gb; HTC Desire Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; HTC Desire Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-dk; Desire_A8181 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; 001HT Build\/FRF91) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; xx-xx; HTCA8180\/1.0 Android\/2.2 release\/06.23.2010 Browser\/WAP 2.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; de-at; HTC Desire Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; en-sk; Desire_A8181 Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; HTC\/DesireS\/1.07.163.1 Build\/GRH78C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-lv; HTC_DesireZ_A7272 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; ADR6300 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC\/DesireS\/2.10.161.3 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC_DesireS_S510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; Inspire 4G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC Explorer A310e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-gb; HTC_ChaCha_A810e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; nl-nl; HTC_DesireHD_A9191 Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; HTC Desire S Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; HTC Desire Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; de-de; HTC_DesireHD Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ua; HTC_WildfireS_A510e Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; HTC Vision Build\/GRI40; ILWT-CM7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; HTC_GOF_U\/1.05.161.1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; hu-hu; HTC Sensation Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC Sensation XE with Beats Audio Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pl-pl; EVO3D_X515m Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; HTC_One_V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC_A320e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-tw; HTC Desire V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; PG86100 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-nl; SensationXE_Beats_Z715e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; ADR6425LVW 4G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; cs-ee; Sensation_Z710e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC Evo 4G Build\/MIUI) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Desire HD Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-my; HTC_One_X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; IncredibleS_S710e Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; HTC_Desire_S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC Butterfly Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; EVO Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTCSensation Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S6312 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC 7 Mozart T8698; QSD8x50)", + "mobile": true, + "tablet": false, + "version": { + "IE": "9.0", + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "7 Mozart T8698" + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-gb;HTC_Flyer_P512 Build\/HTK75C) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.1; zh-tw; HTC PG09410 Build\/HMJ15) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 HTC MOZART)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mondrian T8788)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Mozart; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro T7576)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Pro)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Schubert T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Surround)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy T8686)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; 7 Trophy)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Eternity)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Gold)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2 LEO)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD2)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7 T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; HD7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; iPad 3)", + "mobile": true, + "tablet": true + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; LEO)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mazaa)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mondrian)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Mozart)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; mwp6985)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PC40200)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PD67100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI39100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; PI86100)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar 4G)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 1.08.164.02)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.164.01)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar C110e; 2.05.168.02)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Radar; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schuber)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Schubert)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Spark)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Surround)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T7575)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8697)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T8788)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9295)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; T9296)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; TITAN X310e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Titan)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; Torphy T8686)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC; X310e)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; HTC_blocked; T8788)", + "mobile": true, + "tablet": false, + "version": { + "IE": "9.0", + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "T8788" + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One S Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; HTC One X Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-th; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-id; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One S Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-at; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03L) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One X Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-pe; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 Maxthon\/4.0.4.1000", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.133 Mobile Safari\/535.19 AlexaToolbar\/alxf-2.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One S Build\/IML74K) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; de-de; HTC One Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31 OPR\/14.0.1074.58201", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39E) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One XL Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.63 Mobile Safari\/537.36 OPR\/15.0.1162.60140", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.24 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "HTC One X Linux\/3.0.13 Android\/4.1.9 Release\/10.12.2012 Browser\/AppleWebKit534.30 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Mobile Safari\/534.30 Android 4.0.1;", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One 801e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.63 Mobile Safari\/537.36 OPR\/15.0.1162.61541", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One XL Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X+ Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; HTC One X Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30\/4.05d.1002.m7", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-in; HTC One V Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/5.0.1.352", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; HTC One X Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One SV Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; HTC One Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One 801e Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-ch; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; zh-cn; HTC One S Build\/IML74K) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17 T5\/2.0 baidubrowser\/3.1.6.4 (Baidu; P1 4.0.3)", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X+ Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HTC One 801e Build\/JSS15J) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.4.1.362 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; HTC One Build\/KRT16S.H5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One SV Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; HTC One Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-ru; HTC One 801e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One 801e Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.12975 YaBrowser\/13.12.1599.12975 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; HTC One Build\/KRT16S) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HTC One Build\/JSS15J) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One X Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One X Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JWR66Y.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; de-at; HTC One Build\/JSS15J) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One dual sim Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One S Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One max Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.132 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One mini Build\/JSS15Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One 801e Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; HTC One Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/5.2.380", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.133 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.132 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; HTC One X Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; HTC One S Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-kw; HTC One X+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One max Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 MicroMessenger\/5.3.0.49_r693790.420", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.5.418 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 MicroMessenger\/5.2.1.381", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One mini Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; ru-ru; HTC One mini Build\/KOT49H) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.0.435 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One 801e Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; HTC One X - 4.2.2 - API 17 - 720x1280 Build\/JDQ39E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.128 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; HTC One VX Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.76 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One V Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36 OPR\/22.0.1485.78487", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One 801e Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One 801e Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; HTC One X Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36 OPR\/22.0.1485.81203", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One 801e Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; HTC One S Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; HTC One V Build\/IML74K) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.9.2.467 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One mini Build\/JSS15Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-us; HTC One_M8 Build\/KOT49H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One dual sim Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/37.0.2062.117 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.72 Mobile Safari\/537.36 OPR\/19.0.1340.69721", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One SV Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 ACHEETAHI\/2100050056", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One_M8 Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JWR66Y.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One SV Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/21.0.0.23.12;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-si; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 MicroMessenger\/6.0.0.67_r853700.483 NetType\/WIFI", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-US; HTC One X Build\/JRO03C) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/10.0.1.512 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One Build\/KTU84P.H1) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One SV Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FBAN\/FB4A;FBAV\/22.0.0.15.13;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; HTC One X+ Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 BingWeb\/5.2.0.20140710", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; HTC One Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-mx; HTC One S Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FBAN\/FB4A;FBAV\/23.0.0.22.14;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.3; es-es; HTC One 801e Build\/KTU84L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X+ Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.69 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; HTC One S Build\/JRO03C) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-th; HTC One Build\/KOT49H) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-ar; HTC One X Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One_M8 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-us; HTC One X+ Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-mx; HTC One S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/24.0.0.30.15;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; HTC One Build\/KTU84L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One dual sim Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/25.0.0.19.30;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.1; HTC One_M8 Build\/LRX22C) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/37.0.0.0 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/25.0.0.19.30;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.89 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; HTC One_M8 Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; HTC One X Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; HTC One mini Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "HTC", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.1; HTC One_M8 Build\/LRX22C.H5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/40.0.2214.109 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; bg-bg; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1; en-us; Ideos S7 Build\/ERE27) AppleWebKit\/525.10+ (KHTML, like Gecko) Version\/3.0.4 Mobile Safari\/523.12.2", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; lt-lt; U8660 Build\/HuaweiU8660) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; HUAWEI-U8850 Build\/HuaweiU8850) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; pl-pl; MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; nl-nl; HUAWEI MediaPad Build\/HuaweiMediaPad) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "HUAWEI_T8951_TD\/1.0 Android\/4.0.4 (Linux; U; Android 4.0.4; zh-cn) Release\/05.31.2012 Browser\/WAP2.0 (AppleWebKit\/534.30) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ar-eg; MediaPad 7 Youth Build\/HuaweiMediaPad) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-cn; HW-HUAWEI_C8815\/C8815V100R001C541B135; 540*960; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_C8813D\/C8813DV100R001C92B172; 480*854; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Huwaei", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; HW-HUAWEI_Y300C\/Y300CV100R001C92B168; 480*800; CTC\/2.0) AppleWebKit\/534.30 (KHTML, like Gecko) Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; Iris 349 Build\/MocorDroid2.3.5) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris402+ Build\/iris402+) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; IRIS402 Build\/LAVAIRIS402) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; iris405 Build\/LAVAIRIS405) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; IRIS_501 Build\/LAVAIRIS501) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris402e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris503e Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IRIS402) U2\/1.0.0 UCBrowser\/9.1.1.420 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (MIDP-2.0; U; Adr 4.2.2; en-US; IRIS402) U2\/1.0.0 UCBrowser\/9.1.1.420 U2\/1.0.0 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IRIS355) U2\/1.0.0 UCBrowser\/9.1.1.420 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; iris356 Build\/irisIRIS356) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.5.0.360 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; iris356) U2\/1.0.0 UCBrowser\/9.0.2.389 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; iris500 Build\/iris500) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; iris700 Build\/iris700) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; QPAD E704 Build\/JDQ39) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; xx-xx; IvoryS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-US; E-TAB IVORY Build\/E702) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.0.321 U3\/0.8.0 Mobile Safari\/534.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lava", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; tr-tr; E-TAB Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": 0, + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-au; TBLT10Q-32GB Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; ThinkPad Tablet Build\/ThinkPadTablet_A400_03) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "UCWEB\/2.0 (Linux; U; Opera Mini\/7.1.32052\/30.3697; en-US; IdeaTabA1000-G) U2\/1.0.0 UCBrowser\/9.2.0.419 Mobile", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; IdeaTabA1000-F Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; Lenovo A3000-H Build\/JOP40D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.117 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.360", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; zh-cn; Lenovo-A3000-H\/S100) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.300", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-us; IdeaTab A3000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; IdeaTab A2107A-H Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; IdeaTabA2109A Build\/JRO03R) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; IdeaTab_A1107 Build\/MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.300", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaTab S6000-H Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; IdeaTab S6000-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B8000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2;it-it; Lenovo B8000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; it-it; Lenovo B6000-F\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.2.2 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Lenovo B6000-F Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; IdeaPadA10 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Ideapad K1 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; IdeaPad A1 Build\/GRK393; CyanogenMod-7) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; Lenovo B8080-H Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; hu-hu; Lenovo A3500-FL Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Lenovo A7600-F Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Lenovo A5500-F Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.131 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Lenovo", + "user_agent": "Lenovo A390 Linux\/3.0.13 Android\/4.4.2 Release\/04.03.2013 Browser\/AppleWebKit534.30 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 Mobile Safari\/534.30 Android 4.0.1;", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; LG-VS410PP Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; LG-P509 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; pt-br; LG-P350f Build\/FRG83G) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LG-P500 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; LS670 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; LG-E510 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MMS\/LG-Android-MMS-V1.0\/1.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; VS910 4G Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-P700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build\/IML74K) AppleWebkit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-F160S Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; LG-E610v\/V10f Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; LG-E612 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; LG-F180K Build\/JZO54K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; LG-V500 Build\/JDQ39B) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; LG-LW770 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; LG-V510 Build\/KOT49H.L004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG E-900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-C900k)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-E900h)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; LG; LG-Optimus 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0.1; ja-jp; L-06C Build\/HRI66) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0; en-us; LG-V900 Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-gb; LG-V700 Build\/KOT49I.A1403851714) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.1599.103 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; LG-V500 Build\/KOT49I.V50020d) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.102 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "LG", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; en-us; LG-V410\/V41010d Build\/KOT49I.V41010d) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.1599.103 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; xx-xx; HM NOTE 1W Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.1; zh-cn; MI-ONE Plus Build\/ITL41D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2SC Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build\/JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; MI 1S Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.8; zh-cn; xiaomi2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko)Version\/4.0 MQQBrowser\/4.4 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; MI 2A Build\/miui.es JRO03L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; zh-cn; MI 3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; MI 1S Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; MI 3W Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; HM 1SC Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HM 1SW Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; HM NOTE 1W Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; MI-ONE C1 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.4; en-us; MI 4W Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36 XiaoMi\/MiuiBrowser\/2.0.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Mi", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; MI PAD Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)", + "mobile": true, + "tablet": true, + "version": { + "IE": "10.0", + "Windows NT": "6.2", + "Trident": "6.0" + } + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident\/6.0; Touch; ARMBJS)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko\/20130626 Firefox\/25.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko\/20100101 Firefox\/22.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MDDCJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MDDCJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.52 Safari\/537.36 OPR\/15.0.1147.130", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.116 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Microsoft", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; MDDCJS; WebView\/1.0)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "MOT-W510\/08.11.05R MIB\/BER2.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 EGE\/1.0 UP.Link\/6.3.0.0.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; zh-cn; ME722 Build\/MLS2GC_2.6.0) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; DROIDX Build\/4.5.1_57_DX8-51) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; en-us; MB855 Build\/4.5.1A-1_SUN-254_13) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; es-us; MB526 Build\/4.5.2-51_DFL-50) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-ca; MB860 Build\/4.5.2A-51_OLL-17.8) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-us; MOT-XT535 Build\/V1.540) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ko-kr; A853 Build\/SHOLS_U2_05.26.3; CyanogenMod-7.1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0; en-us; Xoom Build\/HRI39) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.1; en-us; Xoom Build\/HMJ25) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; DROID RAZR 4G Build\/6.7.2-180_DHD-16_M4-31) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build\/IMM76L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; XT687 Build\/V2.27D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "XT687" + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; MOT-XT910 Build\/6.7.2-180_SPU-19-TA-11.6) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT910 Build\/9.8.2O-124_SPUL-17) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT915 Build\/2_32A_2031) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2017) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT925 Build\/9.8.2Q-50-XT925_VQLM-20) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT907 Build\/9.8.1Q-66) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT901 Build\/9.8.2Q-50_SLS-13) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; DROID BIONIC Build\/9.8.2O-72_VZW-22) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1022 Build\/KXC20.82-14) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.4; en-in; XT1022 Build\/KXC21.5-40) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1025 Build\/KXC20.82-13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1052 Build\/KLA20.16-2.16.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; XT1052 Build\/13.9.0Q2.X_83) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; XT1053 Build\/13.9.0Q2.X_61) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Mobile Safari\/537.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; XT1053 Build\/13.9.0Q2.X_55) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; XT1056 Build\/13.9.0Q2.X-116-MX-17-6-2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.64 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1031 Build\/KXB20.9-1.10-1.18-1.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; XT1032 Build\/KXB21.14-L1.40) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; XT1032 Build\/KLB20.9-1.10-1.24-1.1) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.16", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT1034 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-us; XT1034 Build\/14.10.0Q3.X-84-16) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; XT1035 Build\/14.10.0Q3.X-23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.3; XT1039 Build\/KXB21.14-L1.31) AppleWebKit\/537.36 (KHTML like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; XT919 Build\/2_290_2002) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT919 Build\/2_290_2004) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; XT920 Build\/2_290_2014) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; XT920 Build\/2_310_2014) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; XT905 Build\/7.7.1Q_GCIRD-16) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; XT908 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; XT897 Build\/7.7.1Q-6_SPR-ASANTI_LE-18) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; XT1032 Build\/LXB22.46-28.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.1.1; Moto E Build\/LMY47V) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/39.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Motorola", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; XT1021 Build\/KTU84Q) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/33.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia200\/2.0 (12.04) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 UCWEB\/2.0 (Java; U; MIDP-2.0; en-US; nokia200) U2\/1.0.0 UCBrowser\/8.9.0.251 U2\/1.0.0 Mobile UNTRUSTED\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia6303iclassic\/5.0 (06.61) Profile\/MIDP-2.1 Configuration\/CLDC-1.1 Mozilla\/5.0 AppleWebKit\/420+ (KHTML, like Gecko) Safari\/420+", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "nokian73-1\/UC Browser7.8.0.95\/69\/400 UNTRUSTED\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia2760\/2.0 (06.82) Profile\/MIDP-2.1 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Nokia3650\/1.0 SymbianOS\/6.1 Series60\/1.2 Profile\/MIDP-1.0 Configuration\/CLDC-1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "NokiaN70-1\/5.0737.3.0.1 Series60\/2.8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1\/UC Browser7.8.0.95\/27\/352", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaN73) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.6.0.199\/28\/444\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2)\/UC Browser8.5.0.183\/28\/444\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (S60V3; U; ru; NokiaC5-00.2) AppleWebKit\/530.13 (KHTML, like Gecko) UCBrowser\/8.7.0.218\/28\/352\/UCWEB Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Series40; NokiaC3-00\/08.63; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) Gecko\/20100401 S40OviBrowser\/2.2.0.0.33", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/7.0.31380\/28.2725; U; es) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false, + "version": { + "Opera Mini": "7.0.31380", + "Presto": "2.8.119" + } + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaC7-00\/025.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.2 NokiaX7-00\/022.014; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.37 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaE6-00\/111.140.0058; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaC6-01; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia700\/111.020.0308; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.1.14 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 NokiaN8-00\/111.040.1511; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/535.1 (KHTML, like Gecko) NokiaBrowser\/8.3.1.4 Mobile Safari\/535.1 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Symbian\/3; Series60\/5.3 Nokia701\/111.030.0609; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.4.2.6 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/3.83; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120ci\/7.02; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 Nokia6120c\/7.10; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE66-1\/510.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE71-1\/110.07.127; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN95-3\/20.2.011 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE51-1\/200.34.36; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaE63-1\/500.21.009; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.2; U; Series60\/3.1 NokiaN82\/10.0.046; Profile\/MIDP-2.0 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/052.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE52-1\/@version@; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/031.022; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.3.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 NokiaN79-1\/32.001; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; U; Series60\/3.2 Nokia6220c-1\/06.101; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/413 (KHTML, like Gecko) Safari\/413", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00.2\/071.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.26 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaE72-1\/081.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.32 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.3; Series60\/3.2 NokiaC5-00\/061.005; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.2 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaX6-00\/40.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gb", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5800d-1\/60.0.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaC5-03\/12.0.023; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5228\/40.1.003; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.7.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5230\/51.0.002; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.33 Mobile Safari\/533.4 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 Nokia5530c-2\/32.0.007; Profile\/MIDP-2.1 Configuration\/CLDC-1.1 ) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 BrowserNG\/7.2.6.9 3gpp-gba", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-1\/21.0.045; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) BrowserNG\/7.1.4", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (SymbianOS\/9.4; Series60\/5.0 NokiaN97-4\/30.0.004; Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/533.4 (KHTML, like Gecko) NokiaBrowser\/7.3.1.28 3gpp-gba", + "mobile": true, + "tablet": false, + "version": { + "Symbian": "9.4", + "Webkit": "533.4", + "NokiaBrowser": "7.3.1.28" + }, + "model": "NokiaN97-4" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 7 Mozart T8698)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 800C; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; HD7 T9292)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; LG E-900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 610)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; T-Mobile)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 710; Vodafone)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800) UP.Link\/5.1.2.6", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; SFR)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; T-Mobile)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 800; vodafone)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 800c)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Lumia 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Lumia 920)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident\/6.0; IEMobile\/10.0; ARM; Touch; NOKIA; Lumia 920)", + "mobile": true, + "tablet": false, + "version": { + "IE": "10.0", + "Windows Phone OS": "8.0", + "Trident": "6.0" + }, + "model": "Lumia 920" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; lumia800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 610)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 710)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 800C)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; NOKIA; Nokia 900)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; Nokia)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Nokia; TITAN X310e)", + "mobile": true, + "tablet": false, + "version": { + "Windows Phone OS": "7.5", + "Trident": "5.0" + }, + "model": "TITAN X310e" + }, + { + "vendor": "Nokia", + "user_agent": "Mozilla\/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident\/7.0; Touch; rv:11.0; IEMobile\/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit\/537 (KHTML, like Gecko) Mobile Safari\/537", + "mobile": true, + "tablet": false + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; V975i Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.108 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:37.0) Gecko\/37.0 Firefox\/37.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; V975m Core4 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; fr-fr; V975m Core4 Build\/JSS15J) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; V975m Core4 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.96 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Onda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; V812 Core4 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "AdvanDigital", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; E1C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AdvanDigital", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; id-id; T3C Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; en-us; Ainol Novo8 Advanced Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Novo10 Hero Build\/20121115) AppleWebKit\/535.19 (KHTML like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ainol", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; novo9-Spark Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AllFine", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; FINE7 GENIUS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Amoi", + "user_agent": "Amoi 8512\/R18.0 NF-Browser\/3.3", + "mobile": true, + "tablet": false, + "model": "8512" + }, + { + "vendor": "Arnova", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; fr-fr; AN9G2I Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "AudioSonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-au; T-17B Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Blaupunkt", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; Endeavour 800NG Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Broncho", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; es-es; Broncho N701 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Livingstone 2 Build\/1.1.7 20121018-10:33) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-es; bq Edison Build\/1.1.10-1015 20121230-18:00) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; Maxwell Lite Build\/v1.0.0.ICS.maxwell.20120920) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-tw; bq Maxwell Plus Build\/1.0.0 20120913-10:39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "bq", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; Aquaris E10 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Captiva", + "user_agent": "Opera\/9.80 (X11; Linux zvav; U; de) Presto\/2.8.119 Version\/11.10 Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; CAPTIVA PAD 10.1 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Casio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; C771 Build\/C771M120) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "ChangJia", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-br; TPC97113 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ChangJia", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; TPC7102 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; Celkon CT 910+ Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-in; CT-1 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Celkon", + "user_agent": "CELKON.C64\/R2AE SEMC-Browser\/4.0.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A125 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-US; Celkon*A86 Build\/Celkon_A86) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1 UCBrowser\/8.7.0.315 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Celkon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Celkon A.R 40 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; MID7010 Build\/FRF85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID7048 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Coby", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; MID8042 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Concorde", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde Tab T10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Concorde", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; ConCorde tab PLAY Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Cresta", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; nl-nl; CRESTA.CTP888 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Cube", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; CUBE U9GT 2 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Danew", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Dslide 700 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "Dslide 700" + }, + { + "vendor": "DanyTech", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Genius Tab Q4 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Digma", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; iDx10 3G Build\/ICS.b02ref.20120331) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "DPS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; DPS Dream 9 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "ECS", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; it-it; TM105A Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30" + } + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme Dual Core X190 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Essential A160 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; E-Boda Supreme X80 Dual Core Build\/ICS.g12refM806A1YBD.20120925) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-boda essential smile Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme X80 Dual Core Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Eboda", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; E-Boda Supreme XL200IPS Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Evolio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Evolio X7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Evolio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ro-ro; ARIA_Mini_wifi Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Fly", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Fly IQ440; Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Fly", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; FLY IQ256 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Fujitsu", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ja-jp; F-10D Build\/V21R48A) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "V21R48A", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Fujitsu", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; ru-ru; M532 Build\/IML74K) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "FX2", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; FX2 PAD7 RK Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Galapad", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-tw; G1 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Webkit": "534.30", + "Safari": "4.0", + "Build": "JRO03C" + } + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; el-gr; GOCLEVER TAB A103 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; zh-tw; A7GOCLEVER Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GOCLEVER TAB A104 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; cs-cz; GOCLEVER TAB A93.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; sk-sk; GOCLEVER TAB A971 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; lv-lv; GOCLEVER TAB A972BK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-fr; GOCLEVER TAB A104.2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GoClever", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-pt; GOCLEVER TAB T76 Build\/MID) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "GU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; TX-A1301 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "GU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; da-dk; Q702 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; U1 Build\/HCL ME Tablet U1) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; Connect-3G-2.0 Build\/HCL) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "HCL", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; pt-br; X1 Build\/HCL ME Tablet X1) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Hudl", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Hudl HT7S3 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.82 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Iconbit", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; NT-3702M Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Safari\/537.36 OPR\/16.0.1212.65583", + "mobile": true, + "tablet": true + }, + { + "vendor": "Iconbit", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; NetTAB SPACE II Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "iJoy", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; Tablet Planet II-v3 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Intenso", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1.;de-de; INM8002KP Build\/JR003H) AppleWebKit\/534.30 (KHTML, like Gecko)Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1.", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Intenso", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; TAB1004 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "INQ", + "user_agent": "INQ1\/R3.9.12 NF-Browser\/3.5", + "mobile": true, + "tablet": false, + "model": "INQ1" + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; en-US; Cloud_X2 Build\/MocorDroid4.0.1) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1 UCBrowser\/9.2.0.419 Mobile", + "mobile": true, + "tablet": false + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Cloud Y2 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Intex", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-in; Cloud X5 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "IRU", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; M702pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "JXD", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; F3000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Karbonn", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; ST10 Build\/JRO03C) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Kobo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 (Kobo Touch)", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.0", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Megafon", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; ru-ru; MegaFon V9 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Megafon", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; MT7A Build\/JRO03C) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true + }, + { + "vendor": "MediaTek", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; MT8377 Build\/JRO03C) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30\/4.05d.1002.m7", + "mobile": true, + "tablet": true + }, + { + "vendor": "Micromax", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Micromax A110 Build\/JRO03C) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.169 Mobile Safari\/537.22", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.1.1", + "Build": "JRO03C", + "Webkit": "537.22", + "Chrome": "25.0.1364.169" + } + }, + { + "vendor": "Micromax", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; Micromax P250(Funbook) Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Webkit": "534.30", + "Android": "4.0", + "Build": "IMM76D", + "Safari": "4.0" + } + }, + { + "vendor": "Modecom", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; pl-pl; FreeTAB 1014 IPS X4+ Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "MSI", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.5; el-gr; MSI Enjoy 10 Plus Build\/1.2) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nabi", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NABI-A Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "NEC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ja-jp; N-08D Build\/A5001911) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "NEC", + "user_agent": "Mozilla\/5.0 (Linux; U; Android AAA; BBB; N-06D Build\/CCC) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nexo", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; pl-pl; NEXO 3G Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 ACHEETAHI\/2100050074", + "mobile": true, + "tablet": true + }, + { + "vendor": "Nibiru", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-tw; Nibiru H1 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 XiaoMi\/MiuiBrowser\/1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build\/ERD79 1.4.3) Apple WebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.2.1", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build\/ICS) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "ICS", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Nook", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; BNTV600 Build\/IMM76L) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36 Hughes-PFB\/CID5391275.AID1376709964", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76L", + "Webkit": "537.36", + "Chrome": "28.0.1500.94" + } + }, + { + "vendor": "Oneplus", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; A0001 Build\/JLS36C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Oneplus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; xx-xx; A0001 Build\/JLS36C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; LOOX Plus Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; XENO10 Build\/ODYS XENO 10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.2; de-de; ODYS Space Build\/I700T_P7_T04_TSCL_FT_R_0_03_1010_110623) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ODYS-EVO Build\/ODYS-EVO) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; Xelio 10 Pro Build\/ODYS_Xelio) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; NEO_QUAD10 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.X; de-de; Xelio10Pro Build\/ODYS_Xelio) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.1; en-us; ODYS-Xpress Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; XELIO7PHONETAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; XELIO10EXTREME Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; XELIO Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 Mobile UCBrowser\/3.2.1.441", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; XELIOPT2 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Odys", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; nl-nl; ODYS-NOON Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "OverMax", + "user_agent": "OV-SteelCore(B) Mozilla\/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3", + "mobile": true, + "tablet": true + }, + { + "vendor": "OverMax", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; OV-SteelCore Build\/ICS.g08refem611.20121010) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "YONESTablet", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pl-pl; BC1077 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Pantech", + "user_agent": "PANTECH-C790\/JAUS08312009 Browser\/Obigo\/Q05A Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; ko-kr; SKY IM-A600S Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us; ADR8995 4G Build\/GRI40) AppleWebKit\/533.1 (KHTML like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Pantech", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2.1; en-us; PantechP4100 Build\/HTK75) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Philips W336 Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.45 Mobile Safari\/537.36 OPR\/15.0.1162.59192", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Philips_T3500\/V1 Linux\/3.4.5 Android\/4.2.2 Release\/03.26.2013 Browser\/AppleWebKit534.30 Mobile Safari\/534.30 MBBMS\/2.2 System\/Android 4.2.2;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Philips W3568 Build\/Philips_W3568) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; Philips W832 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux;U;Android 4.2.2;es-us;Philips S388 Build\/JDQ39) AppleWebkit\/534.30 (HTML,like Gecko) Version\/4.0 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; Philips W536 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux;U;Android 4.2.2;es-us;Philips S308 Build\/JDQ39) AppleWebkit\/534.30 (HTML,like Gecko) Version\/4.0 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ru-ru; Philips-W8500 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru; Philips W8510 Build\/JDQ39) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.9.457 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; ru-RU; Philips W3568 Build\/Philips W3568) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.1 Mobile Safari\/534.30;", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; Philips S388 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; Build\/PI3100.00.00.24) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; W732 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Philips", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.1; PI7100_93 Build\/PI7100.C.00.00.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "PocketBook", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-ru; PocketBook A10 3G Build\/GRJ90) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "PointOfView", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; POV_TAB-PROTAB30-IPS10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Praktica", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; TP750 3GGSM Build\/IMM76I) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "PROSCAN", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; PLT8088 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "PyleAudio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; PTBL92BC Build\/IMM76D) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Mobile Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "537.36", + "Chrome": "31.0.1650.59" + } + }, + { + "vendor": "RockChip", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; hu-hu; RK2818, Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "RockChip", + "user_agent": "Mozilla\/5.0 (Linux; U; Android Android 2.1-RK2818-1.0.0; zh-cn; MD701 Build\/ECLAIR) AppleWebKit\/530.17 (KHTML like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": true + }, + { + "vendor": "RossMoor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; ru-ru; RM-790 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "QMobile", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; A2 Build\/GRK39F) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "simvalley", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; de-de; SP-80 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Skk", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; CYCLOPS Build\/F10) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; eZee_Tab903 Build\/JRO03H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "537.36" + } + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; eZee'Tab785 Build\/JRO03C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.59 Safari\/537.36", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03C", + "Webkit": "537.36" + } + }, + { + "vendor": "Storex", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; eZee'Tab971 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "IML74K", + "Webkit": "535.19" + } + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; P98 3G\\xE5\\x85\\xAB\\xE6\\xA0\\xB8(A3HY) Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "QQ\\xe9\\x9f\\xb3\\xe4\\xb9\\x90HD 4.0.1 (iPad; iPhone OS 8.0; zh_CN)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0; xx-xx; A15(E6C2) Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3; xx-xx; A10 Build\/GRJ22) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; Teclast A10T Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; Teclast P85(A9D3) Build\/IMM76D) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Teclast", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; A70H Build\/JDQ39) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.8.0.435 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Tecno", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; TECNO P9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Telstra", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; en-au; T-Hub2 Build\/TVA301TELBG3) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "texet", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; TM-7021 Build\/GB.m1ref.20120116) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.3.4", + "Webkit": "533.1", + "Safari": "4.0" + }, + "model": "TM-7021" + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 8.9 Build\/JDQ39) AppleWebKit\/534.30 (KHTML like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Chrome\/31.0.1650.57 Safari\/537.36 OPR\/18.0.1290.67495", + "mobile": true, + "tablet": true + }, + { + "vendor": "Tolino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; tolino tab 7 Build\/JDQ39) AppleWebkit\/537.36 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Toshiba", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; TOSHIBA; TSUNAGI)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Toshiba", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; it-it; TOSHIBA_FOLIO_AND_A Build\/TOSHIBA_FOLIO_AND_A) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "Android": "2.2", + "Webkit": "533.1", + "Safari": "4.0" + } + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; ST70408-1 Build\/JDQ39) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "JDQ39", + "Webkit": "537.31", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; engb; Build\/IMM76D) AppleWebKit\/534.46 (KHTML, like Gecko) Version\/5.1 Mobile\/9A405 Safari\/7534.48.3 SurfTab_7.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; VT10416-2 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Trekstor", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; de-de; ST10216-2A Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30;SurfTab_10.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Ubislate", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; UBISLATE7C+ Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; V97 HD Build\/LR-97JC) Apple WebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; Visture V4 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V4 HD Build\/Visture V4 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; es-es; Visture V5 HD Build\/Visture V5 HD) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Visture", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; Visture V10 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; VS-TOUCHPAD 9 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; Versus Touchpad 9.7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; CnM-TOUCHPAD7 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 BMID\/E67A45B1AB", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; CnM TouchPad 7DC Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30 TwonkyBeamBrowser\/3.3.5-95 (Android 4.1.1; rockchip CnM TouchPad 7DC Build\/meizhi_V2.80.wifi8723.20121225.b11c800)", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "OneBrowser\/3.5\/Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; TOUCHPAD 7 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Versus", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; TOUCHTAB Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.1", + "Build": "JRO03H", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; de-de; ViewPad 10e Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; it-it; ViewPad7 Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; en-ca; ViewSonic VB733 Build\/FRG83) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; ViewPad7X Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; pt-br; ViewPad 10S Build\/FRF91) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Viewsonic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; VB100a Pro Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vonino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-us; Sirius_Evo_QS Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vonino", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Q8 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolder", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4; miTab LIVE Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolder", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; pt-pt; miTab FUNK Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Wolfgang", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; nl-nl; AT-AS45q2 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Xoro", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; PAD 9720QR Build\/PAD 9719QR) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Xoro", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; PAD720 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "ZTE", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; V8200plus Build\/IMM76I) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.166 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Zync", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-us ; Z909 Build\/GRI40) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/444", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; PMP5297C_QUAD Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; sk-sk; PMP7100D3G Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.4", + "Build": "IMM76D", + "Webkit": "534.30", + "Safari": "4.0" + }, + "model": "PMP7100D3G" + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; sk-sk; PMP7280C3G Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 MobilSafari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT3017_WI Build\/KVT49L) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT3037_3G Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; PMT5002_Wi Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/39.0.2171.93 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Prestigio", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; el-gr; PMT5887_3G Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "MQQBrowser\/4.0\/Mozilla\/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6800 Build\/HTJ85B) AppleWebKit\/533.1 (KHTML, like Gecko) Mobile Safari\/533.1", + "mobile": true, + "tablet": true, + "version": { + "MQQBrowser": "4.0" + } + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-SGH-P250-ORANGE\/P250BVHH8 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-B2710\/B271MCXKF1 SHP\/VPP\/R5 Dolfin\/2.0 QTV\/5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B", + "mobile": true, + "tablet": false, + "version": { + "Dolfin": "2.0" + } + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-SGH-D900i\/1.0 Profile\/MIDP-2.0 Configuration\/CLDC-1.1 UP.Browser\/6.2.3.3.c.1.101 (GUI) MMP\/2.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-S5233T\/S5233TXEJE3 SHP\/VPP\/R5 Jasmine\/0.8 Qtv5.3 SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5380D\/S5380FXXKL3; U; Bada\/2.0; ru-ru) AppleWebKit\/534.20 (KHTML, like Gecko) Dolfin\/3.0 Mobile HVGA SMM-MMS\/1.2.0 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-C3312\/1.0 NetFront\/4.2 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.5; de-de; Galaxy Build\/CUPCAKE) AppleWebKit\/528.5 (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "SAMSUNG-GT-S3650\/S3650XEII3 SHP\/VPP\/R5 Jasmine\/1.0 Nextreaming SMM-MMS\/1.2.0 profile\/MIDP-2.1 configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "JUC (Linux; U; 2.3.6; zh-cn; GT-S5360; 240*320) UCWEB7.9.0.94\/140\/352", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S5250\/S5250XEKJ3; U; Bada\/1.0; ru-ru) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.0 Mobile WQVGA SMM-MMS\/1.2.0 NexPlayer\/3.0 profile\/MIDP-2.1 configuration\/CLDC-1.1 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident\/3.1; IEMobile\/7.0; SAMSUNG; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (SAMSUNG; SAMSUNG-GT-S8530\/S8530XXJKA; U; Bada\/1.2; cs-cz) AppleWebKit\/533.1 (KHTML, like Gecko) Dolfin\/2.2 Mobile WVGA SMM-MMS\/1.2.0 OPN-B", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 1.6; ru-ru; Galaxy Build\/Donut) AppleWebKit\/528.5+ (KHTML, like Gecko) Version\/3.1.2 Mobile Safari\/525.20.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; ru-ru; GT-I5500 Build\/ERE27) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; en-us; GALAXY_Tab Build\/MASTER) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2; fr-fr; GT-I9000 Build\/FROYO) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.2.1; zh-cn; SCH-i909 Build\/FROYO) UC AppleWebKit\/534.31 (KHTML, like Gecko) Mobile Safari\/534.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; ja-jp; SC-01C Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-gb; GT-P1000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; el-gr; GT-I9001 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-ca; SGH-I896 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; es-us; GT-S5660L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1 MicroMessenger\/4.5.1.261", + "mobile": true, + "tablet": false, + "version": { + "MicroMessenger": "4.5.1.261" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5660 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6102 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; pt-br; GT-S5367 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; fr-fr; GT-S5839i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S7500 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5830 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-B5510L Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; pl-pl; GT-I9001-ORANGE\/I9001BVKPC Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-I8150 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; nl-nl; GT-I9070 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-gb; GT-S5360 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; es-us; GT-S6102B Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; en-us; GT-S5830i Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-I8160 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-S6802 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; ru-ru; GT-S5830 Build\/GRWK74; LeWa_ROM_Cooper_12.09.21) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.6; ru-ru; GT-N7000 Build\/GINGERBREAD) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7100 Build\/HRI83) AppleWebkit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; he-il; GT-P7300 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; en-gb; GT-P6200 Build\/HTJ85B) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0 Safari\/534.13", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-gb; GT-I9100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-us; GT-I9100G Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; nl-nl; GT-P5100 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build\/IML74K) AppleWebKit\/535.7 (KHTML, like Gecko) CrMo\/16.0.912.75 Mobile Safari\/535.7", + "mobile": true, + "tablet": false, + "version": { + "Chrome": "16.0.912.75" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; SGH-T989 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false, + "version": { + "Chrome": "18.0.1025.166" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P5100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GT-I9300 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; SPH-D710 Build\/IMM76I) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; GT-I9300 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300-ORANGE\/I9300BVBLG2 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-I9300T Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-I9100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us ; GT-I9100 Build\/IMM76D) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1\/UCBrowser\/8.4.1.204\/145\/355", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; GT-N7000 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; th-th; GT-P6800 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I747 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; GT-P5110 Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; GT-P5110 Build\/IMM76D) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; zh-cn; SAMSUNG-GT-S7568_TD\/1.0 Android\/4.0.4 Release\/07.15.2012 Browser\/AppleWebKit534.30 Build\/IMM76D) ApplelWebkit\/534.30 (KHTML,like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false, + "version": { + "Android": "4.0.4" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-P3100 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; tr-tr; GT-P3105 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-ca; GT-N8010 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; ru-ru; GT-S7562 Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; GT-N7100 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; GT-N7100 Build\/JZO54K) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.123 Mobile Safari\/537.22 OPR\/14.0.1025.52315", + "mobile": true, + "tablet": false, + "version": { + "Build": "JZO54K", + "Webkit": "537.22", + "Opera": "14.0.1025.52315" + } + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; zh-hk; GT-N7105 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; ru-ru; GT-N8000 Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.1; SGH-i747M Build\/JRO03L) AppleWebKit\/535.19(KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-gb; Galaxy Nexus - 4.1.1 - with Google Apps - API 16 - 720x1280 Build\/JRO03S) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; GT-I8262 Build\/JZO54K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; it-it; Galaxy Nexus Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-I777 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-S7710 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; GT-I9082 Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGH-T999L Build\/JZO54K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; GT-P5210 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, Like Gecko) Chrome\/27.0.1453.90 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; en-us; SAMSUNG GT-I9200 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; nl-nl; SM-T310 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; en-us; SAMSUNG SM-P600 Build\/JSS15J) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; en-gb; GT-N5100 Build\/JDQ39) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-T530NU Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T800 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; fr-fr; SAMSUNG SM-T800 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T700 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.517 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; CETUS)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus I917 By TC)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Focus i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; FOCUS S)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-I8350)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-i8700)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; GT-S7530)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; Hljchm's Wp)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; I917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7 By MWP_HS)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i677)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917.)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i917R)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SGH-i937)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG; SMG-917R)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SAMSUNG_blocked_blocked_blocked_blocked; OMNIA7; Orange)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; SUMSUNG; OMNIA 7)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; ARM; Trident\/7.0; Touch; rv:11.0; WPDesktop; SAMSUNG; GT-I8750) like Gecko", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; ARM; Trident\/7.0; Touch; rv:11.0; WPDesktop; GT-I8750) like Gecko", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; en-gb; SAMSUNG GT-I9205 Build\/JDQ39) AppleWebKit\/535.19 (KHTML, like Gecko) Version\/1.0 Chrome\/18.0.1025.308 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; GT-P7510 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SHV-E160K\/VI10.1802 Build\/IMM76D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; SM-T805 Build\/LRX22G) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; SM-T116NQ Build\/KTU84P) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.92 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 5.0.2; SM-G9250 Build\/LRX22G; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/43.0.2357.121 Mobile Safari\/537.36 [FB_IAB\/FB4A;FBAV\/35.0.0.48.273;]", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T705Y Build\/KOT49H) AppleWebKit\/537.36(KHTML, like Gecko) Chrome\/42.0.2311.111 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; GT-I9505 Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/1.5 Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Samsung", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SM-T705 Build\/KOT49H) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.45 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonK800i\/R1AA Browser\/NetFront\/3.3 Profile\/MIDP-2.0 Configuration\/CLDC-1.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; es-ar; SonyEricssonE15a Build\/2.0.1.A.0.47) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.1-update1; pt-br; SonyEricssonU20a Build\/2.1.1.A.0.6) AppleWebKit\/530.17 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/530.17", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.3; en-au; SonyEricssonX10i Build\/3.0.1.G.0.75) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; ru-ru; SonyEricssonST18i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; hr-hr; SonyEricssonST15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.4; sk-sk; SonyEricssonLT15i Build\/4.0.2.A.0.62) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; th-th; SonyEricssonST27i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 2.3.7; de-de; SonyEricssonST25i Build\/6.0.B.3.184) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; pt-br; Xperia Tablet S Build\/TID0092) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.0.3", + "Build": "TID0092", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; LT18i Build\/4.1.A.0.562) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; Sony Tablet S Build\/TISU0R0110) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; es-es; Sony Tablet S Build\/TISU0143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-gb; SonyEricssonLT18i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; fr-ch; SonyEricssonSK17i Build\/4.1.B.0.587) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; SonyEricssonLT26i Build\/6.1.A.2.45) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; LT22i Build\/6.1.B.0.544) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; vi-vn; SonyEricssonLT22i Build\/6.1.B.0.544) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.5.5) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; ST23i Build\/11.0.A.2.10) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Mobile Safari\/535.19", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.4; LT28h Build\/6.1.E.3.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; SGPT13 Build\/TJDS0170) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySO-03E Build\/10.1.E.0.265) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.1.2", + "Build": "10.1.E.0.265", + "Webkit": "534.30", + "Safari": "4.0" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; LT26w Build\/6.2.B.1.96) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/29.0.1547.72 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; SGP321 Build\/10.3.1.A.0.33) AppleWebKit\/537.31 (KHTML, like Gecko) Chrome\/26.0.1410.58 Safari\/537.31", + "mobile": true, + "tablet": true, + "version": { + "Android": "4.2.2", + "Build": "10.3.1.A.0.33", + "Webkit": "537.31", + "Chrome": "26.0.1410.58" + } + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; C5303 Build\/12.1.A.1.205) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/36.0.1985.135 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XL39h Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; sv-se; C5503 Build\/10.1.1.A.1.273) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; C5502 Build\/10.1.1.A.1.310) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; SonyL39t Build\/14.1.M.0.202) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; zh-cn; L39u Build\/14.1.n.0.63) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-tw; M35c Build\/12.0.B.5.37) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; M35c Build\/12.0.B.2.42) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.90 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; zh-CN; M35t Build\/12.0.C.2.42) AppleWebKit\/534.31 (KHTML, like Gecko) UCBrowser\/9.3.2.349 U3\/0.8.0 Mobile Safari\/534.31", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6502 Build\/17.1.A.2.69) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6503 Build\/17.1.A.0.504) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D6543 Build\/17.1.A.2.55) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2004 Build\/20.0.A.0.29) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; D2005 Build\/20.0.A.1.12) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2104 Build\/20.0.B.0.84) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2105 Build\/20.0.B.0.74) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.170 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; pt-br; D2114 Build\/20.0.B.0.85) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2302 Build\/18.0.B.1.23) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; S50h Build\/18.0.b.1.23) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.6.3.413 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2303 Build\/18.0.C.1.13) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2305 Build\/18.0.A.1.30) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.138 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D2306 Build\/18.0.C.1.7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D5303 Build\/19.0.1.A.0.207) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D5306 Build\/19.1.A.0.264) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-CN; XM50h Build\/19.0.D.0.269) AppleWebKit\/533.1 (KHTML, like Gecko) Version\/4.0 UCBrowser\/9.7.6.428 U3\/0.8.0 Mobile Safari\/533.1", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; XM50t Build\/19.0.C.2.59) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; D5322 Build\/19.0.D.0.253) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.131", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; zh-cn; M51w Build\/14.2.A.1.146) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; M51w Build\/14.2.A.1.146) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/33.0.1750.136 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5102 Build\/18.2.A.0.9) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5103 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.92 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.1; D5106 Build\/18.1.A.0.11) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.3; en-gb; C6902 Build\/14.2.A.1.136) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30 GSA\/3.2.17.1009776.arm", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; es-es; C6943 Build\/14.1.G.2.257) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; C6943 Build\/14.3.A.0.681) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; SGP412 Build\/14.1.B.3.320) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1; en-us; SonySGP321 Build\/10.2.C.0.143) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.1.2; SGP351 Build\/10.1.1.A.1.307) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.3; SGP341 Build\/10.4.B.0.569) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP511 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP512 Build\/17.1.A.2.36) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.122 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; fr-ch; SGP311 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; SGP312 Build\/10.1.C.0.344) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; de-de; SGP521 Build\/17.1.A.2.69) AppleWebKit\/537.16 (KHTML, like Gecko) Version\/4.0 Safari\/537.16", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.4.2; zh-cn; SGP541 Build\/17.1.A.2.36) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; SGP551 Build\/17.1.A.2.72) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/34.0.1847.114 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonU5i\/R2CA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "SonyEricssonU5i\/R2AA; Mozilla\/5.0 (SymbianOS\/9.4; U; Series60\/5.0 Profile\/MIDP-2.1 Configuration\/CLDC-1.1) AppleWebKit\/525 (KHTML, like Gecko) Version\/3.0 Safari\/525", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/4.0 (PDA; PalmOS\/sony\/model prmr\/Revision:1.1.54 (en)) NetFront\/3.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Opera\/9.80 (Linux mips; U; InettvBrowser\/2.2 (00014A;SonyDTV115;0002;0100) KDL40EX720; CC\/BEL; en) Presto\/2.7.61 Version\/11.00", + "mobile": false, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; es-ve; SonyST21a2 Build\/11.0.A.6.5) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.2; D2533 Build\/19.2.A.0.391) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/30.0.0.0 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.4.4; Xperia SP Build\/KTU84Q) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.96 Mobile Safari\/537.36", + "mobile": true, + "tablet": false + }, + { + "vendor": "Sony", + "user_agent": "Mozilla \/ 5.0 (Linux; Android 5.0.2; SOT31 Build \/ 28.0.D.6.71) AppleWebKit \/ 537.36 (KHTML, like Gecko) Chrome \/ 39.0.2171.93 Safari \/ 537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; Trident\/7.0; Avant Browser; rv:11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; Avant TriCore) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/30.0.1599.101 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Avant", + "user_agent": "Mozilla\/5.0 (Windows NT 5.1; rv:27.0; Avant TriCore) Gecko\/20100101 Firefox\/27.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/536.28 (KHTML, like Gecko) NX\/3.0.3.12.14 NintendoBrowser\/3.1.1.9577.EU", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo WiiU) AppleWebKit\/534.52 (KHTML, like Gecko) NX\/{Version No} NintendoBrowser\/{Version No}.US", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7567.US", + "mobile": true, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (Nintendo 3DS; U; ; en) Version\/1.7498.US", + "mobile": true, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (PLAYSTATION 3 4.21) AppleWebKit\/531.22.8 (KHTML, like Gecko)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Console", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident\/5.0; Xbox)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident\/4.0; SV1; [eburo v4.0]; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit\/600.1.25 (KHTML, like Gecko) Version\/8.0 Safari\/600.1.25", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/38.0.2125.111 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/537.36 (KHTML, like Gecko) Iron\/37.0.2000.0 Chrome\/37.0.2000.0 Safari\/537.36", + "mobile": false, + "tablet": false, + "version": { + "Iron": "37.0.2000.0" + } + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux i686) AppleWebKit\/537.36 (KHTML, like Gecko) Ubuntu Chromium\/32.0.1700.102 Chrome\/32.0.1700.102 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko\/20100101 Firefox\/24.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko\/20100101 Firefox\/18.0 AlexaToolbar\/psPCtGhf-2.2", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko\/20100101 Firefox\/22.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux ppc; rv:17.0) Gecko\/20130626 Firefox\/17.0 Iceweasel\/17.0.7", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; Linux) AppleWebKit\/535.22+ Midori\/0.4", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit\/535+ (KHTML, like Gecko) Version\/5.0 Safari\/535.20+ Midori\/0.4", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.20 Safari\/537.36 OPR\/15.0.1147.18 (Edition Next)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 5.2; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/27.0.1453.94 Safari\/537.36", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 5.2; WOW64; rv:21.0) Gecko\/20100101 Firefox\/21.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Windows NT 5.2; WOW64) Presto\/2.12.388 Version\/12.14", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko\/20100101 Firefox\/19.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko\/20100101 Firefox\/14.0.1", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident\/6.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Tablet PC 2.0; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; MANMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident\/6.0; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident\/6.0; Touch; MASMJS)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Windows NT 6.2; WOW64; MRA 8.0 (build 5784)) Presto\/2.12.388 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident\/6.0)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.3; Trident\/7.0; rv 11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Windows NT 6.3; WOW64; Trident\/7.0; Touch; rv:11.0) like Gecko", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Mozilla\/5.0 (Unknown; Linux armv7l) AppleWebKit\/537.1+ (KHTML, like Gecko) Safari\/537.1+ HbbTV\/1.1.1 ( ;LGE ;NetCast 4.0 ;03.20.30 ;1.0M ;)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "HbbTV\/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 2000-0000;)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Other", + "user_agent": "Opera\/9.80 (Linux armv7l; HbbTV\/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto\/2.12.362 Version\/12.11", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko\/20.0 Firefox\/20.0 Sailfish Browser\/1.0 like Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Mobile; rv:26.0) Gecko\/26.0 Firefox\/26.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Tablet; rv:26.0) Gecko\/26.0 Firefox\/26.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; CT1020W Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/28.0.1500.94 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.2.2; M6pro Build\/JDQ39) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/35.0.1916.141 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "MobileSafari\/9537.53 CFNetwork\/672.1.13 Darwin\/13.1.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Appcelerator Titanium\/3.2.2.GA (iPod touch\/6.1.6; iPhone OS; en_US;)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera Coast\/3.0.3.78307 CFNetwork\/672.1.15 Darwin\/14.0.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; ALUMIUM10 Build\/IML74K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/32.0.1700.99 Safari\/537.36", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.1; en-us; JY-G3 Build\/JOP40D) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; hu-hu; M758A Build\/JRO03C) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; en-us; EVOTAB Build\/IMM76I) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Java\/1.6.0_22", + "mobile": false, + "tablet": false, + "version": { + "Java": "1.6.0_22" + } + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/6.5.29260\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/6.5.27452\/29.3417; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (iPhone; Opera Mini\/7.1.32694\/27.1407; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.17 (KHTML, like Gecko) Chrome\/24.0.1312.60 Safari\/537.17 OPR\/14.0.1025.52315", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit\/533.17.9 (KHTML, like Gecko) Version\/5.0.2 Mobile\/8H7 Safari\/6533.18.5", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android 2.3.7; Linux; Opera Mobi\/46154) Presto\/2.11.355 Version\/12.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit\/536.26 (KHTML, like Gecko) Version\/6.0 Mobile\/10B141 Safari\/8536.25", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.2; en-us; sdk Build\/MASTER) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2; en-us; sdk Build\/JB_MR1) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Mobile; rv:18.0) Gecko\/18.0 Firefox\/18.0", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/535.12 (KHTML, like Gecko) Maxthon\/3.0 Chrome\/18.0.966.0 Safari\/535.12", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto\/2.10.289 Version\/12.02", + "mobile": false, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "PalmCentro\/v0001 Mozilla\/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource\/Palm-D061; Blazer\/4.5) 16;320x320", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; Microsoft; XDeviceEmulator)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident\/5.0; IEMobile\/9.0; MAL; N880E; China Telecom)", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Series 60; Opera Mini\/7.0.29482\/28.2859; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (S60; SymbOS; Opera Mobi\/SYB-1202242143; U; en-GB) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.3; en-au; 97D Build\/IML74K) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/7.0.29952\/28.2647; U; ru) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android; Opera Mini\/6.1.25375\/28.2555; U; en) Presto\/2.8.119 Version\/11.10", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Mac OS X; Opera Tablet\/35779; U; en) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:10.0.4) Gecko\/10.0.4 Firefox\/10.0.4 Fennec\/10.0.4", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Android; Tablet; rv:18.0) Gecko\/18.0 Firefox\/18.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Linux armv7l; Maemo; Opera Mobi\/14; U; en) Presto\/2.9.201 Version\/11.50", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Opera\/9.80 (Android 2.2.1; Linux; Opera Mobi\/ADR-1207201819; U; en) Presto\/2.10.254 Version\/12.00", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; en-us; sdk Build\/JRO03E) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30", + "mobile": true, + "tablet": false + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Endeavour 1010 Build\/ONDA_MID) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de; Tablet-PC-4 Build\/ICS.g08refem618.20121102) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Generic", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.2.2; de-de; Tagi Tab S10 Build\/8089) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Bot", + "user_agent": "Mozilla\/5.0 (compatible; Googlebot\/2.1; +http:\/\/www.google.com\/bot.html)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http:\/\/grub.org)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Googlebot-Image\/1.0", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Python-urllib\/2.5", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "facebookexternalhit\/1.0 (+http:\/\/www.facebook.com\/externalhit_uatext.php)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "AdsBot-Google (+http:\/\/www.google.com\/adsbot.html)", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "AdsBot-Google-Mobile (+http:\/\/www.google.com\/mobile\/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari", + "mobile": true, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Mozilla\/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit\/534.16 (KHTML, like Gecko, Google Keyword Suggestion) Chrome\/10.0.648.127 Safari\/534.16", + "mobile": false, + "tablet": false + }, + { + "vendor": "Bot", + "user_agent": "Facebot", + "mobile": false, + "tablet": false + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 3.2; hu-hu; SmartTab10-MSM8260-V02d-Dec022011-Vodafone-HU) AppleWebKit\/534.13 (KHTML, like Gecko) Version\/4.0", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; Android 4.0.3; SmartTabII10 Build\/IML74K) AppleWebKit\/535.19 (KHTML, like Gecko) Chrome\/18.0.1025.166 Safari\/535.19", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.1.1; fr-fr; SmartTAB 1002 Build\/JRO03H) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + }, + { + "vendor": "Vodafone", + "user_agent": "Mozilla\/5.0 (Linux; U; Android 4.0.4; de-de, SmartTabII7 Build\/A2107A_A404_107_055_130124_VODA) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Safari\/534.30", + "mobile": true, + "tablet": true + } + ] +} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore b/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore deleted file mode 100644 index 1888a98fa19..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -*.xls -*.xlsx \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php b/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php deleted file mode 100644 index a8804770129..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01pharSimple.php +++ /dev/null @@ -1,112 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once '../Build/PHPExcel.phar'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php deleted file mode 100644 index 574fb0113eb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-ods.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (OpenDocument) -header('Content-Type: application/vnd.oasis.opendocument.spreadsheet'); -header('Content-Disposition: attachment;filename="01simple.ods"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'OpenDocument'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php deleted file mode 100644 index 287b0e891bd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-pdf.php +++ /dev/null @@ -1,104 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PDF Test Document") - ->setSubject("PDF Test Document") - ->setDescription("Test document for PDF, generated using PHP classes.") - ->setKeywords("pdf php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - '
    ' . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Redirect output to a client’s web browser (PDF) -header('Content-Type: application/pdf'); -header('Content-Disposition: attachment;filename="01simple.pdf"'); -header('Cache-Control: max-age=0'); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php deleted file mode 100644 index 60fc901bf8d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xls.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel5) -header('Content-Type: application/vnd.ms-excel'); -header('Content-Disposition: attachment;filename="01simple.xls"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php deleted file mode 100644 index 538888ea735..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple-download-xlsx.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel2007) -header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); -header('Content-Disposition: attachment;filename="01simple.xlsx"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save('php://output'); -exit; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php deleted file mode 100644 index 965fefafebc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simple.php +++ /dev/null @@ -1,118 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php b/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php deleted file mode 100644 index 0b7a46c17d5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/01simplePCLZip.php +++ /dev/null @@ -1,106 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -// Use PCLZip rather than ZipArchive to create the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php deleted file mode 100644 index cc1dc3744f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/02types-xls.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/02types.php b/htdocs/includes/phpoffice/phpexcel/Examples/02types.php deleted file mode 100644 index ff5421e4bba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/02types.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); - -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php b/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php deleted file mode 100644 index 1396717d79d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/03formulas.php +++ /dev/null @@ -1,149 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Sum:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range #1') - ->setCellValue('B2', 3) - ->setCellValue('B3', 7) - ->setCellValue('B4', 13) - ->setCellValue('B5', '=SUM(B2:B4)'); -echo date('H:i:s') , " Sum of Range #1 is " , - $objPHPExcel->getActiveSheet()->getCell('B5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range #2') - ->setCellValue('C2', 5) - ->setCellValue('C3', 11) - ->setCellValue('C4', 17) - ->setCellValue('C5', '=SUM(C2:C4)'); -echo date('H:i:s') , " Sum of Range #2 is " , - $objPHPExcel->getActiveSheet()->getCell('C5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B7', '=SUM(B5:C5)'); -echo date('H:i:s') , " Sum of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B7')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Minimum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C4)'); -echo date('H:i:s') , " Minimum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Maximum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '=MAX(B2:C4)'); -echo date('H:i:s') , " Maximum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B9')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Average of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', '=AVERAGE(B2:C4)'); -echo date('H:i:s') , " Average value of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B10')->getCalculatedValue() , EOL; - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Formulas'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php b/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php deleted file mode 100644 index 14358b05e74..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/04printing.php +++ /dev/null @@ -1,125 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use printing features -echo date('H:i:s') , " Add some data" , EOL; -for ($i = 1; $i < 200; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value'); -} - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&C&HPlease treat this document as confidential!'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Add a drawing to the header -echo date('H:i:s') , " Add a drawing to the header" , EOL; -$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Printing'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php b/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php deleted file mode 100644 index b543ca46bb7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.inc.php +++ /dev/null @@ -1,394 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Invoice'); -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel( gmmktime(0,0,0,date('m'),date('d'),date('Y')) )); -$objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15); -$objPHPExcel->getActiveSheet()->setCellValue('E1', '#12566'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Product Id'); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 'Description'); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 'Price'); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 'Amount'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', 'Total'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', '1001'); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 'PHP for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C4', '20'); -$objPHPExcel->getActiveSheet()->setCellValue('D4', '1'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=IF(D4<>"",C4*D4,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', '1012'); -$objPHPExcel->getActiveSheet()->setCellValue('B5', 'OpenXML for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C5', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('D5', '2'); -$objPHPExcel->getActiveSheet()->setCellValue('E5', '=IF(D5<>"",C5*D5,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('E6', '=IF(D6<>"",C6*D6,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E7', '=IF(D7<>"",C7*D7,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E8', '=IF(D8<>"",C8*D8,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E9', '=IF(D9<>"",C9*D9,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('D11', 'Total excl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E11', '=SUM(E4:E9)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D12', 'VAT:'); -$objPHPExcel->getActiveSheet()->setCellValue('E12', '=E11*0.21'); - -$objPHPExcel->getActiveSheet()->setCellValue('D13', 'Total incl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E13', '=E11+E12'); - -// Add comment -echo date('H:i:s') , " Add comments" , EOL; - -$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.'); - -$objPHPExcel->getActiveSheet()->getComment('E12')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('Total amount of VAT on the current invoice.'); - -$objPHPExcel->getActiveSheet()->getComment('E13')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('Total amount on the current invoice, including VAT.'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setWidth('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setHeight('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setMarginLeft('150pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->getFillColor()->setRGB('EEEEEE'); - - -// Add rich-text string -echo date('H:i:s') , " Add rich-text string" , EOL; -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('This invoice is '); - -$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->getCell('A18')->setValue($objRichText); - -// Merge cells -echo date('H:i:s') , " Merge cells" , EOL; -$objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); -$objPHPExcel->getActiveSheet()->mergeCells('A28:B28'); // Just to test... -$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); // Just to test... - -// Protect cells -echo date('H:i:s') , " Protect cells" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection! -$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); - -// Set cell number formats -echo date('H:i:s') , " Set cell number formats" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('E4:E13')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); -$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D13')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('E13')->getFont()->setBold(true); - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D12')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D13')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); - -$objPHPExcel->getActiveSheet()->getStyle('B5')->getAlignment()->setShrinkToFit(true); - -// Set thin black border outline around column -echo date('H:i:s') , " Set thin black border outline around column" , EOL; -$styleThinBlackBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN, - 'color' => array('argb' => 'FF000000'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('A4:E10')->applyFromArray($styleThinBlackBorderOutline); - - -// Set thick brown border outline around "Total" -echo date('H:i:s') , " Set thick brown border outline around Total" , EOL; -$styleThickBrownBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THICK, - 'color' => array('argb' => 'FF993300'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('D13:E13')->applyFromArray($styleThickBrownBorderOutline); - -// Set fills -echo date('H:i:s') , " Set fills" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->getStartColor()->setARGB('FF808080'); - -// Set style for header row using alternative method -echo date('H:i:s') , " Set style for header row using alternative method" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:E3')->applyFromArray( - array( - 'font' => array( - 'bold' => true - ), - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, - ), - 'borders' => array( - 'top' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, - 'rotation' => 90, - 'startcolor' => array( - 'argb' => 'FFA0A0A0' - ), - 'endcolor' => array( - 'argb' => 'FFFFFFFF' - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('A3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ), - 'borders' => array( - 'left' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('B3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('E3')->applyFromArray( - array( - 'borders' => array( - 'right' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -// Unprotect a cell -echo date('H:i:s') , " Unprotect a cell" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - -// Add a hyperlink to the sheet -echo date('H:i:s') , " Add a hyperlink to an external website" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website'); -$objPHPExcel->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -echo date('H:i:s') , " Add a hyperlink to another cell on a different worksheet within the workbook" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E27', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setUrl("sheet://'Terms and conditions'!A1"); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setTooltip('Review terms and conditions'); -$objPHPExcel->getActiveSheet()->getStyle('E27')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Logo'); -$objDrawing->setDescription('Logo'); -$objDrawing->setPath('./images/officelogo.jpg'); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Paid'); -$objDrawing->setDescription('Paid'); -$objDrawing->setPath('./images/paid.png'); -$objDrawing->setCoordinates('B15'); -$objDrawing->setOffsetX(110); -$objDrawing->setRotation(25); -$objDrawing->getShadow()->setVisible(true); -$objDrawing->getShadow()->setDirection(45); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setDescription('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objDrawing->setCoordinates('D24'); -$objDrawing->setOffsetX(10); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Play around with inserting and removing rows and columns -echo date('H:i:s') , " Play around with inserting and removing rows and columns" , EOL; -$objPHPExcel->getActiveSheet()->insertNewRowBefore(6, 10); -$objPHPExcel->getActiveSheet()->removeRow(6, 10); -$objPHPExcel->getActiveSheet()->insertNewColumnBefore('E', 5); -$objPHPExcel->getActiveSheet()->removeColumn('E', 5); - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename first worksheet -echo date('H:i:s') , " Rename first worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create a second Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Llorem ipsum... -$sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget ante. Sed cursus nunc semper tortor. Aliquam luctus purus non elit. Fusce vel elit commodo sapien dignissim dignissim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur accumsan magna sed massa. Nullam bibendum quam ac ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin augue. Praesent malesuada justo sed orci. Pellentesque lacus ligula, sodales quis, ultricies a, ultricies vitae, elit. Sed luctus consectetuer dolor. Vivamus vel sem ut nisi sodales accumsan. Nunc et felis. Suspendisse semper viverra odio. Morbi at odio. Integer a orci a purus venenatis molestie. Nam mattis. Praesent rhoncus, nisi vel mattis auctor, neque nisi faucibus sem, non dapibus elit pede ac nisl. Cras turpis.'; - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->setCellValue('A3', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A4', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A5', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A6', $sLloremIpsum); - -// Set the worksheet tab color -echo date('H:i:s') , " Set the worksheet tab color" , EOL; -$objPHPExcel->getActiveSheet()->getTabColor()->setARGB('FF0094FF');; - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getAlignment()->setWrapText(true); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(80); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getFont()->setSize(8); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Terms and conditions'); -$objDrawing->setDescription('Terms and conditions'); -$objDrawing->setPath('./images/termsconditions.jpg'); -$objDrawing->setCoordinates('B14'); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename second worksheet -echo date('H:i:s') , " Rename second worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Terms and conditions'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php b/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php deleted file mode 100644 index 66d4980ec51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/05featuredemo.php +++ /dev/null @@ -1,78 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php deleted file mode 100644 index cbdb59b91b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php deleted file mode 100644 index ca04f85e92c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite3; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php deleted file mode 100644 index aa23b8cbb8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-with-cellcaching.php +++ /dev/null @@ -1,128 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; -if (!PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - die($cacheMethod . " caching method is not available" . EOL); -} -echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php deleted file mode 100644 index 00137ad896b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale-xls.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php b/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php deleted file mode 100644 index b0fa44047a3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/06largescale.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php b/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php deleted file mode 100644 index 616b6622ff9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/07reader.php +++ /dev/null @@ -1,76 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php b/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php deleted file mode 100644 index 90e85905019..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/07readerPCLZip.php +++ /dev/null @@ -1,79 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -// Use PCLZip rather than ZipArchive to read the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php b/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php deleted file mode 100644 index f65ec9efd32..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting.php +++ /dev/null @@ -1,189 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Description') - ->setCellValue('B1', 'Amount'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Paycheck received') - ->setCellValue('B2', 100); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Cup of coffee bought') - ->setCellValue('B3', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Cup of coffee bought') - ->setCellValue('B4', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Cup of tea bought') - ->setCellValue('B5', -1.2); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Found some money') - ->setCellValue('B6', 8); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total:') - ->setCellValue('B7', '=SUM(B2:B6)'); - - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_BETWEEN) - ->addCondition('200') - ->addCondition('400'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); -$objConditional1->getStyle()->getFont()->setBold(true); -$objConditional1->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional2 = new PHPExcel_Style_Conditional(); -$objConditional2->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional2->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); -$objConditional2->getStyle()->getFont()->setItalic(true); -$objConditional2->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('0'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); -$objConditional3->getStyle()->getFont()->setItalic(true); -$objConditional3->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional2); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('B2')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(), - 'B3:B7' - ); - - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B7')->getFont()->setBold(true); - - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php b/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php deleted file mode 100644 index bbe084a26fb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/08conditionalformatting2.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', '-0.5') - ->setCellValue('A2', '-0.25') - ->setCellValue('A3', '0.0') - ->setCellValue('A4', '0.25') - ->setCellValue('A5', '0.5') - ->setCellValue('A6', '0.75') - ->setCellValue('A7', '1.0') - ->setCellValue('A8', '1.25') -; - -$objPHPExcel->getActiveSheet()->getStyle('A1:A8') - ->getNumberFormat() - ->setFormatCode( - PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00 - ); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('1'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('A1')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(), - 'A2:A8' - ); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php b/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php deleted file mode 100644 index 6b8c185e3aa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/09pagebreaks.php +++ /dev/null @@ -1,134 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data and page breaks" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname") - ->setCellValue('B1', "Lastname") - ->setCellValue('C1', "Phone") - ->setCellValue('D1', "Fax") - ->setCellValue('E1', "Is Client ?"); - - -// Add data -for ($i = 2; $i <= 50; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, "LName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, "PhoneNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, "FaxNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, true); - - // Add page breaks every 10 rows - if ($i % 10 == 0) { - // Add a page break - $objPHPExcel->getActiveSheet()->setBreak( 'A' . $i, PHPExcel_Worksheet::BREAK_ROW ); - } -} - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setTitle('Printing Options'); - -// Set print headers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddHeader('&C&24&K0000FF&B&U&A'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenHeader('&C&24&K0000FF&B&U&A'); - -// Set print footers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddFooter('&R&D &T&C&F&LPage &P / &N'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenFooter('&L&D &T&C&F&RPage &P / &N'); - - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php deleted file mode 100644 index 7542a52955c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-1.php +++ /dev/null @@ -1,221 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php deleted file mode 100644 index c89173f5c75..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-2.php +++ /dev/null @@ -1,213 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of Germany -// As it's just a simple value filter, we can use FILTERTYPE_FILTER -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'Germany' - ); -// Filter the Date column on a filter value of the year to date -$autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - NULL, - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER); -// Display only sales values that are between 400 and 600 -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, - 400 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('E') - ->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, - 600 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php deleted file mode 100644 index cf2b8acfd99..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter-selection-display.php +++ /dev/null @@ -1,198 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - -// Execute filtering -echo date('H:i:s').' Execute filtering'.EOL; -$autoFilter->showHideRows(); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Display Results of filtering -echo date('H:i:s').' Display filtered rows'.EOL; -foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) { - if ($objPHPExcel->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) { - echo ' Row number - ' , $row->getRowIndex() , ' '; - echo $objPHPExcel->getActiveSheet()->getCell('C'.$row->getRowIndex())->getValue(), ' '; - echo $objPHPExcel->getActiveSheet()->getCell('D'.$row->getRowIndex())->getFormattedValue(), ' '; - echo EOL; - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php b/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php deleted file mode 100644 index ea3f76343b8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/10autofilter.php +++ /dev/null @@ -1,171 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Year') - ->setCellValue('B1', 'Quarter') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Sales'); - -$dataArray = array(array('2010', 'Q1', 'United States', 790), - array('2010', 'Q2', 'United States', 730), - array('2010', 'Q3', 'United States', 860), - array('2010', 'Q4', 'United States', 850), - array('2011', 'Q1', 'United States', 800), - array('2011', 'Q2', 'United States', 700), - array('2011', 'Q3', 'United States', 900), - array('2011', 'Q4', 'United States', 950), - array('2010', 'Q1', 'Belgium', 380), - array('2010', 'Q2', 'Belgium', 390), - array('2010', 'Q3', 'Belgium', 420), - array('2010', 'Q4', 'Belgium', 460), - array('2011', 'Q1', 'Belgium', 400), - array('2011', 'Q2', 'Belgium', 350), - array('2011', 'Q3', 'Belgium', 450), - array('2011', 'Q4', 'Belgium', 500), - array('2010', 'Q1', 'UK', 690), - array('2010', 'Q2', 'UK', 610), - array('2010', 'Q3', 'UK', 620), - array('2010', 'Q4', 'UK', 600), - array('2011', 'Q1', 'UK', 720), - array('2011', 'Q2', 'UK', 650), - array('2011', 'Q3', 'UK', 580), - array('2011', 'Q4', 'UK', 510), - array('2010', 'Q1', 'France', 510), - array('2010', 'Q2', 'France', 490), - array('2010', 'Q3', 'France', 460), - array('2010', 'Q4', 'France', 590), - array('2011', 'Q1', 'France', 620), - array('2011', 'Q2', 'France', 650), - array('2011', 'Q3', 'France', 415), - array('2011', 'Q4', 'France', 570), - array('2010', 'Q1', 'Germany', 720), - array('2010', 'Q2', 'Germany', 680), - array('2010', 'Q3', 'Germany', 640), - array('2010', 'Q4', 'Germany', 660), - array('2011', 'Q1', 'Germany', 680), - array('2011', 'Q2', 'Germany', 620), - array('2011', 'Q3', 'Germany', 710), - array('2011', 'Q4', 'Germany', 690), - array('2010', 'Q1', 'Spain', 510), - array('2010', 'Q2', 'Spain', 490), - array('2010', 'Q3', 'Spain', 470), - array('2010', 'Q4', 'Spain', 420), - array('2011', 'Q1', 'Spain', 460), - array('2011', 'Q2', 'Spain', 390), - array('2011', 'Q3', 'Spain', 430), - array('2011', 'Q4', 'Spain', 415), - array('2010', 'Q1', 'Italy', 440), - array('2010', 'Q2', 'Italy', 410), - array('2010', 'Q3', 'Italy', 420), - array('2010', 'Q4', 'Italy', 450), - array('2011', 'Q1', 'Italy', 430), - array('2011', 'Q2', 'Italy', 370), - array('2011', 'Q3', 'Italy', 350), - array('2011', 'Q4', 'Italy', 335), - ); -$objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A2'); - -// Set title row bold -echo date('H:i:s').' Set title row bold'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); - -// Set autofilter -echo date('H:i:s').' Set autofilter'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php deleted file mode 100644 index b104c7b8ac3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity-xls.php +++ /dev/null @@ -1,109 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php b/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php deleted file mode 100644 index 96f5d99300d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/11documentsecurity.php +++ /dev/null @@ -1,109 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php b/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php deleted file mode 100644 index 77bfee4ce4b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/12cellProtection.php +++ /dev/null @@ -1,107 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Mark Baker") - ->setLastModifiedBy("Mark Baker") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Crouching'); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Tiger'); -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Hidden'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'Dragon'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set cell protection" , EOL; - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); -$objPHPExcel->getActiveSheet() - ->getStyle('A2:B2') - ->getProtection()->setLocked( - PHPExcel_Style_Protection::PROTECTION_UNPROTECTED - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php b/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php deleted file mode 100644 index 01e63ea7751..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/13calculation.php +++ /dev/null @@ -1,235 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); -mt_srand(1234567890); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') , " List implemented functions" , EOL; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data and formulas" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:') - ->setCellValue('A15', 'Sum:') - ->setCellValue('A16', 'Max:') - ->setCellValue('A17', 'Min:') - ->setCellValue('A18', 'Average:') - ->setCellValue('A19', 'Median:') - ->setCellValue('A20', 'Mode:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'CountA:') - ->setCellValue('A23', 'MaxA:') - ->setCellValue('A24', 'MinA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'StDev:') - ->setCellValue('A27', 'StDevA:') - ->setCellValue('A28', 'StDevP:') - ->setCellValue('A29', 'StDevPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A31', 'DevSq:') - ->setCellValue('A32', 'Var:') - ->setCellValue('A33', 'VarA:') - ->setCellValue('A34', 'VarP:') - ->setCellValue('A35', 'VarPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A37', 'Date:'); - - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1') - ->setCellValue('B2', 2) - ->setCellValue('B3', 8) - ->setCellValue('B4', 10) - ->setCellValue('B5', True) - ->setCellValue('B6', False) - ->setCellValue('B7', 'Text String') - ->setCellValue('B9', '22') - ->setCellValue('B10', 4) - ->setCellValue('B11', 6) - ->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)') - ->setCellValue('B15', '=SUM(B2:B12)') - ->setCellValue('B16', '=MAX(B2:B12)') - ->setCellValue('B17', '=MIN(B2:B12)') - ->setCellValue('B18', '=AVERAGE(B2:B12)') - ->setCellValue('B19', '=MEDIAN(B2:B12)') - ->setCellValue('B20', '=MODE(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B22', '=COUNTA(B2:B12)') - ->setCellValue('B23', '=MAXA(B2:B12)') - ->setCellValue('B24', '=MINA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B26', '=STDEV(B2:B12)') - ->setCellValue('B27', '=STDEVA(B2:B12)') - ->setCellValue('B28', '=STDEVP(B2:B12)') - ->setCellValue('B29', '=STDEVPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B31', '=DEVSQ(B2:B12)') - ->setCellValue('B32', '=VAR(B2:B12)') - ->setCellValue('B33', '=VARA(B2:B12)') - ->setCellValue('B34', '=VARP(B2:B12)') - ->setCellValue('B35', '=VARPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B37', '=DATE(2007, 12, 21)') - ->setCellValue('B38', '=DATEDIF( DATE(2007, 12, 21), DATE(2007, 12, 22), "D" )') - ->setCellValue('B39', '=DATEVALUE("01-Feb-2006 10:06 AM")') - ->setCellValue('B40', '=DAY( DATE(2006, 1, 2) )') - ->setCellValue('B41', '=DAYS360( DATE(2002, 2, 3), DATE(2005, 5, 31) )'); - - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2') - ->setCellValue('C2', 1) - ->setCellValue('C3', 2) - ->setCellValue('C4', 2) - ->setCellValue('C5', 3) - ->setCellValue('C6', 3) - ->setCellValue('C7', 3) - ->setCellValue('C8', '0') - ->setCellValue('C9', 4) - ->setCellValue('C10', 4) - ->setCellValue('C11', 4) - ->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)') - ->setCellValue('C15', '=SUM(C2:C12)') - ->setCellValue('C16', '=MAX(C2:C12)') - ->setCellValue('C17', '=MIN(C2:C12)') - ->setCellValue('C18', '=AVERAGE(C2:C12)') - ->setCellValue('C19', '=MEDIAN(C2:C12)') - ->setCellValue('C20', '=MODE(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C22', '=COUNTA(C2:C12)') - ->setCellValue('C23', '=MAXA(C2:C12)') - ->setCellValue('C24', '=MINA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C26', '=STDEV(C2:C12)') - ->setCellValue('C27', '=STDEVA(C2:C12)') - ->setCellValue('C28', '=STDEVP(C2:C12)') - ->setCellValue('C29', '=STDEVPA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C31', '=DEVSQ(C2:C12)') - ->setCellValue('C32', '=VAR(C2:C12)') - ->setCellValue('C33', '=VARA(C2:C12)') - ->setCellValue('C34', '=VARP(C2:C12)') - ->setCellValue('C35', '=VARPA(C2:C12)'); - - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3') - ->setCellValue('D2', 2) - ->setCellValue('D3', 3) - ->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D14', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E12', 'Other functions') - ->setCellValue('E14', '=PI()') - ->setCellValue('E15', '=RAND()') - ->setCellValue('E16', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E17', 'Count of both ranges:') - ->setCellValue('F17', '=COUNT(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E18', 'Total of both ranges:') - ->setCellValue('F18', '=SUM(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E19', 'Maximum of both ranges:') - ->setCellValue('F19', '=MAX(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E20', 'Minimum of both ranges:') - ->setCellValue('F20', '=MIN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E21', 'Average of both ranges:') - ->setCellValue('F21', '=AVERAGE(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E22', 'Median of both ranges:') - ->setCellValue('F22', '=MEDIAN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E23', 'Mode of both ranges:') - ->setCellValue('F23', '=MODE(B2:C12)'); - - -// Calculated data -echo date('H:i:s') , " Calculated data" , EOL; -for ($col = 'B'; $col != 'G'; ++$col) { - for($row = 14; $row <= 41; ++$row) { - if ((!is_null($formula = $objPHPExcel->getActiveSheet()->getCell($col.$row)->getValue())) && - ($formula[0] == '=')) { - echo 'Value of ' , $col , $row , ' [' , $formula , ']: ' , - $objPHPExcel->getActiveSheet()->getCell($col.$row)->getCalculatedValue() . EOL; - } - } -} - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php deleted file mode 100644 index 3fd3d69f328..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/14excel5.php +++ /dev/null @@ -1,63 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php deleted file mode 100644 index 2f8fa5ee9d8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation-xls.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " !!! - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php b/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php deleted file mode 100644 index 932bacc6fa0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/15datavalidation.php +++ /dev/null @@ -1,143 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " if your list is simply a comma-separated list of values !!! - - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php b/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php deleted file mode 100644 index 71ebfd00dcc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/16csv.php +++ /dev/null @@ -1,107 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once '../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0) - ->save(str_replace('.php', '.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Read from CSV format" , EOL; -$callStartTime = microtime(true); -$objReader = PHPExcel_IOFactory::createReader('CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0); -$objPHPExcelFromCSV = $objReader->load(str_replace('.php', '.csv', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter2007 = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'Excel2007'); -$objWriter2007->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriterCSV = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'CSV'); -$objWriterCSV->setExcelCompatibility(true); -$objWriterCSV->save(str_replace('.php', '_excel.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_excel.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/17html.php b/htdocs/includes/phpoffice/phpexcel/Examples/17html.php deleted file mode 100644 index 0dc825b04a1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/17html.php +++ /dev/null @@ -1,64 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to HTML format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->setSheetIndex(0); -//$objWriter->setImagesRoot('http://www.example.com'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php b/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php deleted file mode 100644 index 3c6fcb49227..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/18extendedcalculation.php +++ /dev/null @@ -1,108 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') . " List implemented functions\n"; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') . " Create new PHPExcel object\n"; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') . " Add some data\n"; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 8); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 10); -$objPHPExcel->getActiveSheet()->setCellValue('B5', True); -$objPHPExcel->getActiveSheet()->setCellValue('B6', False); -$objPHPExcel->getActiveSheet()->setCellValue('B7', 'Text String'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('B11', 6); -$objPHPExcel->getActiveSheet()->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2'); -$objPHPExcel->getActiveSheet()->setCellValue('C2', 1); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C4', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C5', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C6', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C7', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C8', '0'); -$objPHPExcel->getActiveSheet()->setCellValue('C9', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C11', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 3); -$objPHPExcel->getActiveSheet()->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D5', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Other functions'); -$objPHPExcel->getActiveSheet()->setCellValue('E2', '=PI()'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', '=RAND()'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E14', 'Count of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('F14', '=COUNT(B2:C12)'); - -// Calculated data -echo date('H:i:s') . " Calculated data\n"; -echo 'Value of B14 [=COUNT(B2:B12)]: ' . $objPHPExcel->getActiveSheet()->getCell('B14')->getCalculatedValue() . "\r\n"; - - -// Echo memory peak usage -echo date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n"; - -// Echo done -echo date('H:i:s') . " Done" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php b/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php deleted file mode 100644 index acea22b6d72..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/19namedrange.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', 'Maarten') - ->setCellValue('B2', 'Balliauw') - ->setCellValue('B3', '=B1 & " " & B2'); - -// Define named ranges -echo date('H:i:s') , " Define named ranges" , EOL; -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonName', $objPHPExcel->getActiveSheet(), 'B1') ); -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonLN', $objPHPExcel->getActiveSheet(), 'B2') ); - -// Rename named ranges -echo date('H:i:s') , " Rename named ranges" , EOL; -$objPHPExcel->getNamedRange('PersonName')->setName('PersonFN'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create new Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', '=PersonFN') - ->setCellValue('B2', '=PersonLN') - ->setCellValue('B3', '=PersonFN & " " & PersonLN'); - -// Resolve range -echo date('H:i:s') , " Resolve range" , EOL; -echo 'Cell B1 {=PersonFN}: ' , $objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue() , EOL; -echo 'Cell B3 {=PersonFN & " " & PersonLN}: ' , $objPHPExcel->getActiveSheet()->getCell('B3')->getCalculatedValue() , EOL; -echo 'Cell Person!B1: ' , $objPHPExcel->getActiveSheet()->getCell('Person!B1')->getCalculatedValue() , EOL; - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person (cloned)'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php deleted file mode 100644 index 98eff9ec1b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/20readexcel5.php +++ /dev/null @@ -1,79 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("14excel5.xls")) { - exit("Please run 14excel5.php first.\n"); -} - -echo date('H:i:s') , " Load workbook from Excel5 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("14excel5.xls"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo 'Call time to load Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done reading file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php b/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php deleted file mode 100644 index 11c56b2caf0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/21pdf.php +++ /dev/null @@ -1,94 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -echo date('H:i:s') , " Hide grid lines" , EOL; -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -echo date('H:i:s') , " Set orientation to landscape" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); - - -echo date('H:i:s') , " Write to PDF format using {$rendererName}" , EOL; - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->setSheetIndex(0); -$objWriter->save(str_replace('.php', '_'.$rendererName.'.pdf', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_'.$rendererName.'.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php b/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php deleted file mode 100644 index c17bc8683ae..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/22heavilyformatted.php +++ /dev/null @@ -1,116 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$objPHPExcel->getActiveSheet()->getStyle('A1:T100')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - ) - ); - -$objPHPExcel->getActiveSheet()->getStyle('C5:R95')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - ) - ); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php b/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php deleted file mode 100644 index 652b4ed2f27..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/23sharedstyles.php +++ /dev/null @@ -1,124 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$sharedStyle1 = new PHPExcel_Style(); -$sharedStyle2 = new PHPExcel_Style(); - -$sharedStyle1->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$sharedStyle2->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:T100"); -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, "C5:R95"); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php b/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php deleted file mode 100644 index afa6d0c416c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/24readfilter.php +++ /dev/null @@ -1,77 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Check prerequisites -if (!file_exists("06largescale.xlsx")) { - exit("Please run 06largescale.php first.\n"); -} - -class MyReadFilter implements PHPExcel_Reader_IReadFilter -{ - public function readCell($column, $row, $worksheetName = '') { - // Read title row and rows 20 - 30 - if ($row == 1 || ($row >= 20 && $row <= 30)) { - return true; - } - - return false; - } -} - - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objReader->setReadFilter( new MyReadFilter() ); -$objPHPExcel = $objReader->load("06largescale.xlsx"); - -echo date('H:i:s') , " Remove unnecessary rows" , EOL; -$objPHPExcel->getActiveSheet()->removeRow(2, 18); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php b/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php deleted file mode 100644 index 7a3424e2088..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/25inmemoryimage.php +++ /dev/null @@ -1,83 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Generate an image -echo date('H:i:s') , " Generate an image" , EOL; -$gdImage = @imagecreatetruecolor(120, 20) or die('Cannot Initialize new GD image stream'); -$textColor = imagecolorallocate($gdImage, 255, 255, 255); -imagestring($gdImage, 1, 5, 5, 'Created with PHPExcel', $textColor); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); -$objDrawing->setName('Sample image'); -$objDrawing->setDescription('Sample image'); -$objDrawing->setImageResource($gdImage); -$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); -$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php b/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php deleted file mode 100644 index ad0b400594e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/26utf8.php +++ /dev/null @@ -1,122 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Change these values to select the PDF Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -// Read from Excel2007 (.xlsx) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("templates/26template.xlsx"); - -/** at this point, we could do some manipulations with the template, but we skip this step */ - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to HTML (.html) -echo date('H:i:s') , " Write to HTML format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to PDF (.pdf) -echo date('H:i:s') , " Write to PDF format" , EOL; -try { - if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - echo ( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' . - EOL - ); - } else { - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->save(str_replace('.php', '.pdf', __FILE__)); - echo date('H:i:s') , " File written to " , str_replace('.php', '.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - } -} catch (Exception $e) { - echo date('H:i:s') , ' EXCEPTION: ', $e->getMessage() , EOL; -} - -// Remove first two rows with field headers before exporting to CSV -echo date('H:i:s') , " Removing first two heading rows for CSV export" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->removeRow(1, 2); - -// Export to CSV (.csv) -echo date('H:i:s') , " Write to CSV format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV'); -$objWriter->save(str_replace('.php', '.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to CSV with BOM (.csv) -echo date('H:i:s') , " Write to CSV format (with BOM)" , EOL; -$objWriter->setUseBOM(true); -$objWriter->save(str_replace('.php', '-bom.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '-bom.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php b/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php deleted file mode 100644 index 17db771c3b4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/27imagesexcel5.php +++ /dev/null @@ -1,64 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Read from Excel5 (.xls) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/27template.xls"); - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php b/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php deleted file mode 100644 index 3e1e681de37..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/28iterator.php +++ /dev/null @@ -1,68 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("05featuredemo.xlsx"); - -echo date('H:i:s') , " Iterate worksheets" , EOL; -foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - echo 'Worksheet - ' , $worksheet->getTitle() , EOL; - - foreach ($worksheet->getRowIterator() as $row) { - echo ' Row number - ' , $row->getRowIndex() , EOL; - - $cellIterator = $row->getCellIterator(); - $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set - foreach ($cellIterator as $cell) { - if (!is_null($cell)) { - echo ' Cell - ' , $cell->getCoordinate() , ' - ' , $cell->getCalculatedValue() , EOL; - } - } - } -} - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php b/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php deleted file mode 100644 index bb387f9cd1d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/29advancedvaluebinder.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Set timezone -echo date('H:i:s') , " Set timezone" , EOL; -date_default_timezone_set('UTC'); - -// Set value binder -echo date('H:i:s') , " Set value binder" , EOL; -PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() ); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial'); -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(14); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String value:') - ->setCellValue('B1', 'Mark Baker'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Numeric value #1:') - ->setCellValue('B2', 12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Numeric value #2:') - ->setCellValue('B3', -12.345); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Numeric value #3:') - ->setCellValue('B4', .12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Numeric value #4:') - ->setCellValue('B5', '12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Numeric value #5:') - ->setCellValue('B6', '1.2345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Numeric value #6:') - ->setCellValue('B7', '.12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Numeric value #7:') - ->setCellValue('B8', '1.234e-5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Numeric value #8:') - ->setCellValue('B9', '-1.234e+5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Boolean value:') - ->setCellValue('B10', 'TRUE'); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Percentage value #1:') - ->setCellValue('B11', '10%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'Percentage value #2:') - ->setCellValue('B12', '12.5%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Fraction value #1:') - ->setCellValue('B13', '-1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Fraction value #2:') - ->setCellValue('B14', '3 1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A15', 'Fraction value #3:') - ->setCellValue('B15', '-12 3/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A16', 'Fraction value #4:') - ->setCellValue('B16', '13/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A17', 'Currency value #1:') - ->setCellValue('B17', '$12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A18', 'Currency value #2:') - ->setCellValue('B18', '$12345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A19', 'Currency value #3:') - ->setCellValue('B19', '$12,345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A20', 'Date value #1:') - ->setCellValue('B20', '21 December 1983'); - -$objPHPExcel->getActiveSheet()->setCellValue('A21', 'Date value #2:') - ->setCellValue('B21', '19-Dec-1960'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'Date value #3:') - ->setCellValue('B22', '07/12/1982'); - -$objPHPExcel->getActiveSheet()->setCellValue('A23', 'Date value #4:') - ->setCellValue('B23', '24-11-1950'); - -$objPHPExcel->getActiveSheet()->setCellValue('A24', 'Date value #5:') - ->setCellValue('B24', '17-Mar'); - -$objPHPExcel->getActiveSheet()->setCellValue('A25', 'Time value #1:') - ->setCellValue('B25', '01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'Time value #2:') - ->setCellValue('B26', '01:30:15'); - -$objPHPExcel->getActiveSheet()->setCellValue('A27', 'Date/Time value:') - ->setCellValue('B27', '19-Dec-1960 01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A28', 'Formula:') - ->setCellValue('B28', '=SUM(B2:B9)'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Advanced value binder'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/30template.php b/htdocs/includes/phpoffice/phpexcel/Examples/30template.php deleted file mode 100644 index 2b66c2ceb41..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/30template.php +++ /dev/null @@ -1,91 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - - -echo date('H:i:s') , " Load from Excel5 template" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/30template.xls"); - - - - -echo date('H:i:s') , " Add new data to the template" , EOL; -$data = array(array('title' => 'Excel for dummies', - 'price' => 17.99, - 'quantity' => 2 - ), - array('title' => 'PHP for dummies', - 'price' => 15.99, - 'quantity' => 1 - ), - array('title' => 'Inside OOP', - 'price' => 12.95, - 'quantity' => 1 - ) - ); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel(time())); - -$baseRow = 5; -foreach($data as $r => $dataRow) { - $row = $baseRow + $r; - $objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1); - - $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $r+1) - ->setCellValue('B'.$row, $dataRow['title']) - ->setCellValue('C'.$row, $dataRow['price']) - ->setCellValue('D'.$row, $dataRow['quantity']) - ->setCellValue('E'.$row, '=C'.$row.'*D'.$row); -} -$objPHPExcel->getActiveSheet()->removeRow($baseRow-1,1); - - -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php b/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php deleted file mode 100644 index f3ad0a4bdb7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write-xls.php +++ /dev/null @@ -1,119 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel5'; -$inputFileName = 'templates/31docproperties.xls'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 95 XLS Test Document") - ->setSubject("Office 95 XLS Test Document") - ->setDescription("Test XLS document, generated using PHPExcel") - ->setKeywords("office 95 biff php"); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel5 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php b/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php deleted file mode 100644 index 3f5328c5ec3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/31docproperties_write.php +++ /dev/null @@ -1,119 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel2007'; -$inputFileName = 'templates/31docproperties.xlsx'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test XLSX document, generated using PHPExcel") - ->setKeywords("office 2007 openxml php"); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel2007 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php b/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php deleted file mode 100644 index be1925a5b4f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/32chartreadwrite.php +++ /dev/null @@ -1,131 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = basename($inputFileName); - - echo date('H:i:s') , " Write Tests to Excel2007 file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php deleted file mode 100644 index 53fe52398d2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-area.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php deleted file mode 100644 index cac29f29f55..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar-stacked.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php deleted file mode 100644 index 14fd5d485f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-bar.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Bar Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php deleted file mode 100644 index 00bf0d71b50..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column-2.php +++ /dev/null @@ -1,154 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', '', 'Budget', 'Forecast', 'Actual'), - array('2010', 'Q1', 47, 44, 43 ), - array('', 'Q2', 56, 53, 50 ), - array('', 'Q3', 52, 46, 45 ), - array('', 'Q4', 45, 40, 40 ), - array('2011', 'Q1', 51, 42, 46 ), - array('', 'Q2', 53, 58, 56 ), - array('', 'Q3', 64, 66, 69 ), - array('', 'Q4', 54, 55, 56 ), - array('2012', 'Q1', 49, 52, 58 ), - array('', 'Q2', 68, 73, 86 ), - array('', 'Q3', 72, 78, 0 ), - array('', 'Q4', 50, 60, 0 ), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 'Budget' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 'Forecast' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), // 'Actual' -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$B$13', NULL, 12), // Q1 to Q4 for 2010 to 2012 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_BOTTOM, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Grouped Column Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Financial Period'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('G2'); -$chart->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php deleted file mode 100644 index ae9c6185e26..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-column.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php deleted file mode 100644 index 8ea72126ccb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-composite.php +++ /dev/null @@ -1,203 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 'Rainfall (mm)', 'Temperature (°F)', 'Humidity (%)'), - array('Jan', 78, 52, 61), - array('Feb', 64, 54, 62), - array('Mar', 62, 57, 63), - array('Apr', 21, 62, 59), - array('May', 11, 75, 60), - array('Jun', 1, 75, 57), - array('Jul', 1, 79, 56), - array('Aug', 1, 79, 59), - array('Sep', 10, 75, 60), - array('Oct', 40, 68, 63), - array('Nov', 69, 62, 64), - array('Dec', 89, 57, 66), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // Temperature -); -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // Rainfall -); -$dataSeriesLabels3 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // Humidity -); - -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$13', NULL, 12), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues1 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series1->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - NULL, // plotCategory - $dataSeriesValues2 // plotValues -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues3 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series3 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels3, // plotLabel - NULL, // plotCategory - $dataSeriesValues3 // plotValues -); - - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series1, $series2, $series3)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Average Weather Chart for Crete'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('O16'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php deleted file mode 100644 index 145ae72e8fd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-line.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stacked Line Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php deleted file mode 100644 index a95c2763323..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-multiple-charts.php +++ /dev/null @@ -1,220 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea(NULL, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel1 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel1 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series2->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea(NULL, array($series2)); -// Set the chart legend -$legend2 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title2 = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel2 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - $legend2, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel2 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php deleted file mode 100644 index 5af02905bfc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-pie.php +++ /dev/null @@ -1,215 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_PIECHART, // plotType - NULL, // plotGrouping (Pie charts don't have any grouping) - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set up a layout object for the Pie chart -$layout1 = new PHPExcel_Chart_Layout(); -$layout1->setShowVal(TRUE); -$layout1->setShowPercent(TRUE); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea($layout1, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test Pie Chart'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Pie charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_DONUTCHART, // plotType - NULL, // plotGrouping (Donut charts don't have any grouping) - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); - -// Set up a layout object for the Pie chart -$layout2 = new PHPExcel_Chart_Layout(); -$layout2->setShowVal(TRUE); -$layout2->setShowCatName(TRUE); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea($layout2, array($series2)); - -$title2 = new PHPExcel_Chart_Title('Test Donut Chart'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - NULL, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Like Pie charts, Donut charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php deleted file mode 100644 index b8b427f3b12..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-radar.php +++ /dev/null @@ -1,154 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Jan', 47, 45, 71), - array('Feb', 56, 73, 86), - array('Mar', 52, 61, 69), - array('Apr', 40, 52, 60), - array('May', 42, 55, 71), - array('Jun', 58, 63, 76), - array('Jul', 53, 61, 89), - array('Aug', 46, 69, 85), - array('Sep', 62, 75, 81), - array('Oct', 51, 70, 96), - array('Nov', 55, 66, 89), - array('Dec', 68, 62, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_RADARCHART, // plotType - NULL, // plotGrouping (Radar charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_MARKER // plotStyle -); - -// Set up a layout object for the Pie chart -$layout = new PHPExcel_Chart_Layout(); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea($layout, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Radar Chart'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Radar charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('M15'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php deleted file mode 100644 index 250c61d7e4c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-scatter.php +++ /dev/null @@ -1,138 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART, // plotType - NULL, // plotGrouping (Scatter charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_LINEMARKER // plotStyle -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Scatter Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php b/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php deleted file mode 100644 index b38fd518153..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/33chartcreate-stock.php +++ /dev/null @@ -1,151 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('Counts', 'Max', 'Min', 'Min Threshold', 'Max Threshold' ), - array(10, 10, 5, 0, 50 ), - array(30, 20, 10, 0, 50 ), - array(20, 30, 15, 0, 50 ), - array(40, 10, 0, 0, 50 ), - array(100, 40, 5, 0, 50 ), - ), null, 'A1', true -); -$objWorksheet->getStyle('B2:E6')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), //Max / Open - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), //Min / Close - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), //Min Threshold / Min - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), //Max Threshold / Max -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$6', NULL, 5), // Counts -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$6', NULL, 5), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_STOCKCHART, // plotType - null, // plotGrouping - if we set this to not null, then xlsx throws error - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stock Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Counts'); -$yAxisLabel = new PHPExcel_Chart_Title('Values'); - -// Create the chart -$chart = new PHPExcel_Chart( - 'stock-chart', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$filename = str_replace('.php', '.xlsx', __FILE__); -if(file_exists($filename)) { - unlink($filename); -} -$objWriter->save($filename); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php b/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php deleted file mode 100644 index cb586a31867..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/34chartupdate.php +++ /dev/null @@ -1,78 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -if (!file_exists("33chartcreate-bar.xlsx")) { - exit("Please run 33chartcreate-bar.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader("Excel2007"); -$objReader->setIncludeCharts(TRUE); -$objPHPExcel = $objReader->load("33chartcreate-bar.xlsx"); - - -echo date('H:i:s') , " Update cell data values that are displayed in the chart" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array(50-12, 50-15, 50-21), - array(50-56, 50-73, 50-86), - array(50-52, 50-61, 50-69), - array(50-30, 50-32, 50), - ), - NULL, - 'B2' -); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php b/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php deleted file mode 100644 index f0e79636b11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/35chartrender.php +++ /dev/null @@ -1,134 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src/'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - - if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - - $jpegFile = '35'.str_replace('.xlsx', '.jpg', substr($inputFileNameShort,2)); - if (file_exists($jpegFile)) { - unlink($jpegFile); - } - try { - $chart->render($jpegFile); - } catch (Exception $e) { - echo 'Error rendering chart: ',$e->getMessage(); - } - } - } - } - - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done rendering charts as images" , EOL; -echo 'Image files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php b/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php deleted file mode 100644 index b4bae11cba2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwriteHTML.php +++ /dev/null @@ -1,151 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.html', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php b/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php deleted file mode 100644 index 10d62cd04ba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/36chartreadwritePDF.php +++ /dev/null @@ -1,174 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// for PDF files, and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -$rendererLibrary = 'mPDF5.4'; -//$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Change these values to select the Rendering library that you wish to use -// for Chart images, and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.pdf', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php b/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php deleted file mode 100644 index 070f512a2a7..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/37page_layout_view.php +++ /dev/null @@ -1,83 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Set the page layout view as page layout -$objPHPExcel->getActiveSheet()->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php b/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php deleted file mode 100644 index 901b887eeb9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/38cloneWorksheet.php +++ /dev/null @@ -1,118 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Clone worksheet -echo date('H:i:s') , " Clone worksheet" , EOL; -$clonedSheet = clone $objPHPExcel->getActiveSheet(); -$clonedSheet - ->setCellValue('A1', 'Goodbye') - ->setCellValue('A2', 'cruel') - ->setCellValue('C1', 'Goodbye') - ->setCellValue('C2', 'cruel'); - -// Rename cloned worksheet -echo date('H:i:s') , " Rename cloned worksheet" , EOL; -$clonedSheet->setTitle('Simple Clone'); -$objPHPExcel->addSheet($clonedSheet); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php b/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php deleted file mode 100644 index 5dadc09922f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/39dropdown.php +++ /dev/null @@ -1,175 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties() - ->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -function transpose($value) { - return array($value); -} - -// Add some data -$continentColumn = 'D'; -$column = 'F'; - -// Set data for dropdowns -foreach(glob('./data/continents/*') as $key => $filename) { - $continent = pathinfo($filename, PATHINFO_FILENAME); - echo "Loading $continent", EOL; - $continent = str_replace(' ','_',$continent); - $countries = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - $countryCount = count($countries); - - // Transpose $countries from a row to a column array - $countries = array_map('transpose', $countries); - $objPHPExcel->getActiveSheet() - ->fromArray($countries, null, $column . '1'); - $objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - $continent, - $objPHPExcel->getActiveSheet(), $column . '1:' . $column . $countryCount - ) - ); - $objPHPExcel->getActiveSheet() - ->getColumnDimension($column) - ->setVisible(false); - - $objPHPExcel->getActiveSheet() - ->setCellValue($continentColumn . ($key+1), $continent); - - ++$column; -} - -// Hide the dropdown data -$objPHPExcel->getActiveSheet() - ->getColumnDimension($continentColumn) - ->setVisible(false); - -$objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - 'Continents', - $objPHPExcel->getActiveSheet(), $continentColumn . '1:' . $continentColumn . ($key+1) - ) -); - - -// Set selection cells -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', 'Continent:'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B1', 'Select continent'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', '=' . $column . 1); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', 'Select country'); -$objPHPExcel->getActiveSheet() - ->getStyle('A1:A3') - ->getFont()->setBold(true); - -// Set linked validators -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B1') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Continent is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a continent from the drop-down list.') - ->setFormula1('=Continents'); - -$objPHPExcel->getActiveSheet() - ->setCellValue('A3', 'Country:'); -$objPHPExcel->getActiveSheet() - ->getStyle('A3') - ->getFont()->setBold(true); - -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B3') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Country is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a country from the drop-down list.') - ->setFormula1('=INDIRECT($B$1)'); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Save Excel 2007 file -// This linked validation list method only seems to work for Excel2007, not for Excel5 -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php b/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php deleted file mode 100644 index be31951a492..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/40duplicateStyle.php +++ /dev/null @@ -1,51 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); -$worksheet = $objPHPExcel->getActiveSheet(); - -echo date('H:i:s') , " Create styles array" , EOL; -$styles = array(); -for ($i = 0; $i < 10; $i++) { - $style = new PHPExcel_Style(); - $style->getFont()->setSize($i + 4); - $styles[] = $style; -} - -echo date('H:i:s') , " Add data (begin)" , EOL; -$t = microtime(true); -for ($col = 0; $col < 50; $col++) { - for ($row = 0; $row < 100; $row++) { - $str = ($row + $col); - $style = $styles[$row % 10]; - $coord = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 1); - $worksheet->setCellValue($coord, $str); - $worksheet->duplicateStyle($style, $coord); - } -} -$d = microtime(true) - $t; -echo date('H:i:s') , " Add data (end), time: " . round($d, 2) . " s", EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/41password.php b/htdocs/includes/phpoffice/phpexcel/Examples/41password.php deleted file mode 100644 index 7b03e4f9a1f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/41password.php +++ /dev/null @@ -1,84 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Set password against the spreadsheet file -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword('secret'); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php b/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php deleted file mode 100644 index 4e99b853544..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/42richText.php +++ /dev/null @@ -1,159 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; - -$html1=' -

    My very first example of rich text
    generated from html markup

    -

    - -This block contains an italicized word; -while this block uses an underline. - -

    -

    -I want to eat healthy foodpizza. - -'; - -$html2='

    - - 100°C is a hot temperature - -
    - - 10°F is cold - -

    '; - -$html3='23 equals 8'; - -$html4='H2SO4 is the chemical formula for Sulphuric acid'; - - -$wizard = new PHPExcel_Helper_HTML; -$richText = $wizard->toRichTextObject($html1); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', $richText); - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(48); -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A1') - ->getAlignment() - ->setWrapText(true); - -$richText = $wizard->toRichTextObject($html2); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A2', $richText); - -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A2') - ->getAlignment() - ->setWrapText(true); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A3', $wizard->toRichTextObject($html3)); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', $wizard->toRichTextObject($html4)); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php b/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php deleted file mode 100644 index 99d6df80728..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLReader.php +++ /dev/null @@ -1,61 +0,0 @@ -load("Excel2003XMLTest.xml"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel5 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml b/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml deleted file mode 100644 index fb2d305c379..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/Excel2003XMLTest.xml +++ /dev/null @@ -1 +0,0 @@ -3#0000004#0000ff5#0080006#00ccff7#8000808#9933669#c0c0c010#c4751211#ccffcc12#ddbc7d13#ff000014#ff00ff15#ff660016#ff990017#ff99cc18#ffff0090001386024075FalseFalse - - - - - - - - - - - - - - - - - - - - - - - - - - - - Test String 1 - 1 - 5 - A - E - 6 - AE - - - Test - String 2 - 2 - 6 - B - F - 8 - BF - - - Test #3 - 3 - 7 - C - G - 10 - CG - - - Test with (") in string - 4 - 8 - D - H - 12 - DH - - - 10 - 26 - 36 - - - 1.23 - 1 - - - - 2.34 - 0 - - - 3.45 - - - - 1960-12-19T00:00:00.000 - TOP - #N/A - - - 1.5 - #DIV/0! - - - BOTTOM - - - LEFT - - - RIGHT - - - - BOX - - Test Column 1 - - - Test Column 2 - - - Test Column 3 - -
    - - -
    -
    - - - - - - 600 - 600 - - - - - 3 - 17 - 4 - - - False - False - - - - - - - - - - - - - - - - - - - - - - - Heading 1 - Heading 2 - Third Heading - Date Heading - Adjusted Date - Adjusted Number - - - ABC - 1 - 1.1100000000000001 - 2001-01-01T00:00:00.000 - 2000-12-31T00:00:00.000 - 1.1100000000000001 - - - BCD - 2 - 2.2200000000000002 - 2002-02-02T00:00:00.000 - 2002-01-31T00:00:00.000 - 4.4400000000000004 - - - CDE - 3 - 3.33 - 2003-03-03T00:00:00.000 - 2003-02-28T00:00:00.000 - 9.99 - - - DEF - 4 - 4.4400000000000004 - 2004-04-03T23:00:00.000 - 2004-03-30T23:00:00.000 - 17.760000000000002 - - - EFG - 5 - 5.55 - 2005-05-04T23:00:00.000 - 2005-04-29T23:00:00.000 - 27.75 - - - FGH - 6 - 6.66 - 2006-06-05T23:00:00.000 - 2006-05-30T23:00:00.000 - 39.96 - - - GHI - 7 - 7.77 - 2007-07-06T23:00:00.000 - 2007-06-29T23:00:00.000 - 54.39 - - - HIJ - 8 - 8.8800000000000008 - 2008-08-07T23:00:00.000 - 2008-07-30T23:00:00.000 - 71.040000000000006 - - - IJK - 9 - 9.99 - 2009-09-08T23:00:00.000 - 2009-08-30T23:00:00.000 - 89.91 - - - JKL - 10 - 11.1 - 2010-10-09T23:00:00.000 - 2010-09-29T23:00:00.000 - 111 - - - KLM - 11 - 12.21 - 2011-11-11T00:00:00.000 - 2011-10-31T00:00:00.000 - 134.31 - - - LMN - 12 - 13.32 - 2012-12-12T00:00:00.000 - 2012-11-30T00:00:00.000 - 159.84 - - - ZYX - -1 - -1.1100000000000001 - 1999-12-01T00:00:00.000 - 1999-12-02T00:00:00.000 - 1.1100000000000001 - -
    - - -
    -
    - - - - - - 600 - 600 - - False - False - - - - - - - - - - - - - - R2C3:R14C3 - - Greater - 0 - - - - Less - 0 - - - - - diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt deleted file mode 100644 index 407fa769aa3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Africa.txt +++ /dev/null @@ -1,54 +0,0 @@ -Algeria -Angola -Benin -Botswana -Burkina -Burundi -Cameroon -Cape Verde -Central African Republic -Chad -Comoros -Congo -Congo, Democratic Republic of -Djibouti -Egypt -Equatorial Guinea -Eritrea -Ethiopia -Gabon -Gambia -Ghana -Guinea -Guinea-Bissau -Ivory Coast -Kenya -Lesotho -Liberia -Libya -Madagascar -Malawi -Mali -Mauritania -Mauritius -Morocco -Mozambique -Namibia -Niger -Nigeria -Rwanda -Sao Tome and Principe -Senegal -Seychelles -Sierra Leone -Somalia -South Africa -South Sudan -Sudan -Swaziland -Tanzania -Togo -Tunisia -Uganda -Zambia -Zimbabwe diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt deleted file mode 100644 index 9ce006c53c8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Asia.txt +++ /dev/null @@ -1,44 +0,0 @@ -Afghanistan -Bahrain -Bangladesh -Bhutan -Brunei -Burma (Myanmar) -Cambodia -China -East Timor -India -Indonesia -Iran -Iraq -Israel -Japan -Jordan -Kazakhstan -Korea, North -Korea, South -Kuwait -Kyrgyzstan -Laos -Lebanon -Malaysia -Maldives -Mongolia -Nepal -Oman -Pakistan -Philippines -Qatar -Russian Federation -Saudi Arabia -Singapore -Sri Lanka -Syria -Tajikistan -Thailand -Turkey -Turkmenistan -United Arab Emirates -Uzbekistan -Vietnam -Yemen diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt deleted file mode 100644 index 70c11607ab9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Europe.txt +++ /dev/null @@ -1,47 +0,0 @@ -Albania -Andorra -Armenia -Austria -Azerbaijan -Belarus -Belgium -Bosnia and Herzegovina -Bulgaria -Croatia -Cyprus -Czech Republic -Denmark -Estonia -Finland -France -Georgia -Germany -Greece -Hungary -Iceland -Ireland -Italy -Latvia -Liechtenstein -Lithuania -Luxembourg -Macedonia -Malta -Moldova -Monaco -Montenegro -Netherlands -Norway -Poland -Portugal -Romania -San Marino -Serbia -Slovakia -Slovenia -Spain -Sweden -Switzerland -Ukraine -United Kingdom -Vatican City diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt deleted file mode 100644 index 5881ae132ab..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/North America.txt +++ /dev/null @@ -1,23 +0,0 @@ -Antigua and Barbuda -Bahamas -Barbados -Belize -Canada -Costa Rica -Cuba -Dominica -Dominican Republic -El Salvador -Grenada -Guatemala -Haiti -Honduras -Jamaica -Mexico -Nicaragua -Panama -Saint Kitts and Nevis -Saint Lucia -Saint Vincent and the Grenadines -Trinidad and Tobago -United States diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt deleted file mode 100644 index cbdc896c1ca..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/Oceania.txt +++ /dev/null @@ -1,14 +0,0 @@ -Australia -Fiji -Kiribati -Marshall Islands -Micronesia -Nauru -New Zealand -Palau -Papua New Guinea -Samoa -Solomon Islands -Tonga -Tuvalu -Vanuatu diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt b/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt deleted file mode 100644 index 777ffbfb94b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/data/continents/South America.txt +++ /dev/null @@ -1,12 +0,0 @@ -Argentina -Bolivia -Brazil -Chile -Colombia -Ecuador -Guyana -Paraguay -Peru -Suriname -Uruguay -Venezuela diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg b/htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg deleted file mode 100644 index 7e0133d1346..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/Examples/images/officelogo.jpg and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png b/htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png deleted file mode 100644 index a4355bd6de5..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/Examples/images/paid.png and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif b/htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif deleted file mode 100644 index 6e1b5ee4526..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/Examples/images/phpexcel_logo.gif and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg b/htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg deleted file mode 100644 index 1f21302e426..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/Examples/images/termsconditions.jpg and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/Examples/runall.php b/htdocs/includes/phpoffice/phpexcel/Examples/runall.php deleted file mode 100644 index b2af1ccd0be..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/Examples/runall.php +++ /dev/null @@ -1,130 +0,0 @@ -assertTrue(is_bool($result)); - // ... indicating failure - $this->assertFalse($result); - } - - public function testAutoloaderInvalidPHPExcelClass() - { - $className = 'PHPExcel_Invalid_Class'; - - $result = PHPExcel_Autoloader::Load($className); - // Must return a boolean... - $this->assertTrue(is_bool($result)); - // ... indicating failure - $this->assertFalse($result); - } - - public function testAutoloadValidPHPExcelClass() - { - $className = 'PHPExcel_IOFactory'; - - $result = PHPExcel_Autoloader::Load($className); - // Check that class has been loaded - $this->assertTrue(class_exists($className)); - } - - public function testAutoloadInstantiateSuccess() - { - $result = new PHPExcel_Calculation_Function(1,2,3); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'PHPExcel_Calculation_Function')); - } - -} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php deleted file mode 100644 index d4bdc5abff2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/DateTimeTest.php +++ /dev/null @@ -1,466 +0,0 @@ -assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATE.data'); - } - - public function testDATEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::DATE(2012,1,31); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1327968000, $result, NULL, 1E-8); - } - - public function testDATEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::DATE(2012,1,31); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Jan-2012'); - } - - public function testDATEwith1904Calendar() - { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - $result = PHPExcel_Calculation_DateTime::DATE(1918,11,11); - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - $this->assertEquals($result,5428); - } - - public function testDATEwith1904CalendarError() - { - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); - $result = PHPExcel_Calculation_DateTime::DATE(1901,1,31); - PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); - $this->assertEquals($result,'#NUM!'); - } - - /** - * @dataProvider providerDATEVALUE - */ - public function testDATEVALUE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DATEVALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATEVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATEVALUE.data'); - } - - public function testDATEVALUEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::DATEVALUE('2012-1-31'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1327968000, $result, NULL, 1E-8); - } - - public function testDATEVALUEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::DATEVALUE('2012-1-31'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Jan-2012'); - } - - /** - * @dataProvider providerYEAR - */ - public function testYEAR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','YEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerYEAR() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/YEAR.data'); - } - - /** - * @dataProvider providerMONTH - */ - public function testMONTH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','MONTHOFYEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMONTH() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/MONTH.data'); - } - - /** - * @dataProvider providerWEEKNUM - */ - public function testWEEKNUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','WEEKOFYEAR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWEEKNUM() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WEEKNUM.data'); - } - - /** - * @dataProvider providerWEEKDAY - */ - public function testWEEKDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYOFWEEK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWEEKDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WEEKDAY.data'); - } - - /** - * @dataProvider providerDAY - */ - public function testDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYOFMONTH'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DAY.data'); - } - - /** - * @dataProvider providerTIME - */ - public function testTIME() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','TIME'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTIME() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/TIME.data'); - } - - public function testTIMEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::TIME(7,30,20); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(27020, $result, NULL, 1E-8); - } - - public function testTIMEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::TIME(7,30,20); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('H:i:s'),'07:30:20'); - } - - /** - * @dataProvider providerTIMEVALUE - */ - public function testTIMEVALUE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','TIMEVALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTIMEVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/TIMEVALUE.data'); - } - - public function testTIMEVALUEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::TIMEVALUE('7:30:20'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(23420, $result, NULL, 1E-8); - } - - public function testTIMEVALUEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::TIMEVALUE('7:30:20'); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('H:i:s'),'07:30:20'); - } - - /** - * @dataProvider providerHOUR - */ - public function testHOUR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','HOUROFDAY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerHOUR() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/HOUR.data'); - } - - /** - * @dataProvider providerMINUTE - */ - public function testMINUTE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','MINUTEOFHOUR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMINUTE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/MINUTE.data'); - } - - /** - * @dataProvider providerSECOND - */ - public function testSECOND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','SECONDOFMINUTE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerSECOND() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/SECOND.data'); - } - - /** - * @dataProvider providerNETWORKDAYS - */ - public function testNETWORKDAYS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','NETWORKDAYS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNETWORKDAYS() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/NETWORKDAYS.data'); - } - - /** - * @dataProvider providerWORKDAY - */ - public function testWORKDAY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','WORKDAY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerWORKDAY() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/WORKDAY.data'); - } - - /** - * @dataProvider providerEDATE - */ - public function testEDATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','EDATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEDATE() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/EDATE.data'); - } - - public function testEDATEtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::EDATE('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1324857600, $result, NULL, 1E-8); - } - - public function testEDATEtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::EDATE('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'26-Dec-2011'); - } - - /** - * @dataProvider providerEOMONTH - */ - public function testEOMONTH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','EOMONTH'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEOMONTH() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/EOMONTH.data'); - } - - public function testEOMONTHtoPHP() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); - $result = PHPExcel_Calculation_DateTime::EOMONTH('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - $this->assertEquals(1325289600, $result, NULL, 1E-8); - } - - public function testEOMONTHtoPHPObject() - { - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT); - $result = PHPExcel_Calculation_DateTime::EOMONTH('2012-1-26',-1); - PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); - // Must return an object... - $this->assertTrue(is_object($result)); - // ... of the correct type - $this->assertTrue(is_a($result,'DateTime')); - // ... with the correct value - $this->assertEquals($result->format('d-M-Y'),'31-Dec-2011'); - } - - /** - * @dataProvider providerDATEDIF - */ - public function testDATEDIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DATEDIF'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDATEDIF() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DATEDIF.data'); - } - - /** - * @dataProvider providerDAYS360 - */ - public function testDAYS360() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','DAYS360'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDAYS360() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/DAYS360.data'); - } - - /** - * @dataProvider providerYEARFRAC - */ - public function testYEARFRAC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_DateTime','YEARFRAC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerYEARFRAC() - { - return new testDataFileIterator('rawTestData/Calculation/DateTime/YEARFRAC.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php deleted file mode 100644 index 1f511ffacc0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/EngineeringTest.php +++ /dev/null @@ -1,698 +0,0 @@ -assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELI() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELI.data'); - } - - /** - * @dataProvider providerBESSELJ - */ - public function testBESSELJ() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELJ'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELJ() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELJ.data'); - } - - /** - * @dataProvider providerBESSELK - */ - public function testBESSELK() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELK() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELK.data'); - } - - /** - * @dataProvider providerBESSELY - */ - public function testBESSELY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BESSELY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerBESSELY() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BESSELY.data'); - } - - /** - * @dataProvider providerCOMPLEX - */ - public function testCOMPLEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','COMPLEX'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCOMPLEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/COMPLEX.data'); - } - - /** - * @dataProvider providerIMAGINARY - */ - public function testIMAGINARY() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMAGINARY'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMAGINARY() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMAGINARY.data'); - } - - /** - * @dataProvider providerIMREAL - */ - public function testIMREAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMREAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMREAL() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMREAL.data'); - } - - /** - * @dataProvider providerIMABS - */ - public function testIMABS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMABS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMABS() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMABS.data'); - } - - /** - * @dataProvider providerIMARGUMENT - */ - public function testIMARGUMENT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMARGUMENT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIMARGUMENT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMARGUMENT.data'); - } - - /** - * @dataProvider providerIMCONJUGATE - */ - public function testIMCONJUGATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMCONJUGATE'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMCONJUGATE() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMCONJUGATE.data'); - } - - /** - * @dataProvider providerIMCOS - */ - public function testIMCOS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMCOS'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMCOS() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMCOS.data'); - } - - /** - * @dataProvider providerIMDIV - */ - public function testIMDIV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMDIV'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMDIV() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMDIV.data'); - } - - /** - * @dataProvider providerIMEXP - */ - public function testIMEXP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMEXP'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMEXP() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMEXP.data'); - } - - /** - * @dataProvider providerIMLN - */ - public function testIMLN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLN'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLN.data'); - } - - /** - * @dataProvider providerIMLOG2 - */ - public function testIMLOG2() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLOG2'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLOG2() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLOG2.data'); - } - - /** - * @dataProvider providerIMLOG10 - */ - public function testIMLOG10() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMLOG10'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMLOG10() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMLOG10.data'); - } - - /** - * @dataProvider providerIMPOWER - */ - public function testIMPOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMPOWER'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMPOWER() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMPOWER.data'); - } - - /** - * @dataProvider providerIMPRODUCT - */ - public function testIMPRODUCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMPRODUCT'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMPRODUCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMPRODUCT.data'); - } - - /** - * @dataProvider providerIMSIN - */ - public function testIMSIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSIN'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSIN.data'); - } - - /** - * @dataProvider providerIMSQRT - */ - public function testIMSQRT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSQRT'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSQRT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSQRT.data'); - } - - /** - * @dataProvider providerIMSUB - */ - public function testIMSUB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUB'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSUB() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUB.data'); - } - - /** - * @dataProvider providerIMSUM - */ - public function testIMSUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args); - $complexAssert = new complexAssert(); - $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8), - $complexAssert->getErrorMessage()); - } - - public function providerIMSUM() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data'); - } - - /** - * @dataProvider providerERF - */ - public function testERF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','ERF'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerERF() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/ERF.data'); - } - - /** - * @dataProvider providerERFC - */ - public function testERFC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','ERFC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerERFC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/ERFC.data'); - } - - /** - * @dataProvider providerBIN2DEC - */ - public function testBIN2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTODEC'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2DEC.data'); - } - - /** - * @dataProvider providerBIN2HEX - */ - public function testBIN2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTOHEX'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2HEX.data'); - } - - /** - * @dataProvider providerBIN2OCT - */ - public function testBIN2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','BINTOOCT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBIN2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/BIN2OCT.data'); - } - - /** - * @dataProvider providerDEC2BIN - */ - public function testDEC2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2BIN.data'); - } - - /** - * @dataProvider providerDEC2HEX - */ - public function testDEC2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOHEX'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2HEX.data'); - } - - /** - * @dataProvider providerDEC2OCT - */ - public function testDEC2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DECTOOCT'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDEC2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DEC2OCT.data'); - } - - /** - * @dataProvider providerHEX2BIN - */ - public function testHEX2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2BIN.data'); - } - - /** - * @dataProvider providerHEX2DEC - */ - public function testHEX2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTODEC'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2DEC.data'); - } - - /** - * @dataProvider providerHEX2OCT - */ - public function testHEX2OCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','HEXTOOCT'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerHEX2OCT() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/HEX2OCT.data'); - } - - /** - * @dataProvider providerOCT2BIN - */ - public function testOCT2BIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTOBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2BIN() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2BIN.data'); - } - - /** - * @dataProvider providerOCT2DEC - */ - public function testOCT2DEC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTODEC'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2DEC() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2DEC.data'); - } - - /** - * @dataProvider providerOCT2HEX - */ - public function testOCT2HEX() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','OCTTOHEX'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerOCT2HEX() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/OCT2HEX.data'); - } - - /** - * @dataProvider providerDELTA - */ - public function testDELTA() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','DELTA'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerDELTA() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/DELTA.data'); - } - - /** - * @dataProvider providerGESTEP - */ - public function testGESTEP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','GESTEP'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerGESTEP() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/GESTEP.data'); - } - - public function testGetConversionGroups() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroups(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionGroupUnits() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroupUnits(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionGroupUnitDetails() - { - $result = PHPExcel_Calculation_Engineering::getConversionGroupUnitDetails(); - $this->assertInternalType('array', $result); - } - - public function testGetConversionMultipliers() - { - $result = PHPExcel_Calculation_Engineering::getConversionMultipliers(); - $this->assertInternalType('array', $result); - } - - /** - * @dataProvider providerCONVERTUOM - */ - public function testCONVERTUOM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','CONVERTUOM'),$args); - $this->assertEquals($expectedResult, $result, NULL); - } - - public function providerCONVERTUOM() - { - return new testDataFileIterator('rawTestData/Calculation/Engineering/CONVERTUOM.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php deleted file mode 100644 index f5689c95048..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FinancialTest.php +++ /dev/null @@ -1,516 +0,0 @@ -assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerACCRINT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ACCRINT.data'); - } - - /** - * @dataProvider providerACCRINTM - */ - public function testACCRINTM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','ACCRINTM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerACCRINTM() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ACCRINTM.data'); - } - - /** - * @dataProvider providerAMORDEGRC - */ - public function testAMORDEGRC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','AMORDEGRC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerAMORDEGRC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/AMORDEGRC.data'); - } - - /** - * @dataProvider providerAMORLINC - */ - public function testAMORLINC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','AMORLINC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerAMORLINC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/AMORLINC.data'); - } - - /** - * @dataProvider providerCOUPDAYBS - */ - public function testCOUPDAYBS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYBS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYBS() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYBS.data'); - } - - /** - * @dataProvider providerCOUPDAYS - */ - public function testCOUPDAYS() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYS'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYS() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYS.data'); - } - - /** - * @dataProvider providerCOUPDAYSNC - */ - public function testCOUPDAYSNC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPDAYSNC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPDAYSNC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPDAYSNC.data'); - } - - /** - * @dataProvider providerCOUPNCD - */ - public function testCOUPNCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPNCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPNCD() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPNCD.data'); - } - - /** - * @dataProvider providerCOUPNUM - */ - public function testCOUPNUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPNUM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPNUM() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPNUM.data'); - } - - /** - * @dataProvider providerCOUPPCD - */ - public function testCOUPPCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','COUPPCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCOUPPCD() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/COUPPCD.data'); - } - - /** - * @dataProvider providerCUMIPMT - */ - public function testCUMIPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','CUMIPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCUMIPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/CUMIPMT.data'); - } - - /** - * @dataProvider providerCUMPRINC - */ - public function testCUMPRINC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','CUMPRINC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerCUMPRINC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/CUMPRINC.data'); - } - - /** - * @dataProvider providerDB - */ - public function testDB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DB'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDB() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DB.data'); - } - - /** - * @dataProvider providerDDB - */ - public function testDDB() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DDB'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDDB() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DDB.data'); - } - - /** - * @dataProvider providerDISC - */ - public function testDISC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DISC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDISC() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DISC.data'); - } - - /** - * @dataProvider providerDOLLARDE - */ - public function testDOLLARDE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DOLLARDE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDOLLARDE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DOLLARDE.data'); - } - - /** - * @dataProvider providerDOLLARFR - */ - public function testDOLLARFR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','DOLLARFR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerDOLLARFR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/DOLLARFR.data'); - } - - /** - * @dataProvider providerEFFECT - */ - public function testEFFECT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','EFFECT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerEFFECT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/EFFECT.data'); - } - - /** - * @dataProvider providerFV - */ - public function testFV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','FV'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerFV() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/FV.data'); - } - - /** - * @dataProvider providerFVSCHEDULE - */ - public function testFVSCHEDULE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','FVSCHEDULE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerFVSCHEDULE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/FVSCHEDULE.data'); - } - - /** - * @dataProvider providerINTRATE - */ - public function testINTRATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','INTRATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerINTRATE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/INTRATE.data'); - } - - /** - * @dataProvider providerIPMT - */ - public function testIPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','IPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/IPMT.data'); - } - - /** - * @dataProvider providerIRR - */ - public function testIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','IRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/IRR.data'); - } - - /** - * @dataProvider providerISPMT - */ - public function testISPMT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','ISPMT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerISPMT() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/ISPMT.data'); - } - - /** - * @dataProvider providerMIRR - */ - public function testMIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','MIRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerMIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/MIRR.data'); - } - - /** - * @dataProvider providerNOMINAL - */ - public function testNOMINAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NOMINAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNOMINAL() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NOMINAL.data'); - } - - /** - * @dataProvider providerNPER - */ - public function testNPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NPER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNPER() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NPER.data'); - } - - /** - * @dataProvider providerNPV - */ - public function testNPV() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','NPV'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerNPV() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/NPV.data'); - } - - /** - * @dataProvider providerPRICE - */ - public function testPRICE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','PRICE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerPRICE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/PRICE.data'); - } - - /** - * @dataProvider providerRATE - */ - public function testRATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','RATE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerRATE() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/RATE.data'); - } - - /** - * @dataProvider providerXIRR - */ - public function testXIRR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Financial','XIRR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerXIRR() - { - return new testDataFileIterator('rawTestData/Calculation/Financial/XIRR.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php deleted file mode 100644 index 013332940ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/FunctionsTest.php +++ /dev/null @@ -1,276 +0,0 @@ -assertEquals('#Not Yet Implemented', $result); - } - - public function testDIV0() - { - $result = PHPExcel_Calculation_Functions::DIV0(); - $this->assertEquals('#DIV/0!', $result); - } - - public function testNA() - { - $result = PHPExcel_Calculation_Functions::NA(); - $this->assertEquals('#N/A', $result); - } - - public function testNaN() - { - $result = PHPExcel_Calculation_Functions::NaN(); - $this->assertEquals('#NUM!', $result); - } - - public function testNAME() - { - $result = PHPExcel_Calculation_Functions::NAME(); - $this->assertEquals('#NAME?', $result); - } - - public function testREF() - { - $result = PHPExcel_Calculation_Functions::REF(); - $this->assertEquals('#REF!', $result); - } - - public function testNULL() - { - $result = PHPExcel_Calculation_Functions::NULL(); - $this->assertEquals('#NULL!', $result); - } - - public function testVALUE() - { - $result = PHPExcel_Calculation_Functions::VALUE(); - $this->assertEquals('#VALUE!', $result); - } - - /** - * @dataProvider providerIS_BLANK - */ - public function testIS_BLANK() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_BLANK'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_BLANK() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_BLANK.data'); - } - - /** - * @dataProvider providerIS_ERR - */ - public function testIS_ERR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ERR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ERR() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ERR.data'); - } - - /** - * @dataProvider providerIS_ERROR - */ - public function testIS_ERROR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ERROR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ERROR() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ERROR.data'); - } - - /** - * @dataProvider providerERROR_TYPE - */ - public function testERROR_TYPE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','ERROR_TYPE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerERROR_TYPE() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/ERROR_TYPE.data'); - } - - /** - * @dataProvider providerIS_LOGICAL - */ - public function testIS_LOGICAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_LOGICAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_LOGICAL() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_LOGICAL.data'); - } - - /** - * @dataProvider providerIS_NA - */ - public function testIS_NA() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NA'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NA() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NA.data'); - } - - /** - * @dataProvider providerIS_NUMBER - */ - public function testIS_NUMBER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NUMBER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NUMBER() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NUMBER.data'); - } - - /** - * @dataProvider providerIS_TEXT - */ - public function testIS_TEXT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_TEXT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_TEXT() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_TEXT.data'); - } - - /** - * @dataProvider providerIS_NONTEXT - */ - public function testIS_NONTEXT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_NONTEXT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_NONTEXT() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_NONTEXT.data'); - } - - /** - * @dataProvider providerIS_EVEN - */ - public function testIS_EVEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_EVEN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_EVEN() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_EVEN.data'); - } - - /** - * @dataProvider providerIS_ODD - */ - public function testIS_ODD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','IS_ODD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerIS_ODD() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/IS_ODD.data'); - } - - /** - * @dataProvider providerTYPE - */ - public function testTYPE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','TYPE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerTYPE() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/TYPE.data'); - } - - /** - * @dataProvider providerN - */ - public function testN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Functions','N'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerN() - { - return new testDataFileIterator('rawTestData/Calculation/Functions/N.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php deleted file mode 100644 index cc8f8b33383..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LogicalTest.php +++ /dev/null @@ -1,112 +0,0 @@ -assertEquals(TRUE, $result); - } - - public function testFALSE() - { - $result = PHPExcel_Calculation_Logical::FALSE(); - $this->assertEquals(FALSE, $result); - } - - /** - * @dataProvider providerAND - */ - public function testAND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','LOGICAL_AND'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAND() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/AND.data'); - } - - /** - * @dataProvider providerOR - */ - public function testOR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','LOGICAL_OR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerOR() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/OR.data'); - } - - /** - * @dataProvider providerNOT - */ - public function testNOT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','NOT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerNOT() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/NOT.data'); - } - - /** - * @dataProvider providerIF - */ - public function testIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','STATEMENT_IF'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIF() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/IF.data'); - } - - /** - * @dataProvider providerIFERROR - */ - public function testIFERROR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_Logical','IFERROR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIFERROR() - { - return new testDataFileIterator('rawTestData/Calculation/Logical/IFERROR.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php deleted file mode 100644 index 6450b082244..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/LookupRefTest.php +++ /dev/null @@ -1,52 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerHLOOKUP() - { - return new testDataFileIterator('rawTestData/Calculation/LookupRef/HLOOKUP.data'); - } - - /** - * @dataProvider providerVLOOKUP - */ - public function testVLOOKUP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_LookupRef','VLOOKUP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerVLOOKUP() - { - return new testDataFileIterator('rawTestData/Calculation/LookupRef/VLOOKUP.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php deleted file mode 100644 index 0059ed08e6c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php +++ /dev/null @@ -1,560 +0,0 @@ -assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerATAN2() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ATAN2.data'); - } - - /** - * @dataProvider providerCEILING - */ - public function testCEILING() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','CEILING'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerCEILING() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/CEILING.data'); - } - - /** - * @dataProvider providerCOMBIN - */ - public function testCOMBIN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','COMBIN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerCOMBIN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/COMBIN.data'); - } - - /** - * @dataProvider providerEVEN - */ - public function testEVEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','EVEN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerEVEN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/EVEN.data'); - } - - /** - * @dataProvider providerODD - */ - public function testODD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ODD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerODD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ODD.data'); - } - - /** - * @dataProvider providerFACT - */ - public function testFACT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFACT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACT.data'); - } - - /** - * @dataProvider providerFACTDOUBLE - */ - public function testFACTDOUBLE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACTDOUBLE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFACTDOUBLE() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACTDOUBLE.data'); - } - - /** - * @dataProvider providerFLOOR - */ - public function testFLOOR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FLOOR'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerFLOOR() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/FLOOR.data'); - } - - /** - * @dataProvider providerGCD - */ - public function testGCD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','GCD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerGCD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/GCD.data'); - } - - /** - * @dataProvider providerLCM - */ - public function testLCM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LCM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerLCM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/LCM.data'); - } - - /** - * @dataProvider providerINT - */ - public function testINT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','INT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerINT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/INT.data'); - } - - /** - * @dataProvider providerSIGN - */ - public function testSIGN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SIGN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSIGN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SIGN.data'); - } - - /** - * @dataProvider providerPOWER - */ - public function testPOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','POWER'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerPOWER() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/POWER.data'); - } - - /** - * @dataProvider providerLOG - */ - public function testLOG() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LOG_BASE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerLOG() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/LOG.data'); - } - - /** - * @dataProvider providerMOD - */ - public function testMOD() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MOD'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMOD() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MOD.data'); - } - - /** - * @dataProvider providerMDETERM - */ - public function testMDETERM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MDETERM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMDETERM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MDETERM.data'); - } - - /** - * @dataProvider providerMINVERSE - */ - public function testMINVERSE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MINVERSE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMINVERSE() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MINVERSE.data'); - } - - /** - * @dataProvider providerMMULT - */ - public function testMMULT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MMULT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMMULT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MMULT.data'); - } - - /** - * @dataProvider providerMULTINOMIAL - */ - public function testMULTINOMIAL() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MULTINOMIAL'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMULTINOMIAL() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MULTINOMIAL.data'); - } - - /** - * @dataProvider providerMROUND - */ - public function testMROUND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MROUND'),$args); - PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_ARRAY); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerMROUND() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/MROUND.data'); - } - - /** - * @dataProvider providerPRODUCT - */ - public function testPRODUCT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','PRODUCT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerPRODUCT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/PRODUCT.data'); - } - - /** - * @dataProvider providerQUOTIENT - */ - public function testQUOTIENT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','QUOTIENT'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerQUOTIENT() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/QUOTIENT.data'); - } - - /** - * @dataProvider providerROUNDUP - */ - public function testROUNDUP() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDUP'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerROUNDUP() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDUP.data'); - } - - /** - * @dataProvider providerROUNDDOWN - */ - public function testROUNDDOWN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDDOWN'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerROUNDDOWN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDDOWN.data'); - } - - /** - * @dataProvider providerSERIESSUM - */ - public function testSERIESSUM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SERIESSUM'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSERIESSUM() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SERIESSUM.data'); - } - - /** - * @dataProvider providerSUMSQ - */ - public function testSUMSQ() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SUMSQ'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSUMSQ() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SUMSQ.data'); - } - - /** - * @dataProvider providerTRUNC - */ - public function testTRUNC() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','TRUNC'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerTRUNC() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/TRUNC.data'); - } - - /** - * @dataProvider providerROMAN - */ - public function testROMAN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROMAN'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerROMAN() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROMAN.data'); - } - - /** - * @dataProvider providerSQRTPI - */ - public function testSQRTPI() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SQRTPI'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSQRTPI() - { - return new testDataFileIterator('rawTestData/Calculation/MathTrig/SQRTPI.data'); - } - - /** - * @dataProvider providerSUMIF - */ - public function testSUMIF() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig', 'SUMIF'), $args); - $this->assertEquals($expectedResult, $result, NULL, 1E-12); - } - - public function providerSUMIF() - { - return array( - array( - array( - array(1), - array(5), - array(10), - ), - '>=5', - 15, - ), - array( - array( - array('text'), - array(2), - ), - '=text', - array( - array(10), - array(100), - ), - 10, - ), - array( - array( - array('"text with quotes"'), - array(2), - ), - '="text with quotes"', - array( - array(10), - array(100), - ), - 10, - ), - array( - array( - array('"text with quotes"'), - array(''), - ), - '>"', // Compare to the single characater " (double quote) - array( - array(10), - array(100), - ), - 10 - ), - array( - array( - array(''), - array('anything'), - ), - '>"', // Compare to the single characater " (double quote) - array( - array(10), - array(100), - ), - 100 - ), - ); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php deleted file mode 100644 index 4b1caf5179d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Calculation/TextDataTest.php +++ /dev/null @@ -1,365 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerCHAR() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CHAR.data'); - } - - /** - * @dataProvider providerCODE - */ - public function testCODE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','ASCIICODE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCODE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CODE.data'); - } - - /** - * @dataProvider providerCONCATENATE - */ - public function testCONCATENATE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','CONCATENATE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCONCATENATE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CONCATENATE.data'); - } - - /** - * @dataProvider providerLEFT - */ - public function testLEFT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','LEFT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLEFT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LEFT.data'); - } - - /** - * @dataProvider providerMID - */ - public function testMID() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','MID'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerMID() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/MID.data'); - } - - /** - * @dataProvider providerRIGHT - */ - public function testRIGHT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','RIGHT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRIGHT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/RIGHT.data'); - } - - /** - * @dataProvider providerLOWER - */ - public function testLOWER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','LOWERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLOWER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LOWER.data'); - } - - /** - * @dataProvider providerUPPER - */ - public function testUPPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','UPPERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerUPPER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/UPPER.data'); - } - - /** - * @dataProvider providerPROPER - */ - public function testPROPER() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','PROPERCASE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerPROPER() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/PROPER.data'); - } - - /** - * @dataProvider providerLEN - */ - public function testLEN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','STRINGLENGTH'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerLEN() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/LEN.data'); - } - - /** - * @dataProvider providerSEARCH - */ - public function testSEARCH() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SEARCHINSENSITIVE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerSEARCH() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/SEARCH.data'); - } - - /** - * @dataProvider providerFIND - */ - public function testFIND() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SEARCHSENSITIVE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFIND() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/FIND.data'); - } - - /** - * @dataProvider providerREPLACE - */ - public function testREPLACE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','REPLACE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerREPLACE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/REPLACE.data'); - } - - /** - * @dataProvider providerSUBSTITUTE - */ - public function testSUBSTITUTE() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','SUBSTITUTE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerSUBSTITUTE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/SUBSTITUTE.data'); - } - - /** - * @dataProvider providerTRIM - */ - public function testTRIM() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TRIMSPACES'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerTRIM() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/TRIM.data'); - } - - /** - * @dataProvider providerCLEAN - */ - public function testCLEAN() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TRIMNONPRINTABLE'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCLEAN() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/CLEAN.data'); - } - - /** - * @dataProvider providerDOLLAR - */ - public function testDOLLAR() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','DOLLAR'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDOLLAR() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/DOLLAR.data'); - } - - /** - * @dataProvider providerFIXED - */ - public function testFIXED() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','FIXEDFORMAT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFIXED() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/FIXED.data'); - } - - /** - * @dataProvider providerT - */ - public function testT() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','RETURNSTRING'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/T.data'); - } - - /** - * @dataProvider providerTEXT - */ - public function testTEXT() - { - // Enforce decimal and thousands separator values to UK/US, and currency code to USD - call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),'.'); - call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),','); - call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),'$'); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','TEXTFORMAT'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerTEXT() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/TEXT.data'); - } - - /** - * @dataProvider providerVALUE - */ - public function testVALUE() - { - call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),'.'); - call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),' '); - call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),'$'); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Calculation_TextData','VALUE'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-8); - } - - public function providerVALUE() - { - return new testDataFileIterator('rawTestData/Calculation/TextData/VALUE.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php deleted file mode 100644 index 1de827ca815..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CalculationTest.php +++ /dev/null @@ -1,37 +0,0 @@ -_calculateFormulaValue($formula); - $this->assertEquals($expectedResultExcel, $resultExcel, 'should be Excel compatible'); - - PHPExcel_Calculation_Functions::setCompatibilityMode(PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE); - $resultOpenOffice = \PHPExcel_Calculation::getInstance()->_calculateFormulaValue($formula); - $this->assertEquals($expectedResultOpenOffice, $resultOpenOffice, 'should be OpenOffice compatible'); - } - - public function providerBinaryComparisonOperation() - { - return new testDataFileIterator('rawTestData/CalculationBinaryComparisonOperation.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php deleted file mode 100644 index 0a6ca54da8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/AdvancedValueBinderTest.php +++ /dev/null @@ -1,73 +0,0 @@ -setUp(); - } - $currencyUSD = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE; - $currencyEURO = str_replace('$', '€', PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); - - return array( - array('10%', 0.1, PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00, ',', '.', '$'), - array('$10.11', 10.11, $currencyUSD, ',', '.', '$'), - array('$1,010.12', 1010.12, $currencyUSD, ',', '.', '$'), - array('$20,20', 20.2, $currencyUSD, '.', ',', '$'), - array('$2.020,20', 2020.2, $currencyUSD, '.', ',', '$'), - array('€2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), - array('€ 2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), - array('€2,020.22', 2020.22, $currencyEURO, ',', '.', '€'), - ); - } - - /** - * @dataProvider provider - */ - public function testCurrency($value, $valueBinded, $format, $thousandsSeparator, $decimalSeparator, $currencyCode) - { - $sheet = $this->getMock( - 'PHPExcel_Worksheet', - array('getStyle', 'getNumberFormat', 'setFormatCode','getCellCacheController') - ); - $cache = $this->getMockBuilder('PHPExcel_CachedObjectStorage_Memory') - ->disableOriginalConstructor() - ->getMock(); - $cache->expects($this->any()) - ->method('getParent') - ->will($this->returnValue($sheet)); - - $sheet->expects($this->once()) - ->method('getStyle') - ->will($this->returnSelf()); - $sheet->expects($this->once()) - ->method('getNumberFormat') - ->will($this->returnSelf()); - $sheet->expects($this->once()) - ->method('setFormatCode') - ->with($format) - ->will($this->returnSelf()); - $sheet->expects($this->any()) - ->method('getCellCacheController') - ->will($this->returnValue($cache)); - - PHPExcel_Shared_String::setCurrencyCode($currencyCode); - PHPExcel_Shared_String::setDecimalSeparator($decimalSeparator); - PHPExcel_Shared_String::setThousandsSeparator($thousandsSeparator); - - $cell = new PHPExcel_Cell(NULL, PHPExcel_Cell_DataType::TYPE_STRING, $sheet); - - $binder = new PHPExcel_Cell_AdvancedValueBinder(); - $binder->bindValue($cell, $value); - $this->assertEquals($valueBinded, $cell->getValue()); - } -} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php deleted file mode 100644 index c17c5d0fcc3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DataTypeTest.php +++ /dev/null @@ -1,24 +0,0 @@ -assertInternalType('array', $result); - $this->assertGreaterThan(0, count($result)); - $this->assertArrayHasKey('#NULL!', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php deleted file mode 100644 index 1c74d96f6f8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/DefaultValueBinderTest.php +++ /dev/null @@ -1,85 +0,0 @@ -cellStub = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - // Configure the stub. - $this->cellStub->expects($this->any()) - ->method('setValueExplicit') - ->will($this->returnValue(true)); - - } - - /** - * @dataProvider binderProvider - */ - public function testBindValue($value) - { - $this->createCellStub(); - $binder = new PHPExcel_Cell_DefaultValueBinder(); - $result = $binder->bindValue($this->cellStub, $value); - $this->assertTrue($result); - } - - public function binderProvider() - { - return array( - array(null), - array(''), - array('ABC'), - array('=SUM(A1:B2)'), - array(true), - array(false), - array(123), - array(-123.456), - array('123'), - array('-123.456'), - array('#REF!'), - array(new DateTime()), - ); - } - - /** - * @dataProvider providerDataTypeForValue - */ - public function testDataTypeForValue() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDataTypeForValue() - { - return new testDataFileIterator('rawTestData/Cell/DefaultValueBinder.data'); - } - - public function testDataTypeForRichTextObject() - { - $objRichText = new PHPExcel_RichText(); - $objRichText->createText('Hello World'); - - $expectedResult = PHPExcel_Cell_DataType::TYPE_INLINE; - $result = call_user_func(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $objRichText); - $this->assertEquals($expectedResult, $result); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php deleted file mode 100644 index 54910cfd565..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Cell/HyperlinkTest.php +++ /dev/null @@ -1,88 +0,0 @@ -getUrl(); - $this->assertEquals($urlValue,$result); - } - - public function testSetUrl() - { - $initialUrlValue = 'http://www.phpexcel.net'; - $newUrlValue = 'http://github.com/PHPOffice/PHPExcel'; - - $testInstance = new PHPExcel_Cell_Hyperlink($initialUrlValue); - $result = $testInstance->setUrl($newUrlValue); - $this->assertTrue($result instanceof PHPExcel_Cell_Hyperlink); - - $result = $testInstance->getUrl(); - $this->assertEquals($newUrlValue,$result); - } - - public function testGetTooltip() - { - $tooltipValue = 'PHPExcel Web Site'; - - $testInstance = new PHPExcel_Cell_Hyperlink(NULL, $tooltipValue); - - $result = $testInstance->getTooltip(); - $this->assertEquals($tooltipValue,$result); - } - - public function testSetTooltip() - { - $initialTooltipValue = 'PHPExcel Web Site'; - $newTooltipValue = 'PHPExcel Repository on Github'; - - $testInstance = new PHPExcel_Cell_Hyperlink(NULL, $initialTooltipValue); - $result = $testInstance->setTooltip($newTooltipValue); - $this->assertTrue($result instanceof PHPExcel_Cell_Hyperlink); - - $result = $testInstance->getTooltip(); - $this->assertEquals($newTooltipValue,$result); - } - - public function testIsInternal() - { - $initialUrlValue = 'http://www.phpexcel.net'; - $newUrlValue = 'sheet://Worksheet1!A1'; - - $testInstance = new PHPExcel_Cell_Hyperlink($initialUrlValue); - $result = $testInstance->isInternal(); - $this->assertFalse($result); - - $testInstance->setUrl($newUrlValue); - $result = $testInstance->isInternal(); - $this->assertTrue($result); - } - - public function testGetHashCode() - { - $urlValue = 'http://www.phpexcel.net'; - $tooltipValue = 'PHPExcel Web Site'; - $initialExpectedHash = 'd84d713aed1dbbc8a7c5af183d6c7dbb'; - - $testInstance = new PHPExcel_Cell_Hyperlink($urlValue, $tooltipValue); - - $result = $testInstance->getHashCode(); - $this->assertEquals($initialExpectedHash,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php deleted file mode 100644 index 11df404ce5d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/CellTest.php +++ /dev/null @@ -1,295 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerColumnString() - { - return new testDataFileIterator('rawTestData/ColumnString.data'); - } - - public function testColumnIndexFromStringTooLong() - { - $cellAddress = 'ABCD'; - try { - $result = call_user_func(array('PHPExcel_Cell','columnIndexFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Column string index can not be longer than 3 characters'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testColumnIndexFromStringTooShort() - { - $cellAddress = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','columnIndexFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Column string index can not be empty'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerColumnIndex - */ - public function testStringFromColumnIndex() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','stringFromColumnIndex'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColumnIndex() - { - return new testDataFileIterator('rawTestData/ColumnIndex.data'); - } - - /** - * @dataProvider providerCoordinates - */ - public function testCoordinateFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','coordinateFromString'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCoordinates() - { - return new testDataFileIterator('rawTestData/CellCoordinates.data'); - } - - public function testCoordinateFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testCoordinateFromStringWithEmptyAddress() - { - $cellAddress = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate can not be zero-length string'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testCoordinateFromStringWithInvalidAddress() - { - $cellAddress = 'AI'; - try { - $result = call_user_func(array('PHPExcel_Cell','coordinateFromString'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Invalid cell coordinate '.$cellAddress); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerAbsoluteCoordinates - */ - public function testAbsoluteCoordinateFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','absoluteCoordinate'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAbsoluteCoordinates() - { - return new testDataFileIterator('rawTestData/CellAbsoluteCoordinate.data'); - } - - public function testAbsoluteCoordinateFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','absoluteCoordinate'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerAbsoluteReferences - */ - public function testAbsoluteReferenceFromString() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','absoluteReference'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerAbsoluteReferences() - { - return new testDataFileIterator('rawTestData/CellAbsoluteReference.data'); - } - - public function testAbsoluteReferenceFromStringWithRangeAddress() - { - $cellAddress = 'A1:AI2012'; - try { - $result = call_user_func(array('PHPExcel_Cell','absoluteReference'),$cellAddress); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Cell coordinate string can not be a range of cells'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerSplitRange - */ - public function testSplitRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','splitRange'),$args); - foreach($result as $key => $split) { - if (!is_array($expectedResult[$key])) { - $this->assertEquals($expectedResult[$key], $split[0]); - } else { - $this->assertEquals($expectedResult[$key], $split); - } - } - } - - public function providerSplitRange() - { - return new testDataFileIterator('rawTestData/CellSplitRange.data'); - } - - /** - * @dataProvider providerBuildRange - */ - public function testBuildRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','buildRange'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerBuildRange() - { - return new testDataFileIterator('rawTestData/CellBuildRange.data'); - } - - public function testBuildRangeInvalid() - { - $cellRange = ''; - try { - $result = call_user_func(array('PHPExcel_Cell','buildRange'),$cellRange); - } catch (PHPExcel_Exception $e) { - $this->assertEquals($e->getMessage(), 'Range does not contain any information'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - /** - * @dataProvider providerRangeBoundaries - */ - public function testRangeBoundaries() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','rangeBoundaries'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRangeBoundaries() - { - return new testDataFileIterator('rawTestData/CellRangeBoundaries.data'); - } - - /** - * @dataProvider providerRangeDimension - */ - public function testRangeDimension() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','rangeDimension'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerRangeDimension() - { - return new testDataFileIterator('rawTestData/CellRangeDimension.data'); - } - - /** - * @dataProvider providerGetRangeBoundaries - */ - public function testGetRangeBoundaries() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','getRangeBoundaries'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerGetRangeBoundaries() - { - return new testDataFileIterator('rawTestData/CellGetRangeBoundaries.data'); - } - - /** - * @dataProvider providerExtractAllCellReferencesInRange - */ - public function testExtractAllCellReferencesInRange() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Cell','extractAllCellReferencesInRange'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerExtractAllCellReferencesInRange() - { - return new testDataFileIterator('rawTestData/CellExtractAllCellReferencesInRange.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php deleted file mode 100644 index 38284de9a94..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/DataSeriesValuesTest.php +++ /dev/null @@ -1,55 +0,0 @@ -setDataType($dataTypeValue); - $this->assertTrue($result instanceof PHPExcel_Chart_DataSeriesValues); - } - } - - public function testSetInvalidDataTypeThrowsException() - { - $testInstance = new PHPExcel_Chart_DataSeriesValues; - - try { - $result = $testInstance->setDataType('BOOLEAN'); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Invalid datatype for chart data series values'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testGetDataType() - { - $dataTypeValue = 'String'; - - $testInstance = new PHPExcel_Chart_DataSeriesValues; - $setValue = $testInstance->setDataType($dataTypeValue); - - $result = $testInstance->getDataType(); - $this->assertEquals($dataTypeValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php deleted file mode 100644 index f24e01c3131..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LayoutTest.php +++ /dev/null @@ -1,37 +0,0 @@ -setLayoutTarget($LayoutTargetValue); - $this->assertTrue($result instanceof PHPExcel_Chart_Layout); - } - - public function testGetLayoutTarget() - { - $LayoutTargetValue = 'String'; - - $testInstance = new PHPExcel_Chart_Layout; - $setValue = $testInstance->setLayoutTarget($LayoutTargetValue); - - $result = $testInstance->getLayoutTarget(); - $this->assertEquals($LayoutTargetValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php deleted file mode 100644 index 4c4f8df81f2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Chart/LegendTest.php +++ /dev/null @@ -1,134 +0,0 @@ -setPosition($positionValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidPositionReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setPosition('BottomLeft'); - $this->assertFalse($result); - // Ensure that value is unchanged - $result = $testInstance->getPosition(); - $this->assertEquals(PHPExcel_Chart_Legend::POSITION_RIGHT,$result); - } - - public function testGetPosition() - { - $PositionValue = PHPExcel_Chart_Legend::POSITION_BOTTOM; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setPosition($PositionValue); - - $result = $testInstance->getPosition(); - $this->assertEquals($PositionValue,$result); - } - - public function testSetPositionXL() - { - $positionValues = array( - PHPExcel_Chart_Legend::xlLegendPositionBottom, - PHPExcel_Chart_Legend::xlLegendPositionCorner, - PHPExcel_Chart_Legend::xlLegendPositionCustom, - PHPExcel_Chart_Legend::xlLegendPositionLeft, - PHPExcel_Chart_Legend::xlLegendPositionRight, - PHPExcel_Chart_Legend::xlLegendPositionTop, - ); - - $testInstance = new PHPExcel_Chart_Legend; - - foreach($positionValues as $positionValue) { - $result = $testInstance->setPositionXL($positionValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidXLPositionReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setPositionXL(999); - $this->assertFalse($result); - // Ensure that value is unchanged - $result = $testInstance->getPositionXL(); - $this->assertEquals(PHPExcel_Chart_Legend::xlLegendPositionRight,$result); - } - - public function testGetPositionXL() - { - $PositionValue = PHPExcel_Chart_Legend::xlLegendPositionCorner; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setPositionXL($PositionValue); - - $result = $testInstance->getPositionXL(); - $this->assertEquals($PositionValue,$result); - } - - public function testSetOverlay() - { - $overlayValues = array( - TRUE, - FALSE, - ); - - $testInstance = new PHPExcel_Chart_Legend; - - foreach($overlayValues as $overlayValue) { - $result = $testInstance->setOverlay($overlayValue); - $this->assertTrue($result); - } - } - - public function testSetInvalidOverlayReturnsFalse() - { - $testInstance = new PHPExcel_Chart_Legend; - - $result = $testInstance->setOverlay('INVALID'); - $this->assertFalse($result); - - $result = $testInstance->getOverlay(); - $this->assertFalse($result); - } - - public function testGetOverlay() - { - $OverlayValue = TRUE; - - $testInstance = new PHPExcel_Chart_Legend; - $setValue = $testInstance->setOverlay($OverlayValue); - - $result = $testInstance->getOverlay(); - $this->assertEquals($OverlayValue,$result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php deleted file mode 100644 index f635dbb8764..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Reader/XEEValidatorTest.php +++ /dev/null @@ -1,55 +0,0 @@ -getMockForAbstractClass('PHPExcel_Reader_Abstract'); - $expectedResult = 'FAILURE: Should throw an Exception rather than return a value'; - $result = $reader->securityScanFile($filename); - $this->assertEquals($expectedResult, $result); - } - - public function providerInvalidXML() - { - $tests = []; - foreach(glob('rawTestData/Reader/XEETestInvalid*.xml') as $file) { - $tests[] = [realpath($file), true]; - } - return $tests; - } - - /** - * @dataProvider providerValidXML - */ - public function testValidXML($filename, $expectedResult) - { - $reader = $this->getMockForAbstractClass('PHPExcel_Reader_Abstract'); - $result = $reader->securityScanFile($filename); - $this->assertEquals($expectedResult, $result); - } - - public function providerValidXML() - { - $tests = []; - foreach(glob('rawTestData/Reader/XEETestValid*.xml') as $file) { - $tests[] = [realpath($file), file_get_contents($file)]; - } - return $tests; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php deleted file mode 100644 index f37db692e03..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/ReferenceHelperTest.php +++ /dev/null @@ -1,58 +0,0 @@ - $value) { - $this->assertEquals($columnExpectedResult[$key], $value); - } - } - - public function testColumnReverseSort() - { - $columnBase = $columnExpectedResult = array( - 'A','B','Z', - 'AA','AB','AZ', - 'BA','BB','BZ', - 'ZA','ZB','ZZ', - 'AAA','AAB','AAZ', - 'ABA','ABB','ABZ', - 'AZA','AZB','AZZ', - 'BAA','BAB','BAZ', - 'BBA','BBB','BBZ', - 'BZA','BZB','BZZ' - ); - shuffle($columnBase); - $columnExpectedResult = array_reverse($columnExpectedResult); - usort($columnBase, array('PHPExcel_ReferenceHelper','columnReverseSort')); - foreach($columnBase as $key => $value) { - $this->assertEquals($columnExpectedResult[$key], $value); - } - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php deleted file mode 100644 index ae4aeecc5cd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/CodePageTest.php +++ /dev/null @@ -1,57 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerCodePage() - { - return new testDataFileIterator('rawTestData/Shared/CodePage.data'); - } - - public function testNumberToNameWithInvalidCodePage() - { - $invalidCodePage = 12345; - try { - $result = call_user_func(array('PHPExcel_Shared_CodePage','NumberToName'),$invalidCodePage); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Unknown codepage: 12345'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - - public function testNumberToNameWithUnsupportedCodePage() - { - $unsupportedCodePage = 720; - try { - $result = call_user_func(array('PHPExcel_Shared_CodePage','NumberToName'),$unsupportedCodePage); - } catch (Exception $e) { - $this->assertEquals($e->getMessage(), 'Code page 720 not supported.'); - return; - } - $this->fail('An expected exception has not been raised.'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php deleted file mode 100644 index 80b77d3c691..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/DateTest.php +++ /dev/null @@ -1,188 +0,0 @@ -assertTrue($result); - } - } - - public function testSetExcelCalendarWithInvalidValue() - { - $unsupportedCalendar = '2012'; - $result = call_user_func(array('PHPExcel_Shared_Date','setExcelCalendar'),$unsupportedCalendar); - $this->assertFalse($result); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1900 - */ - public function testDateTimeExcelToPHP1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900.data'); - } - - /** - * @dataProvider providerDateTimePHPToExcel1900 - */ - public function testDateTimePHPToExcel1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','PHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimePHPToExcel1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimePHPToExcel1900.data'); - } - - /** - * @dataProvider providerDateTimeFormattedPHPToExcel1900 - */ - public function testDateTimeFormattedPHPToExcel1900() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','FormattedPHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimeFormattedPHPToExcel1900() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data'); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1904 - */ - public function testDateTimeExcelToPHP1904() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_MAC_1904 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1904() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1904.data'); - } - - /** - * @dataProvider providerDateTimePHPToExcel1904 - */ - public function testDateTimePHPToExcel1904() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_MAC_1904 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','PHPToExcel'),$args); - $this->assertEquals($expectedResult, $result, NULL, 1E-5); - } - - public function providerDateTimePHPToExcel1904() - { - return new testDataFileIterator('rawTestData/Shared/DateTimePHPToExcel1904.data'); - } - - /** - * @dataProvider providerIsDateTimeFormatCode - */ - public function testIsDateTimeFormatCode() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Date','isDateTimeFormatCode'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerIsDateTimeFormatCode() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeFormatCodes.data'); - } - - /** - * @dataProvider providerDateTimeExcelToPHP1900Timezone - */ - public function testDateTimeExcelToPHP1900Timezone() - { - $result = call_user_func( - array('PHPExcel_Shared_Date','setExcelCalendar'), - PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900 - ); - - $args = func_get_args(); - $expectedResult = array_pop($args); - if ($args[0] < 1) { - $expectedResult += gmmktime(0,0,0); - } - $result = call_user_func_array(array('PHPExcel_Shared_Date','ExcelToPHP'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerDateTimeExcelToPHP1900Timezone() - { - return new testDataFileIterator('rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php deleted file mode 100644 index 9deb401d91b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FileTest.php +++ /dev/null @@ -1,39 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function testSetUseUploadTempDirectory() - { - $useUploadTempDirectoryValues = array( - TRUE, - FALSE, - ); - - foreach($useUploadTempDirectoryValues as $useUploadTempDirectoryValue) { - call_user_func(array('PHPExcel_Shared_File','setUseUploadTempDirectory'),$useUploadTempDirectoryValue); - - $result = call_user_func(array('PHPExcel_Shared_File','getUseUploadTempDirectory')); - $this->assertEquals($useUploadTempDirectoryValue, $result); - } - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php deleted file mode 100644 index 6ce5a0261f3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/FontTest.php +++ /dev/null @@ -1,94 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function testSetAutoSizeMethod() - { - $autosizeMethodValues = array( - PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT, - PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX, - ); - - foreach($autosizeMethodValues as $autosizeMethodValue) { - $result = call_user_func(array('PHPExcel_Shared_Font','setAutoSizeMethod'),$autosizeMethodValue); - $this->assertTrue($result); - } - } - - public function testSetAutoSizeMethodWithInvalidValue() - { - $unsupportedAutosizeMethod = 'guess'; - - $result = call_user_func(array('PHPExcel_Shared_Font','setAutoSizeMethod'),$unsupportedAutosizeMethod); - $this->assertFalse($result); - } - - /** - * @dataProvider providerFontSizeToPixels - */ - public function testFontSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','fontSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerFontSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/FontSizeToPixels.data'); - } - - /** - * @dataProvider providerInchSizeToPixels - */ - public function testInchSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','inchSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerInchSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/InchSizeToPixels.data'); - } - - /** - * @dataProvider providerCentimeterSizeToPixels - */ - public function testCentimeterSizeToPixels() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Shared_Font','centimeterSizeToPixels'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerCentimeterSizeToPixels() - { - return new testDataFileIterator('rawTestData/Shared/CentimeterSizeToPixels.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php deleted file mode 100644 index 24a26178a10..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/PasswordHasherTest.php +++ /dev/null @@ -1,33 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerHashPassword() - { - return new testDataFileIterator('rawTestData/Shared/PasswordHashes.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php deleted file mode 100644 index 9a34729d6cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/StringTest.php +++ /dev/null @@ -1,83 +0,0 @@ -assertTrue($result); - } - - public function testGetIsIconvEnabled() - { - $result = call_user_func(array('PHPExcel_Shared_String','getIsIconvEnabled')); - $this->assertTrue($result); - } - - public function testGetDecimalSeparator() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['decimal_point'])) ? $localeconv['decimal_point'] : ','; - $result = call_user_func(array('PHPExcel_Shared_String','getDecimalSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetDecimalSeparator() - { - $expectedResult = ','; - $result = call_user_func(array('PHPExcel_Shared_String','setDecimalSeparator'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getDecimalSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testGetThousandsSeparator() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['thousands_sep'])) ? $localeconv['thousands_sep'] : ','; - $result = call_user_func(array('PHPExcel_Shared_String','getThousandsSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetThousandsSeparator() - { - $expectedResult = ' '; - $result = call_user_func(array('PHPExcel_Shared_String','setThousandsSeparator'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getThousandsSeparator')); - $this->assertEquals($expectedResult, $result); - } - - public function testGetCurrencyCode() - { - $localeconv = localeconv(); - - $expectedResult = (!empty($localeconv['currency_symbol'])) ? $localeconv['currency_symbol'] : '$'; - $result = call_user_func(array('PHPExcel_Shared_String','getCurrencyCode')); - $this->assertEquals($expectedResult, $result); - } - - public function testSetCurrencyCode() - { - $expectedResult = '£'; - $result = call_user_func(array('PHPExcel_Shared_String','setCurrencyCode'),$expectedResult); - - $result = call_user_func(array('PHPExcel_Shared_String','getCurrencyCode')); - $this->assertEquals($expectedResult, $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php deleted file mode 100644 index 0e44ceb628a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Shared/TimeZoneTest.php +++ /dev/null @@ -1,39 +0,0 @@ -assertTrue($result); - } - - } - - public function testSetTimezoneWithInvalidValue() - { - $unsupportedTimezone = 'Etc/GMT+10'; - $result = call_user_func(array('PHPExcel_Shared_TimeZone','setTimezone'),$unsupportedTimezone); - $this->assertFalse($result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php deleted file mode 100644 index f157b1a34b5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/ColorTest.php +++ /dev/null @@ -1,81 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerColorGetRed() - { - return new testDataFileIterator('rawTestData/Style/ColorGetRed.data'); - } - - /** - * @dataProvider providerColorGetGreen - */ - public function testGetGreen() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','getGreen'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorGetGreen() - { - return new testDataFileIterator('rawTestData/Style/ColorGetGreen.data'); - } - - /** - * @dataProvider providerColorGetBlue - */ - public function testGetBlue() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','getBlue'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorGetBlue() - { - return new testDataFileIterator('rawTestData/Style/ColorGetBlue.data'); - } - - /** - * @dataProvider providerColorChangeBrightness - */ - public function testChangeBrightness() - { - $args = func_get_args(); - $expectedResult = array_pop($args); - $result = call_user_func_array(array('PHPExcel_Style_Color','changeBrightness'),$args); - $this->assertEquals($expectedResult, $result); - } - - public function providerColorChangeBrightness() - { - return new testDataFileIterator('rawTestData/Style/ColorChangeBrightness.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php deleted file mode 100644 index 13fc3ede3a6..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Style/NumberFormatTest.php +++ /dev/null @@ -1,36 +0,0 @@ -assertEquals($expectedResult, $result); - } - - public function providerNumberFormat() - { - return new testDataFileIterator('rawTestData/Style/NumberFormat.data'); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php deleted file mode 100644 index 65d0a85c651..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/Column/RuleTest.php +++ /dev/null @@ -1,109 +0,0 @@ -_mockAutoFilterColumnObject = $this->getMockBuilder('PHPExcel_Worksheet_AutoFilter_Column') - ->disableOriginalConstructor() - ->getMock(); - - $this->_mockAutoFilterColumnObject->expects($this->any()) - ->method('testColumnInRange') - ->will($this->returnValue(3)); - - $this->_testAutoFilterRuleObject = new PHPExcel_Worksheet_AutoFilter_Column_Rule( - $this->_mockAutoFilterColumnObject - ); - } - - public function testGetRuleType() - { - $result = $this->_testAutoFilterRuleObject->getRuleType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER, $result); - } - - public function testSetRuleType() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setRuleType($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getRuleType(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetValue() - { - $expectedResult = 100; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setValue($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getValue(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetOperator() - { - $result = $this->_testAutoFilterRuleObject->getOperator(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, $result); - } - - public function testSetOperator() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setOperator($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getOperator(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetGrouping() - { - $expectedResult = PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setGrouping($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - - $result = $this->_testAutoFilterRuleObject->getGrouping(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterRuleObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterRuleObject->setParent($this->_mockAutoFilterColumnObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - } - - public function testClone() - { - $result = clone $this->_testAutoFilterRuleObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column_Rule', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php deleted file mode 100644 index 3c1821bad9b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilter/ColumnTest.php +++ /dev/null @@ -1,173 +0,0 @@ -_mockAutoFilterObject = $this->getMockBuilder('PHPExcel_Worksheet_AutoFilter') - ->disableOriginalConstructor() - ->getMock(); - - $this->_mockAutoFilterObject->expects($this->any()) - ->method('testColumnInRange') - ->will($this->returnValue(3)); - - $this->_testAutoFilterColumnObject = new PHPExcel_Worksheet_AutoFilter_Column( - $this->_testInitialColumn, - $this->_mockAutoFilterObject - ); - } - - public function testGetColumnIndex() - { - $result = $this->_testAutoFilterColumnObject->getColumnIndex(); - $this->assertEquals($this->_testInitialColumn, $result); - } - - public function testSetColumnIndex() - { - $expectedResult = 'L'; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setColumnIndex($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getColumnIndex(); - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterColumnObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setParent($this->_mockAutoFilterObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testGetFilterType() - { - $result = $this->_testAutoFilterColumnObject->getFilterType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER, $result); - } - - public function testSetFilterType() - { - $result = $this->_testAutoFilterColumnObject->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getFilterType(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidFilterTypeThrowsException() - { - $expectedResult = 'Unfiltered'; - - $result = $this->_testAutoFilterColumnObject->setFilterType($expectedResult); - } - - public function testGetJoin() - { - $result = $this->_testAutoFilterColumnObject->getJoin(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR, $result); - } - - public function testSetJoin() - { - $result = $this->_testAutoFilterColumnObject->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - - $result = $this->_testAutoFilterColumnObject->getJoin(); - $this->assertEquals(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidJoinThrowsException() - { - $expectedResult = 'Neither'; - - $result = $this->_testAutoFilterColumnObject->setJoin($expectedResult); - } - - public function testSetAttributes() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - public function testGetAttributes() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - - $result = $this->_testAutoFilterColumnObject->getAttributes(); - $this->assertTrue(is_array($result)); - $this->assertEquals(count($attributeSet), count($result)); - } - - public function testSetAttribute() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - foreach($attributeSet as $attributeName => $attributeValue) { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterColumnObject->setAttribute($attributeName,$attributeValue); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - } - - public function testGetAttribute() - { - $attributeSet = array( 'val' => 100, - 'maxVal' => 200 - ); - - $this->_testAutoFilterColumnObject->setAttributes($attributeSet); - - foreach($attributeSet as $attributeName => $attributeValue) { - $result = $this->_testAutoFilterColumnObject->getAttribute($attributeName); - $this->assertEquals($attributeValue, $result); - } - $result = $this->_testAutoFilterColumnObject->getAttribute('nonExistentAttribute'); - $this->assertNull($result); - } - - public function testClone() - { - $result = clone $this->_testAutoFilterColumnObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php deleted file mode 100644 index 9907eabc50a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/AutoFilterTest.php +++ /dev/null @@ -1,340 +0,0 @@ -_mockWorksheetObject = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->_mockCacheController = $this->getMockBuilder('PHPExcel_CachedObjectStorage_Memory') - ->disableOriginalConstructor() - ->getMock(); - $this->_mockWorksheetObject->expects($this->any()) - ->method('getCellCacheController') - ->will($this->returnValue($this->_mockCacheController)); - - $this->_testAutoFilterObject = new PHPExcel_Worksheet_AutoFilter( - $this->_testInitialRange, - $this->_mockWorksheetObject - ); - } - - public function testToString() - { - $expectedResult = $this->_testInitialRange; - - // magic __toString should return the active autofilter range - $result = $this->_testAutoFilterObject; - $this->assertEquals($expectedResult, $result); - } - - public function testGetParent() - { - $result = $this->_testAutoFilterObject->getParent(); - $this->assertInstanceOf('PHPExcel_Worksheet', $result); - } - - public function testSetParent() - { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setParent($this->_mockWorksheetObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - - public function testGetRange() - { - $expectedResult = $this->_testInitialRange; - - // Result should be the active autofilter range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - } - - public function testSetRange() - { - $ranges = array('G1:J512' => 'Worksheet1!G1:J512', - 'K1:N20' => 'K1:N20' - ); - - foreach($ranges as $actualRange => $fullRange) { - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange($fullRange); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Result should be the new autofilter range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($actualRange, $result); - } - } - - public function testClearRange() - { - $expectedResult = ''; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Result should be a clear range - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetRangeInvalidRange() - { - $expectedResult = 'A1'; - - $result = $this->_testAutoFilterObject->setRange($expectedResult); - } - - public function testGetColumnsEmpty() - { - // There should be no columns yet defined - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(0, count($result)); - } - - public function testGetColumnOffset() - { - $columnIndexes = array( 'H' => 0, - 'K' => 3, - 'M' => 5 - ); - - // If we request a specific column by its column ID, we should get an - // integer returned representing the column offset within the range - foreach($columnIndexes as $columnIndex => $columnOffset) { - $result = $this->_testAutoFilterObject->getColumnOffset($columnIndex); - $this->assertEquals($columnOffset, $result); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testGetInvalidColumnOffset() - { - $invalidColumn = 'G'; - - $result = $this->_testAutoFilterObject->getColumnOffset($invalidColumn); - } - - public function testSetColumnWithString() - { - $expectedResult = 'L'; - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setColumn($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(1, count($result)); - $this->assertArrayHasKey($expectedResult,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$expectedResult]); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidColumnWithString() - { - $invalidColumn = 'A'; - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - public function testSetColumnWithColumnObject() - { - $expectedResult = 'M'; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($expectedResult); - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setColumn($columnObject); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(1, count($result)); - $this->assertArrayHasKey($expectedResult,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$expectedResult]); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetInvalidColumnWithObject() - { - $invalidColumn = 'E'; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($invalidColumn); - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSetColumnWithInvalidDataType() - { - $invalidColumn = 123.456; - $columnObject = new PHPExcel_Worksheet_AutoFilter_Column($invalidColumn); - - $result = $this->_testAutoFilterObject->setColumn($invalidColumn); - } - - public function testGetColumns() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - $result = $this->_testAutoFilterObject->getColumns(); - // Result should be an array of PHPExcel_Worksheet_AutoFilter_Column - // objects for each column we set indexed by the column ID - $this->assertInternalType('array', $result); - $this->assertEquals(count($columnIndexes), count($result)); - foreach($columnIndexes as $columnIndex) { - $this->assertArrayHasKey($columnIndex,$result); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result[$columnIndex]); - } - } - - public function testGetColumn() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // If we request a specific column by its column ID, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - foreach($columnIndexes as $columnIndex) { - $result = $this->_testAutoFilterObject->getColumn($columnIndex); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - } - - public function testGetColumnByOffset() - { - $columnIndexes = array( 0 => 'H', - 3 => 'K', - 5 => 'M' - ); - - // If we request a specific column by its offset, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - foreach($columnIndexes as $columnIndex => $columnID) { - $result = $this->_testAutoFilterObject->getColumnByOffset($columnIndex); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - $this->assertEquals($result->getColumnIndex(),$columnID); - } - } - - public function testGetColumnIfNotSet() - { - // If we request a specific column by its column ID, we should - // get a PHPExcel_Worksheet_AutoFilter_Column object returned - $result = $this->_testAutoFilterObject->getColumn('K'); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter_Column', $result); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testGetColumnWithoutRangeSet() - { - // Clear the range - $result = $this->_testAutoFilterObject->setRange(); - - $result = $this->_testAutoFilterObject->getColumn('A'); - } - - public function testClearRangeWithExistingColumns() - { - $expectedResult = ''; - - $columnIndexes = array('L','M','N'); - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange(); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Range should be cleared - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - - // Column array should be cleared - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(0, count($result)); - } - - public function testSetRangeWithExistingColumns() - { - $expectedResult = 'G1:J512'; - - // These columns should be retained - $columnIndexes1 = array('I','J'); - foreach($columnIndexes1 as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - // These columns should be discarded - $columnIndexes2 = array('K','L','M'); - foreach($columnIndexes2 as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - // Setters return the instance to implement the fluent interface - $result = $this->_testAutoFilterObject->setRange($expectedResult); - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - - // Range should be correctly set - $result = $this->_testAutoFilterObject->getRange(); - $this->assertEquals($expectedResult, $result); - - // Only columns that existed in the original range and that - // still fall within the new range should be retained - $result = $this->_testAutoFilterObject->getColumns(); - $this->assertInternalType('array', $result); - $this->assertEquals(count($columnIndexes1), count($result)); - } - - public function testClone() - { - $columnIndexes = array('L','M'); - - foreach($columnIndexes as $columnIndex) { - $this->_testAutoFilterObject->setColumn($columnIndex); - } - - $result = clone $this->_testAutoFilterObject; - $this->assertInstanceOf('PHPExcel_Worksheet_AutoFilter', $result); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php deleted file mode 100644 index c2c130d7a3a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/CellCollectionTest.php +++ /dev/null @@ -1,31 +0,0 @@ -getActiveSheet(); - $worksheet->setCellValue('A1', 1); - $worksheet->setCellValue('A2', 2); - $this->assertEquals($cells, $worksheet->getCellCollection(), "Cache method \"$method\"."); - PHPExcel_CachedObjectStorageFactory::finalize(); - } - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php deleted file mode 100644 index bef500ca82a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnCellIteratorTest.php +++ /dev/null @@ -1,87 +0,0 @@ -mockCell = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - $this->mockWorksheet->expects($this->any()) - ->method('getCellByColumnAndRow') - ->will($this->returnValue($this->mockCell)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A'); - $ColumnCellIndexResult = 1; - $this->assertEquals($ColumnCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $ColumnCell) { - $this->assertEquals($ColumnCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $ColumnCell); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $ColumnCellIndexResult = 2; - $this->assertEquals($ColumnCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $ColumnCell) { - $this->assertEquals($ColumnCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $ColumnCell); - } - } - - public function testIteratorSeekAndPrev() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $columnIndexResult = 4; - $iterator->seek(4); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < $columnIndexResult-1; $i++) { - $iterator->prev(); - $this->assertEquals($columnIndexResult - $i, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnCellIterator($this->mockWorksheet, 'A', 2, 4); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php deleted file mode 100644 index 7d78b61791d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/ColumnIteratorTest.php +++ /dev/null @@ -1,89 +0,0 @@ -mockColumn = $this->getMockBuilder('PHPExcel_Worksheet_Column') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - $this->mockWorksheet->expects($this->any()) - ->method('current') - ->will($this->returnValue($this->mockColumn)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet); - $columnIndexResult = 'A'; - $this->assertEquals($columnIndexResult, $iterator->key()); - - foreach($iterator as $key => $column) { - $this->assertEquals($columnIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $columnIndexResult = 'B'; - $this->assertEquals($columnIndexResult, $iterator->key()); - - foreach($iterator as $key => $column) { - $this->assertEquals($columnIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - } - } - - public function testIteratorSeekAndPrev() - { - $ranges = range('A','E'); - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $columnIndexResult = 'D'; - $iterator->seek('D'); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < array_search($columnIndexResult, $ranges); $i++) { - $iterator->prev(); - $expectedResult = $ranges[array_search($columnIndexResult, $ranges) - $i]; - $this->assertEquals($expectedResult, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $iterator->seek('A'); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_ColumnIterator($this->mockWorksheet, 'B', 'D'); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php deleted file mode 100644 index cdd3c84d4bd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowCellIteratorTest.php +++ /dev/null @@ -1,89 +0,0 @@ -mockCell = $this->getMockBuilder('PHPExcel_Cell') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - $this->mockWorksheet->expects($this->any()) - ->method('getCellByColumnAndRow') - ->will($this->returnValue($this->mockCell)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet); - $RowCellIndexResult = 'A'; - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $RowCell) { - $this->assertEquals($RowCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $RowCell); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $RowCellIndexResult = 'B'; - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - foreach($iterator as $key => $RowCell) { - $this->assertEquals($RowCellIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Cell', $RowCell); - } - } - - public function testIteratorSeekAndPrev() - { - $ranges = range('A','E'); - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $RowCellIndexResult = 'D'; - $iterator->seek('D'); - $this->assertEquals($RowCellIndexResult, $iterator->key()); - - for($i = 1; $i < array_search($RowCellIndexResult, $ranges); $i++) { - $iterator->prev(); - $expectedResult = $ranges[array_search($RowCellIndexResult, $ranges) - $i]; - $this->assertEquals($expectedResult, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowCellIterator($this->mockWorksheet, 2, 'B', 'D'); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php deleted file mode 100644 index 48d8b6bb1cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/RowIteratorTest.php +++ /dev/null @@ -1,87 +0,0 @@ -mockRow = $this->getMockBuilder('PHPExcel_Worksheet_Row') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - $this->mockWorksheet->expects($this->any()) - ->method('current') - ->will($this->returnValue($this->mockRow)); - } - - - public function testIteratorFullRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet); - $rowIndexResult = 1; - $this->assertEquals($rowIndexResult, $iterator->key()); - - foreach($iterator as $key => $row) { - $this->assertEquals($rowIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - } - } - - public function testIteratorStartEndRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $rowIndexResult = 2; - $this->assertEquals($rowIndexResult, $iterator->key()); - - foreach($iterator as $key => $row) { - $this->assertEquals($rowIndexResult++, $key); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - } - } - - public function testIteratorSeekAndPrev() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $columnIndexResult = 4; - $iterator->seek(4); - $this->assertEquals($columnIndexResult, $iterator->key()); - - for($i = 1; $i < $columnIndexResult-1; $i++) { - $iterator->prev(); - $this->assertEquals($columnIndexResult - $i, $iterator->key()); - } - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testSeekOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $iterator->seek(1); - } - - /** - * @expectedException PHPExcel_Exception - */ - public function testPrevOutOfRange() - { - $iterator = new PHPExcel_Worksheet_RowIterator($this->mockWorksheet, 2, 4); - $iterator->prev(); - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php deleted file mode 100644 index c70c38d364f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetColumnTest.php +++ /dev/null @@ -1,46 +0,0 @@ -mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->mockWorksheet->expects($this->any()) - ->method('getHighestRow') - ->will($this->returnValue(5)); - } - - - public function testInstantiateColumnDefault() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - $columnIndex = $column->getColumnIndex(); - $this->assertEquals('A', $columnIndex); - } - - public function testInstantiateColumnSpecified() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet, 'E'); - $this->assertInstanceOf('PHPExcel_Worksheet_Column', $column); - $columnIndex = $column->getColumnIndex(); - $this->assertEquals('E', $columnIndex); - } - - public function testGetCellIterator() - { - $column = new PHPExcel_Worksheet_Column($this->mockWorksheet); - $cellIterator = $column->getCellIterator(); - $this->assertInstanceOf('PHPExcel_Worksheet_ColumnCellIterator', $cellIterator); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php b/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php deleted file mode 100644 index 2761b52be61..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/Classes/PHPExcel/Worksheet/WorksheetRowTest.php +++ /dev/null @@ -1,46 +0,0 @@ -mockWorksheet = $this->getMockBuilder('PHPExcel_Worksheet') - ->disableOriginalConstructor() - ->getMock(); - $this->mockWorksheet->expects($this->any()) - ->method('getHighestColumn') - ->will($this->returnValue('E')); - } - - - public function testInstantiateRowDefault() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - $rowIndex = $row->getRowIndex(); - $this->assertEquals(1, $rowIndex); - } - - public function testInstantiateRowSpecified() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet, 5); - $this->assertInstanceOf('PHPExcel_Worksheet_Row', $row); - $rowIndex = $row->getRowIndex(); - $this->assertEquals(5, $rowIndex); - } - - public function testGetCellIterator() - { - $row = new PHPExcel_Worksheet_Row($this->mockWorksheet); - $cellIterator = $row->getCellIterator(); - $this->assertInstanceOf('PHPExcel_Worksheet_RowCellIterator', $cellIterator); - } -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php b/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php deleted file mode 100644 index 8e8cdb39a9c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/bootstrap.php +++ /dev/null @@ -1,49 +0,0 @@ - /etc/php.d/xdebug.ini' . "\n"; -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php b/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php deleted file mode 100644 index a0ac2d2c9d0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/Complex.php +++ /dev/null @@ -1,114 +0,0 @@ -realPart = (float) $realPart; - $this->imaginaryPart = (float) $imaginaryPart; - $this->suffix = strtolower($suffix); - } - - public function getReal() - { - return $this->realPart; - } - - public function getImaginary() - { - return $this->imaginaryPart; - } - - public function getSuffix() - { - return $this->suffix; - } - - public function __toString() { - $str = ""; - if ($this->imaginaryPart != 0.0) { - if (abs($this->imaginaryPart) != 1.0) { - $str .= $this->imaginaryPart . $this->suffix; - } else { - $str .= (($this->imaginaryPart < 0.0) ? '-' : ''). $this->suffix; - } - } - if ($this->realPart != 0.0) { - if (($str) && ($this->imaginaryPart > 0.0)) - $str = "+" . $str; - $str = $this->realPart . $str; - } - if (!$str) - $str = "0.0"; - return $str; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php b/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php deleted file mode 100644 index 5b64e4ced51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/custom/complexAssert.php +++ /dev/null @@ -1,62 +0,0 @@ -_errorMessage = 'Expected Error: ' . - $actual . ' !== ' . $expected; - return FALSE; - } - - $expectedComplex = new Complex($expected); - $actualComplex = new Complex($actual); - - if (!is_numeric($actualComplex->getReal()) || !is_numeric($expectedComplex->getReal())) { - if ($actualComplex->getReal() !== $expectedComplex->getReal()) { - $this->_errorMessage = 'Mismatched String: ' . - $actualComplex->getReal() . ' !== ' . $expectedComplex->getReal(); - return FALSE; - } - return TRUE; - } - - if ($actualComplex->getReal() < ($expectedComplex->getReal() - $delta) || - $actualComplex->getReal() > ($expectedComplex->getReal() + $delta)) { - $this->_errorMessage = 'Mismatched Real part: ' . - $actualComplex->getReal() . ' != ' . $expectedComplex->getReal(); - return FALSE; - } - - if ($actualComplex->getImaginary() < ($expectedComplex->getImaginary() - $delta) || - $actualComplex->getImaginary() > ($expectedComplex->getImaginary() + $delta)) { - $this->_errorMessage = 'Mismatched Imaginary part: ' . - $actualComplex->getImaginary() . ' != ' . $expectedComplex->getImaginary(); - return FALSE; - } - - if ($actualComplex->getSuffix() !== $actualComplex->getSuffix()) { - $this->_errorMessage = 'Mismatched Suffix: ' . - $actualComplex->getSuffix() . ' != ' . $expectedComplex->getSuffix(); - return FALSE; - } - - return TRUE; - } - - - public function getErrorMessage() { - return $this->_errorMessage; - } - -} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml deleted file mode 100644 index 7e598cc9ab4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit-cc.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - ./Classes - - - - ../Classes - - ../Classes/PHPExcel/Shared/PCLZip - ../Classes/PHPExcel/Shared/JAMA - ../Classes/PHPExcel/Writer/PDF - - - - - - - - - - diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml deleted file mode 100644 index 2c2ff360ae0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/phpunit.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - ./Classes - - - - ../Classes - - ../Classes/PHPExcel/Shared/PCLZip - ../Classes/PHPExcel/Shared/JAMA - ../Classes/PHPExcel/Writer/PDF - - - - diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data deleted file mode 100644 index cdcc776b044..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATE.data +++ /dev/null @@ -1,79 +0,0 @@ -# Year Month Day Result Comments -18, 11, 11, 6890 -1900, 1, 1, 1 // Excel 1900 Calendar Base Date -1900, 2, 28, 59 // Day before Excel mythical 1900 leap day -1900, 2, 29, 60 // Excel mythical 1900 leap day -1900, 3, 1, 61 // Day after Excel mythical 1900 leap day -1901, 12, 13, 713 // Day after Excel mythical 1900 leap day -1901, 12, 14, 714 // PHP 32-bit Earliest Date -1903, 12, 31, 1461 -1904, 1, 1, 1462 // Excel 1904 Calendar Base Date -1904, 1, 2, 1463 -1960, 12, 19, 22269 -1970, 1, 1, 25569 // PHP Base Date -1982, 12, 7, 30292 -2008, 6, 12, 39611 -2038, 1, 19, 50424 // PHP 32-bit Latest Date -2038, 1, 20, 50425 // Day after PHP 32-bit Latest Date -2008, 1, 1, 39448 -2008, 1, , 39447 -2008, 1, -1, 39446 -2008, 1, -30, 39417 -2008, 1, -31, 39416 -2008, 1, -365, 39082 -2008, 3, 1, 39508 -2008, 3, , 39507 -2008, 3, -1, 39506 -2008, 3, -365, 39142 -2008, , 1, 39417 -2008, -1, 1, 39387 -2008, -11, 1, 39083 -2008, -12, 1, 39052 -2008, -13, 1, 39022 -2008, -13, 30, 39051 -2008, -13, , 39021 -2008, -13, -30, 38991 -2008, -13, -31, 38990 -2008, 13, 1, 39814 -2007, 15, , 39507 -2008, 26, 1, 40210 -2008, 26, -10, 40199 -2008, -26, 61, 38686 -2010, -15, -50, 39641 -2010, -15, 50, 39741 -2010, 15, -50, 40552 -2010, 15, 50, 40652 -2010, 1.5, 1, 40179 -2010, 1.5, 0, 40178 -2010, 0, 1.5, 40148 -2010, 1, 1.5, 40179 -2012, 6, 15, 41075 -2012, 6, , 41060 -2012, , 15, 40892 -, 6, 15, 167 -10, 6, 15, 3819 -10, , , 3622 -, 10, , 274 -, , 10, "#NUM!" --20, , , "#NUM!" --20, 6, 15, "#NUM!" -9999, 12, 31, 2958465 // Excel Maximum Date -10000, 1, 1, "#NUM!" // Exceeded Excel Maximum Date -2008, 8, 10, 39670 -2008, 12, 31, 39813 -2008, 8, 32, 39692 -2008, 13, 31, 39844 -2009, 1, 0, 39813 -2009, 1, -1, 39812 -2009, 0, 0, 39782 -2009, 0, -1, 39781 -2009, -1, 0, 39752 -2009, -1, -1, 39751 -2010, 0, -1, 40146 -2010, 5, 31, 40329 -2010, 1, '21st', 40199 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -2010, "March",'21st', 40258 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -2010, "March",21, 40258 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"ABC", 1, 21, "#VALUE!" -2010, "DEF", 21, "#VALUE!" -2010, 3, "GHI", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data deleted file mode 100644 index e8d9e06bfac..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEDIF.data +++ /dev/null @@ -1,96 +0,0 @@ -"ABC", "2007-1-10", "Y", "#VALUE!" -"2007-1-1", "DEF", "Y", "#VALUE!" -"2007-1-1", "2007-1-10", "XYZ", "#VALUE!" -"2007-1-10", "2007-1-1", "Y", "#NUM!" -"2007-12-31", "2008-1-10", "Y", 0 -"2007-1-1", "2007-1-10", "Y", 0 -"2007-1-1", "2007-1-10", "M", 0 -"2007-1-1", "2007-1-10", "D", 9 -"2007-1-1", "2007-1-10", "YM", 0 -"2007-1-1", "2007-1-10", "YD", 9 -"2007-1-1", "2007-1-10", "MD", 9 -"2007-1-1", "2007-12-31", "Y", 0 -"2007-1-1", "2007-12-31", "M", 11 -"2007-1-1", "2007-12-31", "D", 364 -"2007-1-1", "2007-12-31", "YM", 11 -"2007-1-1", "2007-12-31", "YD", 364 -"2007-1-1", "2007-12-31", "MD", 30 -"2007-1-1", "2008-7-1", "Y", 1 -"2007-1-1", "2008-7-1", "M", 18 -"2007-1-1", "2008-7-1", "D", 547 -"2007-1-1", "2008-7-1", "YM", 6 -"2007-1-1", "2008-7-1", "YD", 181 -"2007-1-1", "2008-7-1", "MD", 0 -"2007-1-1", "2007-1-31", "Y", 0 -"2007-1-1", "2007-1-31", "M", 0 -"2007-1-1", "2007-1-31", "D", 30 -"2007-1-1", "2007-1-31", "YM", 0 -"2007-1-1", "2007-1-31", "YD", 30 -"2007-1-1", "2007-1-31", "MD", 30 -"2007-1-1", "2007-2-1", "Y", 0 -"2007-1-1", "2007-2-1", "M", 1 -"2007-1-1", "2007-2-1", "D", 31 -"2007-1-1", "2007-2-1", "YM", 1 -"2007-1-1", "2007-2-1", "YD", 31 -"2007-1-1", "2007-2-1", "MD", 0 -"2007-1-1", "2007-2-28", "Y", 0 -"2007-1-1", "2007-2-28", "M", 1 -"2007-1-1", "2007-2-28", "D", 58 -"2007-1-1", "2007-2-28", "YM", 1 -"2007-1-1", "2007-2-28", "YD", 58 -"2007-1-1", "2007-2-28", "MD", 27 -"2007-1-31", "2007-2-1", "Y", 0 -"2007-1-31", "2007-2-1", "M", 0 -"2007-1-31", "2007-2-1", "D", 1 -"2007-1-31", "2007-2-1", "YM", 0 -"2007-1-31", "2007-2-1", "YD", 1 -"2007-1-31", "2007-2-1", "MD", 1 -"2007-1-31", "2007-3-1", "Y", 0 -"2007-1-31", "2007-3-1", "M", 1 -"2007-1-31", "2007-3-1", "D", 29 -"2007-1-31", "2007-3-1", "YM", 1 -"2007-1-31", "2007-3-1", "YD", 29 -"2007-1-31", "2007-3-1", "MD", -2 -"2007-1-31", "2007-3-31", "Y", 0 -"2007-1-31", "2007-3-31", "M", 2 -"2007-1-31", "2007-3-31", "D", 59 -"2007-1-31", "2007-3-31", "YM", 2 -"2007-1-31", "2007-3-31", "YD", 59 -"2007-1-31", "2007-3-31", "MD", 0 -"2008-1-1", "2008-9-1", "Y", 0 -"2008-1-1", "2008-9-1", "M", 8 -"2008-1-1", "2008-9-1", "D", 244 -"2008-1-1", "2008-9-1", "YM", 8 -"2008-1-1", "2008-9-1", "YD", 244 -"2008-1-1", "2008-9-1", "MD", 0 -"2007-2-1", "2008-4-1", "Y", 1 -"2007-2-1", "2008-4-1", "M", 14 -"2007-2-1", "2008-4-1", "D", 425 -"2007-2-1", "2008-4-1", "YM", 2 -"2007-2-1", "2008-4-1", "YD", 59 -"2007-2-1", "2008-4-1", "MD", 0 -"1960-12-19", "2008-6-28", "Y", 47 -"1960-12-19", "2008-6-28", "M", 570 -"1960-12-19", "2008-6-28", "D", 17358 -"1960-12-19", "2008-6-28", "YM", 6 -"1960-12-19", "2008-6-28", "YD", 191 -"1960-12-19", "2008-6-28", "MD", 9 -"1982-12-7", "2008-6-28", "Y", 25 -"1982-12-7", "2008-6-28", "M", 306 -"1982-12-7", "2008-6-28", "D", 9335 -"1982-12-7", "2008-6-28", "YM", 6 -"1982-12-7", "2008-6-28", "YD", 203 -"1982-12-7", "2008-6-28", "MD", 21 -"2007-12-25", "2010-3-17", "Y", 2 -"2007-12-25", "2010-3-17", "M", 26 -"2007-12-25", "2010-3-17", "D", 813 -"2007-12-25", "2010-3-17", "YM", 2 -"2007-12-25", "2010-3-17", "YD", 82 -"2007-12-25", "2010-3-17", "MD", 20 -"19-12-1960", "26-01-2012" "Y", 51 -"19-12-1960", "26-01-2012" "M", 613 -"19-12-1960", "26-01-2012" "D", 18665 -"19-12-1960", "26-01-2012" "YM", 1 -"19-12-1960", "26-01-2012" "YD", 38 -"19-12-1960", "26-01-2012" "MD", 7 -"19-12-1960", "12-12-2012" "Y", 50 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data deleted file mode 100644 index f4b0f68e369..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DATEVALUE.data +++ /dev/null @@ -1,66 +0,0 @@ -# Date String Result -"25-Dec-1899", "#VALUE!" -"31-Dec-1899", "#VALUE!" -"1-Jan-1900", 1 -"1900/2/28", 59 -"29-02-1900", 60 -"29th February 1900", 60 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1900/3/1", 61 -"13-12-1901", 713 -"14-12-1901", 714 -"1903/12/31", 1461 -"1-Jan-1904", 1462 -"2nd-Jan-1904", 1463 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"19-12-1960", 22269 -"1st January 1970", 25569 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"7-Dec-1982", 30292 -"1-1-2008", 39448 -"2038-01-19", 50424 -"2-6-2008", 39601 -"December 25th 2008", 39807 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1 Jan-2008", 39448 -"12-31-2008", 39813 // MS Excel success or failure dependent on country settings -"31-12-2008", 39813 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"8/22/2008", 39682 // MS Excel success or failure dependent on country settings -"22/8/2008", 39682 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"22/8/08", 39682 -"22-AUG-2008", 39682 -"2008/02/23", 39501 -"6-7-2008", 39635 -"28-2-2007", 39141 // MS Excel success or failure dependent on country settings -"2-28-2007", 39141 // PHPExcel tries to handle both US and UK formats, irrespective of country settings -"29-2-2007", "#VALUE!" // Should fail because it's an invalid date, but PHPExcel currently adjusts to 1-3-2007 - FIX NEEDED -"1/1/1999", 36161 -"1954-07-20", 19925 -"22 August 98", 36029 -"1st March 2007", 39142 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"The 1st day of March 2007", "#VALUE!" -"1 Jan", 41275 -"31/12", 41639 -"12/31", 11658 // Excel reads as 1st December 1931, not 31st December in current year -"5-JUL", 41460 -"5 Jul", 41460 -"12/2008", 39783 -"10/32", 11963 -11, "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" -1, "#VALUE!" -12345, "#VALUE!" -12, "#VALUE!" -"12-Feb-2010", 40221 -"Feb-12-2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"February-12-2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"February 12 2010", 40221 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"18 Feb 2010", 40227 -"17th 3rd 2010", 40254 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"Feb 18th 2010", 40227 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1st Feb 2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1st-Feb-2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"1me Fev 2010", "#VALUE!" -"February 1st 2010", 40210 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"2nd Feb 2010", 40211 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"Second Feb 2010", "#VALUE!" -"First August 2010", "#VALUE!" -"1st August 2010", 40391 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date -"15:30:25", 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data deleted file mode 100644 index bde1e8b5e11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAY.data +++ /dev/null @@ -1,8 +0,0 @@ -# Date Value Result -22269, 19 -30348, 1 -30843, 10 -"11-Nov-1918", 11 -"28-Feb-1904", 28 -"Invalid", "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data deleted file mode 100644 index c7abb61285b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/DAYS360.data +++ /dev/null @@ -1,34 +0,0 @@ -"ABC", "2007-1-10", FALSE, "#VALUE!" -"2007-1-1", "DEF", TRUE, "#VALUE!" -"2007-1-1", "2007-1-10", "XYZ", "#VALUE!" -"2007-1-10", "2007-1-1", "Y", "#VALUE!" -"2007-1-1", "2007-1-10", FALSE, 9 -"2007-1-1", "2007-1-10", TRUE, 9 -"2007-1-1", "2007-12-31", FALSE, 360 -"2007-1-1", "2007-12-31", TRUE, 359 -"2007-1-1", "2008-7-1", FALSE, 540 -"2007-1-1", "2008-7-1", TRUE, 540 -"2007-1-1", "2007-1-31", FALSE, 30 -"2007-1-1", "2007-1-31", TRUE, 29 -"2007-1-1", "2007-2-1", FALSE, 30 -"2007-1-1", "2007-2-1", TRUE, 30 -"2007-1-1", "2007-2-28", FALSE, 57 -"2007-1-1", "2007-2-28", TRUE, 57 -"2007-1-31", "2007-2-1", FALSE, 1 -"2007-1-31", "2007-2-1", TRUE, 1 -"2007-1-31", "2007-3-1", FALSE, 31 -"2007-1-31", "2007-3-1", TRUE, 31 -"2007-1-31", "2007-3-31", FALSE, 60 -"2007-1-31", "2007-3-31", TRUE, 60 -"2008-1-1", "2008-9-1", FALSE, 240 -"2008-1-1", "2008-9-1", TRUE, 240 -"2007-2-1", "2008-4-1", FALSE, 420 -"2007-2-1", "2008-4-1", TRUE, 420 -"1960-12-19", "2008-6-28", FALSE, 17109 -"1960-12-19", "2008-6-28", TRUE, 17109 -"1982-12-7", "2008-6-28", FALSE, 9201 -"1982-12-7", "2008-6-28", TRUE, 9201 -"2000-2-28", "2000-3-31", FALSE, 33 -"2000-2-28", "2000-3-31", TRUE, 32 -"2000-2-29", "2000-3-31", FALSE, 30 -"2000-2-29", "2000-3-31", TRUE, 31 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data deleted file mode 100644 index b7b13e09e31..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EDATE.data +++ /dev/null @@ -1,15 +0,0 @@ -"15-Jan-2008", 1, 39493 -"15-Jan-2008", -1, 39431 -"15-Jan-2008", 2, 39522 -"31-Mar-2007", 1, 39202 -"31-Mar-2007", -1, 39141 -"31-Mar-2008", -1, 39507 -"31-Mar-2008", -4, 39416 -"29-Feb-2008", -12, 39141 -"15-Mar-2007", 3, 39248 -22269.0, 0, 22269 -22269.0, 2, 22331 -22269.0, 110, 25618 -22269.0, -110, 18920 -"15-Mar-2007", "ABC", "#VALUE!" -"Invalid", 12, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data deleted file mode 100644 index 130a769c78d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/EOMONTH.data +++ /dev/null @@ -1,17 +0,0 @@ -"15-Jan-2008", 1, 39507 -"15-Jan-2008", -1, 39447 -"15-Jan-2008", 2, 39538 -"31-Mar-2007", 1, 39202 -"31-Mar-2007", -1, 39141 -"31-Mar-2008", -1, 39507 -"31-Mar-2008", -4, 39416 -"29-Feb-2008", -12, 39141 -"15-Mar-2007", 3, 39263 -22269.0, 0, 22281 -22269.0, 2, 22340 -22269.0, 110, 25627 -22269.0, -110, 18932 -22269.0, 3, 22371 -22269.0, 3.75, 22371 -"15-Mar-2007", "ABC", "#VALUE!" -"Invalid", 12, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data deleted file mode 100644 index c07d0dccd1e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/HOUR.data +++ /dev/null @@ -1,12 +0,0 @@ -0.25, 6 -0.75, 18 -0.5, 12 -0.6, 14 -"11-Nov-1918 11:11", 11 -"11:59 PM", 23 -"23:59:59", 23 -3600, 2 --3600, 0 -7200, 3 -65535, 19 -"1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data deleted file mode 100644 index 2931c750095..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MINUTE.data +++ /dev/null @@ -1,12 +0,0 @@ -0.2, 48 -0.4, 36 -0.6, 24 -0.8, 12 -"11-Nov-1918 11:15", 15 -"11:59 PM", 59 -"23:59:59", 59 -3600, 0 --3600, 0 -12500, 28 -65535, 12 -"Half past 1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data deleted file mode 100644 index 6336ffdabb3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/MONTH.data +++ /dev/null @@ -1,12 +0,0 @@ -, 1 -0, 1 -22269.0, 12 -30348.0, 2 -30843.0, 6 -"11-Nov-1918", 11 -"28-Feb-1904", 2 -"01 Jul 2003", 7 -38094, 4 -"Dec 2003", 12 --10, "#NUM!" -"ABCD", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data deleted file mode 100644 index 70034bfd793..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/NETWORKDAYS.data +++ /dev/null @@ -1,18 +0,0 @@ -"1-Jan-2007", "10-Jan-2007", 8 -"18-Jun-2008", "20-Jun-2008", 3 -"16-Jun-2008", "20-Jun-2008", 5 -"14-Jun-2008", "20-Jun-2008", 5 -"20-Jun-2008", "20-Jun-2008", 1 -"21-Jun-2008", "21-Jun-2008", 0 -"20-Jun-2008", "20-Jun-2008", "20-Jun-2008", 0 -"20-Jun-2008", "20-Jun-2008", "20-Jun-2008", "20-Jun-2008", 0 -"14-Jun-2008", "25-Jun-2008", 8 -"19-Dec-1960", "10-Jan-1961", 17 -"10-Jan-1961", "19-Dec-1960", -17 -"19-Dec-1960", "10-Jan-1961", "25-Dec-1960", "26-Dec-1960", "01-Jan-1961", 16 -"10-Jan-1961", "19-Dec-1960", "25-Dec-1960", "26-Dec-1960", "01-Jan-1961", -16 -"1-Jan-2007", "31-Mar-2007", 65 -"1-Jan-2007", "31-Jan-2007", 23 -"1-Jan-2007", "1-Feb-2007", 24 -"1-Jan-2007", "28-Feb-2007", 43 -"31-Jan-2007", "1-Feb-2007", 2 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data deleted file mode 100644 index 14a8d3a5990..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/SECOND.data +++ /dev/null @@ -1,12 +0,0 @@ -0.2339930556, 57 -0.4202893519, 13 -0.6078935185, 22 -0.8022106481, 11 -"11-Nov-1918 11:15:35", 35 -"11:59 PM", 0 -"23:59:59", 59 -3600, 0 --3601, 59 -12500, 20 -65535, 15 -"Half past 1 O'Clock", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data deleted file mode 100644 index 46d0b9ac07e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIME.data +++ /dev/null @@ -1,22 +0,0 @@ -18, 11, 11, 0.757766203704 -6, 15, 5, 0.260474537037 -12, 30, 10, 0.520949074074 -18, 45, 25, 0.781539351852 -15, 32, 50, 0.647800925926 -12, , 61, 0.500706018519 -11, , -1, 0.458321759259 -10, , -67, 0.415891203704 -13, 62, 5, 0.584780092593 -9, -80, 17, 0.319641203704 -8, -162, , 0.220833333333 -2, -120, -1, "#NUM!" -2, -120, , 0.000000000000 -2, -120, 1, 0.000011574074 -36, 1, 2, 0.500717592593 --1, 2, 3, "#NUM!" --1, 61, 29, 0.001030092593 --1, 61, -60, 0.000000000000 -"A", , , "#VALUE!" -11, 59, 0, 0.499305555556 -12, 0, 0, 0.500000000000 -16, 48, 10, 0.700115740741 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data deleted file mode 100644 index 457de24e37c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/TIMEVALUE.data +++ /dev/null @@ -1,13 +0,0 @@ -"12:00:00 am", 0 -"12:01:02 am", 0.000717593 -"12:03 pm", 0.502083333 -"12:7:11 pm", 0.504988426 -"4:13:39", 0.176145833 -"6:20:17 pm", 0.764085648 -"18:33:27", 0.773229167 -"31/12/2007 03:27:15", 0.143923611 -"9:44:55 pm", 0.90619213 -12, "#VALUE!" -"13:01", 0.542361111 -"33:45", 0.40625 -"13:01PM", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data deleted file mode 100644 index ca2e11f7b32..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKDAY.data +++ /dev/null @@ -1,27 +0,0 @@ -"24-Oct-1968", 5 -"24-Oct-1968", 2, 4 -"24-Oct-1968", 3, 3 -"2000-06-14", 4 -"2000-06-14", 2, 3 -"2000-06-14", 3, 2 -"1996-07-24", 4 -"1996-07-24", 2, 3 -"1996-07-24", 3, 2 -"1996-07-27", 7 -"1996-07-27", 2, 6 -"1996-07-27", 3, 5 -"1977-7-31", 1 -"1977-7-31", 2, 7 -"1977-7-31", 3, 6 -"1977-8-1", 2 -"1977-8-1", 2, 1 -"1977-8-1", 3, 0 -"1900-2-5", 2, 7 -"1900-2-1", 1 -38093, 6 -38093, 2, 5 -38093, 3, 4 -"3/7/1977", "A", "#VALUE!" -"3/7/1977", 0, "#NUM!" -"Invalid", 1, "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data deleted file mode 100644 index 22a01a74c52..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WEEKNUM.data +++ /dev/null @@ -1,7 +0,0 @@ -"21-Dec-2000", 1, 52 -"1995-01-01", 1, 1 -"3/7/1977", 27 -"3/7/1977", "A", "#VALUE!" -"3/7/1977", 0, "#NUM!" -"Invalid", 1, "#VALUE!" --1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data deleted file mode 100644 index 1070898b248..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/WORKDAY.data +++ /dev/null @@ -1,13 +0,0 @@ -"1-Jan-2007", "ABC", "#VALUE!" -"1-Jan-2007", 9, 39094 -"18-Jun-2008", 2, 39619 -"16-Jun-2008", 4, 39619 -"14-Jun-2008", 6, 39622 -"14-Jun-2008", 11, 39629 -"14-Jun-2008", -2, 39611 -"14-Jun-2008", -6, 39605 -"19-Dec-2008", 10, 39815 -"19-Dec-2008", 10, "25-Dec-2008", "26-Dec-2008", "01-Jan-2009", 39820 -"19-Dec-2008", 10, {"25-Dec-2008"|"26-Dec-2008"|"01-Jan-2009"}, 39820 -39820, -10, {"25-Dec-2008"|"26-Dec-2008"|"01-Jan-2009"}, 39801 -"5-Apr-2012", 3, {"6-Apr-2012"|"9-Apr-2012"}, 41010 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data deleted file mode 100644 index fe35f1b4a36..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEAR.data +++ /dev/null @@ -1,11 +0,0 @@ -, 1900 -1, 1900 -33333.33, 1991 -22269.0, 1960 -30348.0, 1983 -30843.0, 1984 -"01 Jan 2525", 2525 -"11-Nov-1918", 1918 -"28-Feb-1904", 1904 --10, "#NUM!" -"ABCD", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data deleted file mode 100644 index 3fc5827728a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/DateTime/YEARFRAC.data +++ /dev/null @@ -1,65 +0,0 @@ -"2007-1-1", "2007-1-10", 0, 0.025 -"2007-1-1", "2007-1-10", 1, 0.02465753424658 -"2007-1-1", "2007-1-10", 2, 0.025 -"2007-1-1", "2007-1-10", 3, 0.02465753424658 -"2007-1-1", "2007-1-10", 4, 0.025 -"2007-1-1", "2007-12-31", 0, 1.0 -"2007-1-1", "2007-12-31", 1, 0.99726027397260 -"2007-1-1", "2007-12-31", 2, 1.01111111111111 -"2007-1-1", "2007-12-31", 3, 0.99726027397260 -"2007-1-1", "2007-12-31", 4, 0.99722222222222 -"2007-1-1", "2008-7-1", 0, 1.5 -"2007-1-1", "2008-7-1", 1, 1.49658002735978 -"2007-1-1", "2008-7-1", 2, 1.51944444444444 -"2007-1-1", "2008-7-1", 3, 1.49863013698630 -"2007-1-1", "2008-7-1", 4, 1.5 -"2007-1-1", "2007-1-31", 0, 0.08333333333333 -"2007-1-1", "2007-1-31", 1, 0.08219178082192 -"2007-1-1", "2007-1-31", 2, 0.08333333333333 -"2007-1-1", "2007-1-31", 3, 0.08219178082192 -"2007-1-1", "2007-1-31", 4, 0.08055555555556 -"2007-1-1", "2007-2-1", 0, 0.08333333333333 -"2007-1-1", "2007-2-1", 1, 0.08493150684932 -"2007-1-1", "2007-2-1", 2, 0.08611111111111 -"2007-1-1", "2007-2-1", 3, 0.08493150684932 -"2007-1-1", "2007-2-1", 4, 0.08333333333333 -"2007-1-1", "2007-2-28", 0, 0.15833333333333 -"2007-1-1", "2007-2-28", 1, 0.15890410958904 -"2007-1-1", "2007-2-28", 2, 0.16111111111111 -"2007-1-1", "2007-2-28", 3, 0.15890410958904 -"2007-1-1", "2007-2-28", 4, 0.15833333333333 -"2007-1-31", "2007-2-1", 0, 0.00277777777778 -"2007-1-31", "2007-2-1", 1, 0.00273972602740 -"2007-1-31", "2007-2-1", 2, 0.00277777777778 -"2007-1-31", "2007-2-1", 3, 0.00273972602740 -"2007-1-31", "2007-2-1", 4, 0.00277777777778 -"2007-1-31", "2007-3-1", 0, 0.08611111111111 -"2007-1-31", "2007-3-1", 1, 0.07945205479452 -"2007-1-31", "2007-3-1", 2, 0.08055555555556 -"2007-1-31", "2007-3-1", 3, 0.07945205479452 -"2007-1-31", "2007-3-1", 4, 0.08611111111111 -"2007-1-31", "2007-3-31", 0, 0.16666666666667 -"2007-1-31", "2007-3-31", 1, 0.16164383561644 -"2007-1-31", "2007-3-31", 2, 0.16388888888889 -"2007-1-31", "2007-3-31", 3, 0.16164383561644 -"2007-1-31", "2007-3-31", 4, 0.16666666666667 -"2008-1-1", "2008-9-1", 0, 0.66666666666667 -"2008-1-1", "2008-9-1", 1, 0.66666666666667 -"2008-1-1", "2008-9-1", 2, 0.67777777777778 -"2008-1-1", "2008-9-1", 3, 0.66849315068493 -"2008-1-1", "2008-9-1", 4, 0.66666666666667 -"2007-2-1", "2008-4-1", 0, 1.16666666666667 -"2007-2-1", "2008-4-1", 1, 1.16279069767442 -"2007-2-1", "2008-4-1", 2, 1.18055555555556 -"2007-2-1", "2008-4-1", 3, 1.16438356164384 -"2007-2-1", "2008-4-1", 4, 1.16666666666667 -"1960-12-19", "2008-6-28", 0, 47.525 -"1960-12-19", "2008-6-28", 1, 47.52162252765670 -"1960-12-19", "2008-6-28", 2, 48.21666666666670 -"1960-12-19", "2008-6-28", 3, 47.55616438356160 -"1960-12-19", "2008-6-28", 4, 47.525 -"1982-12-7", "2008-6-28", 0, 25.55833333333330 -"1982-12-7", "2008-6-28", 1, 25.55718921111340 -"1982-12-7", "2008-6-28", 2, 25.93055555555560 -"1982-12-7", "2008-6-28", 3, 25.57534246575340 -"1982-12-7", "2008-6-28", 4, 25.55833333333330 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data deleted file mode 100644 index bab50c698e5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELI.data +++ /dev/null @@ -1,59 +0,0 @@ -1.5, -1, "#NUM!" --1, 6, 2.2488660949282200E-05 -0, 3, 0.0 -3, 0, 4.8807925650332900 -1, 5, 2.7146314958504900E-04 -1.5, 1, 9.8166642847516600E-01 --1.5, 2.5, 3.3783462087443800E-01 --1.5, 14.99, 2.1218581758012900E-13 -1, 30, 3.5395005050254700E-42 -2.5, 1, 2.5167162420253600 -2.5, 1.5, 2.5167162420253600 --2.5, 1.5, -2.5167162420253600 -3.5, 1, 6.2058349320630000 -0.7, 3, 7.3673733669342700E-03 -3.5, 2, 3.8320120716293600 -35, 2, 1.0129348967887200E+14 --35, 2, 1.0129348967887200E+14 --35, 3, -9.4217724797020600E+13 --35, 4, 8.5141821583727800E+13 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --9, 1, -1.0309147086534900E+03 --3.5, 1, -6.2058349320630000 --0.735, 1, -3.9288151661176300E-01 -0, 1, 0.0 -0.035, 1, 1.7502679823335300E-02 -1, 1, 5.6515909758194300E-01 -1.5, 1, 9.8166642847516600E-01 -2.5, 1, 2.5167162420253600 -3.5, 1, 6.2058349320630000 --9, 2, 8.6449622063929800E+02 --3.5, 2, 3.8320120716293600 --0.735, 2, 7.0619941066585700E-02 -0, 2, 0.0 -0.035, 2, 1.5314063208086000E-04 -0.9, 2, 1.0825972222234100E-01 -1, 2, 1.3574766658069900E-01 -1.9, 2, 6.0327243548745000E-01 -2.5, 2, 1.2764661588156100 -3.5, 2, 3.8320120716293600 -4, 2, 6.4221894991960900 -0.035, 3, 8.9329755645604500E-07 -0.7, 3, 7.3673733669342700E-03 -0.89, 3, 1.5428502532466100E-02 -4, 3, 3.3372758428109200 -4, 5, 5.0472437285149600E-01 -1.5, 7, 2.8406417355214300E-05 -3, 9, 1.3237298826652200E-04 --3.5, 0, 7.3782034775718600 --1.5, 0, 1.6467232021476800 -0, 0, 1.0 -1, 0, 1.2660658480342600 -1.5, 0, 1.6467232021476800 -2.5, 0, 3.2898391723912900 -3.5, 0, 7.3782034775718600 --3.5, -1, "#NUM!" -TRUE, 1, "#VALUE!" -1, TRUE, "#VALUE!" -21, 2, 1.0477785626593200E+08 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data deleted file mode 100644 index e84f16e6dfc..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELJ.data +++ /dev/null @@ -1,37 +0,0 @@ -1.5, -1, "#NUM!" -0, 1, 0.0 -1, 1, 4.4005058567713000E-01 -1, 5, 2.4975773021123400E-04 -1.9, 2, 3.2992582866978500E-01 --2.5, 1.5, -4.9709410250442200E-01 -3.5, 1, 1.3737752717818600E-01 -0.89, 3, 1.3974004027880800E-02 -3.5, 2, 4.5862918476829000E-01 -35, 2, 1.2935945082689100E-01 --35, 2, 1.2935945082689100E-01 --35, 3, 2.9207004782372000E-02 --35, 4, -1.3436636593244100E-01 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, -1.3737752717818600E-01 --0.735, 1, -3.4323577520309400E-01 -0, 1, 0.0 -0.035, 1, 1.7497320451918700E-02 -1.5, 1, 5.5793650789080400E-01 -2.5, 1, 4.9709410250442200E-01 -3.5, 1, 1.3737752717818600E-01 --9, 2, 1.4484636919412800E-01 --0.735, 2, 6.4538955636373900E-02 -0, 2, 0.0 -0.9, 2, 9.4586304292255000E-02 -1.9, 2, 3.2992582866978500E-01 -0.035, 2, 1.5310936908796500E-04 -3.5, 2, 4.5862918476829000E-01 -4, 2, 3.6412814319431200E-01 -0.035, 3, 8.9316078090293600E-07 -0.7, 3, 6.9296548267509400E-03 -0.89, 3, 1.3974004027880800E-02 -4, 3, 4.3017147115339600E-01 -4, 5, 1.3208665605594800E-01 -1.5, 7, 2.4679795788287900E-05 -3, 9, 8.4395021309091800E-05 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data deleted file mode 100644 index fce3a78d672..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELK.data +++ /dev/null @@ -1,38 +0,0 @@ -1.5, -1, "#NUM!" -0, 2, "#NUM!" -0.1, 3, 7.9900124326586500E+03 -1, 0, 4.2102442108341800E-01 -1.5, 0, 2.1380556932365400E-01 --1.5, 2, "#NUM!" -1.5, 1, 2.7738780363225900E-01 -1.5, 2, 5.8365597416666600E-01 -2.3, 1.5, 9.4982447142959400E-02 -2.5, 1, 7.3890815650266900E-02 -3.5, 1, 2.2239393224640700E-02 -3.5, 3, 5.9161817991348200E-02 -3, 9, 3.9795880106238500E+02 -3.5, 2, 3.2307121670869000E-02 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, "#NUM!" --0.735, 1, "#NUM!" -0, 1, "#NUM!" -0.035, 1, 2.8501970000186900E+01 -1.5, 1, 2.7738780363225900E-01 -2.5, 1, 7.3890815650266900E-02 -3.5, 1, 2.2239393224640700E-02 --9, 2, "#NUM!" --0.735, 2, "#NUM!" -0, 2, "#NUM!" -0.9, 2, 2.0790271301014400 -1.9, 2, 2.9690930137427500E-01 -0.035, 2, 1.6321537072931900E+03 -3.5, 2, 3.2307121670869000E-02 -4, 2, 1.7401425543547400E-02 -0.035, 3, 1.8656035423207900E+05 -0.7, 3, 2.1972168909566600E+01 -0.89, 3, 1.0317473075007600E+01 -4, 3, 2.9884924431707800E-02 -4, 5, 1.5434254881392600E-01 -1.5, 7, 2.4577004526116700E+03 -3, 9, 3.9795880106238500E+02 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data deleted file mode 100644 index 2247f4ecf42..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BESSELY.data +++ /dev/null @@ -1,37 +0,0 @@ -1.5, -1, "#NUM!" -1.23, 45.67, -2.7027311261175000E+63 -2.5, 0, 4.9807035844668900E-01 -2.5, 1, 1.4591813750831300E-01 -2.5, 2, -3.8133584844003800E-01 -3.5, 1, 4.1018841662769800E-01 -3.5, 3, -3.5833534643622900E-01 -4, 2, 2.1590359910699000E-01 -3.5, 2, 4.5371436417535000E-02 -12.5, 0, -1.7121430684466900E-01 -12.5, 1, -1.5383825635163900E-01 -12.5, 2, 1.4660018586805400E-01 -12.5, 22, -3.5760343503878700E+02 -1.5, "XYZ", "#VALUE!" -"ABC", 3, "#VALUE!" --3.5, 1, "#NUM!" --0.735, 1, "#NUM!" -0, 1, "#NUM!" -0.035, 1, -1.8233338940000000E+01 -1.5, 1, -4.1230862700000000E-01 -2.5, 1, 1.4591813800000000E-01 -3.5, 1, 4.1018841700000000E-01 --9, 2, "#NUM!" --0.735, 2, "#NUM!" -0, 2, "#NUM!" -0.9, 2, -1.9459096070000000 -1.9, 2, -6.6987867400000000E-01 -0.035, 2, -1.0396979410000000E+03 -3.5, 2, 4.5371436000000000E-02 -4, 2, 2.1590359900000000E-01 -0.035, 3, -1.1880438840000000E+05 -0.7, 3, -1.5819479070000000E+01 -0.89, 3, -8.0204412520000000 -4, 3, -1.8202211000000000E-01 -4, 5, -7.9585141800000000E-01 -1.5, 7, -1.8873970340000000E+03 -3, 9, -4.4495950710000000E+02 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data deleted file mode 100644 index 04365fcae3f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2DEC.data +++ /dev/null @@ -1,10 +0,0 @@ -"10110010", "178" -"1100100", "100" -"111001010101", "#NUM!" // Too large -"101", "5" -"10", "2" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "-107" // 2's Complement -"1111111111", "-1" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data deleted file mode 100644 index 7f7198e6587..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2HEX.data +++ /dev/null @@ -1,14 +0,0 @@ -"10110010", "B2" -"111001010101", "#NUM!" // Too large -"11111011", 4, "00FB" // Leading places -"11111011", 3.75, "0FB" // Leading places as a float -"11111011", -1, "#NUM!" // Leading places negative -"11111011", "ABC", "#VALUE!" // Leading places non-numeric -"1110", "E" -"101", "5" -"10", "2" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "FFFFFFFF95" // 2's Complement -"1111111111", "FFFFFFFFFF" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data deleted file mode 100644 index 3971654b368..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/BIN2OCT.data +++ /dev/null @@ -1,15 +0,0 @@ -"1100100", "144" -"10110010", "262" -"111001010101", "#NUM!" // Too large -"1001", 3, "011" // Leading places -"1001", 4.75, "0011" // Leading places as a float -"1001", -1, "#NUM!" // Leading places negative -"1001", "ABC", "#VALUE!" // Leading places non-numeric -"00000010", "2" -"00000101", "5" -"00001101", "15" -"0", "0" -"21", "#NUM!" // Invalid binary number -TRUE, "#VALUE!" // Non string -"1110010101", "7777777625" // 2's Complement -"1111111111", "7777777777" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data deleted file mode 100644 index 980b53bf8a3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/COMPLEX.data +++ /dev/null @@ -1,547 +0,0 @@ -3, 4, "3+4i" -3, 4, "j", "3+4j" -12.34, 5.67, "j", "12.34+5.67j" -3.5, "A", "#VALUE!" -1.234E-5, 6.78E9, "1.234E-5+6780000000i" -1.234E5, 6.78E-9, "123400+6.78E-9i" -3.5, 2.5, "3.5+2.5i" -3.5, 1, "3.5+i" -3.5, 0, 3.5 -3.5, -1, "3.5-i" -3.5, -2.5, "3.5-2.5i" -1, 2.5, "1+2.5i" -1, 1, "1+i" -1, 0, 1 -1, -1, "1-i" -1, -2.5, "1-2.5i" -0, 2.5, "2.5i" -0, 1, "i" -0, 0, 0 -0, -1, "-i" -0, -2.5, "-2.5i" --1, 2.5, "-1+2.5i" --1, 1, "-1+i" --1, 0, -1 --1, -1, "-1-i" --1, -2.5, "-1-2.5i" --3.5, 2.5, "-3.5+2.5i" --3.5, 1, "-3.5+i" --3.5, 0, "-3.5" --3.5, -1, "-3.5-i" --3.5, -2.5, "-3.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --0.5, -2.5, "-0.5-2.5i" -0, -2.5, "-2.5i" -0.5, -2.5, "0.5-2.5i" -1, -2.5, "1-2.5i" -1.5, -2.5, "1.5-2.5i" -2, -2.5, "2-2.5i" -2.5, -2.5, "2.5-2.5i" -3, -2.5, "3-2.5i" -3.5, -2.5, "3.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --2.5, -2.5, "-2.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --1.5, -2.5, "-1.5-2.5i" --0.5, -2.5, "-0.5-2.5i" -0, -2.5, "-2.5i" -0.5, -2.5, "0.5-2.5i" -1, -2.5, "1-2.5i" -1.5, -2.5, "1.5-2.5i" -2, -2.5, "2-2.5i" -2.5, -2.5, "2.5-2.5i" -3, -2.5, "3-2.5i" -3.5, -2.5, "3.5-2.5i" --2.5, -1.5, "-2.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --0.5, -1.5, "-0.5-1.5i" -0, -1.5, "-1.5i" -0.5, -1.5, "0.5-1.5i" -1, -1.5, "1-1.5i" -1.5, -1.5, "1.5-1.5i" -2, -1.5, "2-1.5i" -2.5, -1.5, "2.5-1.5i" -3, -1.5, "3-1.5i" -3.5, -1.5, "3.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --2.5, -1.5, "-2.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --1.5, -1.5, "-1.5-1.5i" --0.5, -1.5, "-0.5-1.5i" -0, -1.5, "-1.5i" -0.5, -1.5, "0.5-1.5i" -1, -1.5, "1-1.5i" -1.5, -1.5, "1.5-1.5i" -2, -1.5, "2-1.5i" -2.5, -1.5, "2.5-1.5i" -3, -1.5, "3-1.5i" -3.5, -1.5, "3.5-1.5i" --2.5, -0.5, "-2.5-0.5i" --2.5, -0.5, "-2.5-0.5i" --1.5, -0.5, "-1.5-0.5i" --1.5, -0.5, "-1.5-0.5i" --0.5, -0.5, "-0.5-0.5i" -0, -0.5, "-0.5i" -0.5, -0.5, "0.5-0.5i" -1, -0.5, "1-0.5i" -1.5, -0.5, "1.5-0.5i" -2, -0.5, "2-0.5i" -2.5, -0.5, "2.5-0.5i" -3, -0.5, "3-0.5i" -3.5, -0.5, "3.5-0.5i" --2.5, 0, -2.5 --2.5, 0, -2.5 --1.5, 0, -1.5 --1.5, 0, -1.5 --0.5, 0, -0.5 -0, 0, 0 -0.5, 0, 0.5 -1, 0, 1 -1.5, 0, 1.5 -2, 0, 2 -2.5, 0, 2.5 -3, 0, 3 -3.5, 0, 3.5 --2.5, 0.5, "-2.5+0.5i" --2.5, 0.5, "-2.5+0.5i" --1.5, 0.5, "-1.5+0.5i" --1.5, 0.5, "-1.5+0.5i" --0.5, 0.5, "-0.5+0.5i" -0, 0.5, "0.5i" -0.5, 0.5, "0.5+0.5i" -1, 0.5, "1+0.5i" -1.5, 0.5, "1.5+0.5i" -2, 0.5, "2+0.5i" -2.5, 0.5, "2.5+0.5i" -3, 0.5, "3+0.5i" -3.5, 0.5, "3.5+0.5i" --2.5, 1, "-2.5+i" --2.5, 1, "-2.5+i" --1.5, 1, "-1.5+i" --1.5, 1, "-1.5+i" --0.5, 1, "-0.5+i" -0, 1, "i" -0.5, 1, "0.5+i" -1, 1, "1+i" -1.5, 1, "1.5+i" -2, 1, "2+i" -2.5, 1, "2.5+i" -3, 1, "3+i" -3.5, 1, "3.5+i" --2.5, 1.5, "-2.5+1.5i" --2.5, 1.5, "-2.5+1.5i" --1.5, 1.5, "-1.5+1.5i" --1.5, 1.5, "-1.5+1.5i" --0.5, 1.5, "-0.5+1.5i" -0, 1.5, "1.5i" -0.5, 1.5, "0.5+1.5i" -1, 1.5, "1+1.5i" -1.5, 1.5, "1.5+1.5i" -2, 1.5, "2+1.5i" -2.5, 1.5, "2.5+1.5i" -3, 1.5, "3+1.5i" -3.5, 1.5, "3.5+1.5i" --2.5, 2, "-2.5+2i" --2.5, 2, "-2.5+2i" --1.5, 2, "-1.5+2i" --1.5, 2, "-1.5+2i" --0.5, 2, "-0.5+2i" -0, 2, "2i" -0.5, 2, "0.5+2i" -1, 2, "1+2i" -1.5, 2, "1.5+2i" -2, 2, "2+2i" -2.5, 2, "2.5+2i" -3, 2, "3+2i" -3.5, 2, "3.5+2i" --2.5, 2.5, "-2.5+2.5i" --2.5, 2.5, "-2.5+2.5i" --1.5, 2.5, "-1.5+2.5i" --1.5, 2.5, "-1.5+2.5i" --0.5, 2.5, "-0.5+2.5i" -0, 2.5, "2.5i" -0.5, 2.5, "0.5+2.5i" -1, 2.5, "1+2.5i" -1.5, 2.5, "1.5+2.5i" -2, 2.5, "2+2.5i" -2.5, 2.5, "2.5+2.5i" -3, 2.5, "3+2.5i" -3.5, 2.5, "3.5+2.5i" --2.5, 3, "-2.5+3i" --2.5, 3, "-2.5+3i" --1.5, 3, "-1.5+3i" --1.5, 3, "-1.5+3i" --0.5, 3, "-0.5+3i" -0, 3, "3i" -0.5, 3, "0.5+3i" -1, 3, "1+3i" -1.5, 3, "1.5+3i" -2, 3, "2+3i" -2.5, 3, "2.5+3i" -3, 3, "3+3i" -3.5, 3, "3.5+3i" --2.5, 3.5, "-2.5+3.5i" --2.5, 3.5, "-2.5+3.5i" --1.5, 3.5, "-1.5+3.5i" --1.5, 3.5, "-1.5+3.5i" --0.5, 3.5, "-0.5+3.5i" -0, 3.5, "3.5i" -0.5, 3.5, "0.5+3.5i" -1, 3.5, "1+3.5i" -1.5, 3.5, "1.5+3.5i" -2, 3.5, "2+3.5i" -2.5, 3.5, "2.5+3.5i" -3, 3.5, "3+3.5i" -3.5, 3.5, "3.5+3.5i" --2.5, -2.5, "i", "-2.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --0.5, -2.5, "i", "-0.5-2.5i" -0, -2.5, "i", "-2.5i" -0.5, -2.5, "i", "0.5-2.5i" -1, -2.5, "i", "1-2.5i" -1.5, -2.5, "i", "1.5-2.5i" -2, -2.5, "i", "2-2.5i" -2.5, -2.5, "i", "2.5-2.5i" -3, -2.5, "i", "3-2.5i" -3.5, -2.5, "i", "3.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --2.5, -2.5, "i", "-2.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --1.5, -2.5, "i", "-1.5-2.5i" --0.5, -2.5, "i", "-0.5-2.5i" -0, -2.5, "i", "-2.5i" -0.5, -2.5, "i", "0.5-2.5i" -1, -2.5, "i", "1-2.5i" -1.5, -2.5, "i", "1.5-2.5i" -2, -2.5, "i", "2-2.5i" -2.5, -2.5, "i", "2.5-2.5i" -3, -2.5, "i", "3-2.5i" -3.5, -2.5, "i", "3.5-2.5i" --2.5, -1.5, "i", "-2.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --0.5, -1.5, "i", "-0.5-1.5i" -0, -1.5, "i", "-1.5i" -0.5, -1.5, "i", "0.5-1.5i" -1, -1.5, "i", "1-1.5i" -1.5, -1.5, "i", "1.5-1.5i" -2, -1.5, "i", "2-1.5i" -2.5, -1.5, "i", "2.5-1.5i" -3, -1.5, "i", "3-1.5i" -3.5, -1.5, "i", "3.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --2.5, -1.5, "i", "-2.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --1.5, -1.5, "i", "-1.5-1.5i" --0.5, -1.5, "i", "-0.5-1.5i" -0, -1.5, "i", "-1.5i" -0.5, -1.5, "i", "0.5-1.5i" -1, -1.5, "i", "1-1.5i" -1.5, -1.5, "i", "1.5-1.5i" -2, -1.5, "i", "2-1.5i" -2.5, -1.5, "i", "2.5-1.5i" -3, -1.5, "i", "3-1.5i" -3.5, -1.5, "i", "3.5-1.5i" --2.5, -0.5, "i", "-2.5-0.5i" --2.5, -0.5, "i", "-2.5-0.5i" --1.5, -0.5, "i", "-1.5-0.5i" --1.5, -0.5, "i", "-1.5-0.5i" --0.5, -0.5, "i", "-0.5-0.5i" -0, -0.5, "i", "-0.5i" -0.5, -0.5, "i", "0.5-0.5i" -1, -0.5, "i", "1-0.5i" -1.5, -0.5, "i", "1.5-0.5i" -2, -0.5, "i", "2-0.5i" -2.5, -0.5, "i", "2.5-0.5i" -3, -0.5, "i", "3-0.5i" -3.5, -0.5, "i", "3.5-0.5i" --2.5, 0, "i", -2.5 --2.5, 0, "i", -2.5 --1.5, 0, "i", -1.5 --1.5, 0, "i", -1.5 --0.5, 0, "i", -0.5 -0, 0, "i", 0 -0.5, 0, "i", 0.5 -1, 0, "i", 1 -1.5, 0, "i", 1.5 -2, 0, "i", 2 -2.5, 0, "i", 2.5 -3, 0, "i", 3 -3.5, 0, "i", 3.5 --2.5, 0.5, "i", "-2.5+0.5i" --2.5, 0.5, "i", "-2.5+0.5i" --1.5, 0.5, "i", "-1.5+0.5i" --1.5, 0.5, "i", "-1.5+0.5i" --0.5, 0.5, "i", "-0.5+0.5i" -0, 0.5, "i", "0.5i" -0.5, 0.5, "i", "0.5+0.5i" -1, 0.5, "i", "1+0.5i" -1.5, 0.5, "i", "1.5+0.5i" -2, 0.5, "i", "2+0.5i" -2.5, 0.5, "i", "2.5+0.5i" -3, 0.5, "i", "3+0.5i" -3.5, 0.5, "i", "3.5+0.5i" --2.5, 1, "i", "-2.5+i" --2.5, 1, "i", "-2.5+i" --1.5, 1, "i", "-1.5+i" --1.5, 1, "i", "-1.5+i" --0.5, 1, "i", "-0.5+i" -0, 1, "i", "i" -0.5, 1, "i", "0.5+i" -1, 1, "i", "1+i" -1.5, 1, "i", "1.5+i" -2, 1, "i", "2+i" -2.5, 1, "i", "2.5+i" -3, 1, "i", "3+i" -3.5, 1, "i", "3.5+i" --2.5, 1.5, "i", "-2.5+1.5i" --2.5, 1.5, "i", "-2.5+1.5i" --1.5, 1.5, "i", "-1.5+1.5i" --1.5, 1.5, "i", "-1.5+1.5i" --0.5, 1.5, "i", "-0.5+1.5i" -0, 1.5, "i", "1.5i" -0.5, 1.5, "i", "0.5+1.5i" -1, 1.5, "i", "1+1.5i" -1.5, 1.5, "i", "1.5+1.5i" -2, 1.5, "i", "2+1.5i" -2.5, 1.5, "i", "2.5+1.5i" -3, 1.5, "i", "3+1.5i" -3.5, 1.5, "i", "3.5+1.5i" --2.5, 2, "i", "-2.5+2i" --2.5, 2, "i", "-2.5+2i" --1.5, 2, "i", "-1.5+2i" --1.5, 2, "i", "-1.5+2i" --0.5, 2, "i", "-0.5+2i" -0, 2, "i", "2i" -0.5, 2, "i", "0.5+2i" -1, 2, "i", "1+2i" -1.5, 2, "i", "1.5+2i" -2, 2, "i", "2+2i" -2.5, 2, "i", "2.5+2i" -3, 2, "i", "3+2i" -3.5, 2, "i", "3.5+2i" --2.5, 2.5, "i", "-2.5+2.5i" --2.5, 2.5, "i", "-2.5+2.5i" --1.5, 2.5, "i", "-1.5+2.5i" --1.5, 2.5, "i", "-1.5+2.5i" --0.5, 2.5, "i", "-0.5+2.5i" -0, 2.5, "i", "2.5i" -0.5, 2.5, "i", "0.5+2.5i" -1, 2.5, "i", "1+2.5i" -1.5, 2.5, "i", "1.5+2.5i" -2, 2.5, "i", "2+2.5i" -2.5, 2.5, "i", "2.5+2.5i" -3, 2.5, "i", "3+2.5i" -3.5, 2.5, "i", "3.5+2.5i" --2.5, 3, "i", "-2.5+3i" --2.5, 3, "i", "-2.5+3i" --1.5, 3, "i", "-1.5+3i" --1.5, 3, "i", "-1.5+3i" --0.5, 3, "i", "-0.5+3i" -0, 3, "i", "3i" -0.5, 3, "i", "0.5+3i" -1, 3, "i", "1+3i" -1.5, 3, "i", "1.5+3i" -2, 3, "i", "2+3i" -2.5, 3, "i", "2.5+3i" -3, 3, "i", "3+3i" -3.5, 3, "i", "3.5+3i" --2.5, 3.5, "i", "-2.5+3.5i" --2.5, 3.5, "i", "-2.5+3.5i" --1.5, 3.5, "i", "-1.5+3.5i" --1.5, 3.5, "i", "-1.5+3.5i" --0.5, 3.5, "i", "-0.5+3.5i" -0, 3.5, "i", "3.5i" -0.5, 3.5, "i", "0.5+3.5i" -1, 3.5, "i", "1+3.5i" -1.5, 3.5, "i", "1.5+3.5i" -2, 3.5, "i", "2+3.5i" -2.5, 3.5, "i", "2.5+3.5i" -3, 3.5, "i", "3+3.5i" -3.5, 3.5, "i", "3.5+3.5i" --2.5, -2.5, "j", "-2.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --0.5, -2.5, "j", "-0.5-2.5j" -0, -2.5, "j", "-2.5j" -0.5, -2.5, "j", "0.5-2.5j" -1, -2.5, "j", "1-2.5j" -1.5, -2.5, "j", "1.5-2.5j" -2, -2.5, "j", "2-2.5j" -2.5, -2.5, "j", "2.5-2.5j" -3, -2.5, "j", "3-2.5j" -3.5, -2.5, "j", "3.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --2.5, -2.5, "j", "-2.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --1.5, -2.5, "j", "-1.5-2.5j" --0.5, -2.5, "j", "-0.5-2.5j" -0, -2.5, "j", "-2.5j" -0.5, -2.5, "j", "0.5-2.5j" -1, -2.5, "j", "1-2.5j" -1.5, -2.5, "j", "1.5-2.5j" -2, -2.5, "j", "2-2.5j" -2.5, -2.5, "j", "2.5-2.5j" -3, -2.5, "j", "3-2.5j" -3.5, -2.5, "j", "3.5-2.5j" --2.5, -1.5, "j", "-2.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --0.5, -1.5, "j", "-0.5-1.5j" -0, -1.5, "j", "-1.5j" -0.5, -1.5, "j", "0.5-1.5j" -1, -1.5, "j", "1-1.5j" -1.5, -1.5, "j", "1.5-1.5j" -2, -1.5, "j", "2-1.5j" -2.5, -1.5, "j", "2.5-1.5j" -3, -1.5, "j", "3-1.5j" -3.5, -1.5, "j", "3.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --2.5, -1.5, "j", "-2.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --1.5, -1.5, "j", "-1.5-1.5j" --0.5, -1.5, "j", "-0.5-1.5j" -0, -1.5, "j", "-1.5j" -0.5, -1.5, "j", "0.5-1.5j" -1, -1.5, "j", "1-1.5j" -1.5, -1.5, "j", "1.5-1.5j" -2, -1.5, "j", "2-1.5j" -2.5, -1.5, "j", "2.5-1.5j" -3, -1.5, "j", "3-1.5j" -3.5, -1.5, "j", "3.5-1.5j" --2.5, -0.5, "j", "-2.5-0.5j" --2.5, -0.5, "j", "-2.5-0.5j" --1.5, -0.5, "j", "-1.5-0.5j" --1.5, -0.5, "j", "-1.5-0.5j" --0.5, -0.5, "j", "-0.5-0.5j" -0, -0.5, "j", "-0.5j" -0.5, -0.5, "j", "0.5-0.5j" -1, -0.5, "j", "1-0.5j" -1.5, -0.5, "j", "1.5-0.5j" -2, -0.5, "j", "2-0.5j" -2.5, -0.5, "j", "2.5-0.5j" -3, -0.5, "j", "3-0.5j" -3.5, -0.5, "j", "3.5-0.5j" --2.5, 0, "j", -2.5 --2.5, 0, "j", -2.5 --1.5, 0, "j", -1.5 --1.5, 0, "j", -1.5 --0.5, 0, "j", -0.5 -0, 0, "j", 0 -0.5, 0, "j", 0.5 -1, 0, "j", 1 -1.5, 0, "j", 1.5 -2, 0, "j", 2 -2.5, 0, "j", 2.5 -3, 0, "j", 3 -3.5, 0, "j", 3.5 --2.5, 0.5, "j", "-2.5+0.5j" --2.5, 0.5, "j", "-2.5+0.5j" --1.5, 0.5, "j", "-1.5+0.5j" --1.5, 0.5, "j", "-1.5+0.5j" --0.5, 0.5, "j", "-0.5+0.5j" -0, 0.5, "j", "0.5j" -0.5, 0.5, "j", "0.5+0.5j" -1, 0.5, "j", "1+0.5j" -1.5, 0.5, "j", "1.5+0.5j" -2, 0.5, "j", "2+0.5j" -2.5, 0.5, "j", "2.5+0.5j" -3, 0.5, "j", "3+0.5j" -3.5, 0.5, "j", "3.5+0.5j" --2.5, 1, "j", "-2.5+j" --2.5, 1, "j", "-2.5+j" --1.5, 1, "j", "-1.5+j" --1.5, 1, "j", "-1.5+j" --0.5, 1, "j", "-0.5+j" -0, 1, "j", "j" -0.5, 1, "j", "0.5+j" -1, 1, "j", "1+j" -1.5, 1, "j", "1.5+j" -2, 1, "j", "2+j" -2.5, 1, "j", "2.5+j" -3, 1, "j", "3+j" -3.5, 1, "j", "3.5+j" --2.5, 1.5, "j", "-2.5+1.5j" --2.5, 1.5, "j", "-2.5+1.5j" --1.5, 1.5, "j", "-1.5+1.5j" --1.5, 1.5, "j", "-1.5+1.5j" --0.5, 1.5, "j", "-0.5+1.5j" -0, 1.5, "j", "1.5j" -0.5, 1.5, "j", "0.5+1.5j" -1, 1.5, "j", "1+1.5j" -1.5, 1.5, "j", "1.5+1.5j" -2, 1.5, "j", "2+1.5j" -2.5, 1.5, "j", "2.5+1.5j" -3, 1.5, "j", "3+1.5j" -3.5, 1.5, "j", "3.5+1.5j" --2.5, 2, "j", "-2.5+2j" --2.5, 2, "j", "-2.5+2j" --1.5, 2, "j", "-1.5+2j" --1.5, 2, "j", "-1.5+2j" --0.5, 2, "j", "-0.5+2j" -0, 2, "j", "2j" -0.5, 2, "j", "0.5+2j" -1, 2, "j", "1+2j" -1.5, 2, "j", "1.5+2j" -2, 2, "j", "2+2j" -2.5, 2, "j", "2.5+2j" -3, 2, "j", "3+2j" -3.5, 2, "j", "3.5+2j" --2.5, 2.5, "j", "-2.5+2.5j" --2.5, 2.5, "j", "-2.5+2.5j" --1.5, 2.5, "j", "-1.5+2.5j" --1.5, 2.5, "j", "-1.5+2.5j" --0.5, 2.5, "j", "-0.5+2.5j" -0, 2.5, "j", "2.5j" -0.5, 2.5, "j", "0.5+2.5j" -1, 2.5, "j", "1+2.5j" -1.5, 2.5, "j", "1.5+2.5j" -2, 2.5, "j", "2+2.5j" -2.5, 2.5, "j", "2.5+2.5j" -3, 2.5, "j", "3+2.5j" -3.5, 2.5, "j", "3.5+2.5j" --2.5, 3, "j", "-2.5+3j" --2.5, 3, "j", "-2.5+3j" --1.5, 3, "j", "-1.5+3j" --1.5, 3, "j", "-1.5+3j" --0.5, 3, "j", "-0.5+3j" -0, 3, "j", "3j" -0.5, 3, "j", "0.5+3j" -1, 3, "j", "1+3j" -1.5, 3, "j", "1.5+3j" -2, 3, "j", "2+3j" -2.5, 3, "j", "2.5+3j" -3, 3, "j", "3+3j" -3.5, 3, "j", "3.5+3j" --2.5, 3.5, "j", "-2.5+3.5j" --2.5, 3.5, "j", "-2.5+3.5j" --1.5, 3.5, "j", "-1.5+3.5j" --1.5, 3.5, "j", "-1.5+3.5j" --0.5, 3.5, "j", "-0.5+3.5j" -0, 3.5, "j", "3.5j" -0.5, 3.5, "j", "0.5+3.5j" -1, 3.5, "j", "1+3.5j" -1.5, 3.5, "j", "1.5+3.5j" -2, 3.5, "j", "2+3.5j" -2.5, 3.5, "j", "2.5+3.5j" -3, 3.5, "j", "3+3.5j" -3.5, 3.5, "j", "3.5+3.5j" --1.23, -4.56, "-1.23-4.56i" -0, -3.21, "i", "-3.21i" -1.23, -2.34, "j", "1.23-2.34j" --1.23, 0, -1.23 -0, 0, "i", 0 -1.23, 0, "j", 1.23 --1.23, 4.56, "-1.23+4.56i" -0, 3.21, "i", "3.21i" -1.23, 2.34, "j", "1.23+2.34j" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data deleted file mode 100644 index dbcfb0119aa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/CONVERTUOM.data +++ /dev/null @@ -1,24 +0,0 @@ -1.0, "lbm", "kg", 0.45359230974881 -123.45, "kg", "kg", 123.45 -68, "F", "C", 20 -20, "C", "F", 68 -68, "F", "K", 293.15 -293.15, "K", "F", 68 -22, "C", "K", 295.15 -295.65, "K", "C", 22.5 -2.5, "ft", "sec", "#N/A" -12345, "m", "km", 12.345 -12.345, "km", "m", 12345 -1, "km", "mi", 0.62137119223733 -"three","ft", "yds", "#VALUE!" -123.45, "K", "kel", 123.45 -123.45, "C", "cel", 123.45 -123.45, "F", "fah", 123.45 -1, "ft", "day", "#N/A" -123.45, "m", "m", 123.45 -234.56, "km", "km", 234.56 -234.56, "kpt", "lt", "#N/A" -234.56, "sm", "m", "#N/A" -234.56, "lt", "kpt", "#N/A" -234.56, "m", "sm", "#N/A" -12.345, "km", "mm", 12345000 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data deleted file mode 100644 index 404adaba023..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2BIN.data +++ /dev/null @@ -1,16 +0,0 @@ -357, "101100101" -1357, "#NUM!" // Too large -9, 4, "1001" -9, 8, "00001001" -9, 6.75, "001001" // Leading places as a float -9, -1, "#NUM!" // Leading places negative -9, "ABC", "#VALUE!" // Leading places non-numeric -246, "11110110" -12345, "#NUM!" -123456789, "#NUM!" -123.45, "1111011" -0, "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string --100, "1110011100" // 2's Complement --107, "1110010101" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data deleted file mode 100644 index 5210e91593f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2HEX.data +++ /dev/null @@ -1,15 +0,0 @@ -"357", "165" -"1357", "54D" -"246", "F6" -"12345", "3039" -"123456789", "75BCD15" -"100", 4, "0064" -"100", 5.75, "00064" // Leading places as a float -"100", -1, "#NUM!" // Leading places negative -"100", "ABC", "#VALUE!" // Leading places non-numeric -"123.45", "7B" -"0", "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string -"-54", "FFFFFFFFCA" // 2's Complement -"-107", "FFFFFFFF95" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data deleted file mode 100644 index 923532e2814..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DEC2OCT.data +++ /dev/null @@ -1,12 +0,0 @@ -"357", "545" -"1357", "2515" -"246", "366" -"12345", "30071" -"123456789", "726746425" -"123.45", "173" -"58, 3, "072" -"0", "0" -"3579A", "#VALUE!" // Invalid decimal -TRUE, "#VALUE!" // Non string -"-100", "7777777634" // 2's Complement -"-107", "7777777625" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data deleted file mode 100644 index e994277b28e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/DELTA.data +++ /dev/null @@ -1,25 +0,0 @@ --1.5, -1.5, 1 --0.75, -1.5, 0 -0, -1.5, 0 -0.75, -1.5, 0 -1.5, -1.5, 0 --1.5, -0.75, 0 --0.75, -0.75, 1 -0, -0.75, 0 -0.75, -0.75, 0 -1.5, -0.75, 0 --1.5, 0, 0 --0.75, 0, 0 -0, 0, 1 -0.75, 0, 0 -1.5, 0, 0 --1.5, 0.75, 0 --0.75, 0.75, 0 -0, 0.75, 0 -0.75, 0.75, 1 -1.5, 0.75, 0 --1.5, 1.5, 0 --0.75, 1.5, 0 -0, 1.5, 0 -0.75, 1.5, 0 -1.5, 1.5, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data deleted file mode 100644 index 5c4fc1e9f1b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERF.data +++ /dev/null @@ -1,124 +0,0 @@ -# lower bound upper bound Result -0, 0.0 -0.01, 0.0112834155558496 -0.05, 0.0563719777970166 -0.1, 0.1124629160182850 -0.125, 0.1403162048013340 -0.15, 0.1679959714273630 -0.2, 0.2227025892104780 -0.25, 0.2763263901682370 -0.3, 0.3286267594591270 -0.35, 0.3793820535623100 -0.4, 0.4283923550466680 -0.45, 0.4754817197869240 -0.5, 0.5204998778130470 -0.6, 0.6038560908479260 -0.7, 0.6778011938374180 -0.8, 0.7421009647076610 -0.9, 0.7969082124228320 -1, 0.8427007929497150 -1.1, 0.8802050695740820 -1.2, 0.9103139782296350 -1.3, 0.9340079449406520 -1.4, 0.9522851197626490 -1.5, 0.9661051464753110 -1.75, 0.9866716712191820 -2, 0.9953222650189530 -2.5, 0.9995930479825550 -3, 0.9999779095030010 -3.5, 0.9999992569016280 -4, 0.9999999845827420 -4.5, 0.9999999998033840 -5, 0.9999999999984630 -5.5, 0.9999999999999930 -6, 1.0 -32, 1.0 --0.1, -0.1124629160182850 --1, -0.8427007929497150 -TRUE, "#VALUE!" -FALSE, "#VALUE!" -"2", 0.9953222650189530 -"TWO", "#VALUE!" --1.5, -1.5, 0.0 --0.75, -1.5, -0.2549495128217960 -0, -1.5, -0.9661051464753110 -0.75, -1.5, -1.6772607801288300 -1.5, -1.5, -1.9322102929506200 -2.25, -1.5, -1.9646424298886300 -3, -1.5, -1.9660830559783100 -3.75, -1.5, -1.9661050327480500 -4.5, -1.5, -1.9661051462786900 --1.5, -0.75, 0.2549495128217960 --0.75, -0.75, 0.0 -0, -0.75, -0.7111556336535150 -0.75, -0.75, -1.4223112673070300 -1.5, -0.75, -1.6772607801288300 -2.25, -0.75, -1.7096929170668300 -3, -0.75, -1.7111335431565200 -3.75, -0.75, -1.7111555199262600 -4.5, -0.75, -1.7111556334569000 --1.5, 0, 0.9661051464753110 --0.75, 0, 0.7111556336535150 -0, 0, 0.0 -0.75, 0, -0.7111556336535150 -1.5, 0, -0.9661051464753110 -2.25, 0, -0.9985372834133190 -3, 0, -0.9999779095030010 -3.75, 0, -0.9999998862727430 -4.5, 0, -0.9999999998033840 --1.5, 0.75, 1.6772607801288300 --0.75, 0.75, 1.4223112673070300 -0, 0.75, 0.7111556336535150 -0.75, 0.75, 0.0 -1.5, 0.75, -0.2549495128217960 -2.25, 0.75, -0.2873816497598040 -3, 0.75, -0.2888222758494860 -3.75, 0.75, -0.2888442526192280 -4.5, 0.75, -0.2888443661498690 --1.5, 1.5, 1.9322102929506200 --0.75, 1.5, 1.6772607801288300 -0, 1.5, 0.9661051464753110 -0.75, 1.5, 0.2549495128217960 -1.5, 1.5, 0.0 -2.25, 1.5, -0.0324321369380081 -3, 1.5, -0.0338727630276906 -3.75, 1.5, -0.0338947397974326 -4.5, 1.5, -0.0338948533280732 --1.5, 2.25, 1.9646424298886300 --0.75, 2.25, 1.7096929170668300 -0, 2.25, 0.9985372834133190 -0.75, 2.25, 0.2873816497598040 -1.5, 2.25, 0.0324321369380081 -2.25, 2.25, 0.0 -3, 2.25, -0.0014406260896825 -3.75, 2.25, -0.0014626028594246 -4.5, 2.25, -0.0014627163900651 --1.5, 3, 1.9660830559783100 --0.75, 3, 1.7111335431565200 -0, 3, 0.9999779095030010 -0.75, 3, 0.2888222758494860 -1.5, 3, 0.0338727630276906 -2.25, 3, 0.0014406260896825 -3, 3, 0.0 -3.75, 3, -0.0000219767697420 -4.5, 3, -0.0000220903003826 --1.5, 3.75, 1.9661050327480500 --0.75, 3.75, 1.7111555199262600 -0, 3.75, 0.9999998862727430 -0.75, 3.75, 0.2888442526192280 -1.5, 3.75, 0.0338947397974326 -2.25, 3.75, 0.0014626028594246 -3, 3.75, 0.0000219767697420 -3.75, 3.75, 0.0 -4.5, 3.75, -0.0000001135306406 --1.5, 4.5, 1.9661051462786900 --0.75, 4.5, 1.7111556334569000 -0, 4.5, 0.9999999998033840 -0.75, 4.5, 0.2888443661498690 -1.5, 4.5, 0.0338948533280732 -2.25, 4.5, 0.0014627163900651 -3, 4.5, 0.0000220903003826 -3.75, 4.5, 0.0000001135306406 -4.5, 4.5, 0.0 -5, -1, -1.8427007929481800 --5, 1, 1.8427007929481800 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data deleted file mode 100644 index df814893e2d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/ERFC.data +++ /dev/null @@ -1,41 +0,0 @@ -# x value Result -0, 1.0 -0.01, 0.9887165844441500 -0.05, 0.9436280222029830 -0.1, 0.8875370839817150 -0.125, 0.8596837951986660 -0.15, 0.8320040285726360 -0.2, 0.7772974107895220 -0.25, 0.7236736098317630 -0.3, 0.6713732405408730 -0.35, 0.6206179464376900 -0.4, 0.5716076449533320 -0.45, 0.5245182802130760 -0.5, 0.4795001221869530 -0.6, 0.3961439091520740 -0.7, 0.3221988061625820 -0.8, 0.2578990352923390 -0.9, 0.2030917875771680 -1, 0.1572992070502850 -1.1, 0.1197949304259180 -1.2, 0.0896860217703646 -1.3, 0.0659920550593475 -1.4, 0.0477148802373512 -1.5, 0.0338948535246893 -1.75, 0.0133283287808176 -2, 0.0046777349810473 -2.5, 0.0004069520174450 -3, 0.0000220904969986 -3.5, 0.0000007430983723 -4, 0.0000000154172579 -4.5, 0.0000000001966160 -5, 0.0000000000015375 -5.5, 0.0000000000000074 -6, 0.0 -32, 0.0 --0.1, 1.1124629160182900 --1, 1.8427007929497100 -TRUE, "#VALUE!" -FALSE, "#VALUE!" -"2", 0.0046777349810473 -"TWO", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data deleted file mode 100644 index f6bf40ea8f4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/GESTEP.data +++ /dev/null @@ -1,81 +0,0 @@ --1.5, -1.5, 1 --0.75, -1.5, 1 -0, -1.5, 1 -0.75, -1.5, 1 -1.5, -1.5, 1 -2.25, -1.5, 1 -3, -1.5, 1 -3.75, -1.5, 1 -4.5, -1.5, 1 --1.5, -0.75, 0 --0.75, -0.75, 1 -0, -0.75, 1 -0.75, -0.75, 1 -1.5, -0.75, 1 -2.25, -0.75, 1 -3, -0.75, 1 -3.75, -0.75, 1 -4.5, -0.75, 1 --1.5, 0, 0 --0.75, 0, 0 -0, 0, 1 -0.75, 0, 1 -1.5, 0, 1 -2.25, 0, 1 -3, 0, 1 -3.75, 0, 1 -4.5, 0, 1 --1.5, 0.75, 0 --0.75, 0.75, 0 -0, 0.75, 0 -0.75, 0.75, 1 -1.5, 0.75, 1 -2.25, 0.75, 1 -3, 0.75, 1 -3.75, 0.75, 1 -4.5, 0.75, 1 --1.5, 1.5, 0 --0.75, 1.5, 0 -0, 1.5, 0 -0.75, 1.5, 0 -1.5, 1.5, 1 -2.25, 1.5, 1 -3, 1.5, 1 -3.75, 1.5, 1 -4.5, 1.5, 1 --1.5, 2.25, 0 --0.75, 2.25, 0 -0, 2.25, 0 -0.75, 2.25, 0 -1.5, 2.25, 0 -2.25, 2.25, 1 -3, 2.25, 1 -3.75, 2.25, 1 -4.5, 2.25, 1 --1.5, 3, 0 --0.75, 3, 0 -0, 3, 0 -0.75, 3, 0 -1.5, 3, 0 -2.25, 3, 0 -3, 3, 1 -3.75, 3, 1 -4.5, 3, 1 --1.5, 3.75, 0 --0.75, 3.75, 0 -0, 3.75, 0 -0.75, 3.75, 0 -1.5, 3.75, 0 -2.25, 3.75, 0 -3, 3.75, 0 -3.75, 3.75, 1 -4.5, 3.75, 1 --1.5, 4.5, 0 --0.75, 4.5, 0 -0, 4.5, 0 -0.75, 4.5, 0 -1.5, 4.5, 0 -2.25, 4.5, 0 -3, 4.5, 0 -3.75, 4.5, 0 -4.5, 4.5, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data deleted file mode 100644 index 9e1aecb12df..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2BIN.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "110101011" -"ABCD", "#NUM!" -"F6", "11110110" -"F", 8, "00001111" -"B7", "10110111" -"12345", "#NUM!" -"123456789", "#NUM!" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"FFFFFFFFFF", "1111111111" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data deleted file mode 100644 index 17fc866710d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2DEC.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "427" -"ABCD", "43981" -"F6", "246" -"12345", "74565" -"123456789", "4886718345" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"A5", "165" -"FFFFFFFF5B", "-165" -"3DA408B9", "1034160313" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data deleted file mode 100644 index 2ebd893ab53..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/HEX2OCT.data +++ /dev/null @@ -1,13 +0,0 @@ -"01AB", "653" -"ABCD", "125715" -"F6", "366" -"3B4E", "35516" -"F", 3, "017" -"12345", "221505" -"123456789", "#NUM!" -"123.45", "#NUM!" -"0", "0" -"G3579A", "#NUM!" -TRUE, "#VALUE!" -"-107", "#NUM!" -"FFFFFFFF00", "7777777400" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data deleted file mode 100644 index e92de41b664..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMABS.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", 13.580298229420 -"1.234E-5+6.78E9i", 6.78E9 -"3.5+2.5i", 4.301162633521 -"3.5+i", 3.640054944640 -"3.5", 3.5 -"3.5-i", 3.640054944640 -"3.5-2.5i", 4.301162633521 -"1+2.5i", 2.692582403567 -"1+i", 1.414213562373 -"1", 1 -"1-i", 1.414213562373 -"1-2.5i", 2.692582403567 -"2.5i", 2.5 -"i", 1 -"0", 0 -"-i", 1 -"-2.5i", 2.5 -"-1+2.5i", 2.692582403567 -"-1+i", 1.414213562373 -"-1", 1 -"-1-i", 1.414213562373 -"-1-2.5i", 2.692582403567 -"-3.5+2.5i", 4.301162633521 -"-3.5+i", 3.640054944640 -"-3.5", 3.5 -"-3.5-i", 3.640054944640 -"-3.5-2.5i", 4.301162633521 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data deleted file mode 100644 index ac888bae8e1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMAGINARY.data +++ /dev/null @@ -1,30 +0,0 @@ -"12.34+5.67j", 5.67 -"1.234E-5+6.78E9i", 6.78E9 -"3.5+2.5i", 2.5 -"3.5+i", 1 -"3.5", 0 -"3.5-i", -1 -"3.5-2.5i", -2.5 -"1+2.5i", 2.5 -"1+i", 1 -"1", 0 -1, 0 -"1-i", -1 -"1-2.5i", -2.5 -"2.5i", 2.5 -"i", 1 -"0", 0 -0, 0 -0.0, 0 -"-i", -1 -"-2.5i", -2.5 -"-1+2.5i", 2.5 -"-1+i", 1 -"-1", 0 -"-1-i", -1 -"-1-2.5i", -2.5 -"-3.5+2.5i", 2.5 -"-3.5+i", 1 -"-3.5", 0 -"-3.5-i", -1 -"-3.5-2.5i", -2.5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data deleted file mode 100644 index 4b11d998ac4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMARGUMENT.data +++ /dev/null @@ -1,26 +0,0 @@ -"12.34+5.67j", 0.430710595550 -"3.5+2.5i", 0.620249485983 -"3.5+i", 0.278299659005 -"3.5", 0 -"3.5-i", -0.278299659005 -"3.5-2.5i", -0.620249485983 -"1+2.5i", 1.190289949683 -"1+i", 0.785398163397 -"1", 0 -"1-i", -0.785398163397 -"1-2.5i", -1.190289949683 -"2.5i", 1.570796326795 -"i", 1.570796326795 -"0", "#DIV/0!" -"-i", -1.570796326795 -"-2.5i", -1.570796326795 -"-1+2.5i", 1.951302703907 -"-1+i", 2.356194490192 -"-1", 3.141592653590 -"-1-i", -2.356194490192 -"-1-2.5i", -1.951302703907 -"-3.5+2.5i", 2.521343167607 -"-3.5+i", 2.863292994585 -"-3.5", 3.141592653590 -"-3.5-i", -2.863292994585 -"-3.5-2.5i", -2.521343167607 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data deleted file mode 100644 index 67eb96ff575..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCONJUGATE.data +++ /dev/null @@ -1,26 +0,0 @@ -"12.34+5.67j", "12.34-5.67j" -"3.5+2.5i", "3.5-2.5i" -"3.5+i", "3.5-i" -"3.5", "3.5" -"3.5-i", "3.5+i" -"3.5-2.5i", "3.5+2.5i" -"1+2.5i", "1-2.5i" -"1+i", "1-i" -"1", "1" -"1-i", "1+i" -"1-2.5i", "1+2.5i" -"2.5i", "-2.5i" -"i", "-i" -"0", "0" -"-i", "i" -"-2.5i", "2.5i" -"-1+2.5i", "-1-2.5i" -"-1+i", "-1-i" -"-1", "-1" -"-1-i", "-1+i" -"-1-2.5i", "-1+2.5i" -"-3.5+2.5i", "-3.5-2.5i" -"-3.5+i", "-3.5-i" -"-3.5", "-3.5" -"-3.5-i", "-3.5+i" -"-3.5-2.5i", "-3.5+2.5i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data deleted file mode 100644 index 7ada86eaeaa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMCOS.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "141.319179436356+32.547610312508j" -"3.5+2.5i", "-5.74262349163406+2.12231025604134i" -"3.5+i", "-1.44502817950166+0.412240867891067i" -"3.5", "-0.936456687290796" -"3.5-i", "-1.44502817950166-0.412240867891067i" -"3.5-2.5i", "-5.74262349163406-2.12231025604134i" -"1+2.5i", "3.31329014611322-5.0910715229497i" -"1+i", "0.833730025131149-0.988897705762865i" -"1", "0.54030230586814" -"1-i", "0.833730025131149+0.988897705762865i" -"1-2.5i", "3.31329014611322+5.0910715229497i" -"2.5i", "6.13228947966369" -"i", "1.54308063481524" -"0", "1" -"-i", "1.54308063481524" -"-2.5i", "6.13228947966369" -"-1+2.5i", "3.31329014611322+5.0910715229497i" -"-1+i", "0.833730025131149+0.988897705762865i" -"-1", "0.54030230586814" -"-1-i", "0.833730025131149-0.988897705762865i" -"-1-2.5i", "3.31329014611322-5.0910715229497i" -"-3.5+2.5i", "-5.74262349163406-2.12231025604134i" -"-3.5+i", "-1.44502817950166-0.412240867891067i" -"-3.5", "-0.936456687290796" -"-3.5-i", "-1.44502817950166+0.412240867891067i" -"-3.5-2.5i", "-5.74262349163406+2.12231025604134i" -"3", "-0.989992496600445" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data deleted file mode 100644 index 52d5cbb6e1a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMDIV.data +++ /dev/null @@ -1,20 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "123.45+67.89j", "0.0961415519586104-0.00694248653276682j" -"-12.34+5.67i", "-123.45+67.89i", "0.0961415519586104+0.00694248653276682i" -"-12.34-5.67i", "-123.45+67.89i", "0.0573549954111941+0.0774712890924744i" -"-12.34+5.67i", "-123.45-67.89i", "0.0573549954111941-0.0774712890924744i" -"-12.34-5.67i", "-123.45-67.89i", "0.0961415519586104-0.00694248653276682i" -"12.34+5.67i", "-123.45+67.89i", "-0.0573549954111941-0.0774712890924744i" -"12.34-5.67i", "-123.45+67.89i", "-0.0961415519586104-0.00694248653276682i" -"12.34+5.67i", "-123.45-67.89i", "-0.0961415519586104+0.00694248653276682i" -"12.34-5.67i", "-123.45-67.89i", "-0.0573549954111941+0.0774712890924744i" -"-12.34+5.67i", "123.45+67.89i", "-0.0573549954111941+0.0774712890924744i" -"-12.34-5.67i", "123.45+67.89i", "-0.0961415519586104+0.00694248653276682i" -"-12.34+5.67i", "123.45-67.89i", "-0.0961415519586104-0.00694248653276682i" -"-12.34-5.67i", "123.45-67.89i", "-0.0573549954111941-0.0774712890924744i" -"-12.34-5.67i", "123.45-67.89", "#NUM!" -"-12.34-5.67j", "123.45-67.89", "#NUM!" -"-12.34-5.67", "123.45-67.89j", "#NUM!" -"-12.34-5.67i", "-12.34-5.67i", "1" -"-12.34", "123.45-67.89i", "-0.0767482736849023-0.0422068878126206i" -"-12.34-5.67i", "-12.34", "1+0.459481361426256i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data deleted file mode 100644 index 4c4d9b62b4e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMEXP.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "187004.11273906-131589.323796073j" -"-12.34E-5+6.78E9i", "1.79747131321615E+308+1.79747131321615E+308i" -"3.5+2.5i", "-26.5302329126575+19.8186755366902i" -"3.5+i", "17.8923550531471+27.8656919720394i" -"3.5", "33.1154519586923" -"3.5-i", "17.8923550531471-27.8656919720394i" -"3.5-2.5i", "-26.5302329126575-19.8186755366902i" -"1+2.5i", "-2.17773413212721+1.62681595415671i" -"1+i", "1.46869393991589+2.28735528717884i" -"1", "2.71828182845905" -"1-i", "1.46869393991589-2.28735528717884i" -"1-2.5i", "-2.17773413212721-1.62681595415671i" -"2.5i", "-0.801143615546934+0.598472144103957i" -"i", "0.54030230586814+0.841470984807897i" -"0", "1" -"-i", "0.54030230586814-0.841470984807897i" -"-2.5i", "-0.801143615546934-0.598472144103957i" -"-1+2.5i", "-0.294724265585475+0.220165597929638i" -"-1+i", "0.198766110346413+0.309559875653112i" -"-1", "0.367879441171442" -"-1-i", "0.198766110346413-0.309559875653112i" -"-1-2.5i", "-0.294724265585475-0.220165597929638i" -"-3.5+2.5i", "-0.0241924409350133+0.0180722928030842i" -"-3.5+i", "0.016315715894263+0.025410221967i" -"-3.5", "0.0301973834223185" -"-3.5-i", "0.016315715894263-0.025410221967i" -"-3.5-2.5i", "-0.0241924409350133-0.0180722928030842i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data deleted file mode 100644 index cb24be4ef7b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLN.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "2.60862008281875+0.430710595550204j" -"-1.234E-5+6.78E9i", "22.6372429388987+1.5707963267949i" -"3.5+2.5i", "1.45888536604214+0.620249485982821i" -"3.5+i", "1.29199877621612+0.278299659005111i" -"3.5", "1.25276296849537" -"3.5-i", "1.29199877621612-0.278299659005111i" -"3.5-2.5i", "1.45888536604214-0.620249485982821i" -"1+2.5i", "0.990500734433292+1.19028994968253i" -"1+i", "0.346573590279973+0.785398163397448i" -"1", "0" -"1-i", "0.346573590279973-0.785398163397448i" -"1-2.5i", "0.990500734433292-1.19028994968253i" -"2.5i", "0.916290731874155+1.5707963267949i" -"i", "1.5707963267949i" -"0", "#NUM!" -"-i", "-1.5707963267949i" -"-2.5i", "0.916290731874155-1.5707963267949i" -"-1+2.5i", "0.990500734433292+1.95130270390726i" -"-1+i", "0.346573590279973+2.35619449019234i" -"-1", "3.14159265358979i" -"-1-i", "0.346573590279973-2.35619449019234i" -"-1-2.5i", "0.990500734433292-1.95130270390726i" -"-3.5+2.5i", "1.45888536604214+2.52134316760697i" -"-3.5+i", "1.29199877621612+2.86329299458468i" -"-3.5", "1.25276296849537+3.14159265358979i" -"-3.5-i", "1.29199877621612-2.86329299458468i" -"-3.5-2.5i", "1.45888536604214-2.52134316760697i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data deleted file mode 100644 index 8c57ff90cb2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG10.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "1.13290930735019+0.187055234944717j" -"-12.34E-5+6.78E9i", "9.83122969386706+0.682188176920927i" -"3.5+2.5i", "0.633585864201507+0.269370929165668i" -"3.5+i", "0.561107939136413+0.120864006221476i" -"3.5", "0.544068044350276" -"3.5-i", "0.561107939136413-0.120864006221476i" -"3.5-2.5i", "0.633585864201507-0.269370929165668i" -"1+2.5i", "0.430169003285497+0.516936357012023i" -"1+i", "0.150514997831991+0.34109408846046i" -"1", "0" -"1-i", "0.150514997831991-0.34109408846046i" -"1-2.5i", "0.430169003285497-0.516936357012023i" -"2.5i", "0.397940008672038+0.68218817692092i" -"i", "0.68218817692092i" -"0", "#NUM!" -"-i", "-0.68218817692092i" -"-2.5i", "0.397940008672038-0.68218817692092i" -"-1+2.5i", "0.430169003285497+0.847439996829817i" -"-1+i", "0.150514997831991+1.02328226538138i" -"-1", "1.36437635384184i" -"-1-i", "0.150514997831991-1.02328226538138i" -"-1-2.5i", "0.430169003285497-0.847439996829817i" -"-3.5+2.5i", "0.633585864201507+1.09500542467617i" -"-3.5+i", "0.561107939136413+1.24351234762036i" -"-3.5", "0.544068044350276+1.36437635384184i" -"-3.5-i", "0.561107939136413-1.24351234762036i" -"-3.5-2.5i", "0.633585864201507-1.09500542467617i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data deleted file mode 100644 index a5a41367909..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMLOG2.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "3.76344325733562+0.621384040306436j" -"-12.34E-5+6.78E9i", "32.6586381298614+2.26618007108803i" -"3.5+2.5i", "2.10472668297646+0.894830857610216i" -"3.5+i", "1.86396022742506+0.401501537958665i" -"3.5", "1.80735492219671" -"3.5-i", "1.86396022742506-0.401501537958665i" -"3.5-2.5i", "2.10472668297646-0.894830857610216i" -"1+2.5i", "1.42899049767377+1.71722540775913i" -"1+i", "0.500000000038482+1.13309003554401i" -"1", "0" -"1-i", "0.500000000038482-1.13309003554401i" -"1-2.5i", "1.42899049767377-1.71722540775913i" -"2.5i", "1.3219280949891+2.26618007108801i" -"i", "2.26618007108801i" -"0", "#NUM!" -"-i", "-2.26618007108801i" -"-2.5i", "1.3219280949891-2.26618007108801i" -"-1+2.5i", "1.42899049767377+2.81513473441689i" -"-1+i", "0.500000000038482+3.39927010663201i" -"-1", "4.53236014217602i" -"-1-i", "0.500000000038482-3.39927010663201i" -"-1-2.5i", "1.42899049767377-2.81513473441689i" -"-3.5+2.5i", "2.10472668297646+3.63752928456581i" -"-3.5+i", "1.86396022742506+4.13085860421736i" -"-3.5", "1.80735492219671+4.53236014217602i" -"-3.5-i", "1.86396022742506-4.13085860421736i" -"-3.5-2.5i", "2.10472668297646-3.63752928456581i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data deleted file mode 100644 index 8e753bc24fd..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPOWER.data +++ /dev/null @@ -1,18 +0,0 @@ -"12.34+5.67j", 2, "120.1267+139.9356j" -"12.34+5.67j", 3, "688.928626+2407.923693j" -"12.34+5.67j", -1, "6.69108496973016E-002-3.07442883131037E-002j" -"12.34+5.67j", -2, "3.53185054333564E-003-4.11425290873718E-003j" -"12.34+5.67j", 0.5, "3.60002071031685+0.787495469644252j" -"12.34+5.67j", -0.25, "0.517904976730581-5.59833234375533E-002j" -"12.34+5.67j", 0, "1" -"-i", 2, "-1-1.34451369308841E-014i" -"1-i", 2, "1.22460635382238E-016-2i" -"2.5i", 2, "-6.25+8.40321058180257E-014i" -"2.5i", "2.5", "-6.98771242968685-6.98771242968684i" -"2.5i", "2.5i", "#VALUE!" -"2.5", "2.5", 9.88211768802619 -"2", "2", 4 -"-12.34-5.67i", "-12.34", "-4.69972844488573E-15+9.35464904349343E-15i" -"12.34-5.67i", "-12.34", "5.93343000067521E-15-8.62503997728057E-15i" -"-12.34-5.67i", "12.34", "-42881944468901.9-85355046682682.3i" -"12.34-5.67i", "12.34", "54138663282971.3+78697841733874.3i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data deleted file mode 100644 index 81ab40b7ce0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMPRODUCT.data +++ /dev/null @@ -1,15 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "12.34+5.67j" -"12.34+5.67i", "123.45+67.89i", "5.67", "6454.936089+8718.895647i" -"12.34+5.67j", "123.45+67.89j", "5.67", "6454.936089+8718.895647j" -"12.34+5.67j", "123.45+67.89j", "1138.4367+1537.7241j" -"12.34-5.67i", "123.45+67.89i", "1908.3093+137.8011i" -"12.34+5.67i", "123.45-67.89i", "1908.3093-137.8011i" -"12.34-5.67i", "123.45-67.89i", "1138.4367-1537.7241i" -"-12.34+5.67i", "123.45+67.89i", "-1908.3093-137.8011i" -"-12.34-5.67i", "123.45+67.89i", "-1138.4367-1537.7241i" -"12.34+5.67i", "-123.45+67.89i", "-1908.3093+137.8011i" -"-12.34+5.67i", "-123.45+67.89i", "1138.4367-1537.7241i" -"-12.34-5.67i", "-123.45-67.89i", "1138.4367+1537.7241i" -"-12.34", "123.45-67.89i", "-1523.373+837.7626i" -"-12.34-5.67i", "-12.34", "152.2756+69.9678i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data deleted file mode 100644 index ffa4382cbc2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMREAL.data +++ /dev/null @@ -1,30 +0,0 @@ -12.34+5.67j", 12.34 -"-1.234E-5+6.78E9i", -1.234E-5 -"3.5+2.5i", 3.5 -"3.5+i", 3.5 -"3.5", 3.5 -3.5, 3.5 -"3.5-i", 3.5 -"3.5-2.5i", 3.5 -"1+2.5i", 1 -"1+i", 1 -"1", 1 -1, 1 -"1-i", 1 -"1-2.5i", 1 -"2.5i", 0 -"i", 0 -"0", 0 -0, 0 -"-i", 0 -"-2.5i", 0 -"-1+2.5i", -1 -"-1+i", -1 -"-1", -1 -"-1-i", -1 -"-1-2.5i", -1 -"-3.5+2.5i", -3.5 -"-3.5+i", -3.5 -"-3.5", -3.5 -"-3.5-i", -3.5 -"-3.5-2.5i", -3.5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data deleted file mode 100644 index 50ab20034bb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSIN.data +++ /dev/null @@ -1,27 +0,0 @@ -"12.34+5.67j", "-32.5483841590412+141.315819535092j" -"3.5+2.5i", "-2.15110429680353-5.66575444574645i" -"3.5+i", "-0.541286805665839-1.10052501669986i" -"3.5", "-0.35078322768962" -"3.5-i", "-0.541286805665839+1.10052501669986i" -"3.5-2.5i", "-2.15110429680353+5.66575444574645i" -"1+2.5i", "5.16014366757971+3.26893943207955i" -"1+i", "1.29845758141598+0.634963914784736i" -"1", "0.841470984807897" -"1-i", "1.29845758141598-0.634963914784736i" -"1-2.5i", "5.16014366757971-3.26893943207955i" -"2.5i", "6.05020448103979i" -"i", "1.1752011936438i" -"0", "0" -"-i", "-1.1752011936438i" -"-2.5i", "-6.05020448103979i" -"-1+2.5i", "-5.16014366757971+3.26893943207955i" -"-1+i", "-1.29845758141598+0.634963914784736i" -"-1", "-0.841470984807897" -"-1-i", "-1.29845758141598-0.634963914784736i" -"-1-2.5i", "-5.16014366757971-3.26893943207955i" -"-3.5+2.5i", "2.15110429680353-5.66575444574645i" -"-3.5+i", "0.541286805665839-1.10052501669986i" -"-3.5", "0.35078322768962" -"-3.5-i", "0.541286805665839+1.10052501669986i" -"-3.5-2.5i", "2.15110429680353+5.66575444574645i" -"3", "0.141120008059867" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data deleted file mode 100644 index d35a4d752cf..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSQRT.data +++ /dev/null @@ -1,28 +0,0 @@ -"12.34+5.67j", "3.60002071031685+0.787495469644252j" -"-1.234E-5+6.78E9i", "58223.7065120385+58223.7065120386i" -"3.5+2.5i", "1.9749889409211+0.632914936433528i" -"3.5+i", "1.88945163270197+0.264627043818521i" -"3.5", "1.87082869338697" -"3.5-i", "1.88945163270197-0.264627043818521i" -"3.5-2.5i", "1.9749889409211-0.632914936433528i" -"1+2.5i", "1.35878298553655+0.919940868634298i" -"1+i", "1.09868411346781+0.455089860562227i" -"1", "1" -"1-i", "1.09868411346781-0.455089860562227i" -"1-2.5i", "1.35878298553655-0.919940868634298i" -"2.5i", "1.11803398874989+1.11803398874989i" -"i", "0.707106781186548+0.707106781186547i" -"0", "0" -"-i", "0.707106781186548-0.707106781186547i" -"-2.5i", "1.11803398874989-1.11803398874989i" -"-1+2.5i", "0.919940868634298+1.35878298553655i" -"-1+i", "0.455089860562227+1.09868411346781i" -"-1", "6.12303176911189E-017+i" -"-1-i", "0.455089860562227-1.09868411346781i" -"-1-2.5i", "0.919940868634298-1.35878298553655i" -"-3.5+2.5i", "0.632914936433528+1.9749889409211i" -"-3.5+i", "0.264627043818521+1.88945163270197i" -"-3.5", "1.14551435241745E-016+1.87082869338697i" -"-3.5-i", "0.264627043818521-1.88945163270197i" -"-3.5-2.5i", "0.632914936433528-1.9749889409211i" -"9", "3" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data deleted file mode 100644 index 024d35859fe..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUB.data +++ /dev/null @@ -1,10 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"123.45+67.89j", "12.34+5.67j", "111.11+62.22j" -"12.34+5.67j", "123.45+67.89j", "-111.11-62.22j" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89i", "-111.11-62.22i" -"-12.34-5.67i", "123.45-67.89i", "-135.79+62.22i" -"12.34-5.67i", "-123.45-67.89i", "135.79+62.22i" -"-12.34-5.67i", "-123.45-67.89i", "111.11+62.22i" -"-12.34-5.67i", "-123.45-67.89", "#NUM!" -"-12.34-5.67j", "-123.45-67.89", "#NUM!" -"-12.34-5.67", "-123.45-67.89j", "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data deleted file mode 100644 index e63aed946ce..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/IMSUM.data +++ /dev/null @@ -1,10 +0,0 @@ -"12.34+5.67j", "123.45+67.89i", "#NUM!" -"12.34+5.67j", "123.45+67.89j", "135.79+73.56j" -"12.34-5.67i", "123.45+67.89i", "135.79+62.22i" -"12.34+5.67i", "123.45-67.89i", "135.79-62.22i" -"12.34-5.67i", "123.45-67.89i", "135.79-73.56i" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89i", "259.24+141.45i" -"12.34+5.67i", "123.45+67.89i", "123.45+67.89j", "#NUM!" -"-12.34-5.67i", "123.45-67.89i", "111.11-73.56i" -"12.34-5.67i", "-123.45-67.89i", "-111.11-73.56i" -"-12.34-5.67i", "-123.45-67.89i", "-135.79-73.56i" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data deleted file mode 100644 index 1f212fd9d4c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2BIN.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "#NUM!" -"246", "10100110" -"3", 3, "011" -"12345", "#NUM!" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"7777777000", "1000000000" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data deleted file mode 100644 index 19f6dbd69c8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2DEC.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "751" -"246", "166" -"12345", "5349" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"54", "44" -"7777777533", "-165" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data deleted file mode 100644 index c18e7fdb5c9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Engineering/OCT2HEX.data +++ /dev/null @@ -1,9 +0,0 @@ -"1357", "2EF" -"246", "A6" -"12345", "14E5" -"100", 4, "0040" -"123.45", "#NUM!" -"0", "0" -TRUE, "#VALUE!" -"3579", "#NUM!" -"7777777533", "FFFFFFFF5B" // 2's Complement diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data deleted file mode 100644 index 5d92786fb5f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINT.data +++ /dev/null @@ -1,8 +0,0 @@ -#Issue date 1st Interest Settlement Rate Par Freq Basis Result -"2008-03-01", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, 16.666666666667 -"2008-03-05", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, 15.555555555556 -"2010-01-01", "2010-06-30", "2010-04-01", 0.08, 10000, 4, 202.222222222222 -"2008-03-05", "2008-08-31", "2008-05-01", -0.10, 1000, 2, 0, "#NUM!" -"Invalid Date", "2008-08-31", "2008-05-01", 0.10, 1000, 2, 0, "#VALUE!" -"2008-03-01", "2008-08-31", "2008-05-01", "ABC", 1000, 2, 0, "#VALUE!" -"2008-03-01", "2008-08-31", "2008-05-01", 0.10, 1000, 2, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data deleted file mode 100644 index e43e93bb6cb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ACCRINTM.data +++ /dev/null @@ -1,6 +0,0 @@ -#Issue date Settlement Rate Par Basis Result -"2008-04-01", "2008-06-15", 0.10, 1000, 3, 20.547945205479 -"2010-01-01", "2010-12-31", 0.08, 10000, 800 -"2008-03-05", "2008-08-31", -0.10, 1000, 2, "#NUM!" -"Invalid Date", "2008-08-31", 0.10, 1000, 2, "#VALUE!" -"2008-03-01", "2008-08-31", "ABC", 1000, 2, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data deleted file mode 100644 index d753a6d00db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORDEGRC.data +++ /dev/null @@ -1,3 +0,0 @@ -#Cost Date purchased End of the 1st period Salvage Period Depreciation Basis Result -2400, "2008-08-19", "2008-12-31", 300, 1, 0.15, 1, 776 -150, "2011-01-01", "2011-09-30", 20, 1, 0.2, 4, 42 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data deleted file mode 100644 index db6920ac20f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/AMORLINC.data +++ /dev/null @@ -1,3 +0,0 @@ -#Cost Date purchased End of the 1st period Salvage Period Depreciation Basis Result -2400, "2008-08-19", "2008-12-31", 300, 1, 0.15, 1, 360 -150, "2011-01-01", "2011-09-30", 20, 1, 0.2, 4, 30 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data deleted file mode 100644 index 5905db94e4f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYBS.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 71 -"2011-01-01", "2012-10-25", 4, 66 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data deleted file mode 100644 index 26de7302155..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYS.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 181 -"2011-01-01", "2012-10-25", 4, 90 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data deleted file mode 100644 index 91b9f73c4d9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPDAYSNC.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 110 -"2011-01-01", "2012-10-25", 4, 24 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data deleted file mode 100644 index fe5bba5d1b5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNCD.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 39217 -"2011-01-01", "2012-10-25", 4, 40568 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data deleted file mode 100644 index 43f77cd735f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPNUM.data +++ /dev/null @@ -1,7 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 4 -"2011-01-01", "2012-10-25", 4, 0, 8 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" -"01-Jan-2008", "31-Dec-2012", 1, 1, 5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data deleted file mode 100644 index 86212afa8da..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/COUPPCD.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Frequency Basis Result -"25-Jan-2007", "15-Nov-2008", 2, 1, 39036 -"2011-01-01", "2012-10-25", 4, 40476 -"Invalid Date", "15-Nov-2008", 2, 1, "#VALUE!" -"25-Jan-2007", "Invalid Date", 2, 1, "#VALUE!" -"25-Jan-2007", "15-Nov-2008", 3, 1, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data deleted file mode 100644 index 8427c465164..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMIPMT.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate nper pv start_period end_period type result -0.0075, 360, 125000, 13, 24, 0, -11135.232130751 -0.0075, 360, 125000, 1, 1, 0, -937.50 -0.004166666667, 60, 50000, 1, 12, 0, -2294.9775375121 -0.004166666667, 60, 50000, 13, 24, 0, -1833.1000667254 -0.004166666667, 60, 50000, 25, 36, 0, -1347.5920679425 -0.004166666667, 60, 50000, 37, 48, 0, -837.24455850309 -0.004166666667, 60, 50000, 49, 60, 0, -300.78670189939 -0.0075, 360, 125000, 24, 13, 0, "#VALUE!" -0.0075, 360, 125000, 24, 13, 2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data deleted file mode 100644 index 65e6d6d14b8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/CUMPRINC.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate nper pv start_period end_period type result -0.0075, 360, 125000, 13, 24, 0, -934.10712342088 -0.0075, 360, 125000, 1, 1, 0, -68.278271180977 -0.004166666667, 60, 50000, 1, 12, 0, -9027.7626490046 -0.004166666667, 60, 50000, 13, 24, 0, -9489.6401197913 -0.004166666667, 60, 50000, 25, 36, 0, -9975.1481185741 -0.004166666667, 60, 50000, 37, 48, 0, -10485.495628014 -0.004166666667, 60, 50000, 49, 60, 0, -11021.953484617 -0.0075, 360, 125000, 24, 13, 0, "#VALUE!" -0.0075, 360, 125000, 24, 13, 2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data deleted file mode 100644 index e8c5fcf7901..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DB.data +++ /dev/null @@ -1,17 +0,0 @@ -#cost salvage life period month result -1000000, 100000, 6, 1, 7, 186083.33333333 -1000000, 100000, 6, 2, 7, 259639.41666667 -1000000, 100000, 6, 3, 7, 176814.44275 -1000000, 100000, 6, 4, 7, 120410.63551275 -1000000, 100000, 6, 5, 7, 81999.642784183 -1000000, 100000, 6, 6, 7, 55841.756736028 -1000000, 100000, 6, 7, 7, 15845.098473848 -10000, 1000, 5, 1, 6, 1845.00 -10000, 1000, 5, 2, 6, 3009.195 -10000, 1000, 5, 3, 6, 1898.802045 -10000, 1000, 5, 4, 6, 1198.144090395 -10000, 1000, 5, 5, 6, 756.02892103925 -10000, 1000, 5, 6, 6, 238.52712458788 -0, 0, 5, 6, 6, 0.0 --1000, 100, 5, 6, 6, "#NUM!" -"ABC", 100, 5, 6, 6, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data deleted file mode 100644 index 2dfd5205641..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DDB.data +++ /dev/null @@ -1,16 +0,0 @@ -#cost salvage life period month result -2400, 300, 36500, 1, 0.13150684931507 -2400, 300, 36500, 2, 0.13149964346031 -2400, 300, 36500, 7, 0.13146362010871 -2400, 300, 36500, 7, 14, 0.91843145432708 -2400, 300, 120, 1, 2, 40.00 -2400, 300, 10, 1, 2, 480.00 -2400, 300, 10, 2, 1.5, 306.00 -2400, 300, 10, 10, 22.12254720000030 -10000, 1000, 5, 1, 4000.00 -10000, 1000, 5, 2, 2400.00 -10000, 1000, 5, 3, 1440.00 -10000, 1000, 5, 4, 864.00 -10000, 1000, 5, 5, 296.00 --2400, 300, 36500, 1, "#NUM!" -"ABC", 300, 36500, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data deleted file mode 100644 index b5790c74c48..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DISC.data +++ /dev/null @@ -1,6 +0,0 @@ -#settlement maturity price redemption basis result -"2007-01-25", "2007-06-15", 97.975, 100, 1, 0.052420213 -"2010-04-01", "2015-03-31", 95, 100, 0.01 -"2010-04-01", "2015-03-31", 0, 100, "#NUM!" -"2010-04-01", "2015-03-31", "ABC", 100, "#VALUE!" -"Invalid Date", "2007-06-15", 97.975, 100, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data deleted file mode 100644 index c41b51dc19a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARDE.data +++ /dev/null @@ -1,10 +0,0 @@ -#fractional_dollar fraction result -1.02, 16, 1.125 -1.1, 32, 1.3125 -1.01, 16, 1.0625 -1.1, 16, 1.625 -1.03, 32, 1.09375 -1.3, 32, 1.9375 -1.12, 32, 1.375 -1.2345, 0, "#DIV/0!" -1.2345, -2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data deleted file mode 100644 index a83a7231f66..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/DOLLARFR.data +++ /dev/null @@ -1,10 +0,0 @@ -#decimal_dollar fraction result -1.125, 16, 1.02 -1.125, 32, 1.04 -1.0625, 16, 1.01 -1.625, 16, 1.1 -1.09375, 32, 1.03 -1.9375, 32, 1.3 -1.375, 32, 1.12 -1.2345, 0, "#DIV/0!" -1.2345, -2, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data deleted file mode 100644 index 34de2b2c6e0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/EFFECT.data +++ /dev/null @@ -1,6 +0,0 @@ -#nominal_rate npery Result -0.0525, 4, 0.053542667370758 -0.10, 4, 0.103812890625 -0.10, 2, 0.1025 -0.025, 2, 0.02515625 -1, 0, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data deleted file mode 100644 index 2955e9a23db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FV.data +++ /dev/null @@ -1,9 +0,0 @@ -#rate nper pmt pv type Result -0.005, 10, -200, -500, 1, 2581.4033740601 -0.01, 12, -1000, 12682.503013197 -0.009166666667, 35, -2000, , 1, 82846.246372418 -0.005, 12, -100, -1000, 1, 2301.4018303409 -0.004166666667, 60, -1000, 68006.082841536 -0.025, 16, -2000, 0, 1, 39729.460894166 -0.1, 12, -100, 0, 2, "#NUM!" -0.0, 12, -100, -100, 1300 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data deleted file mode 100644 index 0b5ad893e74..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/FVSCHEDULE.data +++ /dev/null @@ -1,4 +0,0 @@ -#principal schedule Result -1, {0.09|0.11|0.1}, 1.33089 -10, {0.09;0.11;0.1}, 13.3089 -10000, {0.05|0.05|0.035|0.035|0.035}, 12223.614571875 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data deleted file mode 100644 index 38195a427f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/INTRATE.data +++ /dev/null @@ -1,6 +0,0 @@ -#Settlement Maturity Investment Redemption Basis Result -"2008-02-15", "2008-05-15", 1000000, 1014420, 2, 0.05768 -"2005-04-01", "2010-03-31", 1000, 2125, 0.225 -"2008-02-15", "2008-05-15", 1000000, 1014420, "ABC", "#VALUE!" -"2008-02-15", "2008-05-15", 1000000, -1014420, 2, "#NUM!" -"Invalid Date", "2008-05-15", 1000000, 1014420, 2, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data deleted file mode 100644 index 9d5dab00d56..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IPMT.data +++ /dev/null @@ -1,9 +0,0 @@ -#rate per nper pv fv type Result -0.008333333333, 3, 3, 8000, -22.406893015021 -0.10, 3, 3, 8000, -292.44712990937 -0.004166666667, 1, 60, 50000, -208.33333335 -0.004166666667, 2, 60, 50000, -205.26988189617 -0.00875, 1, 8, 10000, 5000, 1, 0.00 -0.00875, 2, 8, 10000, 5000, 1, -70.968650395559 -0.005, 2, 8, 2500, 200, 6, "#NUM!" -0.005, 8, 2, 2500, 200, 1, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data deleted file mode 100644 index 0d4458ff699..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/IRR.data +++ /dev/null @@ -1,6 +0,0 @@ -#values guess Result -{-70000;12000;15000;18000;21000}, -0.021244848273410 -{-70000;12000;15000;18000;21000;26000}, 0.08663094803652 -{-70000;12000;15000;18000}, 0.10, -0.18213746414550 -{-100;20|24|28.80}, -0.13618951095869 -{-100;20|24|28.80|34.56|41.47}, 0.130575756371527 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data deleted file mode 100644 index eac8167d193..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/ISPMT.data +++ /dev/null @@ -1,5 +0,0 @@ -#rate per nper pv result -0.008333333333, 1, 36, 8000000, -64814.814812222 -0.10, 1, 3, 8000000, -533333.33333333 -0.004166666667, 1, 60, 50000, -204.8611111275 -0.004166666667, 2, 60, 50000, -201.388888905 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data deleted file mode 100644 index f91b030bba1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/MIRR.data +++ /dev/null @@ -1,6 +0,0 @@ -#values finance_rate reinvestment_rate Result -{-120000;39000|30000|21000|37000|46000}, 0.10, 0.12, 0.12609413036591 -{-120000;39000|30000|21000}, 0.10, 0.12, -0.048044655249981 -{-120000;39000|30000|21000|37000|46000}, 0.10, 0.14, 0.13475911082831 -{-100;12|14|11}, 5.5, 5, 0.74021752686287 -{-100;12|14|11|13|16}, 5.5, 5, 1.8579321744785 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data deleted file mode 100644 index df78c55343b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NOMINAL.data +++ /dev/null @@ -1,6 +0,0 @@ -#effect_rate npery result -0.053543, 4, 0.052500319868356 -0.10, 4, 0.09645475633778 -0.10, 2, 0.097617696340303 -0.025, 12, 0.024718035238113 --0.025, 12, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data deleted file mode 100644 index 205d0aabfe2..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPER.data +++ /dev/null @@ -1,10 +0,0 @@ -#rate pmt pv fv type result -0.01, -100, -1000, 10000, 1, 59.673865674295 -0.01, -100, -1000, 10000, 60.082122853762 -0.01, -100, -1000, -9.5785940398132 -0.003333333333, -1000, 50000, 54.78757726 -0.015, -1200, 9000, 5000, 1, 11.90373729 -0.015, -1200, 9000, 5000, 2, "#NUM!" -0.015, 0.0, 0.0, 5000, 1, "#NUM!" -0.0, 0.0, -500, 5000, 1, "#NUM!" -0.0, -50, -250, 150, 1, -2.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data deleted file mode 100644 index c927fa5427d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/NPV.data +++ /dev/null @@ -1,5 +0,0 @@ -#rate values result -0.10, -10000, 3000, 4200, 6800, 1188.4434123352 -0.08, 8000, 9200, 10000, 12000, 14500, 41922.061554932 -0.08, 8000, 9200, 10000, 12000, 14500, -9000, 36250.534912984 -0.05, 2000, 2400, 2900, 3500, 4100, 12678.677633095 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data deleted file mode 100644 index c36be488b0e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/PRICE.data +++ /dev/null @@ -1,10 +0,0 @@ -#Settlement Maturity Rate Yield Redemption Frequency Basis Result -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 0, 94.6343616213221 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 1, 94.6354492078772 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 2, 94.6365640300251 -"15-Feb-2008", "15-Nov-2017", 0.0575, 0.065, 100, 2, 3, 94.6351747967845 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, NULL, 110.8344835932160 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 1, 110.8345373958590 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 2, 110.8344835932160 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 2, 3, 110.8345285514390 -"01-Apr-2012", "31-Mar-2020", 0.12, 0.10, 100, 4, 3, 110.9217329631980 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data deleted file mode 100644 index 2dd8449ebd0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/RATE.data +++ /dev/null @@ -1,11 +0,0 @@ -#Periods Payment Present Value Future Value Type Guess Result -48, -200, 8000, 0.0077014724882014 -60, -6000, 120000, 0.0467819164224934 -60, -1000, 120000, -0.0204429522193565 -24, -250, 5000, 0.0151308439023434 -24, -250, 5000, NULL, 1, 0.0165501190667120 -208, -700, 8000, 0.0874999976840937 -10, -1000, 6500, 0.0871137556058636 -6, -1000, 100000, -126068, 0.0484721272835728 -6, 1000, 100000, -126068, 0.0302728738275435 -6, -1000, -100000, 126068, 0, 0.0302728738275437 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data deleted file mode 100644 index 36a8e23dd8a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Financial/XIRR.data +++ /dev/null @@ -1,4 +0,0 @@ -#values dates guess Result -{-10000;2750|4250|3250|2750|46000}, {"2008-01-01";"2008-03-01"|"2008-10-30"|"2009-02-15"|"2009-04-01"}, 0.10, 0.373362535 -{-100;20|40|25}, {"2010-01-01";"2010-04-01"|"2010-10-01"|"2011-02-01"}, -0.3024 -{-100;20|40|25|8|15}, {"2010-01-01";"2010-04-01"|"2010-10-01"|"2011-02-01"|"2011-03-01"|"2011-06-01"}, 0.2095 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data deleted file mode 100644 index f2722937d6f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/ERROR_TYPE.data +++ /dev/null @@ -1,14 +0,0 @@ - "#N/A" -NULL, "#N/A" --1, "#N/A" -1.25, "#N/A" -"", "#N/A" -"2.5", "#N/A" -TRUE, "#N/A" -"#NULL!", 1 -"#DIV/0!", 2 -"#VALUE!", 3 -"#REF!", 4 -"#NAME?", 5 -"#NUM!", 6 -"#N/A", 7 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data deleted file mode 100644 index 1daa126dad5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_BLANK.data +++ /dev/null @@ -1,16 +0,0 @@ - TRUE -NULL, TRUE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data deleted file mode 100644 index e6384d14f69..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERR.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data deleted file mode 100644 index 244807a12ad..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ERROR.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data deleted file mode 100644 index 8f985df4097..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_EVEN.data +++ /dev/null @@ -1,20 +0,0 @@ - "#NAME?" -NULL, "#NAME?" --1, FALSE -0, TRUE -9, FALSE -1.25, FALSE -1.5, FALSE -2.25, TRUE -2.5, TRUE -"", "#VALUE!" -"-1", FALSE -"2", TRUE -"-1.5", FALSE -"2.5", TRUE -"ABC", "#VALUE!" -"#VALUE!", "#VALUE!" -"#N/A", "#VALUE!" -"TRUE", "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data deleted file mode 100644 index d977ba7b3ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_LOGICAL.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, TRUE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data deleted file mode 100644 index be96e6bf2db..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NA.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data deleted file mode 100644 index 223053a256f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NONTEXT.data +++ /dev/null @@ -1,16 +0,0 @@ - TRUE -NULL, TRUE --1, TRUE -0, TRUE -9, TRUE -1.5, TRUE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", TRUE -"#N/A", TRUE -"TRUE", FALSE -TRUE, TRUE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data deleted file mode 100644 index 525d0fe7e2f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_NUMBER.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, TRUE -0, TRUE -9, TRUE -1.5, TRUE -"", FALSE -"-1", FALSE -"2", FALSE -"-1.5", FALSE -"ABC", FALSE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", FALSE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data deleted file mode 100644 index 0cf0741eafe..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_ODD.data +++ /dev/null @@ -1,20 +0,0 @@ - "#NAME?" -NULL, "#NAME?" --1, TRUE -0, FALSE -9, TRUE -1.25, TRUE -1.5, TRUE -2.25, FALSE -2.5, FALSE -"", "#VALUE!" -"-1", TRUE -"2", FALSE -"-1.5", TRUE -"2.5", FALSE -"ABC", "#VALUE!" -"#VALUE!", "#VALUE!" -"#N/A", "#VALUE!" -"TRUE", "#VALUE!" -TRUE, "#VALUE!" -FALSE, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data deleted file mode 100644 index 3f3abf1b63b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/IS_TEXT.data +++ /dev/null @@ -1,16 +0,0 @@ - FALSE -NULL, FALSE --1, FALSE -0, FALSE -9, FALSE -1.5, FALSE -"", TRUE -"-1", TRUE -"2", TRUE -"-1.5", TRUE -"ABC", TRUE -"#VALUE!", FALSE -"#N/A", FALSE -"TRUE", TRUE -TRUE, FALSE -FALSE, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data deleted file mode 100644 index 9fc130e0a51..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/N.data +++ /dev/null @@ -1,20 +0,0 @@ - 0 -NULL, 0 --1, -1 -1.25, 1.25 -"", 0 -"2.5", 0 -"TRUE", 0 -"ABCDE", 0 -TRUE, 1 -"#DIV/0!", "#DIV/0!" -"#NUM!", "#NUM!" -{}, 0 -{123}, 123 -{123|456}, 123 -{123|"A"}, 123 -{"A"|123}, 0 -{"A"|123;456|789}, 0 -{123|"A";456|789}, 123 -{123|456;"A"|789}, 123 -{123|456;789|"A"}, 123 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data deleted file mode 100644 index 52d168802b1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Functions/TYPE.data +++ /dev/null @@ -1,16 +0,0 @@ - 1 -NULL, 1 --1, 1 -1.25, 1 -"", 2 -"2.5", 2 -"TRUE", 2 -"ABCDE", 2 -TRUE, 4 -"#DIV/0!", 16 -"#NUM!", 16 -{}, 1 -{1}, 1 -{1;2;3}, 64 -{1|2|3;4|5|6;7|8|9}, 64 -{|;|}, 64 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data deleted file mode 100644 index 76870343e5d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/AND.data +++ /dev/null @@ -1,21 +0,0 @@ -"#VALUE!" // No arguments -NULL, TRUE // NULL -TRUE, NULL, TRUE // Boolean TRUE and NULL -FALSE, NULL, FALSE // Boolean FALSE and NULL -TRUE, TRUE, TRUE // Both TRUE Booleans -TRUE, FALSE, FALSE // Mixed Booleans -FALSE, TRUE, FALSE // Mixed Booleans -FALSE, FALSE, FALSE // Both FALSE Booleans -TRUE, TRUE, FALSE, FALSE // Multiple Mixed Booleans -TRUE, TRUE, TRUE, TRUE // Multiple TRUE Booleans -FALSE, FALSE, FALSE, FALSE, FALSE // Multiple FALSE Booleans --1, -2, TRUE -0, 0, FALSE -0, 1, FALSE -1, 1, TRUE -"1",1, "#VALUE!" -"TRUE", 1, TRUE // 'TRUE' String -"FALSE",TRUE, FALSE // 'FALSE' String -"ABCD", 1, "#VALUE!" // Non-numeric String --2, 1, TRUE --2, 0, FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data deleted file mode 100644 index 23017b5b396..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IF.data +++ /dev/null @@ -1,7 +0,0 @@ -0 -TRUE, 0 -FALSE, FALSE -TRUE, "ABC", "ABC" -FALSE, "ABC", FALSE -TRUE, "ABC", "XYZ", "ABC" -FALSE, "ABC", "XYZ", "XYZ" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data deleted file mode 100644 index 2095481f0c3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/IFERROR.data +++ /dev/null @@ -1,8 +0,0 @@ -, "Error", NULL -TRUE, "Error", TRUE -42, "Error", 42 -"", "Error", "" -"ABC", "Error", "ABC" -"#VALUE!", "Error", "Error" -"#NAME?", "Error", "Error" -"#N/A", "Error", "Error" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data deleted file mode 100644 index adc515d8252..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/NOT.data +++ /dev/null @@ -1,20 +0,0 @@ -TRUE -NULL, TRUE --1, FALSE -0, TRUE -1, FALSE -2, FALSE --1.5, FALSE -1.5, FALSE -"-1", "#VALUE!" -"0", "#VALUE!" -"1", "#VALUE!" -"2", "#VALUE!" -"-1.5", "#VALUE!" -"1.5", "#VALUE!" -"", "#VALUE!" -"ABC", "#VALUE!" -"FALSE",TRUE -"TRUE", FALSE -TRUE, FALSE -FALSE, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data deleted file mode 100644 index 738916ee25e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/Logical/OR.data +++ /dev/null @@ -1,20 +0,0 @@ -"#VALUE!" // No arguments -NULL, FALSE // NULL -TRUE, NULL, TRUE // Boolean TRUE and NULL -FALSE, NULL, FALSE // Boolean FALSE and NULL -TRUE, TRUE, TRUE // Both TRUE Booleans -TRUE, FALSE, TRUE // Mixed Booleans -FALSE, TRUE, TRUE // Mixed Booleans -FALSE, FALSE, FALSE // Both FALSE Booleans -TRUE, TRUE, FALSE, TRUE // Multiple Mixed Booleans -TRUE, TRUE, TRUE, TRUE // Multiple TRUE Booleans -FALSE, FALSE, FALSE, FALSE, FALSE // Multiple FALSE Booleans --1, -2, TRUE -0, 0, FALSE -0, 1, TRUE -1, 1, TRUE -"TRUE", 1, TRUE // 'TRUE' String -"FALSE",TRUE, TRUE // 'FALSE' String -"ABCD", 1, "#VALUE!" // Non-numeric String --2, 1, TRUE --2, 0, TRUE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data deleted file mode 100644 index c29fdc95ded..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/HLOOKUP.data +++ /dev/null @@ -1,9 +0,0 @@ -10251, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, FALSE, 16.8 -10251, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 3, FALSE, 6.0 -10248, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, FALSE, "#N/A" -10248, {"Order ID"|10247|10249|10250|10251|10252|10253;"Unit Price"|14.00|18.60|7.70|16.80|16.80|64.80;"Quantity"|12|9|10|6|20|40}, 2, TRUE, 14.0 -"Axles", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 2, TRUE, 4 -"Bearings", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 3, FALSE, 7 -"B", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 3, TRUE, 5 -"Bolts", {"Axles"|"Bearings"|"Bolts";4|4|9;5|7|10;6|8|11}, 4, 11 -3, {1|2|3;"a"|"b"|"c";"d"|"e"|"f"}, 2, TRUE, "c" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data deleted file mode 100644 index 8fefc6cc0b3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/LookupRef/VLOOKUP.data +++ /dev/null @@ -1,5 +0,0 @@ -1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, FALSE, 2.17 -1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 3, TRUE, 100 -.7, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 3, FALSE, "#N/A" -0.1, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, TRUE, "#N/A" -2, {"Density"|"Viscosity"|"Temperature";0.457|3.55|500;0.525|3.25|400;0.616|2.93|300;0.675|2.75|250;0.746|2.57|200;0.835|2.38|150;0.946|2.17|100;1.09|1.95|50;1.29|1.71|0}, 2, TRUE, 1.71 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data deleted file mode 100644 index 47dade23884..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ATAN2.data +++ /dev/null @@ -1,17 +0,0 @@ -#x_num y_num Result -0, 0, "#DIV/0!" -1, 1, 0.785398163397 --1, -1, -2.356194490192 --1, 1, 2.356194490192 -1, -1, -0.785398163397 -0.5, 1, 1.107148717794 --0.5, 2, 1.815774989922 -1, 0.8, 0.674740942224 -0.8, -0.6, -0.643501108793 -1, -9, -1.460139105621 -0.2, 0, 0.0 -0.1, 0.2, 1.107148717794 -0, 0.2, 1.570796326795 -"A", 0.2, "#VALUE!" -TRUE, 1, 0.785398163397 -FALSE, -2.5, -1.570796326795 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data deleted file mode 100644 index ed46ca8bde1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/CEILING.data +++ /dev/null @@ -1,21 +0,0 @@ -#number significance result -2.5, 1, 3.0 --2.5, -2, -4.0 -1.5, 0.1, 1.5 -0.234, 0.01, 0.24 --2.341, -0.1, -2.4 -8, 0, 0.0 -8, 1.5, 9.0 -8, -1.5, "#NUM!" --8, 1.5, "#NUM!" --8, -1.5, -9.0 -8.26, 0.05, 8.3 -2.341, 0.05, 2.35 -123.456, "#VALUE!" -"PHPExcel", "#VALUE!" -210.67, 1, 211.0 -210.67, 0.05, 210.70 -210.63, 0.05, 210.65 -2.98, 2, 4.0 --2.98, 2, "#NUM!" --4.5, -1, -5.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data deleted file mode 100644 index 568ad14da79..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/COMBIN.data +++ /dev/null @@ -1,25 +0,0 @@ -#NumObjs NumInSet Result -7, 3, 35 -8, 2, 28 -8, 3, 56 -8, 4, 70 -100, 3, 161700 --7, -10, "#NUM!" --7, 10, "#NUM!" -7, -10, "#NUM!" -2, 3, "#NUM!" -2, 2, 1 -2, 1, 2 -2, 0, 1 -2.5, 2, 1 -"ABCD", "EFGH", "#VALUE!" -10, 5, 252 -10, 3, 120 -21, 5, 20349 -6, 1, 6 -6, 2, 15 -6, 3, 20 -6, 4, 15 -6, 5, 6 -6, 6, 1 -6, 7, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data deleted file mode 100644 index 604533c23d0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/EVEN.data +++ /dev/null @@ -1,17 +0,0 @@ -, 0 -5.4, 6 --5.4, -6 -1.5, 2 -0.1, 2 -3, 4 -2, 2 --2, -2 --1, -2 -"ABC", "#VALUE!" -TRUE, 2 -FALSE, 0 -0, 0 -210.61, 212 -2.98, 4 --2.98, -4 -6, 6 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data deleted file mode 100644 index 6340f6c1b9a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACT.data +++ /dev/null @@ -1,10 +0,0 @@ -5, 120 -1.9, 1 -0, 1 --4, "#NUM!" -1, 1 -3, 6 -6, 720 -10, 3628800 -3.2, 6 -"ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data deleted file mode 100644 index 81ee2e94a71..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FACTDOUBLE.data +++ /dev/null @@ -1,8 +0,0 @@ -0, 1 -6, 48 -7, 105 -5, 15 -8, 384 -13, 135135 --1, "#NUM!" -"ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data deleted file mode 100644 index 29785f72341..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/FLOOR.data +++ /dev/null @@ -1,11 +0,0 @@ -2.5, 1, 2 --2.5, -2, -2 --2.5, 2, "#NUM!" -2.5, -2, "#NUM!" -123.456,0, "#DIV/0!" -1.5, 0.1, 1.5 -0.234, 0.01, 0.23 -123.456, "#VALUE!" -"ABC", "#VALUE!" -17, 3, 15 -19, 4, 16 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data deleted file mode 100644 index ca673481efa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/GCD.data +++ /dev/null @@ -1,20 +0,0 @@ -5, 2, 1 -24, 36, 12 -7, 1, 1 -5, 0, 5 -30, 15, 10, 5 -42, 56, 140, 14 -24, 28, 40, 4 -27, 45, 54, 9 -84, 126, 196, 14 -3, 5, 7, 1 -3, 5, 0, 1 -3, 5, -7, "#NUM!" -3, 6, 12, 3 -3, 6, "12", 3 -3, 6, "ABC", "#VALUE!" -3, 3 -15, 10, 25, 5 -0, 8, 12, 4 -7, 2, 1 -0, 0, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data deleted file mode 100644 index b5d8cd5c89f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/INT.data +++ /dev/null @@ -1,19 +0,0 @@ -, 0 -5.4, 5 --5.4, -6 --3.2, -4 -1.5, 1 -0.1, 0 --0.1, -1 -3, 3 -2, 2 --2.01, -3 --2, -2 --1, -1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 0 -0, 0 -"-3.5", -4 -8.9, 8 --8.9, -9 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data deleted file mode 100644 index 8f402684110..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LCM.data +++ /dev/null @@ -1,12 +0,0 @@ -5, 2, 10 -24, 36, 72 -3, 7, 12, 84 -24.9, 36.9, 72 -6, 22, 121, 726 -6, "ABC", "#VALUE!" -24, -12, "#NUM!" -3, 0, 0 -1, 5, 5 -15, 10, 25, 150 -1, 8, 12, 24 -7, 2, 14 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data deleted file mode 100644 index 219ac59e095..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/LOG.data +++ /dev/null @@ -1,70 +0,0 @@ -#number base result -"ABC", "#VALUE!" -"123ABC", "#VALUE!" -1.2345, 0.0914910942679511 --1.5, -0.75, "#NUM!" -0, -0.75, "#NUM!" -3.75, -0.75, "#NUM!" --1.5, 0, "#NUM!" -0, 0, "#NUM!" -3.75, 0, "#NUM!" --0.75, 0.75, "#NUM!" -0, 0.75, "#NUM!" -0.75, 0.75, 1.0 -1.5, 0.75, -1.4094208396532100 -2.25, 0.75, -2.8188416793064200 -3, 0.75, -3.8188416793064200 -3.75, 0.75, -4.5945019399978900 -4.5, 0.75, -5.2282625189596300 --0.75, 1.5, "#NUM!" -0, 1.5, "#NUM!" -0.75, 1.5, -0.7095112913514550 -1.5, 1.5, 1.0 -2.25, 1.5, 2.0 -3, 1.5, 2.7095112913514500 -3.75, 1.5, 3.2598510045646600 -4.5, 1.5, 3.7095112913514500 --0.75, 2.25, "#NUM!" -0, 2.25, "#NUM!" -0.75, 2.25, -0.3547556456757270 -1.5, 2.25, 0.5 -2.25, 2.25, 1.0 -3, 2.25, 1.3547556456757300 -3.75, 2.25, 1.6299255022823300 -4.5, 2.25, 1.8547556456757300 --0.75, 3, "#NUM!" -0, 3, "#NUM!" -0.75, 3, -0.2618595071429150 -1.5, 3, 0.3690702464285430 -2.25, 3, 0.7381404928570850 -3, 3, 1.0 -3.75, 3, 1.2031140135750100 -4.5, 3, 1.3690702464285400 --0.75, 3.75, "#NUM!" -0, 3.75, "#NUM!" -0.75, 3.75, -0.2176514479827300 -1.5, 3.75, 0.3067624865675560 -2.25, 3.75, 0.6135249731351110 -3, 3.75, 0.8311764211178410 -3.75, 3.75, 1.0 -4.5, 3.75, 1.1379389076854000 --0.75, 4.5, "#NUM!" -0, 4.5, "#NUM!" -0.75, 4.5, -0.1912681309275550 -1.5, 4.5, 0.2695772896908150 -2.25, 4.5, 0.5391545793816300 -3, 4.5, 0.7304227103091850 -3.75, 4.5, 0.8787817986064220 -4.5, 4.5, 1.0 -64, 2, 6 -100, 2 -4, 0.5, -2 -500, 2.698970004336 -10, 1 -8, 2, 3 -86, 2.7182818, 4.454347342888 -20, 1.301029995664 -20, 10, 1.301029995664 -20, 25, 0.930676558073 -25, 5.1, 1.975690971574 -200, 3, 4.822736302150 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data deleted file mode 100644 index 970bec5383c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MDETERM.data +++ /dev/null @@ -1,14 +0,0 @@ -{1|2|3;4|5|6;7|8|9}, 6.661338147750940E-16 -{1.1|2.2|3.3;4.4|5.5|6.6;7.7|8.8|9.9}, 1.61204383175573E-15 -{10|20|30;40|50|60;70|80|90}, -4.26325641456060E-12 -{8|1|6;3|5|7;4|9|2}, -3.6E+02 -{5|2;7|1}, -9 -{6|4|2;3|5|3;2|3|4}, 40 -{0.2|1;0.35|10.8}, 1.81 -{0.2|1|-0.9;0.35|10.8|4;-3.15|5|}, "#VALUE!" -{1|2;3|4}, -2 -{1|2|1;3|4|2;1|1|2}, -3 -{1|3|8|5;1|3|6|1;1|1|1|0;7|3|10|2}, 88 -{3|6|1;1|1|0;3|10|2}, 1 -{3|6;1|1}, -3 -{1|3|8|5;1|3|6|1}, "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data deleted file mode 100644 index 8c9a962fa6d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MINVERSE.data +++ /dev/null @@ -1,15 +0,0 @@ -{1|2|3;4|5|6;7|8|9}, {-4.50359962737050E+15|9.00719925474099E+15|-4.50359962737050E+15;9.00719925474100E+15|-1.80143985094820E+16|9.00719925474099E+15;-4.50359962737050E+15|9.00719925474099E+15|-4.50359962737050E+15} -{10|20|30;40|50|60;70|80|90}, {7.03687441776639E+13|-1.40737488355328E+14|7.03687441776640E+13;-1.40737488355328E+14|2.81474976710656E+14|-1.40737488355328E+14;7.03687441776641E+13|-1.40737488355328E+14|7.03687441776640E+13} -{8|1|6;3|5|7;4|9|2}, {1.47222222222222E-01|-1.44444444444444E-01|6.38888888888889E-02;-6.11111111111111E-02|2.22222222222222E-02|1.05555555555556E-01;-1.94444444444444E-02|1.88888888888889E-01|-1.02777777777778E-01} -{4|-1;2|0}, {0|0.5;-1|2} -{1|2|1;3|4|-1;0|2|0}, {0.25|0.25|-0.75;0|0|0.5;0.75|-0.25|-0.25} -{1|4|1|1;1|4|0|1;2|3|1|2;3|2|6|4}, {3.2|-4.8|2.8|-1;0.2|0.2|0.2|0;1|-1|0|0;-4|5|-2|1} -{0.2|1;0.35|10.8}, {5.96685082872928|-0.55248618784530;-0.19337016574586|0.11049723756906} -{0.2|1|-0.9;0.35|10.8|4;-3.15|5}, "#VALUE!" -{1|2;3|4}, {-2|1;1.5|-0.5} -{1|2|1;3|4|2;1|1|2}, {-2|1|0;1.33333333333333|-0.33333333333333|-0.33333333333333;0.33333333333333|-0.33333333333333|0.66666666666667} -{2|3;4|5}, {-2.5|1.5;2|-1} -{5|8;7|9}, {-0.818181818181818|0.727272727272727;0.636363636363636|-0.454545454545455} -{45|78;17|50}, {0.054112554112554|-0.084415584415584;-0.018398268398268|0.048701298701299} -{2|2;2|1}, {-0.5|1.0;1|-1} -{1|4|6;7|4|10;15|16|20}, {-0.2941176470588230|0.0588235294117647|0.0588235294117647;0.0367647058823529|-0.2573529411764710|0.1176470588235290;0.1911764705882350|0.1617647058823530|-0.0882352941176471} \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data deleted file mode 100644 index 86c9bfdb416..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MMULT.data +++ /dev/null @@ -1,12 +0,0 @@ -{1|2;3|4}, {1|2;3|4}, {7|10;15|22} -{1|2|3;4|5|6;7|8|9}, {1|2|3;4|5|6;7|8|9}, {30|36|42;66|81|96;102|126|150} -{1|2;3|4}, 2, "#VALUE!" // Mismatched dimensions -{1|2;3|4}, {2}, "#VALUE!" // Mismatched dimensions -{1.2;2.4}, {3.6|4.5}, {14.43|14.43;14.43|14.43} -2, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{2}, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{1|2;3|4}, {2|4}, "#VALUE!" -{1|2;3|4}, {2;4}, {{10};{22}} -{2|4}, {1|2;3|4}, {14|20} -{2;4}, {1|2;3|4}, "#VALUE!" // Mismatched dimensions -{1|2;3|4;5|6}, {1|2|3;4|5|6}, {9|12|15;19|26|33;29|40|51} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data deleted file mode 100644 index 7e0aee6f460..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MOD.data +++ /dev/null @@ -1,9 +0,0 @@ -19, 17, 2 -19, -13, -7 -34, 17, 0 -34, 0, "#DIV/0!" -3, 2, 1 --3, 2, 1 -3, -2, -1 --3, -2, -1 -2.5, 1.3, 1.2 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data deleted file mode 100644 index fc68ed7bc48..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MROUND.data +++ /dev/null @@ -1,11 +0,0 @@ -10, 3, 9 --10, -3, -9 -1.3, 0.2, 1.4 -5, 0, 0 -3.14159, 0.002, 3.142 --3.14159, -.02, -3.14 -31415.92654, 10, 31420 -31415.92654, 1, 31416 -5, -2, "#NUM!" -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data deleted file mode 100644 index c943f20a24b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/MULTINOMIAL.data +++ /dev/null @@ -1,2 +0,0 @@ -2, 3, 4, 1260 -3, 1, 2, 5, 27720 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data deleted file mode 100644 index 54898cc1cec..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ODD.data +++ /dev/null @@ -1,13 +0,0 @@ -, 1 -5.4, 7 --5.4, -7 -1.5, 3 -0.1, 1 -3, 3 -2, 3 --2, -3 --1, -1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 1 -0, 1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data deleted file mode 100644 index f00915e7282..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/POWER.data +++ /dev/null @@ -1,81 +0,0 @@ --1.5, -1.5, "#NUM!" --0.75, -1.5, "#NUM!" -0, -1.5, "#DIV/0!" -0.75, -1.5, 1.539600717839 -1.5, -1.5, 0.54433105395182 -2.25, -1.5, 0.2962962962963 -3, -1.5, 0.19245008972988 -3.75, -1.5, 0.13770607453182 -4.5, -1.5, 0.10475656017579 --1.5, -0.75, "#NUM!" --0.75, -0.75, "#NUM!" -0, -0.75, "#DIV/0!" -0.75, -0.75, 1.2408064788028 -1.5, -0.75, 0.73778794646688 -2.25, -0.75, 0.54433105395182 -3, -0.75, 0.43869133765083 -3.75, -0.75, 0.37108769116183 -4.5, -0.75, 0.32366118113822 --1.5, 0, 1 --0.75, 0, 1 -0, 0, "#NUM!" -0.75, 0, 1 -1.5, 0, 1 -2.25, 0, 1 -3, 0, 1 -3.75, 0, 1 -4.5, 0, 1 --1.5, 0.75, "#NUM!" --0.75, 0.75, "#NUM!" -0, 0.75, 0 -0.75, 0.75, 0.80592744886766 -1.5, 0.75, 1.35540300541477 -2.25, 0.75, 1.83711730708738 -3, 0.75, 2.27950705695478 -3.75, 0.75, 2.69478083972313 -4.5, 0.75, 3.08965071586068 --1.5, 1.5, "#NUM!" --0.75, 1.5, "#NUM!" -0, 1.5, 0 -0.75, 1.5, 0.64951905283833 -1.5, 1.5, 1.83711730708738 -2.25, 1.5, 3.375 -3, 1.5, 5.19615242270663 -3.75, 1.5, 7.26184377413891 -4.5, 1.5, 9.54594154601839 --1.5, 2.25, "#NUM!" --0.75, 2.25, "#NUM!" -0, 2.25, 0 -0.75, 2.25, 0.52346523324493 -1.5, 2.25, 2.49003431932572 -2.25, 2.25, 6.20027091141992 -3, 2.25, 11.8446661165724 -3.75, 2.25, 19.5690774636122 -4.5, 2.25, 29.4936251312199 --1.5, 3, -3.375 --0.75, 3, -0.421875 -0, 3, 0 -0.75, 3, 0.421875 -1.5, 3, 3.375 -2.25, 3, 11.390625 -3, 3, 27 -3.75, 3, 52.734375 -4.5, 3, 91.125 --1.5, 3.75, "#NUM!" --0.75, 3.75, "#NUM!" -0, 3.75, 0 -0.75, 3.75, 0.34000064249104 -1.5, 3.75, 4.57448514327484 -2.25, 3.75, 20.9259143260422 -3, 3.75, 61.546690537779 -3.75, 3.75, 142.107583344775 -4.5, 3.75, 281.544421482804 --1.5, 4.5, "#NUM!" --0.75, 4.5, "#NUM!" -0, 4.5, 0 -0.75, 4.5, 0.27401585041617 -1.5, 4.5, 6.20027091141992 -2.25, 4.5, 38.443359375 -3, 4.5, 140.296115413079 -3.75, 4.5, 382.948792776857 -4.5, 4.5, 869.873923380926 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data deleted file mode 100644 index 9ff8b20c471..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/PRODUCT.data +++ /dev/null @@ -1,7 +0,0 @@ -5, 15, 30, 2250 -5, 15, 30, 2, 4500 -3, 6, 2, 8, 5, 1440 -3, 4, 12 -3, 4, 4.5, 54 -3, 4, 4.5, -6.78, -366.12 -3, 4, 4.5, -6.78, -2, 732.24 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data deleted file mode 100644 index 16c3aa95821..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/QUOTIENT.data +++ /dev/null @@ -1,6 +0,0 @@ -5, 2, 2 -4.5, 3.1, 1 --10, 3, -3 -10, 2.2, 4 -5.5, 2.667, 2 --7, 2, -4 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data deleted file mode 100644 index 69085897b81..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROMAN.data +++ /dev/null @@ -1,5 +0,0 @@ -49, "XLIX" -50, "L" -2012, "MMXII" -999, "CMXCIX" -499, "CDXCIX" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data deleted file mode 100644 index 7bb42c0c1ab..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDDOWN.data +++ /dev/null @@ -1,14 +0,0 @@ -662.79, 0, 662 -662.79, 1, 662.7 -54.1, -1, 50 -55.1, -1, 50 --23.67, 1, -23.6 -3.2, 0, 3 -3.2, 0.01, 3 -76.9, 0, 76 -3.14159, 3, 3.141 --3.14159, 1, -3.1 -31415.92654, -2, 31400 -31415.92654, -1, 31410 -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data deleted file mode 100644 index ba81e3db1af..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/ROUNDUP.data +++ /dev/null @@ -1,14 +0,0 @@ -662.79, 0, 663 -662.79, 1, 662.8 -54.1, -1, 60 -55.1, -1, 60 --23.62, 1, -23.7 -3.2, 0, 4 -3.2, 0.01, 4 -76.9, 0, 77 -3.14159, 3, 3.142 --3.14159, 1, -3.2 -31415.92654, -2, 31500 -31415.92654, -1, 31420 -"ABC", 1, "#VALUE!" -1.234, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data deleted file mode 100644 index eb47f6843f3..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SERIESSUM.data +++ /dev/null @@ -1,2 +0,0 @@ -5, 1, 1, {1|1|1|1|1}, 3905 -2, 1, 2, {1|2|3|4|5}, 3186 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data deleted file mode 100644 index 8494da9e001..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SIGN.data +++ /dev/null @@ -1,13 +0,0 @@ --1.5, -1 --1, -1 --0.5, -1 -0, 0 -0.5, 1 -1, 1 -1.5, 1 -2, 1 -2.5, 1 -"ABC", "#VALUE!" -TRUE, 1 -FALSE, 0 -"-3.5", -1 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data deleted file mode 100644 index fc1ea52533a..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SQRTPI.data +++ /dev/null @@ -1,15 +0,0 @@ -"ABC", "#VALUE!" --1.5, "#NUM!" --1, "#NUM!" --0.5, "#NUM!" -0, 0.000000000000000000 -0.5, 1.253314137315500000 -1, 1.772453850905520000 -1.5, 2.170803763674800000 -2, 2.506628274631000000 -2.5, 2.802495608198960000 -3, 3.069980123839470000 -3.5, 3.315957521978270000 -4, 3.544907701811030000 -4.5, 3.759942411946500000 -5, 3.963327297606010000 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data deleted file mode 100644 index 557c5c05ef8..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/SUMSQ.data +++ /dev/null @@ -1,7 +0,0 @@ -3, 4, 25 -5, 2, 1, 3, 39 -5, 2, 1, 6, 66 -1, 3, 10 -1, 3, 2, 4, 30 -3, 5, 7, 83 -1, 2, 3, 14 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data deleted file mode 100644 index 8c85bddc50f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/MathTrig/TRUNC.data +++ /dev/null @@ -1,19 +0,0 @@ -3.14159, 2, 3.14 -3.14159, 3, 3.141 --3.14159, 2, -3.14 --3.14159, 3, -3.141 -31415.92654, 10, 31415.92654 --31415.92654, 10, -31415.92654 -31415.92654, 2, 31415.92 -31415.92654, -2, 31400 -31415.92654, -10, 0 --31415.92654, -10, 0 -12345.6789, -3, 12000 -12345.6789, -2, 12300 -12345.6789, -1, 12340 -12345.6789, 0, 12345 -12345.6789, 1, 12345.6 -12345.6789, 2, 12345.67 -12345.6789, 3, 12345.678 -"ABC", 2, "#VALUE!" -31415.92654, "ABC", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data deleted file mode 100644 index f4cbee5dbaa..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CHAR.data +++ /dev/null @@ -1,5 +0,0 @@ -"ABC", "#VALUE!" --5, "#VALUE!" -65, "A" -123, "{" -126, "~" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data deleted file mode 100644 index 21f0c0d13c4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CLEAN.data +++ /dev/null @@ -1,5 +0,0 @@ -"HELLO ", "HELLO " -" HELLO", "HELLO" -"HELLO WORLD", "HELLO WORLD" -TRUE, "TRUE" -NULL, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data deleted file mode 100644 index d251fb6eb4e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CODE.data +++ /dev/null @@ -1,12 +0,0 @@ -, "#VALUE!" -"", "#VALUE!" -"ABC", 65 -123, 49 -TRUE, 84 -"DEF", 68 -"PHPExcel", 80 -1.5, 49 -"Mark Baker", 77 -"mark baker", 109 -"£125.00", 163 -"Бензин", 1234 \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data deleted file mode 100644 index 7b8984624e5..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/CONCATENATE.data +++ /dev/null @@ -1,3 +0,0 @@ -"ABCDE", "FGHIJ", "ABCDEFGHIJ" -1, 2, 3, "123" -"Boolean", "-", TRUE, "Boolean-TRUE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data deleted file mode 100644 index aee1b006088..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/DOLLAR.data +++ /dev/null @@ -1,6 +0,0 @@ -123.456, 2, '"$123.46"' -123.321, 2, '"$123.32"' -1234567, -3, '"$1,235,000"' -1234567, -5, '"$1,200,000"' -"ABC", 2, "#NUM!" -123.456, "ABC", "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data deleted file mode 100644 index 411150da480..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIND.data +++ /dev/null @@ -1,13 +0,0 @@ -"E", "QWERTYUIOP", 3 -"D", "ABCDEFGHI", 4 -"E", TRUE, 4 -"E", FALSE, 5 -"A", "Mark Baker", "#VALUE!" -"A", "MARK BAKER", 2 -"a", "Mark Baker", 2, 2 -"k", "Mark Baker", 2, 4 -"k", "Mark Baker", 5, 8 -"a", "Mark Baker", 3, 7 -"BITE", "BIT", "#VALUE!" -"", "Mark Baker", 1 -"", "Mark Baker", 8, 8 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data deleted file mode 100644 index cd7d57bb593..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/FIXED.data +++ /dev/null @@ -1,5 +0,0 @@ -123456.789, 2, FALSE, '"123,456.79"' -123456.789, 1, TRUE, '"123456.8"' -123456.789, 2, TRUE, '"123456.79"' -"ABC", 2, NULL, "#NUM!" -123.456, "ABC", NULL, "#NUM!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data deleted file mode 100644 index e76e009cc9e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEFT.data +++ /dev/null @@ -1,6 +0,0 @@ -, 1, "" -"", 1, "" -"QWERTYUIOP", -1, "#VALUE!" -"ABCDEFGHI", 3, "ABC" -TRUE, 2, "TR" -FALSE, 2, "FA" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data deleted file mode 100644 index 09676eae737..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LEN.data +++ /dev/null @@ -1,6 +0,0 @@ -, 0 -"", 0 -"AbCdEfGhI", 9 -"MARK BAKER", 10 -TRUE, 4 -FALSE, 5 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data deleted file mode 100644 index 04148f0bd5e..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/LOWER.data +++ /dev/null @@ -1,4 +0,0 @@ -"AbCdEfGhI", "abcdefghi" -"MARK BAKER", "mark baker" -TRUE, "true" -FALSE, "false" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data deleted file mode 100644 index 5d9b503c896..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/MID.data +++ /dev/null @@ -1,9 +0,0 @@ -, 1, 1, "" -"", 1, 1, "" -"QWERTYUIOP", -1, 1, "#VALUE!" -"QWERTYUIOP", 5, -1, "#VALUE!" -"QWERTYUIOP", 5, "" -"QWERTYUIOP", 8, 20, "IOP" -"ABCDEFGHI", 4, 3, "DEF" -TRUE, 2, 1, "R" -FALSE, 2, 2, "AL" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data deleted file mode 100644 index ca142494589..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/PROPER.data +++ /dev/null @@ -1,3 +0,0 @@ -"MARK BAKER", "Mark Baker" -TRUE, "True" -FALSE, "False" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data deleted file mode 100644 index 7c8f414bac1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/REPLACE.data +++ /dev/null @@ -1,4 +0,0 @@ -"QWERTYUIOP", 3, 3, "DFG", "QWDFGYUIOP" -"QWERTYUIOP", 5, 3, "DFG", "QWERDFGIOP" -"QWERTYUIOP", 3, 0, "DFG", "QWDFGERTYUIOP" -"QWERTYUIOP", 5, 0, "DFG", "QWERDFGTYUIOP" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data deleted file mode 100644 index 02bf333219c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/RIGHT.data +++ /dev/null @@ -1,6 +0,0 @@ -, 1, "" -"", 1, "" -"QWERTYUIOP", -1, "#VALUE!" -"ABCDEFGHI", 3, "GHI" -TRUE, 2, "UE" -FALSE, 2, "SE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data deleted file mode 100644 index 9925e699167..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SEARCH.data +++ /dev/null @@ -1,11 +0,0 @@ -"E", "QWERTYUIOP", 3 -"D", "ABCDEFGHI", 4 -"E", TRUE, 4 -"E", FALSE, 5 -"A", "Mark Baker", 2 -"C", "Mark Baker", "#VALUE!" -"A", "Mark Baker", 3, 7 -"K", "Mark Baker", 4 -"K", "Mark Baker", 5, 8 -"A", "Mark Baker", 2, 2 -"BITE", "BIT", "#VALUE!" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data deleted file mode 100644 index be15c94103c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/SUBSTITUTE.data +++ /dev/null @@ -1,4 +0,0 @@ -"QWERTYUIOP", "ERT", "DFG", "QWDFGYUIOP" -"Mark Baker", "a", "x", "Mxrk Bxker" -"Mark Baker", "a", "x", 1, "Mxrk Baker" -"Mark Baker", "x", "a", 1, "Mark Baker" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data deleted file mode 100644 index 87f67e99d5f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/T.data +++ /dev/null @@ -1,5 +0,0 @@ -123456.789, NULL -"123456.789", "123456.789" -"Mark Baker", "Mark Baker" -NULL, NULL -TRUE, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data deleted file mode 100644 index da18defa35f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TEXT.data +++ /dev/null @@ -1,13 +0,0 @@ -123.456, '"$#,##0.00"', "$123.46" --123.456, '"$#,##0.00"', "$-123.46" -123.456, '"#,##0.00"', "123.46" -123.456, '"#,##0"', "123" -123.456, "00000", "00123" -123456.789, '"$#,##0.00"', '"$123,456.79"' -123456.789, '"#,##0.00"', '"123,456.79"' -123456.789, "0.00E+00", "1.23E05" --123456.789, "0.00E+00", "-1.23E05" -0.000012345, "0.00E+00", "1.23E-05" -"19-Dec-1960", "yyyy-mm-dd", "1960-12-19" -"1-Jan-2012", "yyyy-mm-dd", "2012-01-01" -1.75, "# ?/?", "1 3/4" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data deleted file mode 100644 index ea800963ce9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/TRIM.data +++ /dev/null @@ -1,7 +0,0 @@ -"HELLO ", "HELLO" -" HELLO", "HELLO" -" HELLO ", "HELLO" -" HELLO", " HELLO" -"HELLO WORLD", "HELLO WORLD" -TRUE, "TRUE" -NULL, NULL diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data deleted file mode 100644 index 8ebf1d12983..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/UPPER.data +++ /dev/null @@ -1,4 +0,0 @@ -"AbCdEfGhI", "ABCDEFGHI" -"mark baker", "MARK BAKER" -TRUE, "TRUE" -FALSE, "FALSE" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data deleted file mode 100644 index 505c2915b97..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Calculation/TextData/VALUE.data +++ /dev/null @@ -1,10 +0,0 @@ -"1000", "1000" -"1 000", "1000" -"$1 000", "1000" -"£1 000", "#VALUE!" -"1.1", "1.1" -"1 000.1", "1000.1" -"13 Monkeys", "#VALUE!" -"1-Jan-2014", "41640" -"12:34:56", "0.524259259259259" -"2:46 AM", "0.11527777777778" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data deleted file mode 100644 index de04cbf792f..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CalculationBinaryComparisonOperation.data +++ /dev/null @@ -1,53 +0,0 @@ -# formula, expectedResultExcel, expectedResultOpenOffice -'=TRUE', TRUE, TRUE -'=1 + 2.5', 3.5, 3.5 -'=2.5 + 1', 3.5, 3.5 -'=1 - 2.5', -1.5, -1.5 -'=2.5 - 1', 1.5, 1.5 -'=3 > 1', TRUE, TRUE -'=3 > 3', FALSE, FALSE -'=1 > 3', FALSE, FALSE -'=3 < 1', FALSE, FALSE -'=3 < 3', FALSE, FALSE -'=1 < 3', TRUE, TRUE -'=3 = 1', FALSE, FALSE -'=3 = 3', TRUE, TRUE -'=1 = 1.0', TRUE, TRUE -'=3 >= 1', TRUE, TRUE -'=3 >= 3', TRUE, TRUE -'=1 >= 3', FALSE, FALSE -'=3 <= 1', FALSE, FALSE -'=3 <= 3', TRUE, TRUE -'=1 <= 3', TRUE, TRUE -'=3 <> 1', TRUE, TRUE -'=3 <> 3', FALSE, FALSE -'=1 <> 1.0', FALSE, FALSE -'="a" > "a"', FALSE, FALSE -'="A" > "A"', FALSE, FALSE -'="A" > "a"', FALSE, TRUE -'="a" > "A"', FALSE, FALSE -'="a" < "a"', FALSE, FALSE -'="A" < "A"', FALSE, FALSE -'="A" < "a"', FALSE, FALSE -'="a" < "A"', FALSE, TRUE -'="a" = "a"', TRUE, TRUE -'="A" = "A"', TRUE, TRUE -'="A" = "a"', TRUE, FALSE -'="a" = "A"', TRUE, FALSE -'="a" <= "a"', TRUE, TRUE -'="A" <= "A"', TRUE, TRUE -'="A" <= "a"', TRUE, FALSE -'="a" <= "A"', TRUE, TRUE -'="a" >= "a"', TRUE, TRUE -'="A" >= "A"', TRUE, TRUE -'="A" >= "a"', TRUE, TRUE -'="a" >= "A"', TRUE, FALSE -'="a" <> "a"', FALSE, FALSE -'="A" <> "A"', FALSE, FALSE -'="A" <> "a"', FALSE, TRUE -'="a" <> "A"', FALSE, TRUE -'="A" > "b"', FALSE, TRUE -'="a" > "b"', FALSE, FALSE -'="b" > "a"', TRUE, TRUE -'="b" > "A"', TRUE, FALSE -'="a2" > "a10"', TRUE, TRUE // Test natural sorting is not used diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data deleted file mode 100644 index 446ded6cdb4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Cell/DefaultValueBinder.data +++ /dev/null @@ -1,19 +0,0 @@ -NULL, "null" -, "null" -"#NULL!", "e" -FALSE, "b" -TRUE, "b" -"FALSE", "s" -"TRUE", "s" -"", "s" -"ABC", "s" -"123", "n" -123, "n" -0.123, "n" -"-123", "n" -"1.23E4", "n" -"-1.23E4", "n" -"1.23E-4", "n" -"000123", "s" -"=123", "f" -"#DIV/0!", "e" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data deleted file mode 100644 index ad642947d07..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteCoordinate.data +++ /dev/null @@ -1,12 +0,0 @@ -"A1", "$A$1" -"A12", "$A$12" -"J1", "$J$1" -"J20", "$J$20" -"AI1", "$AI$1" -"AI2012", "$AI$2012" -"'Worksheet1'!AI256", "'Worksheet1'!$AI$256" -"Worksheet1!AI256", "Worksheet1!$AI$256" -"'Data Worksheet'!AI256", "'Data Worksheet'!$AI$256" -"'Worksheet1'!$AI256", "'Worksheet1'!$AI$256" -"'Worksheet1'!AI$256", "'Worksheet1'!$AI$256" -"'Worksheet1'!$AI$256", "'Worksheet1'!$AI$256" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data deleted file mode 100644 index 8aa314a2b50..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellAbsoluteReference.data +++ /dev/null @@ -1,16 +0,0 @@ -"A1", "$A$1" -"A12", "$A$12" -"J1", "$J$1" -"J20", "$J$20" -"AI1", "$AI$1" -"AI2012", "$AI$2012" -"'Worksheet1'!AI256", "'Worksheet1'!$AI$256" -"Worksheet1!AI256", "Worksheet1!$AI$256" -"'Data Worksheet'!AI256", "'Data Worksheet'!$AI$256" -"AI", "$AI" -2012, "$2012" -"Worksheet1!AI", "Worksheet1!$AI" -"Worksheet1!256", "Worksheet1!$256" -"'Worksheet1'!$AI256", "'Worksheet1'!$AI$256" -"'Worksheet1'!AI$256", "'Worksheet1'!$AI$256" -"'Worksheet1'!$AI$256", "'Worksheet1'!$AI$256" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data deleted file mode 100644 index 8d6efbffc87..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellBuildRange.data +++ /dev/null @@ -1,2 +0,0 @@ -{"B4"|"E9"}, "B4:E9" -{"B4"|"E9";"H2"|"O11"}, '"B4:E9,H2:O11"' diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data deleted file mode 100644 index e64ce5598af..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellCoordinates.data +++ /dev/null @@ -1,6 +0,0 @@ -"A1", {"A";1} -"A12", {"A";12} -"J1", {"J";1} -"J20", {"J";20} -"AI1", {"AI";1} -"AI2012", {"AI";2012} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data deleted file mode 100644 index 4b44a83a3ad..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellExtractAllCellReferencesInRange.data +++ /dev/null @@ -1,9 +0,0 @@ -"B4:B6", {"B4";"B5";"B6"} -'"B4:B6,D4:D6"', {"B4";"B5";"B6";"D4";"D5";"D6"} -'"B4:B6 D4:D6"', {"B4";"B5";"B6";"D4";"D5";"D6"} -"B4:D6", {"B4";"B5";"B6";"C4";"C5";"C6";"D4";"D5";"D6"} -'"B4:D6,C5:E7"', {"B4";"B5";"B6";"C4";"C5";"C6";"C7";"D4";"D5";"D6";"D7";"E5";"E6";"E7"} -'"B4:D6 C5:E7"', {"B4";"B5";"B6";"C4";"C5";"C6";"C7";"D4";"D5";"D6";"D7";"E5";"E6";"E7"} -"B2:D4 C5:D5 E3:E5 D6:E6 F4:F6", {"B2";"B3";"B4";"C2";"C3";"C4";"C5";"D2";"D3";"D4";"D5";"D6";"E3";"E4";"E5";"E6";"F4";"F5";"F6"} -"B2:D4 C3:E5 D4:F6", {"B2";"B3";"B4";"C2";"C3";"C4";"C5";"D2";"D3";"D4";"D5";"D6";"E3";"E4";"E5";"E6";"F4";"F5";"F6"} -"B4:B6 B8", {"B4";"B5";"B6";"B8"} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data deleted file mode 100644 index f01a5fd9940..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellGetRangeBoundaries.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {"B"|4;"E"|9} -"B4", {"B"|4;"B"|4} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data deleted file mode 100644 index 2fca6dc23d1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeBoundaries.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {2|4;5|9} -"B4", {2|4;2|4} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data deleted file mode 100644 index 1718f1219c0..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellRangeDimension.data +++ /dev/null @@ -1,2 +0,0 @@ -"B4:E9", {4;6} -"B4", {1;1} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data deleted file mode 100644 index 215fce253f9..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/CellSplitRange.data +++ /dev/null @@ -1,3 +0,0 @@ -"B4:E9", {"B4"|"E9"} -"B4", {"B4"} -'"B4:E9,H2:O11"', {"B4"|"E9";"H2"|"O11"} diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data deleted file mode 100644 index 9a1679b6b91..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnIndex.data +++ /dev/null @@ -1,9 +0,0 @@ -0, "A" -25, "Z" -26, "AA" -27, "AB" -51, "AZ" -52, "BA" -701, "ZZ" -702, "AAA" -1378, "BAA" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data deleted file mode 100644 index 5573759eb93..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/ColumnString.data +++ /dev/null @@ -1,9 +0,0 @@ -"A", 1 -"Z", 26 -"AA", 27 -"AB", 28 -"AZ", 52 -"BA", 53 -"ZZ", 702 -"AAA", 703 -"BAA", 1379 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml deleted file mode 100644 index 94eaedfc2ae..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml deleted file mode 100644 index 1d186ff4434..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16BE.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml deleted file mode 100644 index c3913f71bb8..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-16LE.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml deleted file mode 100644 index 212003fd4fb..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestInvalidUTF-8.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -]> - - - test: (&x0;) - \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml deleted file mode 100644 index 6473fe6b638..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml deleted file mode 100644 index 677e712f99d..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16BE.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml deleted file mode 100644 index 64353bfbab1..00000000000 Binary files a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-16LE.xml and /dev/null differ diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml deleted file mode 100644 index c400ae88b5c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Reader/XEETestValidUTF-8.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - test: Valid - \ No newline at end of file diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data deleted file mode 100644 index fc48f21ab11..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CentimeterSizeToPixels.data +++ /dev/null @@ -1,5 +0,0 @@ -0.1, 3.7795275591 -0.2, 7.5590551182 -0.5, 18.8976377955 -1.0, 37.795275591 -2.0, 75.590551182 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data deleted file mode 100644 index 68ceda1feda..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/CodePage.data +++ /dev/null @@ -1,43 +0,0 @@ -367, "ASCII" // ASCII -437, "CP437" // OEM US -737, "CP737" // OEM Greek -775, "CP775" // OEM Baltic -850, "CP850" // OEM Latin I -852, "CP852" // OEM Latin II (Central European) -855, "CP855" // OEM Cyrillic -857, "CP857" // OEM Turkish -858, "CP858" // OEM Multilingual Latin I with Euro -860, "CP860" // OEM Portugese -861, "CP861" // OEM Icelandic -862, "CP862" // OEM Hebrew -863, "CP863" // OEM Canadian (French) -864, "CP864" // OEM Arabic -865, "CP865" // OEM Nordic -866, "CP866" // OEM Cyrillic (Russian) -869, "CP869" // OEM Greek (Modern) -874, "CP874" // ANSI Thai -932, "CP932" // ANSI Japanese Shift-JIS -936, "CP936" // ANSI Chinese Simplified GBK -949, "CP949" // ANSI Korean (Wansung) -950, "CP950" // ANSI Chinese Traditional BIG5 -1200, "UTF-16LE" // UTF-16 (BIFF8) -1250, "CP1250" // ANSI Latin II (Central European) -1251, "CP1251" // ANSI Cyrillic -0, "CP1252" // ANSI Latin I (BIFF4-BIFF7) -1252, "CP1252" // ANSI Latin I (BIFF4-BIFF7) -1253, "CP1253" // ANSI Greek -1254, "CP1254" // ANSI Turkish -1255, "CP1255" // ANSI Hebrew -1256, "CP1256" // ANSI Arabic -1257, "CP1257" // ANSI Baltic -1258, "CP1258" // ANSI Vietnamese -1361, "CP1361" // ANSI Korean (Johab) -10000, "MAC" // Apple Roman -10006, "MACGREEK" // Macintosh Greek -10007, "MACCYRILLIC" // Macintosh Cyrillic -10029, "MACCENTRALEUROPE" // Macintosh Central Europe -10079, "MACICELAND" // Macintosh Icelandic -10081, "MACTURKISH" // Macintosh Turkish -32768, "MAC" // Apple Roman -65000, "UTF-7" // Unicode (UTF-7) -65001, "UTF-8" // Unicode (UTF-8) diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data deleted file mode 100644 index d348b0aa41d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900.data +++ /dev/null @@ -1,15 +0,0 @@ -#Excel DateTimeStamp Result Comments -714, -2147472000 // PHP 32-bit Earliest Date 14-Dec-1901 -1461, -2082931200 // 31-Dec-1903 -1462, -2082844800 // Excel 1904 Calendar Base Date 01-Jan-1904 -1463, -2082758400 // 02-Jan-1904 -22269, -285120000 // 19-Dec-1960 -25569, 0 // PHP Base Date 01-Jan-1970 -30292, 408067200 // 07-Dec-1982 -39611, 1213228800 // 12-Jun-2008 -50424, 2147472000 // PHP 32-bit Latest Date 19-Jan-2038 -1234.56789, -2102494934 // 18-May-1903 13:37:46 -12345.6789, -1142494943 // 18-Oct-1933 16:17:37 -0.5, 43200 // 12:00:00 -0.75, 64800 // 18:00.00 -0.12345, 10666 // 02:57:46 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data deleted file mode 100644 index e106b5fe13c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1900Timezone.data +++ /dev/null @@ -1,23 +0,0 @@ -#Excel DateTimeStamp Adjust Timezone Result Comments -22269, TRUE, 'America/New_York', -285138000 // 19-Dec-1960 00:00:00 UST -25569, TRUE, 'America/New_York', -18000 // PHP Base Date 01-Jan-1970 00:00:00 UST -30292, TRUE, 'America/New_York', 408049200 // 07-Dec-1982 00:00:00 UST -39611, TRUE, 'America/New_York', 1213214400 // 12-Jun-2008 00:00:00 UST -50424, TRUE, 'America/New_York', 2147454000 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST -22345.56789, TRUE, 'America/New_York', -278522534 // 18-May-1903 13:37:46 UST -22345.6789, TRUE, 'America/New_York', -278512943 // 18-Oct-1933 16:17:37 UST -0.5, TRUE, 'America/New_York', 25200 // 12:00:00 UST -0.75, TRUE, 'America/New_York', 46800 // 18:00.00 UST -0.12345, TRUE, 'America/New_York', -7334 // 02:57:46 UST -41215, TRUE, 'America/New_York', 1351800000 // 02-Nov-2012 00:00:00 UST -22269, TRUE, 'Pacific/Auckland', -285076800 // 19-Dec-1960 00:00:00 UST -25569, TRUE, 'Pacific/Auckland', 43200 // PHP Base Date 01-Jan-1970 00:00:00 UST -30292, TRUE, 'Pacific/Auckland', 408114000 // 07-Dec-1982 00:00:00 UST -39611, TRUE, 'Pacific/Auckland', 1213272000 // 12-Jun-2008 00:00:00 UST -50423.5, TRUE, 'Pacific/Auckland', 2147475600 // PHP 32-bit Latest Date 19-Jan-2038 00:00:00 UST -22345.56789, TRUE, 'Pacific/Auckland', -278461334 // 18-May-1903 13:37:46 UST -22345.6789, TRUE, 'Pacific/Auckland', -278451743 // 18-Oct-1933 16:17:37 UST -0.5, TRUE, 'Pacific/Auckland', 90000 // 12:00:00 UST -0.75, TRUE, 'Pacific/Auckland', 111600 // 18:00.00 UST -0.12345, TRUE, 'Pacific/Auckland', 57466 // 02:57:46 UST -41215, TRUE, 'Pacific/Auckland', 1351861200 // 02-Nov-2012 00:00:00 UST diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data deleted file mode 100644 index 5501ad17cea..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeExcelToPHP1904.data +++ /dev/null @@ -1,10 +0,0 @@ -#Excel DateTimeStamp Result -1462, -1956528000 -1463, -1956441600 -22269, -158803200 -25569, 126316800 -30292, 534384000 -39611, 1339545600 -0.25, 21600 // 06:00:00 -0.3333333333333333333, 28800 // 08:00.00 -0.54321, 46933 // 02:57:46 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data deleted file mode 100644 index 73420470490..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormatCodes.data +++ /dev/null @@ -1,37 +0,0 @@ -#Excel Format Code Result -"General", FALSE -"@", FALSE -"0", FALSE -"0.00", FALSE -"#,##0.00", FALSE -"#,##0.00_-", FALSE -"0%", FALSE -"0.00%", FALSE -"yyyy-mm-dd", TRUE -"yy-mm-dd", TRUE -"dd/mm/yy", TRUE -"d/m/y", TRUE -"d-m-y", TRUE -"d-m", TRUE -"m-y", TRUE -"mm-dd-yy", TRUE -"d-mmm-yy", TRUE -"d-mmm", TRUE -"mmm-yy", TRUE -"m/d/yy h:mm", TRUE -"d/m/y h:mm", TRUE -"h:mm AM/PM", TRUE -"h:mm:ss AM/PM", TRUE -"h:mm", TRUE -"h:mm:ss", TRUE -"mm:ss", TRUE -"h:mm:ss", TRUE -"i:s.S", TRUE -"h:mm:ss;@", TRUE -"yy/mm/dd;@", TRUE -"\"$\"#,##0.00_-", FALSE -"$#,##0_-", FALSE -"[$EUR ]#,##0.00_-", FALSE -"_[$EUR ]#,##0.00_-", FALSE -"[Green]#,##0.00;[Red]#,##0.00_-", FALSE -"#,##0.00 \"dollars\"", FALSE diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data deleted file mode 100644 index bb6ed3f4292..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimeFormattedPHPToExcel1900.data +++ /dev/null @@ -1,12 +0,0 @@ -#Year Month Day Hours Minutes Seconds Result Comments -1901, 12, 14, 714 // PHP 32-bit Earliest Date 14-Dec-1901 -1903, 12, 31, 1461 // 31-Dec-1903 -1904, 1, 1, 1462 // Excel 1904 Calendar Base Date 01-Jan-1904 -1904, 1, 2, 1463 // 02-Jan-1904 -1960, 12, 19, 22269 // 19-Dec-1960 -1970, 1, 1, 25569 // PHP Base Date 01-Jan-1970 -1982, 12, 7, 30292 // 07-Dec-1982 -2008, 6, 12, 39611 // 12-Jun-2008 -2038, 1, 19, 50424 // PHP 32-bit Latest Date 19-Jan-2038 -1903, 5, 18, 13, 37, 46, 1234.56789 // 18-May-1903 13:37:46 -1933, 10, 18, 16, 17, 37, 12345.6789 // 18-Oct-1933 16:17:37 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data deleted file mode 100644 index dc6a9d909a4..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1900.data +++ /dev/null @@ -1,12 +0,0 @@ -#Excel DateTimeStamp Result Comments --2147472000, 714 // PHP 32-bit Earliest Date 14-Dec-1901 --2082931200, 1461 // 31-Dec-1903 --2082844800, 1462 // Excel 1904 Calendar Base Date 01-Jan-1904 --2082758400, 1463 // 02-Jan-1904 --285120000, 22269 // 19-Dec-1960 -0, 25569 // PHP Base Date 01-Jan-1970 -408067200, 30292 // 07-Dec-1982 -1213228800, 39611 // 12-Jun-2008 -2147472000, 50424 // PHP 32-bit Latest Date 19-Jan-2038 --2102494934, 1234.56789 // 18-May-1903 13:37:46 --1142494943, 12345.6789 // 18-Oct-1933 16:17:37 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data deleted file mode 100644 index 98fa49514ba..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/DateTimePHPToExcel1904.data +++ /dev/null @@ -1,7 +0,0 @@ -#Excel DateTimeStamp Result --1956528000, 1462 --1956441600, 1463 --158803200, 22269 -126316800, 25569 -534384000, 30292 -1339545600, 39611 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data deleted file mode 100644 index af89196d3ff..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/FontSizeToPixels.data +++ /dev/null @@ -1,16 +0,0 @@ -6, 8 -7, 9 -8, 10 -9, 12 -10, 13 -11, 14 -12, 16 -14, 18 -16, 21 -18, 24 -20, 26 -22, 29 -24, 32 -36, 48 -48, 64 -60, 80 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data deleted file mode 100644 index 147eaa989ea..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/InchSizeToPixels.data +++ /dev/null @@ -1,5 +0,0 @@ -0.1, 9.6 -0.2, 19.2 -0.5, 48.0 -1.0, 96.0 -2.0, 192.0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data deleted file mode 100644 index c6846812616..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Shared/PasswordHashes.data +++ /dev/null @@ -1,9 +0,0 @@ -"PHPExcel", "8053" -"Mark Baker", "877D" -"!+&=()~§±æþ", "C0EA" -"μυστικό κωδικό πρόσβασης", "FFFF26DD" -"গোপন পাসওয়ার্ড", "E858" -"Секретный пароль", "EA5F" -"秘密口令", "C07E" -"leyndarmál lykilorð", "99E8" -"", "CE4B" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data deleted file mode 100644 index de5eeaf5f7c..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorChangeBrightness.data +++ /dev/null @@ -1,14 +0,0 @@ -"FFAABBCC", 0.1, "FFB2C1D1" // RGBA -"FFAABBCC", -0.1, "FF99A8B7" // RGBA -"AABBCC", 0.1, "B2C1D1" // RGB -"AABBCC", -0.1, "99A8B7" // RGB -"FF0000", 0.1, "FF1919" -"FF0000", -0.1, "E50000" -"FF8080", 0.1, "FF8C8C" -"FF8080", -0.1, "E57373" -"FF0000", 0.15, "FF2626" -"FF0000", -0.15, "D80000" -"FF8080", 0.15, "FF9393" -"FF8080", -0.15, "D86C6C" -"FFF008", 0.5, "FFF783" -"FFF008", -0.5, "7F7804" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data deleted file mode 100644 index 4e01d1c7ca1..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetBlue.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "CC" // RGBA (hex) -"FFAABBCC", FALSE, 204 // RGBA (decimal) -"AABBCC", "CC" // RGB (hex) -"AABBCC", FALSE, 204 // RGB (decimal) -"FFFF00", "00" -"FFFF00", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data deleted file mode 100644 index 0ace610340b..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetGreen.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "BB" // RGBA (hex) -"FFAABBCC", FALSE, 187 // RGBA (decimal) -"AABBCC", "BB" // RGB (hex) -"AABBCC", FALSE, 187 // RGB (decimal) -"FF00FF", "00" -"FF00FF", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data deleted file mode 100644 index 1692a6ad716..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/ColorGetRed.data +++ /dev/null @@ -1,6 +0,0 @@ -"FFAABBCC", "AA" // RGBA (hex) -"FFAABBCC", FALSE, 170 // RGBA (decimal) -"AABBCC", "AA" // RGB (hex) -"AABBCC", FALSE, 170 // RGB (decimal) -"00FFFF", "00" -"00FFFF", FALSE, 0 diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data b/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data deleted file mode 100644 index 49acaccfc7d..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/rawTestData/Style/NumberFormat.data +++ /dev/null @@ -1,37 +0,0 @@ -# value format result -0.0, "0.0", "0.0" -0.0, "0", "0" -0, "0.0", "0.0" -0, "0", "0" -0, "##0", "000" -12, "#.0#", "12.0" -0.1, "0.0", "0.1" -0.1, "0", "0" -5.5555, "0.###", "5.556" -5.5555, "0.0##", "5.556" -5.5555, "0.00#", "5.556" -5.5555, "0.000", "5.556" -5.5555, "0.0000", "5.5555" -12345.6789, '"#,##0.00"', '"12,345.68"' -12345.6789, '"#,##0.000"', '"12,345.679"' -12345.6789, '"£ #,##0.00"', '"£ 12,345.68"' -12345.6789, '"$ #,##0.000"', '"$ 12,345.679"' -5.6789, '"#,##0.00"', '"5.68"' -12000, '"#,###"', '"12,000"' -12000, '"#,"', '12' -12200000, '"0.0,,"', '12.2' // Scaling test -0.08, "0%", "8%" -0.8, "0%", "80%" -2.8, "0%", "280%" -125.74, '$0.00" Surplus";$-0.00" Shortage"', "$125.74 Surplus" --125.74, '$0.00" Surplus";$-0.00" Shortage"', "$-125.74 Shortage" --125.74, '$0.00" Surplus";$0.00" Shortage"', "$125.74 Shortage" -5.25, '# ???/???', "5 1/4" // Fraction -5.3, '# ???/???', "5 3/10" // Vulgar Fraction -5.25, '???/???', "21/4" -123456789, '(000) 0-0000-000', "(001) 2-3456-789" -123456789, '0 (+00) 0000 00 00 00', "0 (+00) 0123 45 67 89" -123456789, '0000:00:00', "12345:67:89" --123456789, '0000:00:00', "-12345:67:89" -1234567.89, '0000:00.00', "12345:67.89" --1234567.89,'0000:00.00', "-12345:67.89" diff --git a/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php b/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php deleted file mode 100644 index a092cd59339..00000000000 --- a/htdocs/includes/phpoffice/phpexcel/unitTests/testDataFileIterator.php +++ /dev/null @@ -1,131 +0,0 @@ -file = fopen($file, 'r'); - } - - public function __destruct() - { - fclose($this->file); - } - - public function rewind() - { - rewind($this->file); - $this->current = $this->_parseNextDataset(); - $this->key = 0; - } - - public function valid() - { - return !feof($this->file); - } - - public function key() - { - return $this->key; - } - - public function current() - { - return $this->current; - } - - public function next() - { - $this->current = $this->_parseNextDataset(); - $this->key++; - } - - private function _parseNextDataset() - { - // Read a line of test data from the file - do { - // Only take lines that contain test data and that aren't commented out - $testDataRow = trim(fgets($this->file)); - } while (($testDataRow > '') && ($testDataRow{0} === '#')); - - // Discard any comments at the end of the line - list($testData) = explode('//',$testDataRow); - - // Split data into an array of individual values and a result - $dataSet = $this->_getcsv($testData, ',', "'"); - foreach($dataSet as &$dataValue) { - $dataValue = $this->_parseDataValue($dataValue); - } - unset($dataValue); - - return $dataSet; - } - - private function _getcsv($input, $delimiter, $enclosure) - { - if (function_exists('str_getcsv')) { - return str_getcsv($input, $delimiter, $enclosure); - } - - $temp = fopen('php://memory', 'rw'); - fwrite($temp, $input); - rewind($temp); - $data = fgetcsv($temp, strlen($input), $delimiter, $enclosure); - fclose($temp); - - if ($data === false) { - $data = array(null); - } - - return $data; - } - - private function _parseDataValue($dataValue) { - // discard any white space - $dataValue = trim($dataValue); - // test for the required datatype and convert accordingly - if (!is_numeric($dataValue)) { - if($dataValue == '') { - $dataValue = NULL; - } elseif($dataValue == '""') { - $dataValue = ''; - } elseif(($dataValue[0] == '"') && ($dataValue[strlen($dataValue)-1] == '"')) { - $dataValue = substr($dataValue,1,-1); - } elseif(($dataValue[0] == '{') && ($dataValue[strlen($dataValue)-1] == '}')) { - $dataValue = explode(';',substr($dataValue,1,-1)); - foreach($dataValue as &$dataRow) { - if (strpos($dataRow,'|') !== FALSE) { - $dataRow = explode('|',$dataRow); - foreach($dataRow as &$dataCell) { - $dataCell = $this->_parseDataValue($dataCell); - } - unset($dataCell); - } else { - $dataRow = $this->_parseDataValue($dataRow); - } - } - unset($dataRow); - } else { - switch (strtoupper($dataValue)) { - case 'NULL' : $dataValue = NULL; break; - case 'TRUE' : $dataValue = TRUE; break; - case 'FALSE' : $dataValue = FALSE; break; - } - } - } else { - if (strpos($dataValue,'.') !== FALSE) { - $dataValue = (float) $dataValue; - } else { - $dataValue = (int) $dataValue; - } - } - - return $dataValue; - } - -} diff --git a/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT b/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT index 2cfb85ae6ab..31b587b2842 100644 --- a/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT +++ b/htdocs/includes/tecnickcom/tcpdf/CHANGELOG.TXT @@ -1,3 +1,24 @@ +6.2.12 (2015-09-12) + - fix composer package name to tecnickcom/tcpdf + +6.2.11 (2015-08-02) + - Bug #1070 "PNG regression in 6.2.9 (they appear as their alpha channel)" was fixed. + - Bug #1069 "Encoded SRC URLs in tags don't work anymore" was fixed. + +6.2.10 (2015-07-28) + - Minor mod to PNG parsing. + - Make dependency on mcrypt optional. + +6.2.8 (2015-04-29) + - Removed unwanted file. + +6.2.7 (2015-04-28) + - Merged PR 17: Avoid warning when iterating a non-array variable. + - Merged PR 16: Improve MuliCell param definition. + - Improved column check (PR 15). + - Merged PR 11: Use stream_is_local instead of limit to file://. + - Merged PR 10: ImageMagick link on README.txt. + 6.2.6 (2015-01-28) - Bug #1008 "UTC offset sing breaks PDF/A-1b compliance" was fixed. diff --git a/htdocs/includes/tecnickcom/tcpdf/README.TXT b/htdocs/includes/tecnickcom/tcpdf/README.TXT index d051393caa2..2061fa7a16b 100644 --- a/htdocs/includes/tecnickcom/tcpdf/README.TXT +++ b/htdocs/includes/tecnickcom/tcpdf/README.TXT @@ -4,12 +4,13 @@ TCPDF - README I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT. PLEASE MAKE A DONATION: http://sourceforge.net/donate/index.php?group_id=128076 +or via PayPal at paypal@tecnick.com ------------------------------------------------------------ Name: TCPDF -Version: 6.2.6 -Release date: 2015-01-28 +Version: 6.2.12 +Release date: 2015-09-12 Author: Nicola Asuni Copyright (c) 2002-2015: @@ -20,6 +21,7 @@ Copyright (c) 2002-2015: URLs: http://www.tcpdf.org http://www.sourceforge.net/projects/tcpdf + https://github.com/tecnickcom/TCPDF Description: TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions. @@ -34,7 +36,7 @@ Main Features: * font subsetting; * methods to publish some XHTML + CSS code, Javascript and Forms; * images, graphic (geometric figures) and transformation methods; - * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http: www.imagemagick.org/www/formats.html) + * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/script/formats.php) * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; * automatic page header and footer management; diff --git a/htdocs/includes/tecnickcom/tcpdf/composer.json b/htdocs/includes/tecnickcom/tcpdf/composer.json index ba0520d19da..beab50943a6 100644 --- a/htdocs/includes/tecnickcom/tcpdf/composer.json +++ b/htdocs/includes/tecnickcom/tcpdf/composer.json @@ -1,6 +1,6 @@ { - "name": "tecnick.com/tcpdf", - "version": "6.2.6", + "name": "tecnickcom/tcpdf", + "version": "6.2.12", "homepage": "http://www.tcpdf.org/", "type": "library", "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", diff --git a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php index 3127fe68739..7ef2759fd6f 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/qrcode.php @@ -720,6 +720,7 @@ class QRcode { protected function encodeMask($mask) { $spec = array(0, 0, 0, 0, 0); $this->datacode = $this->getByteStream($this->items); + if (is_null($this->datacode)) { return NULL; } diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php index 0a19f330149..70ca89393d9 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_fonts.php @@ -154,7 +154,7 @@ class TCPDF_FONTS { $enc_target = TCPDF_FONT_DATA::$encmap[$enc]; $last = 0; for ($i = 32; $i <= 255; ++$i) { - if ($enc_target != $enc_ref[$i]) { + if ($enc_target[$i] != $enc_ref[$i]) { if ($i != ($last + 1)) { $fmetric['diff'] .= $i.' '; } @@ -1490,6 +1490,171 @@ class TCPDF_FONTS { return '/W ['.$w.' ]'; } + + + + /** + * Update the CIDToGIDMap string with a new value. + * @param $map (string) CIDToGIDMap. + * @param $cid (int) CID value. + * @param $gid (int) GID value. + * @return (string) CIDToGIDMap. + * @author Nicola Asuni + * @since 5.9.123 (2011-09-29) + * @public static + */ + public static function updateCIDtoGIDmap($map, $cid, $gid) { + if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { + if ($gid > 0xFFFF) { + $gid -= 0x10000; + } + $map[($cid * 2)] = chr($gid >> 8); + $map[(($cid * 2) + 1)] = chr($gid & 0xFF); + } + return $map; + } + + /** + * Return fonts path + * @return string + * @public static + */ + public static function _getfontpath() { + if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { + if (substr($fdir, -1) != '/') { + $fdir .= '/'; + } + define('K_PATH_FONTS', $fdir); + } + return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; + } + + + + /** + * Return font full path + * @param $file (string) Font file name. + * @param $fontdir (string) Font directory (set to false fto search on default directories) + * @return string Font full path or empty string + * @author Nicola Asuni + * @since 6.0.025 + * @public static + */ + public static function getFontFullPath($file, $fontdir=false) { + $fontfile = ''; + // search files on various directories + if (($fontdir !== false) AND @file_exists($fontdir.$file)) { + $fontfile = $fontdir.$file; + } elseif (@file_exists(self::_getfontpath().$file)) { + $fontfile = self::_getfontpath().$file; + } elseif (@file_exists($file)) { + $fontfile = $file; + } + return $fontfile; + } + + + + + /** + * Get a reference font size. + * @param $size (string) String containing font size value. + * @param $refsize (float) Reference font size in points. + * @return float value in points + * @public static + */ + public static function getFontRefSize($size, $refsize=12) { + switch ($size) { + case 'xx-small': { + $size = ($refsize - 4); + break; + } + case 'x-small': { + $size = ($refsize - 3); + break; + } + case 'small': { + $size = ($refsize - 2); + break; + } + case 'medium': { + $size = $refsize; + break; + } + case 'large': { + $size = ($refsize + 2); + break; + } + case 'x-large': { + $size = ($refsize + 4); + break; + } + case 'xx-large': { + $size = ($refsize + 6); + break; + } + case 'smaller': { + $size = ($refsize - 3); + break; + } + case 'larger': { + $size = ($refsize + 3); + break; + } + } + return $size; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// ==================================================================================================================== +// REIMPLEMENTED +// ==================================================================================================================== + + + + + + + + /** * Returns the unicode caracter specified by the value * @param $c (int) UTF-8 value @@ -1663,64 +1828,6 @@ class TCPDF_FONTS { return $string; } - /** - * Update the CIDToGIDMap string with a new value. - * @param $map (string) CIDToGIDMap. - * @param $cid (int) CID value. - * @param $gid (int) GID value. - * @return (string) CIDToGIDMap. - * @author Nicola Asuni - * @since 5.9.123 (2011-09-29) - * @public static - */ - public static function updateCIDtoGIDmap($map, $cid, $gid) { - if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { - if ($gid > 0xFFFF) { - $gid -= 0x10000; - } - $map[($cid * 2)] = chr($gid >> 8); - $map[(($cid * 2) + 1)] = chr($gid & 0xFF); - } - return $map; - } - - /** - * Return fonts path - * @return string - * @public static - */ - public static function _getfontpath() { - if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { - if (substr($fdir, -1) != '/') { - $fdir .= '/'; - } - define('K_PATH_FONTS', $fdir); - } - return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; - } - - /** - * Return font full path - * @param $file (string) Font file name. - * @param $fontdir (string) Font directory (set to false fto search on default directories) - * @return string Font full path or empty string - * @author Nicola Asuni - * @since 6.0.025 - * @public static - */ - public static function getFontFullPath($file, $fontdir=false) { - $fontfile = ''; - // search files on various directories - if (($fontdir !== false) AND @file_exists($fontdir.$file)) { - $fontfile = $fontdir.$file; - } elseif (@file_exists(self::_getfontpath().$file)) { - $fontfile = self::_getfontpath().$file; - } elseif (@file_exists($file)) { - $fontfile = $file; - } - return $fontfile; - } - /** * Converts UTF-8 characters array to array of Latin1 characters array
    * @param $unicode (array) array containing UTF-8 unicode values @@ -2535,55 +2642,6 @@ class TCPDF_FONTS { return $ordarray; } - /** - * Get a reference font size. - * @param $size (string) String containing font size value. - * @param $refsize (float) Reference font size in points. - * @return float value in points - * @public static - */ - public static function getFontRefSize($size, $refsize=12) { - switch ($size) { - case 'xx-small': { - $size = ($refsize - 4); - break; - } - case 'x-small': { - $size = ($refsize - 3); - break; - } - case 'small': { - $size = ($refsize - 2); - break; - } - case 'medium': { - $size = $refsize; - break; - } - case 'large': { - $size = ($refsize + 2); - break; - } - case 'x-large': { - $size = ($refsize + 4); - break; - } - case 'xx-large': { - $size = ($refsize + 6); - break; - } - case 'smaller': { - $size = ($refsize - 3); - break; - } - case 'larger': { - $size = ($refsize + 3); - break; - } - } - return $size; - } - } // END OF TCPDF_FONTS CLASS //============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php index c7ae9bd9677..c2e3c36f930 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_images.php @@ -160,6 +160,14 @@ class TCPDF_IMAGES { * @public static */ public static function _parsejpeg($file) { + // check if is a local file + if (!@file_exists($file)) { + // try to encode spaces on filename + $tfile = str_replace(' ', '%20', $file); + if (@file_exists($tfile)) { + $file = $tfile; + } + } $a = getimagesize($file); if (empty($a)) { //Missing or incorrect image file @@ -289,8 +297,8 @@ class TCPDF_IMAGES { $trns = ''; $data = ''; $icc = false; + $n = TCPDF_STATIC::_freadint($f); do { - $n = TCPDF_STATIC::_freadint($f); $type = fread($f, 4); if ($type == 'PLTE') { // read palette @@ -338,6 +346,7 @@ class TCPDF_IMAGES { } else { TCPDF_STATIC::rfread($f, $n + 4); } + $n = TCPDF_STATIC::_freadint($f); } while ($n); if (($colspace == 'Indexed') AND (empty($pal))) { // Missing palette diff --git a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php index e947832d24a..f6d4d2b9eb4 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/tcpdf_static.php @@ -1,9 +1,9 @@ array( 2383.937, 3370.394), // = ( 841 x 1189 ) mm = ( 33.11 x 46.81 ) in - 'A1' => array( 1683.780, 2383.937), // = ( 594 x 841 ) mm = ( 23.39 x 33.11 ) in - 'A2' => array( 1190.551, 1683.780), // = ( 420 x 594 ) mm = ( 16.54 x 23.39 ) in - 'A3' => array( 841.890, 1190.551), // = ( 297 x 420 ) mm = ( 11.69 x 16.54 ) in - 'A4' => array( 595.276, 841.890), // = ( 210 x 297 ) mm = ( 8.27 x 11.69 ) in - 'A5' => array( 419.528, 595.276), // = ( 148 x 210 ) mm = ( 5.83 x 8.27 ) in - 'A6' => array( 297.638, 419.528), // = ( 105 x 148 ) mm = ( 4.13 x 5.83 ) in - 'A7' => array( 209.764, 297.638), // = ( 74 x 105 ) mm = ( 2.91 x 4.13 ) in - 'A8' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'A9' => array( 104.882, 147.402), // = ( 37 x 52 ) mm = ( 1.46 x 2.05 ) in - 'A10' => array( 73.701, 104.882), // = ( 26 x 37 ) mm = ( 1.02 x 1.46 ) in - 'A11' => array( 51.024, 73.701), // = ( 18 x 26 ) mm = ( 0.71 x 1.02 ) in - 'A12' => array( 36.850, 51.024), // = ( 13 x 18 ) mm = ( 0.51 x 0.71 ) in - // ISO 216 B Series + 2 SIS 014711 extensions - 'B0' => array( 2834.646, 4008.189), // = ( 1000 x 1414 ) mm = ( 39.37 x 55.67 ) in - 'B1' => array( 2004.094, 2834.646), // = ( 707 x 1000 ) mm = ( 27.83 x 39.37 ) in - 'B2' => array( 1417.323, 2004.094), // = ( 500 x 707 ) mm = ( 19.69 x 27.83 ) in - 'B3' => array( 1000.630, 1417.323), // = ( 353 x 500 ) mm = ( 13.90 x 19.69 ) in - 'B4' => array( 708.661, 1000.630), // = ( 250 x 353 ) mm = ( 9.84 x 13.90 ) in - 'B5' => array( 498.898, 708.661), // = ( 176 x 250 ) mm = ( 6.93 x 9.84 ) in - 'B6' => array( 354.331, 498.898), // = ( 125 x 176 ) mm = ( 4.92 x 6.93 ) in - 'B7' => array( 249.449, 354.331), // = ( 88 x 125 ) mm = ( 3.46 x 4.92 ) in - 'B8' => array( 175.748, 249.449), // = ( 62 x 88 ) mm = ( 2.44 x 3.46 ) in - 'B9' => array( 124.724, 175.748), // = ( 44 x 62 ) mm = ( 1.73 x 2.44 ) in - 'B10' => array( 87.874, 124.724), // = ( 31 x 44 ) mm = ( 1.22 x 1.73 ) in - 'B11' => array( 62.362, 87.874), // = ( 22 x 31 ) mm = ( 0.87 x 1.22 ) in - 'B12' => array( 42.520, 62.362), // = ( 15 x 22 ) mm = ( 0.59 x 0.87 ) in - // ISO 216 C Series + 2 SIS 014711 extensions + 5 EXTENSION - 'C0' => array( 2599.370, 3676.535), // = ( 917 x 1297 ) mm = ( 36.10 x 51.06 ) in - 'C1' => array( 1836.850, 2599.370), // = ( 648 x 917 ) mm = ( 25.51 x 36.10 ) in - 'C2' => array( 1298.268, 1836.850), // = ( 458 x 648 ) mm = ( 18.03 x 25.51 ) in - 'C3' => array( 918.425, 1298.268), // = ( 324 x 458 ) mm = ( 12.76 x 18.03 ) in - 'C4' => array( 649.134, 918.425), // = ( 229 x 324 ) mm = ( 9.02 x 12.76 ) in - 'C5' => array( 459.213, 649.134), // = ( 162 x 229 ) mm = ( 6.38 x 9.02 ) in - 'C6' => array( 323.150, 459.213), // = ( 114 x 162 ) mm = ( 4.49 x 6.38 ) in - 'C7' => array( 229.606, 323.150), // = ( 81 x 114 ) mm = ( 3.19 x 4.49 ) in - 'C8' => array( 161.575, 229.606), // = ( 57 x 81 ) mm = ( 2.24 x 3.19 ) in - 'C9' => array( 113.386, 161.575), // = ( 40 x 57 ) mm = ( 1.57 x 2.24 ) in - 'C10' => array( 79.370, 113.386), // = ( 28 x 40 ) mm = ( 1.10 x 1.57 ) in - 'C11' => array( 56.693, 79.370), // = ( 20 x 28 ) mm = ( 0.79 x 1.10 ) in - 'C12' => array( 39.685, 56.693), // = ( 14 x 20 ) mm = ( 0.55 x 0.79 ) in - 'C76' => array( 229.606, 459.213), // = ( 81 x 162 ) mm = ( 3.19 x 6.38 ) in - 'DL' => array( 311.811, 623.622), // = ( 110 x 220 ) mm = ( 4.33 x 8.66 ) in - 'DLE' => array( 323.150, 637.795), // = ( 114 x 225 ) mm = ( 4.49 x 8.86 ) in - 'DLX' => array( 340.158, 666.142), // = ( 120 x 235 ) mm = ( 4.72 x 9.25 ) in - 'DLP' => array( 280.630, 595.276), // = ( 99 x 210 ) mm = ( 3.90 x 8.27 ) in (1/3 A4) - // SIS 014711 E Series - 'E0' => array( 2491.654, 3517.795), // = ( 879 x 1241 ) mm = ( 34.61 x 48.86 ) in - 'E1' => array( 1757.480, 2491.654), // = ( 620 x 879 ) mm = ( 24.41 x 34.61 ) in - 'E2' => array( 1247.244, 1757.480), // = ( 440 x 620 ) mm = ( 17.32 x 24.41 ) in - 'E3' => array( 878.740, 1247.244), // = ( 310 x 440 ) mm = ( 12.20 x 17.32 ) in - 'E4' => array( 623.622, 878.740), // = ( 220 x 310 ) mm = ( 8.66 x 12.20 ) in - 'E5' => array( 439.370, 623.622), // = ( 155 x 220 ) mm = ( 6.10 x 8.66 ) in - 'E6' => array( 311.811, 439.370), // = ( 110 x 155 ) mm = ( 4.33 x 6.10 ) in - 'E7' => array( 221.102, 311.811), // = ( 78 x 110 ) mm = ( 3.07 x 4.33 ) in - 'E8' => array( 155.906, 221.102), // = ( 55 x 78 ) mm = ( 2.17 x 3.07 ) in - 'E9' => array( 110.551, 155.906), // = ( 39 x 55 ) mm = ( 1.54 x 2.17 ) in - 'E10' => array( 76.535, 110.551), // = ( 27 x 39 ) mm = ( 1.06 x 1.54 ) in - 'E11' => array( 53.858, 76.535), // = ( 19 x 27 ) mm = ( 0.75 x 1.06 ) in - 'E12' => array( 36.850, 53.858), // = ( 13 x 19 ) mm = ( 0.51 x 0.75 ) in - // SIS 014711 G Series - 'G0' => array( 2715.591, 3838.110), // = ( 958 x 1354 ) mm = ( 37.72 x 53.31 ) in - 'G1' => array( 1919.055, 2715.591), // = ( 677 x 958 ) mm = ( 26.65 x 37.72 ) in - 'G2' => array( 1357.795, 1919.055), // = ( 479 x 677 ) mm = ( 18.86 x 26.65 ) in - 'G3' => array( 958.110, 1357.795), // = ( 338 x 479 ) mm = ( 13.31 x 18.86 ) in - 'G4' => array( 677.480, 958.110), // = ( 239 x 338 ) mm = ( 9.41 x 13.31 ) in - 'G5' => array( 479.055, 677.480), // = ( 169 x 239 ) mm = ( 6.65 x 9.41 ) in - 'G6' => array( 337.323, 479.055), // = ( 119 x 169 ) mm = ( 4.69 x 6.65 ) in - 'G7' => array( 238.110, 337.323), // = ( 84 x 119 ) mm = ( 3.31 x 4.69 ) in - 'G8' => array( 167.244, 238.110), // = ( 59 x 84 ) mm = ( 2.32 x 3.31 ) in - 'G9' => array( 119.055, 167.244), // = ( 42 x 59 ) mm = ( 1.65 x 2.32 ) in - 'G10' => array( 82.205, 119.055), // = ( 29 x 42 ) mm = ( 1.14 x 1.65 ) in - 'G11' => array( 59.528, 82.205), // = ( 21 x 29 ) mm = ( 0.83 x 1.14 ) in - 'G12' => array( 39.685, 59.528), // = ( 14 x 21 ) mm = ( 0.55 x 0.83 ) in - // ISO Press - 'RA0' => array( 2437.795, 3458.268), // = ( 860 x 1220 ) mm = ( 33.86 x 48.03 ) in - 'RA1' => array( 1729.134, 2437.795), // = ( 610 x 860 ) mm = ( 24.02 x 33.86 ) in - 'RA2' => array( 1218.898, 1729.134), // = ( 430 x 610 ) mm = ( 16.93 x 24.02 ) in - 'RA3' => array( 864.567, 1218.898), // = ( 305 x 430 ) mm = ( 12.01 x 16.93 ) in - 'RA4' => array( 609.449, 864.567), // = ( 215 x 305 ) mm = ( 8.46 x 12.01 ) in - 'SRA0' => array( 2551.181, 3628.346), // = ( 900 x 1280 ) mm = ( 35.43 x 50.39 ) in - 'SRA1' => array( 1814.173, 2551.181), // = ( 640 x 900 ) mm = ( 25.20 x 35.43 ) in - 'SRA2' => array( 1275.591, 1814.173), // = ( 450 x 640 ) mm = ( 17.72 x 25.20 ) in - 'SRA3' => array( 907.087, 1275.591), // = ( 320 x 450 ) mm = ( 12.60 x 17.72 ) in - 'SRA4' => array( 637.795, 907.087), // = ( 225 x 320 ) mm = ( 8.86 x 12.60 ) in - // German DIN 476 - '4A0' => array( 4767.874, 6740.787), // = ( 1682 x 2378 ) mm = ( 66.22 x 93.62 ) in - '2A0' => array( 3370.394, 4767.874), // = ( 1189 x 1682 ) mm = ( 46.81 x 66.22 ) in - // Variations on the ISO Standard - 'A2_EXTRA' => array( 1261.417, 1754.646), // = ( 445 x 619 ) mm = ( 17.52 x 24.37 ) in - 'A3+' => array( 932.598, 1369.134), // = ( 329 x 483 ) mm = ( 12.95 x 19.02 ) in - 'A3_EXTRA' => array( 912.756, 1261.417), // = ( 322 x 445 ) mm = ( 12.68 x 17.52 ) in - 'A3_SUPER' => array( 864.567, 1440.000), // = ( 305 x 508 ) mm = ( 12.01 x 20.00 ) in - 'SUPER_A3' => array( 864.567, 1380.472), // = ( 305 x 487 ) mm = ( 12.01 x 19.17 ) in - 'A4_EXTRA' => array( 666.142, 912.756), // = ( 235 x 322 ) mm = ( 9.25 x 12.68 ) in - 'A4_SUPER' => array( 649.134, 912.756), // = ( 229 x 322 ) mm = ( 9.02 x 12.68 ) in - 'SUPER_A4' => array( 643.465, 1009.134), // = ( 227 x 356 ) mm = ( 8.94 x 14.02 ) in - 'A4_LONG' => array( 595.276, 986.457), // = ( 210 x 348 ) mm = ( 8.27 x 13.70 ) in - 'F4' => array( 595.276, 935.433), // = ( 210 x 330 ) mm = ( 8.27 x 12.99 ) in - 'SO_B5_EXTRA' => array( 572.598, 782.362), // = ( 202 x 276 ) mm = ( 7.95 x 10.87 ) in - 'A5_EXTRA' => array( 490.394, 666.142), // = ( 173 x 235 ) mm = ( 6.81 x 9.25 ) in - // ANSI Series - 'ANSI_E' => array( 2448.000, 3168.000), // = ( 864 x 1118 ) mm = ( 34.00 x 44.00 ) in - 'ANSI_D' => array( 1584.000, 2448.000), // = ( 559 x 864 ) mm = ( 22.00 x 34.00 ) in - 'ANSI_C' => array( 1224.000, 1584.000), // = ( 432 x 559 ) mm = ( 17.00 x 22.00 ) in - 'ANSI_B' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ANSI_A' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - // Traditional 'Loose' North American Paper Sizes - 'USLEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'LEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'ORGANIZERK' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'BIBLE' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'USTABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'TABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ORGANIZERM' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'LETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'LEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'GOVERNMENTLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'GLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'JUNIORLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - 'JLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - // Other North American Paper Sizes - 'QUADDEMY' => array( 2520.000, 3240.000), // = ( 889 x 1143 ) mm = ( 35.00 x 45.00 ) in - 'SUPER_B' => array( 936.000, 1368.000), // = ( 330 x 483 ) mm = ( 13.00 x 19.00 ) in - 'QUARTO' => array( 648.000, 792.000), // = ( 229 x 279 ) mm = ( 9.00 x 11.00 ) in - 'GOVERNMENTLEGAL' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'FOLIO' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'MONARCH' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'EXECUTIVE' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'ORGANIZERL' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'STATEMENT' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'MEMO' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'FOOLSCAP' => array( 595.440, 936.000), // = ( 210 x 330 ) mm = ( 8.27 x 13.00 ) in - 'COMPACT' => array( 306.000, 486.000), // = ( 108 x 171 ) mm = ( 4.25 x 6.75 ) in - 'ORGANIZERJ' => array( 198.000, 360.000), // = ( 70 x 127 ) mm = ( 2.75 x 5.00 ) in - // Canadian standard CAN 2-9.60M - 'P1' => array( 1587.402, 2437.795), // = ( 560 x 860 ) mm = ( 22.05 x 33.86 ) in - 'P2' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'P3' => array( 793.701, 1218.898), // = ( 280 x 430 ) mm = ( 11.02 x 16.93 ) in - 'P4' => array( 609.449, 793.701), // = ( 215 x 280 ) mm = ( 8.46 x 11.02 ) in - 'P5' => array( 396.850, 609.449), // = ( 140 x 215 ) mm = ( 5.51 x 8.46 ) in - 'P6' => array( 303.307, 396.850), // = ( 107 x 140 ) mm = ( 4.21 x 5.51 ) in - // North American Architectural Sizes - 'ARCH_E' => array( 2592.000, 3456.000), // = ( 914 x 1219 ) mm = ( 36.00 x 48.00 ) in - 'ARCH_E1' => array( 2160.000, 3024.000), // = ( 762 x 1067 ) mm = ( 30.00 x 42.00 ) in - 'ARCH_D' => array( 1728.000, 2592.000), // = ( 610 x 914 ) mm = ( 24.00 x 36.00 ) in - 'BROADSHEET' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_C' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_B' => array( 864.000, 1296.000), // = ( 305 x 457 ) mm = ( 12.00 x 18.00 ) in - 'ARCH_A' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - // -- North American Envelope Sizes - // - Announcement Envelopes - 'ANNENV_A2' => array( 314.640, 414.000), // = ( 111 x 146 ) mm = ( 4.37 x 5.75 ) in - 'ANNENV_A6' => array( 342.000, 468.000), // = ( 121 x 165 ) mm = ( 4.75 x 6.50 ) in - 'ANNENV_A7' => array( 378.000, 522.000), // = ( 133 x 184 ) mm = ( 5.25 x 7.25 ) in - 'ANNENV_A8' => array( 396.000, 584.640), // = ( 140 x 206 ) mm = ( 5.50 x 8.12 ) in - 'ANNENV_A10' => array( 450.000, 692.640), // = ( 159 x 244 ) mm = ( 6.25 x 9.62 ) in - 'ANNENV_SLIM' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - // - Commercial Envelopes - 'COMMENV_N6_1/4' => array( 252.000, 432.000), // = ( 89 x 152 ) mm = ( 3.50 x 6.00 ) in - 'COMMENV_N6_3/4' => array( 260.640, 468.000), // = ( 92 x 165 ) mm = ( 3.62 x 6.50 ) in - 'COMMENV_N8' => array( 278.640, 540.000), // = ( 98 x 191 ) mm = ( 3.87 x 7.50 ) in - 'COMMENV_N9' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - 'COMMENV_N10' => array( 296.640, 684.000), // = ( 105 x 241 ) mm = ( 4.12 x 9.50 ) in - 'COMMENV_N11' => array( 324.000, 746.640), // = ( 114 x 263 ) mm = ( 4.50 x 10.37 ) in - 'COMMENV_N12' => array( 342.000, 792.000), // = ( 121 x 279 ) mm = ( 4.75 x 11.00 ) in - 'COMMENV_N14' => array( 360.000, 828.000), // = ( 127 x 292 ) mm = ( 5.00 x 11.50 ) in - // - Catalogue Envelopes - 'CATENV_N1' => array( 432.000, 648.000), // = ( 152 x 229 ) mm = ( 6.00 x 9.00 ) in - 'CATENV_N1_3/4' => array( 468.000, 684.000), // = ( 165 x 241 ) mm = ( 6.50 x 9.50 ) in - 'CATENV_N2' => array( 468.000, 720.000), // = ( 165 x 254 ) mm = ( 6.50 x 10.00 ) in - 'CATENV_N3' => array( 504.000, 720.000), // = ( 178 x 254 ) mm = ( 7.00 x 10.00 ) in - 'CATENV_N6' => array( 540.000, 756.000), // = ( 191 x 267 ) mm = ( 7.50 x 10.50 ) in - 'CATENV_N7' => array( 576.000, 792.000), // = ( 203 x 279 ) mm = ( 8.00 x 11.00 ) in - 'CATENV_N8' => array( 594.000, 810.000), // = ( 210 x 286 ) mm = ( 8.25 x 11.25 ) in - 'CATENV_N9_1/2' => array( 612.000, 756.000), // = ( 216 x 267 ) mm = ( 8.50 x 10.50 ) in - 'CATENV_N9_3/4' => array( 630.000, 810.000), // = ( 222 x 286 ) mm = ( 8.75 x 11.25 ) in - 'CATENV_N10_1/2' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - 'CATENV_N12_1/2' => array( 684.000, 900.000), // = ( 241 x 318 ) mm = ( 9.50 x 12.50 ) in - 'CATENV_N13_1/2' => array( 720.000, 936.000), // = ( 254 x 330 ) mm = ( 10.00 x 13.00 ) in - 'CATENV_N14_1/4' => array( 810.000, 882.000), // = ( 286 x 311 ) mm = ( 11.25 x 12.25 ) in - 'CATENV_N14_1/2' => array( 828.000, 1044.000), // = ( 292 x 368 ) mm = ( 11.50 x 14.50 ) in - // Japanese (JIS P 0138-61) Standard B-Series - 'JIS_B0' => array( 2919.685, 4127.244), // = ( 1030 x 1456 ) mm = ( 40.55 x 57.32 ) in - 'JIS_B1' => array( 2063.622, 2919.685), // = ( 728 x 1030 ) mm = ( 28.66 x 40.55 ) in - 'JIS_B2' => array( 1459.843, 2063.622), // = ( 515 x 728 ) mm = ( 20.28 x 28.66 ) in - 'JIS_B3' => array( 1031.811, 1459.843), // = ( 364 x 515 ) mm = ( 14.33 x 20.28 ) in - 'JIS_B4' => array( 728.504, 1031.811), // = ( 257 x 364 ) mm = ( 10.12 x 14.33 ) in - 'JIS_B5' => array( 515.906, 728.504), // = ( 182 x 257 ) mm = ( 7.17 x 10.12 ) in - 'JIS_B6' => array( 362.835, 515.906), // = ( 128 x 182 ) mm = ( 5.04 x 7.17 ) in - 'JIS_B7' => array( 257.953, 362.835), // = ( 91 x 128 ) mm = ( 3.58 x 5.04 ) in - 'JIS_B8' => array( 181.417, 257.953), // = ( 64 x 91 ) mm = ( 2.52 x 3.58 ) in - 'JIS_B9' => array( 127.559, 181.417), // = ( 45 x 64 ) mm = ( 1.77 x 2.52 ) in - 'JIS_B10' => array( 90.709, 127.559), // = ( 32 x 45 ) mm = ( 1.26 x 1.77 ) in - 'JIS_B11' => array( 62.362, 90.709), // = ( 22 x 32 ) mm = ( 0.87 x 1.26 ) in - 'JIS_B12' => array( 45.354, 62.362), // = ( 16 x 22 ) mm = ( 0.63 x 0.87 ) in - // PA Series - 'PA0' => array( 2381.102, 3174.803), // = ( 840 x 1120 ) mm = ( 33.07 x 44.09 ) in - 'PA1' => array( 1587.402, 2381.102), // = ( 560 x 840 ) mm = ( 22.05 x 33.07 ) in - 'PA2' => array( 1190.551, 1587.402), // = ( 420 x 560 ) mm = ( 16.54 x 22.05 ) in - 'PA3' => array( 793.701, 1190.551), // = ( 280 x 420 ) mm = ( 11.02 x 16.54 ) in - 'PA4' => array( 595.276, 793.701), // = ( 210 x 280 ) mm = ( 8.27 x 11.02 ) in - 'PA5' => array( 396.850, 595.276), // = ( 140 x 210 ) mm = ( 5.51 x 8.27 ) in - 'PA6' => array( 297.638, 396.850), // = ( 105 x 140 ) mm = ( 4.13 x 5.51 ) in - 'PA7' => array( 198.425, 297.638), // = ( 70 x 105 ) mm = ( 2.76 x 4.13 ) in - 'PA8' => array( 147.402, 198.425), // = ( 52 x 70 ) mm = ( 2.05 x 2.76 ) in - 'PA9' => array( 99.213, 147.402), // = ( 35 x 52 ) mm = ( 1.38 x 2.05 ) in - 'PA10' => array( 73.701, 99.213), // = ( 26 x 35 ) mm = ( 1.02 x 1.38 ) in - // Standard Photographic Print Sizes - 'PASSPORT_PHOTO' => array( 99.213, 127.559), // = ( 35 x 45 ) mm = ( 1.38 x 1.77 ) in - 'E' => array( 233.858, 340.157), // = ( 82 x 120 ) mm = ( 3.25 x 4.72 ) in - 'L' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - '3R' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - 'KG' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4R' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4D' => array( 340.157, 430.866), // = ( 120 x 152 ) mm = ( 4.72 x 5.98 ) in - '2L' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '5R' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '8P' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6R' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6P' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '8R' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '6PW' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - 'S8R' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - '4P' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '10R' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '4PW' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - 'S10R' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - '11R' => array( 790.866, 1009.134), // = ( 279 x 356 ) mm = ( 10.98 x 14.02 ) in - 'S11R' => array( 790.866, 1224.567), // = ( 279 x 432 ) mm = ( 10.98 x 17.01 ) in - '12R' => array( 864.567, 1080.000), // = ( 305 x 381 ) mm = ( 12.01 x 15.00 ) in - 'S12R' => array( 864.567, 1292.598), // = ( 305 x 456 ) mm = ( 12.01 x 17.95 ) in - // Common Newspaper Sizes - 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787), // = ( 750 x 600 ) mm = ( 29.53 x 23.62 ) in - 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913), // = ( 470 x 315 ) mm = ( 18.50 x 12.40 ) in - 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - // Business Cards - 'CREDIT_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'BUSINESS_CARD_IT' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_UK' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_FR' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_DE' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_ES' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_CA' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_US' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_JP' => array( 155.906, 257.953), // = ( 55 x 91 ) mm = ( 2.17 x 3.58 ) in - 'BUSINESS_CARD_HK' => array( 153.071, 255.118), // = ( 54 x 90 ) mm = ( 2.13 x 3.54 ) in - 'BUSINESS_CARD_AU' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_DK' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_SE' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_RU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_CZ' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_FI' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_HU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_IL' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - // Billboards - '4SHEET' => array( 2880.000, 4320.000), // = ( 1016 x 1524 ) mm = ( 40.00 x 60.00 ) in - '6SHEET' => array( 3401.575, 5102.362), // = ( 1200 x 1800 ) mm = ( 47.24 x 70.87 ) in - '12SHEET' => array( 8640.000, 4320.000), // = ( 3048 x 1524 ) mm = (120.00 x 60.00 ) in - '16SHEET' => array( 5760.000, 8640.000), // = ( 2032 x 3048 ) mm = ( 80.00 x 120.00) in - '32SHEET' => array(11520.000, 8640.000), // = ( 4064 x 3048 ) mm = (160.00 x 120.00) in - '48SHEET' => array(17280.000, 8640.000), // = ( 6096 x 3048 ) mm = (240.00 x 120.00) in - '64SHEET' => array(23040.000, 8640.000), // = ( 8128 x 3048 ) mm = (320.00 x 120.00) in - '96SHEET' => array(34560.000, 8640.000), // = (12192 x 3048 ) mm = (480.00 x 120.00) in - // -- Old European Sizes - // - Old Imperial English Sizes - 'EN_EMPEROR' => array( 3456.000, 5184.000), // = ( 1219 x 1829 ) mm = ( 48.00 x 72.00 ) in - 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000), // = ( 787 x 1346 ) mm = ( 31.00 x 53.00 ) in - 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000), // = ( 730 x 1067 ) mm = ( 28.75 x 42.00 ) in - 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000), // = ( 679 x 1016 ) mm = ( 26.75 x 40.00 ) in - 'EN_ATLAS' => array( 1872.000, 2448.000), // = ( 660 x 864 ) mm = ( 26.00 x 34.00 ) in - 'EN_COLOMBIER' => array( 1692.000, 2484.000), // = ( 597 x 876 ) mm = ( 23.50 x 34.50 ) in - 'EN_ELEPHANT' => array( 1656.000, 2016.000), // = ( 584 x 711 ) mm = ( 23.00 x 28.00 ) in - 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000), // = ( 572 x 902 ) mm = ( 22.50 x 35.50 ) in - 'EN_IMPERIAL' => array( 1584.000, 2160.000), // = ( 559 x 762 ) mm = ( 22.00 x 30.00 ) in - 'EN_PRINCESS' => array( 1548.000, 2016.000), // = ( 546 x 711 ) mm = ( 21.50 x 28.00 ) in - 'EN_CARTRIDGE' => array( 1512.000, 1872.000), // = ( 533 x 660 ) mm = ( 21.00 x 26.00 ) in - 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000), // = ( 533 x 838 ) mm = ( 21.00 x 33.00 ) in - 'EN_ROYAL' => array( 1440.000, 1800.000), // = ( 508 x 635 ) mm = ( 20.00 x 25.00 ) in - 'EN_SHEET' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_HALF_POST' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000), // = ( 483 x 686 ) mm = ( 19.00 x 27.00 ) in - 'EN_DOUBLE_POST' => array( 1368.000, 2196.000), // = ( 483 x 775 ) mm = ( 19.00 x 30.50 ) in - 'EN_MEDIUM' => array( 1260.000, 1656.000), // = ( 445 x 584 ) mm = ( 17.50 x 23.00 ) in - 'EN_DEMY' => array( 1260.000, 1620.000), // = ( 445 x 572 ) mm = ( 17.50 x 22.50 ) in - 'EN_LARGE_POST' => array( 1188.000, 1512.000), // = ( 419 x 533 ) mm = ( 16.50 x 21.00 ) in - 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000), // = ( 406 x 508 ) mm = ( 16.00 x 20.00 ) in - 'EN_POST' => array( 1116.000, 1386.000), // = ( 394 x 489 ) mm = ( 15.50 x 19.25 ) in - 'EN_CROWN' => array( 1080.000, 1440.000), // = ( 381 x 508 ) mm = ( 15.00 x 20.00 ) in - 'EN_PINCHED_POST' => array( 1062.000, 1332.000), // = ( 375 x 470 ) mm = ( 14.75 x 18.50 ) in - 'EN_BRIEF' => array( 972.000, 1152.000), // = ( 343 x 406 ) mm = ( 13.50 x 16.00 ) in - 'EN_FOOLSCAP' => array( 972.000, 1224.000), // = ( 343 x 432 ) mm = ( 13.50 x 17.00 ) in - 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000), // = ( 337 x 419 ) mm = ( 13.25 x 16.50 ) in - 'EN_POTT' => array( 900.000, 1080.000), // = ( 318 x 381 ) mm = ( 12.50 x 15.00 ) in - // - Old Imperial Belgian Sizes - 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031), // = ( 700 x 1040 ) mm = ( 27.56 x 40.94 ) in - 'BE_COLOMBIER' => array( 1757.480, 2409.449), // = ( 620 x 850 ) mm = ( 24.41 x 33.46 ) in - 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'BE_ELEPHANT' => array( 1746.142, 2182.677), // = ( 616 x 770 ) mm = ( 24.25 x 30.31 ) in - 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102), // = ( 600 x 840 ) mm = ( 23.62 x 33.07 ) in - 'BE_GRAND_JESUS' => array( 1559.055, 2069.291), // = ( 550 x 730 ) mm = ( 21.65 x 28.74 ) in - 'BE_JESUS' => array( 1530.709, 2069.291), // = ( 540 x 730 ) mm = ( 21.26 x 28.74 ) in - 'BE_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961), // = ( 460 x 605 ) mm = ( 18.11 x 23.82 ) in - 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575), // = ( 435 x 565 ) mm = ( 17.13 x 22.24 ) in - 'BE_COQUILLE' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362), // = ( 415 x 530 ) mm = ( 16.34 x 20.87 ) in - 'BE_RUCHE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'BE_PROPATRIA' => array( 977.953, 1218.898), // = ( 345 x 430 ) mm = ( 13.58 x 16.93 ) in - 'BE_LYS' => array( 898.583, 1125.354), // = ( 317 x 397 ) mm = ( 12.48 x 15.63 ) in - 'BE_POT' => array( 870.236, 1088.504), // = ( 307 x 384 ) mm = ( 12.09 x 15.12 ) in - 'BE_ROSETTE' => array( 765.354, 983.622), // = ( 270 x 347 ) mm = ( 10.63 x 13.66 ) in - // - Old Imperial French Sizes - 'FR_UNIVERS' => array( 2834.646, 3685.039), // = ( 1000 x 1300 ) mm = ( 39.37 x 51.18 ) in - 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575), // = ( 800 x 1200 ) mm = ( 31.50 x 47.24 ) in - 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803), // = ( 760 x 1120 ) mm = ( 29.92 x 44.09 ) in - 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724), // = ( 750 x 1060 ) mm = ( 29.53 x 41.73 ) in - 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567), // = ( 700 x 940 ) mm = ( 27.56 x 37.01 ) in - 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646), // = ( 650 x 1000 ) mm = ( 25.59 x 39.37 ) in - 'FR_JOURNAL' => array( 1842.520, 2664.567), // = ( 650 x 940 ) mm = ( 25.59 x 37.01 ) in - 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181), // = ( 630 x 900 ) mm = ( 24.80 x 35.43 ) in - 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'FR_CLOCHE' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_SOLEIL' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181), // = ( 560 x 900 ) mm = ( 22.05 x 35.43 ) in - 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488), // = ( 560 x 880 ) mm = ( 22.05 x 34.65 ) in - 'FR_JESUS' => array( 1587.402, 2154.331), // = ( 560 x 760 ) mm = ( 22.05 x 29.92 ) in - 'FR_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'FR_CAVALIER' => array( 1303.937, 1757.480), // = ( 460 x 620 ) mm = ( 18.11 x 24.41 ) in - 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945), // = ( 460 x 720 ) mm = ( 18.11 x 28.35 ) in - 'FR_CARRE' => array( 1275.591, 1587.402), // = ( 450 x 560 ) mm = ( 17.72 x 22.05 ) in - 'FR_COQUILLE' => array( 1247.244, 1587.402), // = ( 440 x 560 ) mm = ( 17.32 x 22.05 ) in - 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559), // = ( 440 x 680 ) mm = ( 17.32 x 26.77 ) in - 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787), // = ( 400 x 600 ) mm = ( 15.75 x 23.62 ) in - 'FR_DOUBLE_POT' => array( 1133.858, 1757.480), // = ( 400 x 620 ) mm = ( 15.75 x 24.41 ) in - 'FR_ECU' => array( 1133.858, 1474.016), // = ( 400 x 520 ) mm = ( 15.75 x 20.47 ) in - 'FR_COURONNE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'FR_TELLIERE' => array( 963.780, 1247.244), // = ( 340 x 440 ) mm = ( 13.39 x 17.32 ) in - 'FR_POT' => array( 878.740, 1133.858), // = ( 310 x 400 ) mm = ( 12.20 x 15.75 ) in - ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -517,158 +161,6 @@ class TCPDF_STATIC { return 0; } - /** - * Get page dimensions from format name. - * @param $format (mixed) The format name @see self::$page_format
      - * @return array containing page width and height in points - * @since 5.0.010 (2010-05-17) - * @public static - */ - public static function getPageSizeFromFormat($format) { - if (isset(self::$page_formats[$format])) { - return self::$page_formats[$format]; - } - return self::$page_formats['A4']; - } - - /** - * Set page boundaries. - * @param $page (int) page number - * @param $type (string) valid values are:
      • 'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;
      • 'CropBox' : the visible region of default user space;
      • 'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;
      • 'TrimBox' : the intended dimensions of the finished page after trimming;
      • 'ArtBox' : the page's meaningful content (including potential white space).
      - * @param $llx (float) lower-left x coordinate in user units. - * @param $lly (float) lower-left y coordinate in user units. - * @param $urx (float) upper-right x coordinate in user units. - * @param $ury (float) upper-right y coordinate in user units. - * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. - * @param $k (float) Scale factor (number of points in user unit). - * @param $pagedim (array) Array of page dimensions. - * @return pagedim array of page dimensions. - * @since 5.0.010 (2010-05-17) - * @public static - */ - public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { - if (!isset($pagedim[$page])) { - // initialize array - $pagedim[$page] = array(); - } - if (!in_array($type, self::$pageboxes)) { - return; - } - if ($points) { - $k = 1; - } - $pagedim[$page][$type]['llx'] = ($llx * $k); - $pagedim[$page][$type]['lly'] = ($lly * $k); - $pagedim[$page][$type]['urx'] = ($urx * $k); - $pagedim[$page][$type]['ury'] = ($ury * $k); - return $pagedim; - } - - /** - * Swap X and Y coordinates of page boxes (change page boxes orientation). - * @param $page (int) page number - * @param $pagedim (array) Array of page dimensions. - * @return pagedim array of page dimensions. - * @since 5.0.010 (2010-05-17) - * @public static - */ - public static function swapPageBoxCoordinates($page, $pagedim) { - foreach (self::$pageboxes as $type) { - // swap X and Y coordinates - if (isset($pagedim[$page][$type])) { - $tmp = $pagedim[$page][$type]['llx']; - $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; - $pagedim[$page][$type]['lly'] = $tmp; - $tmp = $pagedim[$page][$type]['urx']; - $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; - $pagedim[$page][$type]['ury'] = $tmp; - } - } - return $pagedim; - } - - /** - * Get the canonical page layout mode. - * @param $layout (string) The page layout. Possible values are:
      • SinglePage Display one page at a time
      • OneColumn Display the pages in one column
      • TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left
      • TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right
      • TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left
      • TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right
      - * @return (string) Canonical page layout name. - * @public static - */ - public static function getPageLayoutMode($layout='SinglePage') { - switch ($layout) { - case 'default': - case 'single': - case 'SinglePage': { - $layout_mode = 'SinglePage'; - break; - } - case 'continuous': - case 'OneColumn': { - $layout_mode = 'OneColumn'; - break; - } - case 'two': - case 'TwoColumnLeft': { - $layout_mode = 'TwoColumnLeft'; - break; - } - case 'TwoColumnRight': { - $layout_mode = 'TwoColumnRight'; - break; - } - case 'TwoPageLeft': { - $layout_mode = 'TwoPageLeft'; - break; - } - case 'TwoPageRight': { - $layout_mode = 'TwoPageRight'; - break; - } - default: { - $layout_mode = 'SinglePage'; - } - } - return $layout_mode; - } - - /** - * Get the canonical page layout mode. - * @param $mode (string) A name object specifying how the document should be displayed when opened:
      • UseNone Neither document outline nor thumbnail images visible
      • UseOutlines Document outline visible
      • UseThumbs Thumbnail images visible
      • FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible
      • UseOC (PDF 1.5) Optional content group panel visible
      • UseAttachments (PDF 1.6) Attachments panel visible
      - * @return (string) Canonical page mode name. - * @public static - */ - public static function getPageMode($mode='UseNone') { - switch ($mode) { - case 'UseNone': { - $page_mode = 'UseNone'; - break; - } - case 'UseOutlines': { - $page_mode = 'UseOutlines'; - break; - } - case 'UseThumbs': { - $page_mode = 'UseThumbs'; - break; - } - case 'FullScreen': { - $page_mode = 'FullScreen'; - break; - } - case 'UseOC': { - $page_mode = 'UseOC'; - break; - } - case '': { - $page_mode = 'UseAttachments'; - break; - } - default: { - $page_mode = 'UseNone'; - } - } - return $page_mode; - } - /** * Check if the URL exist. * @param $url (string) URL to check. @@ -904,143 +396,6 @@ class TCPDF_STATIC { return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\''; } - /** - * Get ULONG from string (Big Endian 32-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 32 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getULONG($str, $offset) { - $v = unpack('Ni', substr($str, $offset, 4)); - return $v['i']; - } - - /** - * Get USHORT from string (Big Endian 16-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getUSHORT($str, $offset) { - $v = unpack('ni', substr($str, $offset, 2)); - return $v['i']; - } - - /** - * Get SHORT from string (Big Endian 16-bit signed integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getSHORT($str, $offset) { - $v = unpack('si', substr($str, $offset, 2)); - return $v['i']; - } - - /** - * Get FWORD from string (Big Endian 16-bit signed integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getFWORD($str, $offset) { - $v = self::_getUSHORT($str, $offset); - if ($v > 0x7fff) { - $v -= 0x10000; - } - return $v; - } - - /** - * Get UFWORD from string (Big Endian 16-bit unsigned integer). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getUFWORD($str, $offset) { - $v = self::_getUSHORT($str, $offset); - return $v; - } - - /** - * Get FIXED from string (32-bit signed fixed-point number (16.16). - * @param $str (string) string from where to extract value - * @param $offset (int) point from where to read the data - * @return int 16 bit value - * @author Nicola Asuni - * @since 5.9.123 (2011-09-30) - * @public static - */ - public static function _getFIXED($str, $offset) { - // mantissa - $m = self::_getFWORD($str, $offset); - // fraction - $f = self::_getUSHORT($str, ($offset + 2)); - $v = floatval(''.$m.'.'.$f.''); - return $v; - } - - /** - * Get BYTE from string (8-bit unsigned integer). - * @param $str (string) String from where to extract value. - * @param $offset (int) Point from where to read the data. - * @return int 8 bit value - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getBYTE($str, $offset) { - $v = unpack('Ci', substr($str, $offset, 1)); - return $v['i']; - } - /** - * Binary-safe and URL-safe file read. - * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. - * @param $handle (resource) - * @param $length (int) - * @return Returns the read string or FALSE in case of error. - * @author Nicola Asuni - * @since 4.5.027 (2009-03-16) - * @public static - */ - public static function rfread($handle, $length) { - $data = fread($handle, $length); - if ($data === false) { - return false; - } - $rest = ($length - strlen($data)); - if ($rest > 0) { - $data .= self::rfread($handle, $rest); - } - return $data; - } - - /** - * Read a 4-byte (32 bit) integer from file. - * @param $f (string) file name. - * @return 4-byte integer - * @public static - */ - public static function _freadint($f) { - $a = unpack('Ni', fread($f, 4)); - return $a['i']; - } - /** * Returns a string containing random data to be used as a seed for encryption methods. * @param $seed (string) starting seed value @@ -1078,7 +433,7 @@ class TCPDF_STATIC { /** * Returns the input text exrypted using AES algorithm and the specified key. - * This method requires mcrypt. + * This method requires openssl or mcrypt. Text is padded to 16bytes blocks * @param $key (string) encryption key * @param $text (String) input text to be encrypted * @return String encrypted text @@ -1090,12 +445,38 @@ class TCPDF_STATIC { // padding (RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0) $padding = 16 - (strlen($text) % 16); $text .= str_repeat(chr($padding), $padding); + if (extension_loaded('openssl')) { + $iv = openssl_random_pseudo_bytes (openssl_cipher_iv_length('aes-256-cbc')); + $text = openssl_encrypt($text, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); + return $iv.substr($text, 0, -16); + } $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); $text = $iv.$text; return $text; } + /** + * Returns the input text exrypted using AES algorithm and the specified key. + * This method requires openssl or mcrypt. Text is not padded + * @param $key (string) encryption key + * @param $text (String) input text to be encrypted + * @return String encrypted text + * @author Nicola Asuni + * @since TODO + * @public static + */ + public static function _AESnopad($key, $text) { + if (extension_loaded('openssl')) { + $iv = str_repeat("\x00", openssl_cipher_iv_length('aes-256-cbc')); + $text = openssl_encrypt($text, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); + return substr($text, 0, -16); + } + $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); + $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); + return $text; + } + /** * Returns the input text encrypted using RC4 algorithm and the specified key. * RC4 is the standard encryption algorithm used in PDF format @@ -2393,6 +1774,39 @@ class TCPDF_STATIC { return $angle; } + + + + + + + + + + + + + + + + +// ==================================================================================================================== +// REIMPLEMENTED +// ==================================================================================================================== + + + + + + + + + + + + + + /** * Split string by a regular expression. * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850 @@ -2434,7 +1848,7 @@ class TCPDF_STATIC { public static function fopenLocal($filename, $mode) { if (strpos($filename, '://') === false) { $filename = 'file://'.$filename; - } elseif (strpos($filename, 'file://') !== 0) { + } elseif (stream_is_local($filename) !== true) { return false; } return fopen($filename, $mode); @@ -2450,77 +1864,741 @@ class TCPDF_STATIC { * @public static */ public static function fileGetContents($file) { - //$file = html_entity_decode($file); - // array of possible alternative paths/URLs $alt = array($file); - // replace URL relative path with full real server path + // if ((strlen($file) > 1) - AND ($file[0] == '/') - AND ($file[1] != '/') - AND !empty($_SERVER['DOCUMENT_ROOT']) - AND ($_SERVER['DOCUMENT_ROOT'] != '/')) { - $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); - if (($findroot === false) OR ($findroot > 1)) { - if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') { - $tmp = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$file; - } else { - $tmp = $_SERVER['DOCUMENT_ROOT'].$file; - } - $alt[] = htmlspecialchars_decode(urldecode($tmp)); - } + && ($file[0] === '/') + && ($file[1] !== '/') + && !empty($_SERVER['DOCUMENT_ROOT']) + && ($_SERVER['DOCUMENT_ROOT'] !== '/') + ) { + $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); + if (($findroot === false) || ($findroot > 1)) { + $alt[] = htmlspecialchars_decode(urldecode($_SERVER['DOCUMENT_ROOT'].$file)); + } } - // URL mode + // + $protocol = 'http'; + if (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) { + $protocol .= 's'; + } + // $url = $file; - // check for missing protocol - if (preg_match('%^/{2}%', $url)) { - if (preg_match('%^([^:]+:)//%i', K_PATH_URL, $match)) { - $url = $match[1].str_replace(' ', '%20', $url); - $alt[] = $url; - } + if (preg_match('%^//%', $url) && !empty($_SERVER['HTTP_HOST'])) { + $url = $protocol.':'.str_replace(' ', '%20', $url); } - $urldata = @parse_url($url); - if (!isset($urldata['query']) OR (strlen($urldata['query']) <= 0)) { - if (K_PATH_URL AND (strpos($url, K_PATH_URL) === 0)) { - // convert URL to full server path - $tmp = str_replace(K_PATH_URL, K_PATH_MAIN, $url); - $tmp = htmlspecialchars_decode(urldecode($tmp)); - $alt[] = $tmp; - } - } - if (isset($_SERVER['SCRIPT_URI'])) { - $urldata = @parse_url($_SERVER['SCRIPT_URI']); - $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; - } - foreach ($alt as $f) { - $ret = @file_get_contents($f); - if (($ret === FALSE) - AND !ini_get('allow_url_fopen') - AND function_exists('curl_init') - AND preg_match('%^(https?|ftp)://%', $f)) { - // try to get remote file data using cURL - $cs = curl_init(); // curl session - curl_setopt($cs, CURLOPT_URL, $f); - curl_setopt($cs, CURLOPT_BINARYTRANSFER, true); - curl_setopt($cs, CURLOPT_FAILONERROR, true); - curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); - if ((ini_get('open_basedir') == '') AND (!ini_get('safe_mode'))) { - curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true); + $url = htmlspecialchars_decode($url); + $alt[] = $url; + // + if (preg_match('%^(https?)://%', $url) + && empty($_SERVER['HTTP_HOST']) + && empty($_SERVER['DOCUMENT_ROOT']) + ) { + $urldata = parse_url($url); + if (empty($urldata['query'])) { + $host = $protocol.'://'.$_SERVER['HTTP_HOST']; + if (strpos($url, $host) === 0) { + // convert URL to full server path + $tmp = str_replace($host, $_SERVER['DOCUMENT_ROOT'], $url); + $alt[] = htmlspecialchars_decode(urldecode($tmp)); } - curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($cs, CURLOPT_TIMEOUT, 30); - curl_setopt($cs, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($cs, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($cs, CURLOPT_USERAGENT, 'TCPDF'); - $ret = curl_exec($cs); - curl_close($cs); } - if ($ret !== FALSE) { + } + // + if (isset($_SERVER['SCRIPT_URI']) + && !preg_match('%^(https?|ftp)://%', $file) + && !preg_match('%^//%', $file) + ) { + $urldata = @parse_url($_SERVER['SCRIPT_URI']); + return $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; + } + // + $alt = array_unique($alt); + //var_dump($alt);exit;//DEBUG + foreach ($alt as $path) { + $ret = @file_get_contents($path); + if ($ret !== false) { + return $ret; + } + // try to use CURL for URLs + if (!ini_get('allow_url_fopen') + && function_exists('curl_init') + && preg_match('%^(https?|ftp)://%', $path) + ) { + // try to get remote file data using cURL + $crs = curl_init(); + curl_setopt($crs, CURLOPT_URL, $path); + curl_setopt($crs, CURLOPT_BINARYTRANSFER, true); + curl_setopt($crs, CURLOPT_FAILONERROR, true); + curl_setopt($crs, CURLOPT_RETURNTRANSFER, true); + if ((ini_get('open_basedir') == '') && (!ini_get('safe_mode'))) { + curl_setopt($crs, CURLOPT_FOLLOWLOCATION, true); + } + curl_setopt($crs, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($crs, CURLOPT_TIMEOUT, 30); + curl_setopt($crs, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($crs, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($crs, CURLOPT_USERAGENT, 'tc-lib-file'); + $ret = curl_exec($crs); + curl_close($crs); + if ($ret !== false) { + return $ret; + } + } + } + return false; + } + + + + /** + * Get ULONG from string (Big Endian 32-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 32 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getULONG($str, $offset) { + $v = unpack('Ni', substr($str, $offset, 4)); + return $v['i']; + } + + /** + * Get USHORT from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getUSHORT($str, $offset) { + $v = unpack('ni', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get SHORT from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getSHORT($str, $offset) { + $v = unpack('si', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get FWORD from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + if ($v > 0x7fff) { + $v -= 0x10000; + } + return $v; + } + + /** + * Get UFWORD from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getUFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + return $v; + } + + /** + * Get FIXED from string (32-bit signed fixed-point number (16.16). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFIXED($str, $offset) { + // mantissa + $m = self::_getFWORD($str, $offset); + // fraction + $f = self::_getUSHORT($str, ($offset + 2)); + $v = floatval(''.$m.'.'.$f.''); + return $v; + } + + /** + * Get BYTE from string (8-bit unsigned integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 8 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getBYTE($str, $offset) { + $v = unpack('Ci', substr($str, $offset, 1)); + return $v['i']; + } + /** + * Binary-safe and URL-safe file read. + * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. + * @param $handle (resource) + * @param $length (int) + * @return Returns the read string or FALSE in case of error. + * @author Nicola Asuni + * @since 4.5.027 (2009-03-16) + * @public static + */ + public static function rfread($handle, $length) { + $data = fread($handle, $length); + if ($data === false) { + return false; + } + $rest = ($length - strlen($data)); + if (($rest > 0) && !feof($handle)) { + $data .= self::rfread($handle, $rest); + } + return $data; + } + + /** + * Read a 4-byte (32 bit) integer from file. + * @param $f (string) file name. + * @return 4-byte integer + * @public static + */ + public static function _freadint($f) { + $a = unpack('Ni', fread($f, 4)); + return $a['i']; + } + + + /** + * Array of page formats + * measures are calculated in this way: (inches * 72) or (millimeters * 72 / 25.4) + * @public static + */ + public static $page_formats = array( + // ISO 216 A Series + 2 SIS 014711 extensions + 'A0' => array( 2383.937, 3370.394), // = ( 841 x 1189 ) mm = ( 33.11 x 46.81 ) in + 'A1' => array( 1683.780, 2383.937), // = ( 594 x 841 ) mm = ( 23.39 x 33.11 ) in + 'A2' => array( 1190.551, 1683.780), // = ( 420 x 594 ) mm = ( 16.54 x 23.39 ) in + 'A3' => array( 841.890, 1190.551), // = ( 297 x 420 ) mm = ( 11.69 x 16.54 ) in + 'A4' => array( 595.276, 841.890), // = ( 210 x 297 ) mm = ( 8.27 x 11.69 ) in + 'A5' => array( 419.528, 595.276), // = ( 148 x 210 ) mm = ( 5.83 x 8.27 ) in + 'A6' => array( 297.638, 419.528), // = ( 105 x 148 ) mm = ( 4.13 x 5.83 ) in + 'A7' => array( 209.764, 297.638), // = ( 74 x 105 ) mm = ( 2.91 x 4.13 ) in + 'A8' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in + 'A9' => array( 104.882, 147.402), // = ( 37 x 52 ) mm = ( 1.46 x 2.05 ) in + 'A10' => array( 73.701, 104.882), // = ( 26 x 37 ) mm = ( 1.02 x 1.46 ) in + 'A11' => array( 51.024, 73.701), // = ( 18 x 26 ) mm = ( 0.71 x 1.02 ) in + 'A12' => array( 36.850, 51.024), // = ( 13 x 18 ) mm = ( 0.51 x 0.71 ) in + // ISO 216 B Series + 2 SIS 014711 extensions + 'B0' => array( 2834.646, 4008.189), // = ( 1000 x 1414 ) mm = ( 39.37 x 55.67 ) in + 'B1' => array( 2004.094, 2834.646), // = ( 707 x 1000 ) mm = ( 27.83 x 39.37 ) in + 'B2' => array( 1417.323, 2004.094), // = ( 500 x 707 ) mm = ( 19.69 x 27.83 ) in + 'B3' => array( 1000.630, 1417.323), // = ( 353 x 500 ) mm = ( 13.90 x 19.69 ) in + 'B4' => array( 708.661, 1000.630), // = ( 250 x 353 ) mm = ( 9.84 x 13.90 ) in + 'B5' => array( 498.898, 708.661), // = ( 176 x 250 ) mm = ( 6.93 x 9.84 ) in + 'B6' => array( 354.331, 498.898), // = ( 125 x 176 ) mm = ( 4.92 x 6.93 ) in + 'B7' => array( 249.449, 354.331), // = ( 88 x 125 ) mm = ( 3.46 x 4.92 ) in + 'B8' => array( 175.748, 249.449), // = ( 62 x 88 ) mm = ( 2.44 x 3.46 ) in + 'B9' => array( 124.724, 175.748), // = ( 44 x 62 ) mm = ( 1.73 x 2.44 ) in + 'B10' => array( 87.874, 124.724), // = ( 31 x 44 ) mm = ( 1.22 x 1.73 ) in + 'B11' => array( 62.362, 87.874), // = ( 22 x 31 ) mm = ( 0.87 x 1.22 ) in + 'B12' => array( 42.520, 62.362), // = ( 15 x 22 ) mm = ( 0.59 x 0.87 ) in + // ISO 216 C Series + 2 SIS 014711 extensions + 5 EXTENSION + 'C0' => array( 2599.370, 3676.535), // = ( 917 x 1297 ) mm = ( 36.10 x 51.06 ) in + 'C1' => array( 1836.850, 2599.370), // = ( 648 x 917 ) mm = ( 25.51 x 36.10 ) in + 'C2' => array( 1298.268, 1836.850), // = ( 458 x 648 ) mm = ( 18.03 x 25.51 ) in + 'C3' => array( 918.425, 1298.268), // = ( 324 x 458 ) mm = ( 12.76 x 18.03 ) in + 'C4' => array( 649.134, 918.425), // = ( 229 x 324 ) mm = ( 9.02 x 12.76 ) in + 'C5' => array( 459.213, 649.134), // = ( 162 x 229 ) mm = ( 6.38 x 9.02 ) in + 'C6' => array( 323.150, 459.213), // = ( 114 x 162 ) mm = ( 4.49 x 6.38 ) in + 'C7' => array( 229.606, 323.150), // = ( 81 x 114 ) mm = ( 3.19 x 4.49 ) in + 'C8' => array( 161.575, 229.606), // = ( 57 x 81 ) mm = ( 2.24 x 3.19 ) in + 'C9' => array( 113.386, 161.575), // = ( 40 x 57 ) mm = ( 1.57 x 2.24 ) in + 'C10' => array( 79.370, 113.386), // = ( 28 x 40 ) mm = ( 1.10 x 1.57 ) in + 'C11' => array( 56.693, 79.370), // = ( 20 x 28 ) mm = ( 0.79 x 1.10 ) in + 'C12' => array( 39.685, 56.693), // = ( 14 x 20 ) mm = ( 0.55 x 0.79 ) in + 'C76' => array( 229.606, 459.213), // = ( 81 x 162 ) mm = ( 3.19 x 6.38 ) in + 'DL' => array( 311.811, 623.622), // = ( 110 x 220 ) mm = ( 4.33 x 8.66 ) in + 'DLE' => array( 323.150, 637.795), // = ( 114 x 225 ) mm = ( 4.49 x 8.86 ) in + 'DLX' => array( 340.158, 666.142), // = ( 120 x 235 ) mm = ( 4.72 x 9.25 ) in + 'DLP' => array( 280.630, 595.276), // = ( 99 x 210 ) mm = ( 3.90 x 8.27 ) in (1/3 A4) + // SIS 014711 E Series + 'E0' => array( 2491.654, 3517.795), // = ( 879 x 1241 ) mm = ( 34.61 x 48.86 ) in + 'E1' => array( 1757.480, 2491.654), // = ( 620 x 879 ) mm = ( 24.41 x 34.61 ) in + 'E2' => array( 1247.244, 1757.480), // = ( 440 x 620 ) mm = ( 17.32 x 24.41 ) in + 'E3' => array( 878.740, 1247.244), // = ( 310 x 440 ) mm = ( 12.20 x 17.32 ) in + 'E4' => array( 623.622, 878.740), // = ( 220 x 310 ) mm = ( 8.66 x 12.20 ) in + 'E5' => array( 439.370, 623.622), // = ( 155 x 220 ) mm = ( 6.10 x 8.66 ) in + 'E6' => array( 311.811, 439.370), // = ( 110 x 155 ) mm = ( 4.33 x 6.10 ) in + 'E7' => array( 221.102, 311.811), // = ( 78 x 110 ) mm = ( 3.07 x 4.33 ) in + 'E8' => array( 155.906, 221.102), // = ( 55 x 78 ) mm = ( 2.17 x 3.07 ) in + 'E9' => array( 110.551, 155.906), // = ( 39 x 55 ) mm = ( 1.54 x 2.17 ) in + 'E10' => array( 76.535, 110.551), // = ( 27 x 39 ) mm = ( 1.06 x 1.54 ) in + 'E11' => array( 53.858, 76.535), // = ( 19 x 27 ) mm = ( 0.75 x 1.06 ) in + 'E12' => array( 36.850, 53.858), // = ( 13 x 19 ) mm = ( 0.51 x 0.75 ) in + // SIS 014711 G Series + 'G0' => array( 2715.591, 3838.110), // = ( 958 x 1354 ) mm = ( 37.72 x 53.31 ) in + 'G1' => array( 1919.055, 2715.591), // = ( 677 x 958 ) mm = ( 26.65 x 37.72 ) in + 'G2' => array( 1357.795, 1919.055), // = ( 479 x 677 ) mm = ( 18.86 x 26.65 ) in + 'G3' => array( 958.110, 1357.795), // = ( 338 x 479 ) mm = ( 13.31 x 18.86 ) in + 'G4' => array( 677.480, 958.110), // = ( 239 x 338 ) mm = ( 9.41 x 13.31 ) in + 'G5' => array( 479.055, 677.480), // = ( 169 x 239 ) mm = ( 6.65 x 9.41 ) in + 'G6' => array( 337.323, 479.055), // = ( 119 x 169 ) mm = ( 4.69 x 6.65 ) in + 'G7' => array( 238.110, 337.323), // = ( 84 x 119 ) mm = ( 3.31 x 4.69 ) in + 'G8' => array( 167.244, 238.110), // = ( 59 x 84 ) mm = ( 2.32 x 3.31 ) in + 'G9' => array( 119.055, 167.244), // = ( 42 x 59 ) mm = ( 1.65 x 2.32 ) in + 'G10' => array( 82.205, 119.055), // = ( 29 x 42 ) mm = ( 1.14 x 1.65 ) in + 'G11' => array( 59.528, 82.205), // = ( 21 x 29 ) mm = ( 0.83 x 1.14 ) in + 'G12' => array( 39.685, 59.528), // = ( 14 x 21 ) mm = ( 0.55 x 0.83 ) in + // ISO Press + 'RA0' => array( 2437.795, 3458.268), // = ( 860 x 1220 ) mm = ( 33.86 x 48.03 ) in + 'RA1' => array( 1729.134, 2437.795), // = ( 610 x 860 ) mm = ( 24.02 x 33.86 ) in + 'RA2' => array( 1218.898, 1729.134), // = ( 430 x 610 ) mm = ( 16.93 x 24.02 ) in + 'RA3' => array( 864.567, 1218.898), // = ( 305 x 430 ) mm = ( 12.01 x 16.93 ) in + 'RA4' => array( 609.449, 864.567), // = ( 215 x 305 ) mm = ( 8.46 x 12.01 ) in + 'SRA0' => array( 2551.181, 3628.346), // = ( 900 x 1280 ) mm = ( 35.43 x 50.39 ) in + 'SRA1' => array( 1814.173, 2551.181), // = ( 640 x 900 ) mm = ( 25.20 x 35.43 ) in + 'SRA2' => array( 1275.591, 1814.173), // = ( 450 x 640 ) mm = ( 17.72 x 25.20 ) in + 'SRA3' => array( 907.087, 1275.591), // = ( 320 x 450 ) mm = ( 12.60 x 17.72 ) in + 'SRA4' => array( 637.795, 907.087), // = ( 225 x 320 ) mm = ( 8.86 x 12.60 ) in + // German DIN 476 + '4A0' => array( 4767.874, 6740.787), // = ( 1682 x 2378 ) mm = ( 66.22 x 93.62 ) in + '2A0' => array( 3370.394, 4767.874), // = ( 1189 x 1682 ) mm = ( 46.81 x 66.22 ) in + // Variations on the ISO Standard + 'A2_EXTRA' => array( 1261.417, 1754.646), // = ( 445 x 619 ) mm = ( 17.52 x 24.37 ) in + 'A3+' => array( 932.598, 1369.134), // = ( 329 x 483 ) mm = ( 12.95 x 19.02 ) in + 'A3_EXTRA' => array( 912.756, 1261.417), // = ( 322 x 445 ) mm = ( 12.68 x 17.52 ) in + 'A3_SUPER' => array( 864.567, 1440.000), // = ( 305 x 508 ) mm = ( 12.01 x 20.00 ) in + 'SUPER_A3' => array( 864.567, 1380.472), // = ( 305 x 487 ) mm = ( 12.01 x 19.17 ) in + 'A4_EXTRA' => array( 666.142, 912.756), // = ( 235 x 322 ) mm = ( 9.25 x 12.68 ) in + 'A4_SUPER' => array( 649.134, 912.756), // = ( 229 x 322 ) mm = ( 9.02 x 12.68 ) in + 'SUPER_A4' => array( 643.465, 1009.134), // = ( 227 x 356 ) mm = ( 8.94 x 14.02 ) in + 'A4_LONG' => array( 595.276, 986.457), // = ( 210 x 348 ) mm = ( 8.27 x 13.70 ) in + 'F4' => array( 595.276, 935.433), // = ( 210 x 330 ) mm = ( 8.27 x 12.99 ) in + 'SO_B5_EXTRA' => array( 572.598, 782.362), // = ( 202 x 276 ) mm = ( 7.95 x 10.87 ) in + 'A5_EXTRA' => array( 490.394, 666.142), // = ( 173 x 235 ) mm = ( 6.81 x 9.25 ) in + // ANSI Series + 'ANSI_E' => array( 2448.000, 3168.000), // = ( 864 x 1118 ) mm = ( 34.00 x 44.00 ) in + 'ANSI_D' => array( 1584.000, 2448.000), // = ( 559 x 864 ) mm = ( 22.00 x 34.00 ) in + 'ANSI_C' => array( 1224.000, 1584.000), // = ( 432 x 559 ) mm = ( 17.00 x 22.00 ) in + 'ANSI_B' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'ANSI_A' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + // Traditional 'Loose' North American Paper Sizes + 'USLEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in + 'LEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in + 'ORGANIZERK' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'BIBLE' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'USTABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'TABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in + 'ORGANIZERM' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'USLETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'LETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in + 'USLEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in + 'LEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in + 'GOVERNMENTLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in + 'GLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in + 'JUNIORLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in + 'JLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in + // Other North American Paper Sizes + 'QUADDEMY' => array( 2520.000, 3240.000), // = ( 889 x 1143 ) mm = ( 35.00 x 45.00 ) in + 'SUPER_B' => array( 936.000, 1368.000), // = ( 330 x 483 ) mm = ( 13.00 x 19.00 ) in + 'QUARTO' => array( 648.000, 792.000), // = ( 229 x 279 ) mm = ( 9.00 x 11.00 ) in + 'GOVERNMENTLEGAL' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in + 'FOLIO' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in + 'MONARCH' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in + 'EXECUTIVE' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in + 'ORGANIZERL' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'STATEMENT' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'MEMO' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in + 'FOOLSCAP' => array( 595.440, 936.000), // = ( 210 x 330 ) mm = ( 8.27 x 13.00 ) in + 'COMPACT' => array( 306.000, 486.000), // = ( 108 x 171 ) mm = ( 4.25 x 6.75 ) in + 'ORGANIZERJ' => array( 198.000, 360.000), // = ( 70 x 127 ) mm = ( 2.75 x 5.00 ) in + // Canadian standard CAN 2-9.60M + 'P1' => array( 1587.402, 2437.795), // = ( 560 x 860 ) mm = ( 22.05 x 33.86 ) in + 'P2' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in + 'P3' => array( 793.701, 1218.898), // = ( 280 x 430 ) mm = ( 11.02 x 16.93 ) in + 'P4' => array( 609.449, 793.701), // = ( 215 x 280 ) mm = ( 8.46 x 11.02 ) in + 'P5' => array( 396.850, 609.449), // = ( 140 x 215 ) mm = ( 5.51 x 8.46 ) in + 'P6' => array( 303.307, 396.850), // = ( 107 x 140 ) mm = ( 4.21 x 5.51 ) in + // North American Architectural Sizes + 'ARCH_E' => array( 2592.000, 3456.000), // = ( 914 x 1219 ) mm = ( 36.00 x 48.00 ) in + 'ARCH_E1' => array( 2160.000, 3024.000), // = ( 762 x 1067 ) mm = ( 30.00 x 42.00 ) in + 'ARCH_D' => array( 1728.000, 2592.000), // = ( 610 x 914 ) mm = ( 24.00 x 36.00 ) in + 'BROADSHEET' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in + 'ARCH_C' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in + 'ARCH_B' => array( 864.000, 1296.000), // = ( 305 x 457 ) mm = ( 12.00 x 18.00 ) in + 'ARCH_A' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in + // -- North American Envelope Sizes + // - Announcement Envelopes + 'ANNENV_A2' => array( 314.640, 414.000), // = ( 111 x 146 ) mm = ( 4.37 x 5.75 ) in + 'ANNENV_A6' => array( 342.000, 468.000), // = ( 121 x 165 ) mm = ( 4.75 x 6.50 ) in + 'ANNENV_A7' => array( 378.000, 522.000), // = ( 133 x 184 ) mm = ( 5.25 x 7.25 ) in + 'ANNENV_A8' => array( 396.000, 584.640), // = ( 140 x 206 ) mm = ( 5.50 x 8.12 ) in + 'ANNENV_A10' => array( 450.000, 692.640), // = ( 159 x 244 ) mm = ( 6.25 x 9.62 ) in + 'ANNENV_SLIM' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in + // - Commercial Envelopes + 'COMMENV_N6_1/4' => array( 252.000, 432.000), // = ( 89 x 152 ) mm = ( 3.50 x 6.00 ) in + 'COMMENV_N6_3/4' => array( 260.640, 468.000), // = ( 92 x 165 ) mm = ( 3.62 x 6.50 ) in + 'COMMENV_N8' => array( 278.640, 540.000), // = ( 98 x 191 ) mm = ( 3.87 x 7.50 ) in + 'COMMENV_N9' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in + 'COMMENV_N10' => array( 296.640, 684.000), // = ( 105 x 241 ) mm = ( 4.12 x 9.50 ) in + 'COMMENV_N11' => array( 324.000, 746.640), // = ( 114 x 263 ) mm = ( 4.50 x 10.37 ) in + 'COMMENV_N12' => array( 342.000, 792.000), // = ( 121 x 279 ) mm = ( 4.75 x 11.00 ) in + 'COMMENV_N14' => array( 360.000, 828.000), // = ( 127 x 292 ) mm = ( 5.00 x 11.50 ) in + // - Catalogue Envelopes + 'CATENV_N1' => array( 432.000, 648.000), // = ( 152 x 229 ) mm = ( 6.00 x 9.00 ) in + 'CATENV_N1_3/4' => array( 468.000, 684.000), // = ( 165 x 241 ) mm = ( 6.50 x 9.50 ) in + 'CATENV_N2' => array( 468.000, 720.000), // = ( 165 x 254 ) mm = ( 6.50 x 10.00 ) in + 'CATENV_N3' => array( 504.000, 720.000), // = ( 178 x 254 ) mm = ( 7.00 x 10.00 ) in + 'CATENV_N6' => array( 540.000, 756.000), // = ( 191 x 267 ) mm = ( 7.50 x 10.50 ) in + 'CATENV_N7' => array( 576.000, 792.000), // = ( 203 x 279 ) mm = ( 8.00 x 11.00 ) in + 'CATENV_N8' => array( 594.000, 810.000), // = ( 210 x 286 ) mm = ( 8.25 x 11.25 ) in + 'CATENV_N9_1/2' => array( 612.000, 756.000), // = ( 216 x 267 ) mm = ( 8.50 x 10.50 ) in + 'CATENV_N9_3/4' => array( 630.000, 810.000), // = ( 222 x 286 ) mm = ( 8.75 x 11.25 ) in + 'CATENV_N10_1/2' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in + 'CATENV_N12_1/2' => array( 684.000, 900.000), // = ( 241 x 318 ) mm = ( 9.50 x 12.50 ) in + 'CATENV_N13_1/2' => array( 720.000, 936.000), // = ( 254 x 330 ) mm = ( 10.00 x 13.00 ) in + 'CATENV_N14_1/4' => array( 810.000, 882.000), // = ( 286 x 311 ) mm = ( 11.25 x 12.25 ) in + 'CATENV_N14_1/2' => array( 828.000, 1044.000), // = ( 292 x 368 ) mm = ( 11.50 x 14.50 ) in + // Japanese (JIS P 0138-61) Standard B-Series + 'JIS_B0' => array( 2919.685, 4127.244), // = ( 1030 x 1456 ) mm = ( 40.55 x 57.32 ) in + 'JIS_B1' => array( 2063.622, 2919.685), // = ( 728 x 1030 ) mm = ( 28.66 x 40.55 ) in + 'JIS_B2' => array( 1459.843, 2063.622), // = ( 515 x 728 ) mm = ( 20.28 x 28.66 ) in + 'JIS_B3' => array( 1031.811, 1459.843), // = ( 364 x 515 ) mm = ( 14.33 x 20.28 ) in + 'JIS_B4' => array( 728.504, 1031.811), // = ( 257 x 364 ) mm = ( 10.12 x 14.33 ) in + 'JIS_B5' => array( 515.906, 728.504), // = ( 182 x 257 ) mm = ( 7.17 x 10.12 ) in + 'JIS_B6' => array( 362.835, 515.906), // = ( 128 x 182 ) mm = ( 5.04 x 7.17 ) in + 'JIS_B7' => array( 257.953, 362.835), // = ( 91 x 128 ) mm = ( 3.58 x 5.04 ) in + 'JIS_B8' => array( 181.417, 257.953), // = ( 64 x 91 ) mm = ( 2.52 x 3.58 ) in + 'JIS_B9' => array( 127.559, 181.417), // = ( 45 x 64 ) mm = ( 1.77 x 2.52 ) in + 'JIS_B10' => array( 90.709, 127.559), // = ( 32 x 45 ) mm = ( 1.26 x 1.77 ) in + 'JIS_B11' => array( 62.362, 90.709), // = ( 22 x 32 ) mm = ( 0.87 x 1.26 ) in + 'JIS_B12' => array( 45.354, 62.362), // = ( 16 x 22 ) mm = ( 0.63 x 0.87 ) in + // PA Series + 'PA0' => array( 2381.102, 3174.803), // = ( 840 x 1120 ) mm = ( 33.07 x 44.09 ) in + 'PA1' => array( 1587.402, 2381.102), // = ( 560 x 840 ) mm = ( 22.05 x 33.07 ) in + 'PA2' => array( 1190.551, 1587.402), // = ( 420 x 560 ) mm = ( 16.54 x 22.05 ) in + 'PA3' => array( 793.701, 1190.551), // = ( 280 x 420 ) mm = ( 11.02 x 16.54 ) in + 'PA4' => array( 595.276, 793.701), // = ( 210 x 280 ) mm = ( 8.27 x 11.02 ) in + 'PA5' => array( 396.850, 595.276), // = ( 140 x 210 ) mm = ( 5.51 x 8.27 ) in + 'PA6' => array( 297.638, 396.850), // = ( 105 x 140 ) mm = ( 4.13 x 5.51 ) in + 'PA7' => array( 198.425, 297.638), // = ( 70 x 105 ) mm = ( 2.76 x 4.13 ) in + 'PA8' => array( 147.402, 198.425), // = ( 52 x 70 ) mm = ( 2.05 x 2.76 ) in + 'PA9' => array( 99.213, 147.402), // = ( 35 x 52 ) mm = ( 1.38 x 2.05 ) in + 'PA10' => array( 73.701, 99.213), // = ( 26 x 35 ) mm = ( 1.02 x 1.38 ) in + // Standard Photographic Print Sizes + 'PASSPORT_PHOTO' => array( 99.213, 127.559), // = ( 35 x 45 ) mm = ( 1.38 x 1.77 ) in + 'E' => array( 233.858, 340.157), // = ( 82 x 120 ) mm = ( 3.25 x 4.72 ) in + 'L' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in + '3R' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in + 'KG' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in + '4R' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in + '4D' => array( 340.157, 430.866), // = ( 120 x 152 ) mm = ( 4.72 x 5.98 ) in + '2L' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in + '5R' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in + '8P' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in + '6R' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in + '6P' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in + '8R' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in + '6PW' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in + 'S8R' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in + '4P' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in + '10R' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in + '4PW' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in + 'S10R' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in + '11R' => array( 790.866, 1009.134), // = ( 279 x 356 ) mm = ( 10.98 x 14.02 ) in + 'S11R' => array( 790.866, 1224.567), // = ( 279 x 432 ) mm = ( 10.98 x 17.01 ) in + '12R' => array( 864.567, 1080.000), // = ( 305 x 381 ) mm = ( 12.01 x 15.00 ) in + 'S12R' => array( 864.567, 1292.598), // = ( 305 x 456 ) mm = ( 12.01 x 17.95 ) in + // Common Newspaper Sizes + 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787), // = ( 750 x 600 ) mm = ( 29.53 x 23.62 ) in + 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913), // = ( 470 x 315 ) mm = ( 18.50 x 12.40 ) in + 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in + 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in + // Business Cards + 'CREDIT_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in + 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in + 'BUSINESS_CARD_IT' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_UK' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_FR' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_DE' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_ES' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in + 'BUSINESS_CARD_CA' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in + 'BUSINESS_CARD_US' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in + 'BUSINESS_CARD_JP' => array( 155.906, 257.953), // = ( 55 x 91 ) mm = ( 2.17 x 3.58 ) in + 'BUSINESS_CARD_HK' => array( 153.071, 255.118), // = ( 54 x 90 ) mm = ( 2.13 x 3.54 ) in + 'BUSINESS_CARD_AU' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_DK' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_SE' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in + 'BUSINESS_CARD_RU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_CZ' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_FI' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_HU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + 'BUSINESS_CARD_IL' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in + // Billboards + '4SHEET' => array( 2880.000, 4320.000), // = ( 1016 x 1524 ) mm = ( 40.00 x 60.00 ) in + '6SHEET' => array( 3401.575, 5102.362), // = ( 1200 x 1800 ) mm = ( 47.24 x 70.87 ) in + '12SHEET' => array( 8640.000, 4320.000), // = ( 3048 x 1524 ) mm = (120.00 x 60.00 ) in + '16SHEET' => array( 5760.000, 8640.000), // = ( 2032 x 3048 ) mm = ( 80.00 x 120.00) in + '32SHEET' => array(11520.000, 8640.000), // = ( 4064 x 3048 ) mm = (160.00 x 120.00) in + '48SHEET' => array(17280.000, 8640.000), // = ( 6096 x 3048 ) mm = (240.00 x 120.00) in + '64SHEET' => array(23040.000, 8640.000), // = ( 8128 x 3048 ) mm = (320.00 x 120.00) in + '96SHEET' => array(34560.000, 8640.000), // = (12192 x 3048 ) mm = (480.00 x 120.00) in + // -- Old European Sizes + // - Old Imperial English Sizes + 'EN_EMPEROR' => array( 3456.000, 5184.000), // = ( 1219 x 1829 ) mm = ( 48.00 x 72.00 ) in + 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000), // = ( 787 x 1346 ) mm = ( 31.00 x 53.00 ) in + 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000), // = ( 730 x 1067 ) mm = ( 28.75 x 42.00 ) in + 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000), // = ( 679 x 1016 ) mm = ( 26.75 x 40.00 ) in + 'EN_ATLAS' => array( 1872.000, 2448.000), // = ( 660 x 864 ) mm = ( 26.00 x 34.00 ) in + 'EN_COLOMBIER' => array( 1692.000, 2484.000), // = ( 597 x 876 ) mm = ( 23.50 x 34.50 ) in + 'EN_ELEPHANT' => array( 1656.000, 2016.000), // = ( 584 x 711 ) mm = ( 23.00 x 28.00 ) in + 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000), // = ( 572 x 902 ) mm = ( 22.50 x 35.50 ) in + 'EN_IMPERIAL' => array( 1584.000, 2160.000), // = ( 559 x 762 ) mm = ( 22.00 x 30.00 ) in + 'EN_PRINCESS' => array( 1548.000, 2016.000), // = ( 546 x 711 ) mm = ( 21.50 x 28.00 ) in + 'EN_CARTRIDGE' => array( 1512.000, 1872.000), // = ( 533 x 660 ) mm = ( 21.00 x 26.00 ) in + 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000), // = ( 533 x 838 ) mm = ( 21.00 x 33.00 ) in + 'EN_ROYAL' => array( 1440.000, 1800.000), // = ( 508 x 635 ) mm = ( 20.00 x 25.00 ) in + 'EN_SHEET' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in + 'EN_HALF_POST' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in + 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000), // = ( 483 x 686 ) mm = ( 19.00 x 27.00 ) in + 'EN_DOUBLE_POST' => array( 1368.000, 2196.000), // = ( 483 x 775 ) mm = ( 19.00 x 30.50 ) in + 'EN_MEDIUM' => array( 1260.000, 1656.000), // = ( 445 x 584 ) mm = ( 17.50 x 23.00 ) in + 'EN_DEMY' => array( 1260.000, 1620.000), // = ( 445 x 572 ) mm = ( 17.50 x 22.50 ) in + 'EN_LARGE_POST' => array( 1188.000, 1512.000), // = ( 419 x 533 ) mm = ( 16.50 x 21.00 ) in + 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000), // = ( 406 x 508 ) mm = ( 16.00 x 20.00 ) in + 'EN_POST' => array( 1116.000, 1386.000), // = ( 394 x 489 ) mm = ( 15.50 x 19.25 ) in + 'EN_CROWN' => array( 1080.000, 1440.000), // = ( 381 x 508 ) mm = ( 15.00 x 20.00 ) in + 'EN_PINCHED_POST' => array( 1062.000, 1332.000), // = ( 375 x 470 ) mm = ( 14.75 x 18.50 ) in + 'EN_BRIEF' => array( 972.000, 1152.000), // = ( 343 x 406 ) mm = ( 13.50 x 16.00 ) in + 'EN_FOOLSCAP' => array( 972.000, 1224.000), // = ( 343 x 432 ) mm = ( 13.50 x 17.00 ) in + 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000), // = ( 337 x 419 ) mm = ( 13.25 x 16.50 ) in + 'EN_POTT' => array( 900.000, 1080.000), // = ( 318 x 381 ) mm = ( 12.50 x 15.00 ) in + // - Old Imperial Belgian Sizes + 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031), // = ( 700 x 1040 ) mm = ( 27.56 x 40.94 ) in + 'BE_COLOMBIER' => array( 1757.480, 2409.449), // = ( 620 x 850 ) mm = ( 24.41 x 33.46 ) in + 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in + 'BE_ELEPHANT' => array( 1746.142, 2182.677), // = ( 616 x 770 ) mm = ( 24.25 x 30.31 ) in + 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102), // = ( 600 x 840 ) mm = ( 23.62 x 33.07 ) in + 'BE_GRAND_JESUS' => array( 1559.055, 2069.291), // = ( 550 x 730 ) mm = ( 21.65 x 28.74 ) in + 'BE_JESUS' => array( 1530.709, 2069.291), // = ( 540 x 730 ) mm = ( 21.26 x 28.74 ) in + 'BE_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in + 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961), // = ( 460 x 605 ) mm = ( 18.11 x 23.82 ) in + 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575), // = ( 435 x 565 ) mm = ( 17.13 x 22.24 ) in + 'BE_COQUILLE' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in + 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362), // = ( 415 x 530 ) mm = ( 16.34 x 20.87 ) in + 'BE_RUCHE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in + 'BE_PROPATRIA' => array( 977.953, 1218.898), // = ( 345 x 430 ) mm = ( 13.58 x 16.93 ) in + 'BE_LYS' => array( 898.583, 1125.354), // = ( 317 x 397 ) mm = ( 12.48 x 15.63 ) in + 'BE_POT' => array( 870.236, 1088.504), // = ( 307 x 384 ) mm = ( 12.09 x 15.12 ) in + 'BE_ROSETTE' => array( 765.354, 983.622), // = ( 270 x 347 ) mm = ( 10.63 x 13.66 ) in + // - Old Imperial French Sizes + 'FR_UNIVERS' => array( 2834.646, 3685.039), // = ( 1000 x 1300 ) mm = ( 39.37 x 51.18 ) in + 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in + 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in + 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575), // = ( 800 x 1200 ) mm = ( 31.50 x 47.24 ) in + 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803), // = ( 760 x 1120 ) mm = ( 29.92 x 44.09 ) in + 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724), // = ( 750 x 1060 ) mm = ( 29.53 x 41.73 ) in + 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567), // = ( 700 x 940 ) mm = ( 27.56 x 37.01 ) in + 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646), // = ( 650 x 1000 ) mm = ( 25.59 x 39.37 ) in + 'FR_JOURNAL' => array( 1842.520, 2664.567), // = ( 650 x 940 ) mm = ( 25.59 x 37.01 ) in + 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181), // = ( 630 x 900 ) mm = ( 24.80 x 35.43 ) in + 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in + 'FR_CLOCHE' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in + 'FR_SOLEIL' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in + 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181), // = ( 560 x 900 ) mm = ( 22.05 x 35.43 ) in + 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488), // = ( 560 x 880 ) mm = ( 22.05 x 34.65 ) in + 'FR_JESUS' => array( 1587.402, 2154.331), // = ( 560 x 760 ) mm = ( 22.05 x 29.92 ) in + 'FR_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in + 'FR_CAVALIER' => array( 1303.937, 1757.480), // = ( 460 x 620 ) mm = ( 18.11 x 24.41 ) in + 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945), // = ( 460 x 720 ) mm = ( 18.11 x 28.35 ) in + 'FR_CARRE' => array( 1275.591, 1587.402), // = ( 450 x 560 ) mm = ( 17.72 x 22.05 ) in + 'FR_COQUILLE' => array( 1247.244, 1587.402), // = ( 440 x 560 ) mm = ( 17.32 x 22.05 ) in + 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559), // = ( 440 x 680 ) mm = ( 17.32 x 26.77 ) in + 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787), // = ( 400 x 600 ) mm = ( 15.75 x 23.62 ) in + 'FR_DOUBLE_POT' => array( 1133.858, 1757.480), // = ( 400 x 620 ) mm = ( 15.75 x 24.41 ) in + 'FR_ECU' => array( 1133.858, 1474.016), // = ( 400 x 520 ) mm = ( 15.75 x 20.47 ) in + 'FR_COURONNE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in + 'FR_TELLIERE' => array( 963.780, 1247.244), // = ( 340 x 440 ) mm = ( 13.39 x 17.32 ) in + 'FR_POT' => array( 878.740, 1133.858), // = ( 310 x 400 ) mm = ( 12.20 x 15.75 ) in + ); + + + /** + * Get page dimensions from format name. + * @param $format (mixed) The format name @see self::$page_format
        + * @return array containing page width and height in points + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function getPageSizeFromFormat($format) { + if (isset(self::$page_formats[$format])) { + return self::$page_formats[$format]; + } + return self::$page_formats['A4']; + } + + /** + * Set page boundaries. + * @param $page (int) page number + * @param $type (string) valid values are:
        • 'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;
        • 'CropBox' : the visible region of default user space;
        • 'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;
        • 'TrimBox' : the intended dimensions of the finished page after trimming;
        • 'ArtBox' : the page's meaningful content (including potential white space).
        + * @param $llx (float) lower-left x coordinate in user units. + * @param $lly (float) lower-left y coordinate in user units. + * @param $urx (float) upper-right x coordinate in user units. + * @param $ury (float) upper-right y coordinate in user units. + * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. + * @param $k (float) Scale factor (number of points in user unit). + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { + if (!isset($pagedim[$page])) { + // initialize array + $pagedim[$page] = array(); + } + if (!in_array($type, self::$pageboxes)) { + return; + } + if ($points) { + $k = 1; + } + $pagedim[$page][$type]['llx'] = ($llx * $k); + $pagedim[$page][$type]['lly'] = ($lly * $k); + $pagedim[$page][$type]['urx'] = ($urx * $k); + $pagedim[$page][$type]['ury'] = ($ury * $k); + return $pagedim; + } + + /** + * Swap X and Y coordinates of page boxes (change page boxes orientation). + * @param $page (int) page number + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function swapPageBoxCoordinates($page, $pagedim) { + foreach (self::$pageboxes as $type) { + // swap X and Y coordinates + if (isset($pagedim[$page][$type])) { + $tmp = $pagedim[$page][$type]['llx']; + $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; + $pagedim[$page][$type]['lly'] = $tmp; + $tmp = $pagedim[$page][$type]['urx']; + $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; + $pagedim[$page][$type]['ury'] = $tmp; + } + } + return $pagedim; + } + + /** + * Get the canonical page layout mode. + * @param $layout (string) The page layout. Possible values are:
        • SinglePage Display one page at a time
        • OneColumn Display the pages in one column
        • TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left
        • TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right
        • TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left
        • TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right
        + * @return (string) Canonical page layout name. + * @public static + */ + public static function getPageLayoutMode($layout='SinglePage') { + switch ($layout) { + case 'default': + case 'single': + case 'SinglePage': { + $layout_mode = 'SinglePage'; break; } + case 'continuous': + case 'OneColumn': { + $layout_mode = 'OneColumn'; + break; + } + case 'two': + case 'TwoColumnLeft': { + $layout_mode = 'TwoColumnLeft'; + break; + } + case 'TwoColumnRight': { + $layout_mode = 'TwoColumnRight'; + break; + } + case 'TwoPageLeft': { + $layout_mode = 'TwoPageLeft'; + break; + } + case 'TwoPageRight': { + $layout_mode = 'TwoPageRight'; + break; + } + default: { + $layout_mode = 'SinglePage'; + } } - return $ret; + return $layout_mode; } + /** + * Get the canonical page layout mode. + * @param $mode (string) A name object specifying how the document should be displayed when opened:
        • UseNone Neither document outline nor thumbnail images visible
        • UseOutlines Document outline visible
        • UseThumbs Thumbnail images visible
        • FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible
        • UseOC (PDF 1.5) Optional content group panel visible
        • UseAttachments (PDF 1.6) Attachments panel visible
        + * @return (string) Canonical page mode name. + * @public static + */ + public static function getPageMode($mode='UseNone') { + switch ($mode) { + case 'UseNone': { + $page_mode = 'UseNone'; + break; + } + case 'UseOutlines': { + $page_mode = 'UseOutlines'; + break; + } + case 'UseThumbs': { + $page_mode = 'UseThumbs'; + break; + } + case 'FullScreen': { + $page_mode = 'FullScreen'; + break; + } + case 'UseOC': { + $page_mode = 'UseOC'; + break; + } + case '': { + $page_mode = 'UseAttachments'; + break; + } + default: { + $page_mode = 'UseNone'; + } + } + return $page_mode; + } + + } // END OF TCPDF_STATIC CLASS //============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php index b31e58bb2c6..599a3f8b968 100644 --- a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php +++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php @@ -1,9 +1,9 @@ * @package com.tecnick.tcpdf * @author Nicola Asuni - * @version 6.2.6 + * @version 6.2.8 */ // TCPDF configuration @@ -128,7 +128,7 @@ require_once(dirname(__FILE__).'/include/tcpdf_static.php'); * TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.
        * @package com.tecnick.tcpdf * @brief PHP class for generating PDF documents without requiring external extensions. - * @version 6.2.6 + * @version 6.2.8 * @author Nicola Asuni - info@tecnick.com */ class TCPDF { @@ -5748,7 +5748,7 @@ class TCPDF { * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width. * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. This feature works only when $ishtml=false. * @param $valign (string) Vertical alignment of text (requires $maxh = $h > 0). Possible values are:
        • T: TOP
        • M: middle
        • B: bottom
        . This feature works only when $ishtml=false and the cell must fit in a single page. - * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and wqual to $h. + * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and equal to $h. * @return int Return the number of cells or 1 for html mode. * @public * @since 1.3 @@ -10362,7 +10362,7 @@ class TCPDF { * @public */ public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) { - if (isset($url[1]) AND ($url[0] == '#')) { + if (isset($url[1]) AND ($url[0] == '#') AND is_numeric($url[1])) { // convert url to internal link $lnkdata = explode(',', $url); if (isset($lnkdata[0]) ) { @@ -10632,8 +10632,7 @@ class TCPDF { */ protected function _UEvalue() { $hashkey = hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UKS'], true); - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); - return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']); } /** @@ -10683,8 +10682,7 @@ class TCPDF { */ protected function _OEvalue() { $hashkey = hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OKS'].$this->encryptdata['U'], true); - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); - return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']); } /** @@ -10739,8 +10737,7 @@ class TCPDF { } $perms .= 'adb'; // bytes 9-11 $perms .= 'nick'; // bytes 12-15 - $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB)); - $this->encryptdata['perms'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptdata['key'], $perms, MCRYPT_MODE_ECB, $iv); + $this->encryptdata['perms'] = TCPDF_STATIC::_AESnopad($this->encryptdata['key'], $perms); } else { // RC4-40, RC4-128, AES-128 // Pad passwords $this->encryptdata['user_password'] = substr($this->encryptdata['user_password'].TCPDF_STATIC::$enc_padding, 0, 32); @@ -10858,10 +10855,13 @@ class TCPDF { $this->encryptdata['StrF'] = 'StdCF'; } if ($mode > 1) { // AES - if (!extension_loaded('mcrypt')) { - $this->Error('AES encryption requires mcrypt library (http://www.php.net/manual/en/mcrypt.requirements.php).'); + if (!extension_loaded('openssl') && !extension_loaded('mcrypt')) { + $this->Error('AES encryption requires openssl or mcrypt extension (http://www.php.net/manual/en/mcrypt.requirements.php).'); } - if (mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) { + if (extension_loaded('openssl') && !in_array('aes-256-cbc', openssl_get_cipher_methods())) { + $this->Error('AES encryption requires openssl/aes-256-cbc cypher.'); + } + if (extension_loaded('mcrypt') && mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) { $this->Error('AES encryption requires MCRYPT_RIJNDAEL_128 cypher.'); } if (($mode == 3) AND !function_exists('hash')) { @@ -18649,7 +18649,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: $this->lispacer = $prev_lispacer; if ($ln AND (!($cell AND ($dom[$key-1]['value'] == 'table')))) { $this->Ln($this->lasth); - if ($this->y < $maxbottomliney) { + if (($this->y < $maxbottomliney) AND ($startlinepage == $this->page)) { $this->y = $maxbottomliney; } } @@ -19427,8 +19427,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: $prev_page = $this->page; $this->setPage($dom[($dom[$key]['parent'])]['endpage']); if ($this->num_columns > 1) { - if ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1))) - OR (($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']) AND ($prev_page < $this->page))) { + if (($prev_page < $this->page) + AND ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1))) + OR ($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']))) { // page jump $this->selectColumn(0); $dom[($dom[$key]['parent'])]['endcolumn'] = 0; diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php index 85fc7fd3df3..780ec2129d1 100644 --- a/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php +++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf_parser.php @@ -1,9 +1,9 @@ $v) { if (($v[0] == '/') AND ($v[1] == 'Type') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == '/') AND ($sarr[($k +1)][1] == 'XRef'))) { $valid_crs = true; diff --git a/htdocs/index.php b/htdocs/index.php index 1c99fb0c647..8bc704520ca 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2015 Regis Houssin * Copyright (C) 2011-2012 Juanjo Menent * Copyright (C) 2015 Marcos García @@ -146,6 +146,7 @@ if (empty($user->societe_id)) { // Condition to be checked for each display line dashboard $conditions=array( + $user->rights->user->user->lire, ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), @@ -160,21 +161,24 @@ if (empty($user->societe_id)) ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire, ! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire); // Class file containing the method load_state_board for each line - $includes=array(DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", - DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", - DOL_DOCUMENT_ROOT."/product/class/product.class.php", - DOL_DOCUMENT_ROOT."/product/class/service.class.php", - DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", - DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", - DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", - DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", - DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", - DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php"); + $includes=array( + DOL_DOCUMENT_ROOT."/user/class/user.class.php", + DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + DOL_DOCUMENT_ROOT."/societe/class/client.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", + DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", + DOL_DOCUMENT_ROOT."/product/class/product.class.php", + DOL_DOCUMENT_ROOT."/product/class/service.class.php", + DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php", + DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", + DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", + DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", + DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", + DOL_DOCUMENT_ROOT."/expensereport/class/expensereport.class.php"); // Name class containing the method load_state_board for each line - $classes=array('Client', + $classes=array('User', + 'Client', 'Client', 'Fournisseur', 'Adherent', @@ -188,7 +192,8 @@ if (empty($user->societe_id)) 'FactureFournisseur', 'ExpenseReport'); // Cle array returned by the method load_state_board for each line - $keys=array('customers', + $keys=array('users', + 'customers', 'prospects', 'suppliers', 'members', @@ -202,7 +207,8 @@ if (empty($user->societe_id)) 'supplier_invoices', 'expensereports'); // Dashboard Icon lines - $icons=array('company', + $icons=array('user', + 'company', 'company', 'company', 'user', @@ -216,7 +222,8 @@ if (empty($user->societe_id)) 'bill', 'trip'); // Translation keyword - $titres=array("ThirdPartyCustomersStats", + $titres=array("Users", + "ThirdPartyCustomersStats", "ThirdPartyProspectsStats", "Suppliers", "Members", @@ -231,21 +238,23 @@ if (empty($user->societe_id)) "ExpenseReports"); // Dashboard Link lines $links=array( - DOL_URL_ROOT.'/societe/list.php?type=c', - DOL_URL_ROOT.'/societe/list.php?type=p', - DOL_URL_ROOT.'/societe/list.php?type=f', - DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', - DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', - DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', - DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial', - DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial', - DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=accountancy', - DOL_URL_ROOT.'/contrat/list.php', - DOL_URL_ROOT.'/fourn/commande/list.php', - DOL_URL_ROOT.'/fourn/facture/list.php', - DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'); + DOL_URL_ROOT.'/user/index.php', + DOL_URL_ROOT.'/societe/list.php?type=c', + DOL_URL_ROOT.'/societe/list.php?type=p', + DOL_URL_ROOT.'/societe/list.php?type=f', + DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', + DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', + DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', + DOL_URL_ROOT.'/comm/propal/list.php?mainmenu=commercial', + DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial', + DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=accountancy', + DOL_URL_ROOT.'/contrat/list.php', + DOL_URL_ROOT.'/fourn/commande/list.php', + DOL_URL_ROOT.'/fourn/facture/list.php', + DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'); // Translation lang files - $langfile=array("companies", + $langfile=array("users", + "companies", "prospects", "suppliers", "members", @@ -278,12 +287,10 @@ if (empty($user->societe_id)) $var=!$var; if (!empty($langfile[$key])) $langs->load($langfile[$key]); $text=$langs->trans($titres[$key]); - print ''; + print ''; print ''; print ''; } @@ -445,13 +452,17 @@ foreach($valid_dashboardlines as $board) { $var=!$var; print ''.$board->img.''.$board->label.''; - print ''.$board->nbtodo.''; + print ''.$board->nbtodo.''; print ''; - print ''; - print $board->nbtodolate; - print ''; + //if ($board->nbtodolate > 0) + //{ + print ''; + print $board->nbtodolate; + print ''; + //} + print ''; print ''; - if ($board->nbtodolate > 0) print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); + if ($board->nbtodolate > 0) print img_picto($langs->trans("NActionsLate",$board->nbtodolate).' (>'.ceil($board->warning_delay).' '.$langs->trans("days").')',"warning"); else print ' '; print ''; print ''; diff --git a/htdocs/install/doctemplates/projects/template_project.odt b/htdocs/install/doctemplates/projects/template_project.odt old mode 100755 new mode 100644 diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 21e975f8b29..8d040e06ed4 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -333,9 +333,9 @@ if (! empty($force_install_message)) if ($note) $option.=' '.$note; // Deprecated and experimental if ($type=='mysql') $option.=' ' . $langs->trans("Deprecated"); - elseif ($type=='mssql') $option.=' '.$langs->trans("Experimental"); - elseif ($type=='sqlite') $option.=' '.$langs->trans("Experimental"); - elseif ($type=='sqlite3') $option.=' '.$langs->trans("Experimental"); + elseif ($type=='mssql') $option.=' '.$langs->trans("VersionExperimental"); + elseif ($type=='sqlite') $option.=' '.$langs->trans("VersionExperimental"); + elseif ($type=='sqlite3') $option.=' '.$langs->trans("VersionExperimental"); // No available elseif (! function_exists($testfunction)) $option.=' - '.$langs->trans("FunctionNotAvailableInThisPHP"); $option.=''; diff --git a/htdocs/install/mysql/data/llx_c_chargesociales.sql b/htdocs/install/mysql/data/llx_c_chargesociales.sql index 892e51d0fba..d598f6fef60 100644 --- a/htdocs/install/mysql/data/llx_c_chargesociales.sql +++ b/htdocs/install/mysql/data/llx_c_chargesociales.sql @@ -55,3 +55,15 @@ insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (220, 'Prime existence', 1,1,'TAXBEPRIEXI' ,'2'); insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (230, 'Precompte immobilier', 1,1,'TAXBEPREIMMO','2'); +-- +-- Austria +-- +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4101, 'Krankenversicherung', 1,1,'TAXATKV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4102, 'Unfallversicherung', 1,1,'TAXATUV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4103, 'Pensionsversicherung', 1,1,'TAXATPV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4104, 'Arbeitslosenversicherung', 1,1,'TAXATAV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4105, 'Insolvenzentgeltsicherungsfond', 1,1,'TAXATIESG' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4106, 'Wohnbauförderung', 1,1,'TAXATWF' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4107, 'Arbeiterkammerumlage', 1,1,'TAXATAK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4108, 'Mitarbeitervorsorgekasse', 1,1,'TAXATMVK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4109, 'Familienlastenausgleichsfond', 1,1,'TAXATFLAF' ,'41'); diff --git a/htdocs/install/mysql/data/llx_c_input_method.sql b/htdocs/install/mysql/data/llx_c_input_method.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/data/llx_c_input_reason.sql b/htdocs/install/mysql/data/llx_c_input_reason.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.2.0-3.3.0.sql b/htdocs/install/mysql/migration/3.2.0-3.3.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.3.0-3.4.0.sql b/htdocs/install/mysql/migration/3.3.0-3.4.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 6def2432254..5e53d259376 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -26,6 +26,12 @@ ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after country; +UPDATE llx_commande_fourn set billed=1 where statut = 8; +UPDATE llx_commande_fourn set statut=5 where statut = 8 and billed=1; + +ALTER TABLE llx_user MODIFY COLUMN pass varchar(128); +ALTER TABLE llx_user MODIFY COLUMN pass_temp varchar(128); + ALTER TABLE llx_askpricesupplier RENAME TO llx_supplier_proposal; ALTER TABLE llx_askpricesupplierdet RENAME TO llx_supplier_proposaldet; ALTER TABLE llx_askpricesupplier_extrafields RENAME TO llx_supplier_proposal_extrafields; @@ -97,6 +103,8 @@ ALTER TABLE llx_commande ADD COLUMN fk_warehouse integer DEFAULT NULL AFTER fk_s ALTER TABLE llx_commande_fournisseur ADD COLUMN billed smallint DEFAULT 0 AFTER fk_statut; ALTER TABLE llx_commande_fournisseur ADD INDEX billed (billed); +ALTER TABLE llx_product ADD COLUMN cost_price double(24,8) DEFAULT NULL; + ALTER TABLE llx_ecm_directories MODIFY COLUMN fullpath varchar(750); ALTER TABLE llx_ecm_directories DROP INDEX idx_ecm_directories; ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories (label, fk_parent, entity); @@ -201,7 +209,24 @@ CREATE TABLE IF NOT EXISTS llx_establishment ( status smallint DEFAULT 1 ) ENGINE=InnoDB; - +CREATE TABLE IF NOT EXISTS llx_user_rib ( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_user integer NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id + datec datetime, + tms timestamp, + label varchar(30), + bank varchar(255), -- bank name + code_banque varchar(128), -- bank code + code_guichet varchar(6), -- desk code + number varchar(255), -- account number + cle_rib varchar(5), -- key of bank account + bic varchar(11), -- 11 according to ISO 9362 + iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 + domiciliation varchar(255), + proprio varchar(60), + owner_address varchar(255) +)ENGINE=innodb; ALTER TABLE llx_projet_task_time ADD COLUMN invoice_id integer DEFAULT NULL; ALTER TABLE llx_projet_task_time ADD COLUMN invoice_line_id integer DEFAULT NULL; @@ -500,3 +525,51 @@ INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, nc INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('110', 5209, '', 0, '', 'Manuripi', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('111', 5209, '', 0, '', 'Nicolás Suárez', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('112', 5209, '', 0, '', 'General Federico Román', 1); + + + +-- Regions Austria (id country=41) +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom, active) values ( 41, 4101, '', 0, 'Österreich', 1); + +-- Provinces Austria (id country=41) +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'B','BURGENLAND','Burgenland',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'K','KAERNTEN','Kärnten',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'N','NIEDEROESTERREICH','Niederösterreich',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'O','OBEROESTERREICH','Oberösterreich',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'S','SALZBURG','Salzburg',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'ST','STEIERMARK','Steiermark',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'T','TIROL','Tirol',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'V','VORARLBERG','Vorarlberg',1); +INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom, active) VALUES (4101,'W','WIEN','Wien',1); + + +-- Juridical status Austria +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4100', 'GmbH - Gesellschaft mit beschränkter Haftung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4101', 'GesmbH - Gesellschaft mit beschränkter Haftung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4102', 'AG - Aktiengesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4103', 'EWIV - Europäische wirtschaftliche Interessenvereinigung', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4104', 'KEG - Kommanditerwerbsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4105', 'OEG - Offene Erwerbsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4106', 'OHG - Offene Handelsgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4107', 'AG & Co KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4108', 'GmbH & Co KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4109', 'KG - Kommanditgesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4110', 'OG - Offene Gesellschaft', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4111', 'GbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4112', 'GesbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4113', 'GesnbR - Gesellschaft nach bürgerlichem Recht', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (41, '4114', 'e.U. - eingetragener Einzelunternehmer', 1); + +-- Social contributions Austria +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4101, 'Krankenversicherung', 1,1,'TAXATKV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4102, 'Unfallversicherung', 1,1,'TAXATUV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4103, 'Pensionsversicherung', 1,1,'TAXATPV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4104, 'Arbeitslosenversicherung', 1,1,'TAXATAV' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4105, 'Insolvenzentgeltsicherungsfond', 1,1,'TAXATIESG' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4106, 'Wohnbauförderung', 1,1,'TAXATWF' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4107, 'Arbeiterkammerumlage', 1,1,'TAXATAK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4108, 'Mitarbeitervorsorgekasse', 1,1,'TAXATMVK' ,'41'); +insert into llx_c_chargesociales (id, libelle, deductible, active, code, fk_pays) values (4109, 'Familienlastenausgleichsfond', 1,1,'TAXATFLAF' ,'41'); + +ALTER TABLE llx_accounting_bookkeeping MODIFY COLUMN doc_ref varchar(255) NOT NULL; + diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql new file mode 100644 index 00000000000..f8a74fec247 --- /dev/null +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -0,0 +1,25 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 4.0.0 or higher. +-- +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To drop an index: -- VMYSQL4.0 DROP INDEX nomindex on llx_table +-- To drop an index: -- VPGSQL8.0 DROP INDEX nomindex +-- To restrict request to Mysql version x.y minimum use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y minimum use -- VPGSQLx.y +-- To make pk to be auto increment (mysql): VMYSQL4.3 ALTER TABLE llx_c_shipment_mode CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE +-- To set a field as NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as default NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- Note: fields with type BLOB/TEXT can't have default value. +-- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user); +-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); + + +ALTER TABLE llx_accounting_bookkeeping ADD COLUMN validated tinyint DEFAULT 0 NOT NULL; diff --git a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql index 5e2be869a9f..dca4b70a5d5 100644 --- a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql +++ b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql @@ -22,7 +22,7 @@ CREATE TABLE llx_accounting_bookkeeping rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, doc_date date NOT NULL, doc_type varchar(30) NOT NULL, -- facture_client/reglement_client/facture_fournisseur/reglement_fournisseur - doc_ref varchar(30) NOT NULL, -- facture_client/reglement_client/... reference number + doc_ref varchar(255) NOT NULL, -- facture_client/reglement_client/... reference number fk_doc integer NOT NULL, -- facture_client/reglement_client/... rowid fk_docdet integer NOT NULL, -- facture_client/reglement_client/... line rowid code_tiers varchar(24), -- code tiers @@ -35,5 +35,6 @@ CREATE TABLE llx_accounting_bookkeeping fk_user_author integer NOT NULL, import_key varchar(14), code_journal varchar(10) DEFAULT NULL, - piece_num integer NOT NULL + piece_num integer NOT NULL, + validated tinyint DEFAULT 0 NOT NULL -- 0 line not validated / 1 line validated (No deleting / No modification) ) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index e34ae887ffc..f42f18b8e46 100755 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -31,7 +31,6 @@ create table llx_product datec datetime, tms timestamp, - virtual tinyint DEFAULT 0 NOT NULL, -- Not used. Used by external modules. Value 0 for physical product, 1 for virtual product fk_parent integer DEFAULT 0, -- Not used. Used by external modules. Virtual product id label varchar(255) NOT NULL, @@ -44,8 +43,9 @@ create table llx_product price_min double(24,8) DEFAULT 0, price_min_ttc double(24,8) DEFAULT 0, price_base_type varchar(3) DEFAULT 'HT', - tva_tx double(6,3), -- Default VAT rate of product - recuperableonly integer NOT NULL DEFAULT '0', -- French NPR VAT + cost_price double(24,8) DEFAULT NULL, -- Cost price without tax. Can be used for margin calculation. + tva_tx double(6,3), -- Default VAT rate of product + recuperableonly integer NOT NULL DEFAULT '0', -- French NPR VAT localtax1_tx double(6,3) DEFAULT 0, -- Spanish local VAT 1 localtax2_tx double(6,3) DEFAULT 0, -- Spanish local VAT 2 fk_user_author integer DEFAULT NULL, -- user making creation @@ -76,7 +76,7 @@ create table llx_product fifo double(24,8), -- To store valuation of stock calculated using fifo method, for this product lifo double(24,8), -- To store valuation of stock calculated using lifo method, for this product canvas varchar(32) DEFAULT NULL, - finished tinyint DEFAULT NULL, + finished tinyint DEFAULT NULL, -- 1=manufactured product, 0=matiere premiere hidden tinyint DEFAULT 0, -- Not used. Deprecated. import_key varchar(14), -- Import key fk_price_expression integer, -- Link to the rule for dynamic price calculation diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql index fb5184715d1..e7cf555d24e 100755 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql @@ -34,12 +34,12 @@ create table llx_product_fournisseur_price remise_percent double NOT NULL DEFAULT 0, remise double NOT NULL DEFAULT 0, unitprice double(24,8) DEFAULT 0, - charges double(24,8) DEFAULT 0, - unitcharges double(24,8) DEFAULT 0, + charges double(24,8) DEFAULT 0, -- to store transport cost. Constant PRODUCT_CHARGES must be set to see it. + unitcharges double(24,8) DEFAULT 0, -- deprecated tva_tx double(6,3) NOT NULL, info_bits integer NOT NULL DEFAULT 0, fk_user integer, - fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation - import_key varchar(14), -- Import key + fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation + import_key varchar(14), -- Import key delivery_time_days integer )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_resource.key.sql b/htdocs/install/mysql/tables/llx_resource.key.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_user.sql b/htdocs/install/mysql/tables/llx_user.sql index 7263803feb6..e334ae1f802 100644 --- a/htdocs/install/mysql/tables/llx_user.sql +++ b/htdocs/install/mysql/tables/llx_user.sql @@ -34,9 +34,9 @@ create table llx_user fk_user_creat integer, fk_user_modif integer, login varchar(24) NOT NULL, - pass varchar(32), + pass varchar(128), pass_crypted varchar(128), - pass_temp varchar(32), -- temporary password when asked for forget password + pass_temp varchar(128), -- temporary password when asked for forget password api_key varchar(128), -- key to use REST API by this user gender varchar(10), civility varchar(6), diff --git a/htdocs/install/mysql/tables/llx_user_rib.sql b/htdocs/install/mysql/tables/llx_user_rib.sql new file mode 100644 index 00000000000..05738ce4582 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_user_rib.sql @@ -0,0 +1,37 @@ +-- ============================================================================= +-- Copyright (C) 2015 Alexandre Spangaro +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- ============================================================================= + +create table llx_user_rib +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_user integer NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id + datec datetime, + tms timestamp, + label varchar(30), + bank varchar(255), -- bank name + code_banque varchar(128), -- bank code + code_guichet varchar(6), -- desk code + number varchar(255), -- account number + cle_rib varchar(5), -- key of bank account + bic varchar(11), -- 11 according to ISO 9362 + iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 + domiciliation varchar(255), + proprio varchar(60), + owner_address varchar(255) +)ENGINE=innodb; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index a5d43a0d95e..8729dedc0a5 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -1292,7 +1292,10 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf) function migrate_price_facture($db,$langs,$conf) { $err=0; - + + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + $db->begin(); print ''; @@ -1333,7 +1336,7 @@ function migrate_price_facture($db,$langs,$conf) $facligne= new FactureLigne($db); $facligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,$facligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1407,6 +1410,9 @@ function migrate_price_facture($db,$langs,$conf) */ function migrate_price_propal($db,$langs,$conf) { + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + $db->begin(); print ''; @@ -1445,7 +1451,7 @@ function migrate_price_propal($db,$langs,$conf) $propalligne= new PropaleLigne($db); $propalligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$propalligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1552,9 +1558,9 @@ function migrate_price_contrat($db,$langs,$conf) // On met a jour les 3 nouveaux champs $contratligne= new ContratLigne($db); //$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis - $contratligne->id=$rowid; + $contratligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,0,$tmpmysoc); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,$contratligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1603,6 +1609,9 @@ function migrate_price_commande($db,$langs,$conf) { $db->begin(); + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + print ''; print '
        '; @@ -1639,7 +1648,7 @@ function migrate_price_commande($db,$langs,$conf) $commandeligne= new OrderLine($db); $commandeligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; @@ -1716,7 +1725,10 @@ function migrate_price_commande($db,$langs,$conf) function migrate_price_commande_fournisseur($db,$langs,$conf) { $db->begin(); - + + $tmpmysoc=new Societe($db); + $tmpmysoc->setMysoc($conf); + print ''; print '
        '; @@ -1753,7 +1765,7 @@ function migrate_price_commande_fournisseur($db,$langs,$conf) $commandeligne= new CommandeFournisseurLigne($db); $commandeligne->fetch($rowid); - $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0); + $result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpsoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index edc0a8d512d..8513bf325f8 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -1,5 +1,4 @@ # Dolibarr language file - en_US - Accounting Expert -CHARSET=UTF-8 ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file ACCOUNTING_EXPORT_DATE=Date format for export file ACCOUNTING_EXPORT_PIECE=Export the number of piece @@ -12,8 +11,6 @@ ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name Accounting=Accounting Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years Menuaccount=Accounting accounts Menuthirdpartyaccount=Thirdparty accounts MenuTools=Tools @@ -33,23 +30,17 @@ Back=Return Definechartofaccounts=Define a chart of accounts Selectchartofaccounts=Select a chart of accounts -Validate=Validate Addanaccount=Add an accounting account AccountAccounting=Accounting account AccountAccountingSuggest=Accounting account suggest Ventilation=Breakdown -ToDispatch=To dispatch -Dispatched=Dispatched CustomersVentilation=Breakdown customers SuppliersVentilation=Breakdown suppliers TradeMargin=Trade margin Reports=Reports ByCustomerInvoice=By invoices customers -ByMonth=By Month NewAccount=New accounting account -Update=Update -List=List Create=Create CreateMvts=Create movement UpdateAccount=Modification of an accounting account @@ -61,7 +52,6 @@ AccountBalanceByMonth=Account balance by month AccountingVentilation=Breakdown accounting AccountingVentilationSupplier=Breakdown accounting supplier AccountingVentilationCustomer=Breakdown accounting customer -Line=Line CAHTF=Total purchase supplier before tax InvoiceLines=Lines of invoice to be ventilated @@ -112,22 +102,19 @@ Docref=Reference Numerocompte=Account Code_tiers=Thirdparty Labelcompte=Label account -Debit=Debit -Credit=Credit -Amount=Amount Sens=Sens Codejournal=Journal DelBookKeeping=Delete the records of the general ledger -SellsJournal=Sells journal -PurchasesJournal=Purchases journal -DescSellsJournal=Sells journal +DescSellsJournal=Sales journal DescPurchasesJournal=Purchases journal BankJournal=Bank journal DescBankJournal=Bank journal including all the types of payments other than cash CashJournal=Cash journal DescCashJournal=Cash journal including the type of payment cash +FinanceJournal=Finance journal +DescFinanceJournal=Finance journal including all the types of payments by bank account CashPayment=Cash Payment @@ -150,9 +137,6 @@ Pcgversion=Version of the plan Pcgtype=Class of account Pcgsubtype=Under class of account Accountparent=Root of the account -Active=Statement - -NewFiscalYear=New fiscal year DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers TotalVente=Total turnover before tax diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b497bb45fc7..9a36531e543 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -105,7 +105,6 @@ DetailPosition=Sort number to define menu position PersonalizedMenusNotSupported=Personalized menus not supported AllMenus=All NotConfigured=Module not configured -Setup=Setup Activation=Activation Active=Active SetupShort=Setup @@ -193,15 +192,12 @@ ExportOptions=Export Options AddDropDatabase=Add DROP DATABASE command AddDropTable=Add DROP TABLE command ExportStructure=Structure -Datas=Data NameColumn=Name columns ExtendedInsert=Extended INSERT NoLockBeforeInsert=No lock commands around INSERT DelayedInsert=Delayed insert EncodeBinariesInHexa=Encode binary data in hexadecimal IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) -Yes=Yes -No=No AutoDetectLang=Autodetect (browser language) FeatureDisabledInDemo=Feature disabled in demo Rights=Permissions @@ -540,7 +536,7 @@ Module2800Desc=FTP Client Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3100Name=Skype -Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module3100Desc=Add a Skype button into card of users / third parties / contacts / members Module4000Name=HRM Module4000Desc=Human resources management Module5000Name=Multi-company @@ -926,7 +922,6 @@ MenuCompanySetup=Company/Foundation MenuNewUser=New user MenuTopManager=Top menu manager MenuLeftManager=Left menu manager -MenuManager=Menu manager MenuSmartphoneManager=Smartphone menu manager DefaultMenuTopManager=Top menu manager DefaultMenuLeftManager=Left menu manager @@ -1110,7 +1105,6 @@ XDebugInstalled=XDebug is loaded. XCacheInstalled=XCache is loaded. AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". FieldEdition=Edition of field %s -FixTZ=TimeZone fix FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) GetBarCode=Get barcode EmptyNumRefModelDesc=The code is free. This code can be modified at any time. @@ -1535,8 +1529,6 @@ DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) ModifMenu=Menu change DeleteMenu=Delete menu entry ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? -DeleteLine=Delete line -ConfirmDeleteLine=Are you sure you want to delete this line ? FailedToInitializeMenu=Failed to initialize menu ##### Tax ##### TaxSetup=Taxes, social or fiscal taxes and dividends module setup @@ -1644,8 +1636,6 @@ OpenFiscalYear=Open fiscal year CloseFiscalYear=Close fiscal year DeleteFiscalYear=Delete fiscal year ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? -Opened=Open -Closed=Closed AlwaysEditable=Can always be edited MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) NbMajMin=Minimum number of uppercase characters @@ -1674,6 +1664,7 @@ InstallModuleFromWebHasBeenDisabledByFile=Install of external module from applic ConfFileMuseContainCustom=Installing an external module from application save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to have option
        - $dolibarr_main_url_root_alt enabled to value $dolibarr_main_url_root_alt="/custom"
        - $dolibarr_main_document_root_alt enabled to value "%s/custom" HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (keep empty for no highlight) +TextTitleColor=Color of page title LinkColor=Color of links PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index c347c7a0336..20f6fe0619c 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -59,7 +59,6 @@ PaymentBack=Payment back Payments=Payments PaymentsBack=Payments back PaidBack=Paid back -DatePayment=Payment date DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment ? ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?
        The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. @@ -74,6 +73,7 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type +PaymentModeShort=Payment type PaymentTerm=Payment term PaymentConditions=Payment terms PaymentConditionsShort=Payment terms @@ -102,7 +102,6 @@ ConvertToReduc=Convert into future discount EnterPaymentReceivedFromCustomer=Enter payment received from customer EnterPaymentDueToCustomer=Make payment due to customer DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero -Amount=Amount PriceBase=Price base BillStatus=Invoice status BillStatusDraft=Draft (needs to be validated) @@ -186,7 +185,6 @@ ShowInvoiceReplace=Show replacing invoice ShowInvoiceAvoir=Show credit note ShowInvoiceDeposit=Show deposit invoice ShowPayment=Show payment -File=File AlreadyPaid=Already paid AlreadyPaidBack=Already paid back AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) @@ -239,7 +237,6 @@ Reduction=Reduction ReductionShort=Reduc. Reductions=Reductions ReductionsShort=Reduc. -Discount=Discount Discounts=Discounts AddDiscount=Create discount AddRelativeDiscount=Create relative discount @@ -272,6 +269,7 @@ HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) IdSocialContribution=Social/fiscal tax payment id PaymentId=Payment id +PaymentRef=Payment ref. InvoiceId=Invoice id InvoiceRef=Invoice ref. InvoiceDateCreation=Invoice creation date @@ -299,6 +297,8 @@ RelatedSupplierInvoices=Related supplier invoices LatestRelatedBill=Latest related invoice WarningBillExist=Warning, one or more invoice already exist MergingPDFTool=Merging PDF tool +AmountPaymentDistributedOnInvoice=Payment amount distributed on invoice +PaymentNote=Payment note # PaymentConditions PaymentConditionShortRECEP=Immediate diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 297556d6533..e31c347605e 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -56,7 +56,6 @@ ReportByCustomers=Report by customers ReportByQuarter=Report by rate CivilityCode=Civility code RegisteredOffice=Registered office -Name=Name Lastname=Last name Firstname=First name PostOrFunction=Post/Function diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index c7cbb6d0a9b..c71b18adc6f 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -79,7 +79,6 @@ ListPayment=List of payments ListOfPayments=List of payments ListOfCustomerPayments=List of customer payments ListOfSupplierPayments=List of supplier payments -DatePayment=Payment date DateStartPeriod=Date start period DateEndPeriod=Date end period NewVATPayment=New VAT payment @@ -200,7 +199,6 @@ ByProductsAndServices=By products and services RefExt=External ref ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". LinkedOrder=Link to order -ReCalculate=Recalculate Mode1=Method 1 Mode2=Method 2 CalculationRuleDesc=To calculate total VAT, there is two methods:
        Method 1 is rounding vat on each line, then summing them.
        Method 2 is summing all vat on each line, then rounding result.
        Final result may differs from few cents. Default mode is mode %s. diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 23ce68fe65d..a78fc8d285d 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsSubscriptions=Contracts/Subscriptions ContractsAndLine=Contracts and line of contracts Contract=Contract ContractLine=Contract line @@ -30,6 +31,7 @@ MenuRunningServices=Running services MenuExpiredServices=Expired services MenuClosedServices=Closed services NewContract=New contract +NewContractSubscription=New contract/subscription AddContract=Create contract SearchAContract=Search a contract DeleteAContract=Delete a contract diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index c96a506281d..4eb1c792b65 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -7,6 +7,7 @@ DeliveryOrders=Delivery orders DeliveryDate=Delivery date DeliveryDateShort=Deliv. date CreateDeliveryOrder=Generate delivery order +DeliveryStateSaved=Delivery state saved QtyDelivered=Qty delivered SetDeliveryDate=Set shipping date ValidateDeliveryReceipt=Validate delivery receipt diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index 96995adc8ac..d5d69daa7cf 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - ecm -MenuECM=Documents DocsMine=My documents DocsGenerated=Generated documents DocsElements=Elements documents diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 858e76af447..f3efba10999 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -3,8 +3,6 @@ # No errors NoErrorCommitIsDone=No error, we commit # Errors -Error=Error -Errors=Errors ErrorButCommitIsDone=Errors found but we validate despite this ErrorBadEMail=EMail %s is wrong ErrorBadUrl=Url %s is wrong diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 1ea8d970a3f..1d03a8ebbf9 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -1,5 +1,4 @@ # Dolibarr language file - en_US - hrm -CHARSET=UTF-8 # Admin HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service Establishments=Establishments diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index 6ec3ca2d14a..ed692c07424 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -52,9 +52,7 @@ ServerPortDescription=Database server port. Keep empty if unknown. DatabaseServer=Database server DatabaseName=Database name DatabasePrefix=Database prefix table -Login=Login AdminLogin=Login for Dolibarr database owner. -Password=Password PasswordAgain=Retype password a second time AdminPassword=Password for Dolibarr database owner. CreateDatabase=Create database @@ -62,14 +60,11 @@ CreateUser=Create owner DatabaseSuperUserAccess=Database server - Superuser access CheckToCreateDatabase=Check box if database does not exist and must be created.
        In this case, you must fill the login/password for superuser account at the bottom of this page. CheckToCreateUser=Check box if database owner does not exist and must be created.
        In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. -Experimental=(experimental) -Deprecated=(deprecated) DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) SaveConfigurationFile=Save values ConfigurationSaving=Saving configuration file ServerConnection=Server connection -DatabaseConnection=Database connection DatabaseCreation=Database creation UserCreation=User creation CreateDatabaseObjects=Database objects creation @@ -92,7 +87,6 @@ GoToDolibarr=Go to Dolibarr GoToSetupArea=Go to Dolibarr (setup area) MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. GoToUpgradePage=Go to upgrade page again -Examples=Examples WithNoSlashAtTheEnd=Without the slash "/" at the end DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. LoginAlreadyExists=Already exists @@ -113,7 +107,6 @@ Upgrade=Upgrade UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. Start=Start InstallNotAllowed=Setup not allowed by conf.php permissions -NotAvailable=Not available YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. AlreadyDone=Already migrated @@ -155,7 +148,7 @@ MigrationFinished=Migration finished LastStepDesc=Last step: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40/41/42/43), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index db8b013240f..bda203ce05f 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -84,9 +84,12 @@ EachInvoiceWillBeAttachedToEmail=A document using default invoice document templ MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) SendRemind=Send reminder by EMails RemindSent=%s reminder(s) sent -AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +AllRecipientSelected=All thirdparties selected and if an email is set. NoRemindSent=No EMail reminder sent -ResultOfMassSending=Result of mass EMail reminders sending +ResultOfMailSending=Result of mass EMail sending +NbSelected=Nb selected +NbIgnored=Nb ignored +NbSent=Nb sent # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 070bc5c3d56..3593c844add 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -28,6 +28,7 @@ NoTranslation=No translation NoRecordFound=No record found NoError=No error Error=Error +Errors=Errors ErrorFieldRequired=Field '%s' is required ErrorFieldFormat=Field '%s' has a bad value ErrorFileDoesNotExists=File %s does not exist @@ -671,7 +672,7 @@ NewAttribute=New attribute AttributeCode=Attribute code OptionalFieldsSetup=Extra attributes setup URLPhoto=URL of photo/logo -SetLinkToThirdParty=Link to another third party +SetLinkToAnotherThirdParty=Link to another third party CreateDraft=Create draft SetToDraft=Back to draft ClickToEdit=Click to edit @@ -698,6 +699,7 @@ Deductible=Deductible from=from toward=toward Access=Access +SelectAction=Select action HelpCopyToClipboard=Use Ctrl+C to copy to clipboard SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") OriginFileName=Original filename @@ -722,6 +724,9 @@ ViewList=List view Mandatory=Mandatory Hello=Hello Sincerely=Sincerely +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? + # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index daab8dcc3e5..1844a22c227 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -121,7 +121,6 @@ AttributeName=Attribute name String=String Text=Text Int=Int -Date=Date DateAndTime=Date and time PublicMemberCard=Member public card MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe diff --git a/htdocs/langs/en_US/oauth.lang b/htdocs/langs/en_US/oauth.lang index b902ff27098..4cc08b058c6 100644 --- a/htdocs/langs/en_US/oauth.lang +++ b/htdocs/langs/en_US/oauth.lang @@ -9,129 +9,6 @@ RequestAccess=Click here to request/renew access and receive a new token to save DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credential on your OAuth provider: ListOfSupportedOauthProviders=Enter here credential provided by your OAuth2 provider. Only supported OAuth2 providers are visible here. This setup may be used by other modules than need OAuth2 authentication. -OAUTH_AMAZON_NAME=Api Amazon -OAUTH_AMAZON_ID=Api Amazon Id -OAUTH_AMAZON_SECRET=Api Amazon Secret -OAUTH_BITBUCKET_NAME=Api Bitbucket -OAUTH_BITBUCKET_ID=Api Bitbucket Id -OAUTH_BITBUCKET_SECRET=Api Bitbucket Secret -OAUTH_BITLY_NAME=Api Bitly -OAUTH_BITLY_ID=Api Bitly Id -OAUTH_BITLY_SECRET=Api Bitly Secret -OAUTH_BITRIX24_NAME=Api Bitrix24 -OAUTH_BITRIX24_ID=Api Bitrix24 Id -OAUTH_BITRIX24_SECRET=Api Bitrix24 Secret -OAUTH_BOX_NAME=Api Box -OAUTH_BOX_ID=Api Box Id -OAUTH_BOX_SECRET=Api Box Secret -OAUTH_BUFFER_NAME=Api Buffer -OAUTH_BUFFER_ID=Api Buffer Id -OAUTH_BUFFER_SECRET=Api Buffer Secret -OAUTH_DAILYMOTION_NAME=Api Daylymotion -OAUTH_DAILYMOTION_ID=Api Daylymotion Id -OAUTH_DAILYMOTION_SECRET=Api Daylymotion Secret -OAUTH_DEVIANTART_NAME=Api DeviantArt -OAUTH_DEVIANTART_ID=Api DeviantArt Id -OAUTH_DEVIANTART_SECRET=Api DeviantArt Secret -OAUTH_DROPBOX_NAME=Api Dropbox -OAUTH_DROPBOX_ID=Api Dropbox Id -OAUTH_DROPBOX_SECRET=Api Dropbox Secret -OAUTH_ETSY_NAME=Api Etsy -OAUTH_ETSY_ID=Api Etsy Id -OAUTH_ETSY_SECRET=Api Etsy Secret -OAUTH_EVEONLINE_NAME=Api EveOnline -OAUTH_EVEONLINE_ID=Api EveOnline Id -OAUTH_EVEONLINE_SECRET=Api EveOnline Secret -OAUTH_FACEBOOK_NAME=Api Facebook -OAUTH_FACEBOOK_ID=Api Facebook Id -OAUTH_FACEBOOK_SECRET=Api Facebook Secret -OAUTH_FITBIT_NAME=Api FitBit -OAUTH_FITBIT_ID=Api FitBit Id -OAUTH_FITBIT_SECRET=Api FitBit Secret -OAUTH_FIVEHUNDREDPX_NAME=Api 500px -OAUTH_FIVEHUNDREDPX_ID=Api 500px Id -OAUTH_FIVEHUNDREDPX_SECRET=Api 500px Secret -OAUTH_FLICKR_NAME=Api Flickr -OAUTH_FLICKR_ID=Api Flickr Id -OAUTH_FLICKR_SECRET=Api Flickr Secret -OAUTH_FOURSQUARE_NAME=Api Foursquare -OAUTH_FOURSQUARE_ID=Api Foursquare Id -OAUTH_FOURSQUARE_SECRET=Api Foursquare Secret -OAUTH_GITHUB_NAME=Api Github -OAUTH_GITHUB_ID=Api Github Id -OAUTH_GITHUB_SECRET=Api Github Secret OAUTH_GOOGLE_NAME=Api Google OAUTH_GOOGLE_ID=Api Google Id OAUTH_GOOGLE_SECRET=Api Google Secret -OAUTH_HUBIC_NAME=Api Hubic -OAUTH_HUBIC_ID=Api Hubic Id -OAUTH_HUBIC_SECRET=Api Hubic Secret -OAUTH_INSTAGRAM_NAME=Api Instagram -OAUTH_INSTAGRAM_ID=Api Instagram Id -OAUTH_INSTAGRAM_SECRET=Api Instagram Secret -OAUTH_LINKEDIN_NAME=Api Linkedin -OAUTH_LINKEDIN_ID=Api Linkedin Id -OAUTH_LINKEDIN_SECRET=Api Linkedin Secret -OAUTH_MAILCHIMP_NAME=Api Mailchimp -OAUTH_MAILCHIMP_ID=Api Mailchimp Id -OAUTH_MAILCHIMP_SECRET=Api Mailchimp Secret -OAUTH_MICROSOFT_NAME=Api Microsoft -OAUTH_MICROSOFT_ID=Api Microsoft Id -OAUTH_MICROSOFT_SECRET=Api Microsoft Secret -OAUTH_NEST_NAME=Api Nest -OAUTH_NEST_ID=Api Nest Id -OAUTH_NEST_SECRET=Api Nest Secret -OAUTH_NETATMO_NAME=Api Netatmo -OAUTH_NETATMO_ID=Api Netatmo Id -OAUTH_NETATMO_SECRET=Api Netatmo Secret -OAUTH_PARROTFLOWERPOWER_NAME=Api Parrot Flower Power -OAUTH_PARROTFLOWERPOWER_ID=Api Parrot Flower Power Id -OAUTH_PARROTFLOWERPOWER_SECRET=Api Parrot Flower Power Secret -OAUTH_PAYPAL_NAME=Api Paypal -OAUTH_PAYPAL_ID=Api Paypal Id -OAUTH_PAYPAL_SECRET=Api Paypal Secret -OAUTH_POCKET_NAME=Api Pocket -OAUTH_POCKET_ID=Api Pocket Id -OAUTH_POCKET_SECRET=Api Pocket Secret -OAUTH_QUICKBOOKS_NAME=Api Quickbooks -OAUTH_QUICKBOOKS_ID=Api Quickbooks Id -OAUTH_QUICKBOOKS_SECRET=Api Quickbooks Secret -OAUTH_REDDIT_NAME=Api Reddit -OAUTH_REDDIT_ID=Api Reddit Id -OAUTH_REDDIT_SECRET=Api Reddit Secret -OAUTH_REDMINE_NAME=Api Redmine -OAUTH_REDMINE_ID=Api Redmine Id -OAUTH_REDMINE_SECRET=Api Redmine Secret -OAUTH_RUNKEEPER_NAME=Api Runkeeper -OAUTH_RUNKEEPER_ID=Api Runkeeper Id -OAUTH_RUNKEEPER_SECRET=Api Runkeeper Secret -OAUTH_SCOOPIT_NAME=Api Scoopit -OAUTH_SCOOPIT_ID=Api Scoopit Id -OAUTH_SCOOPIT_SECRET=Api Scoopit Secret -OAUTH_SOUNDCLOUD_NAME=Api Soundcloud -OAUTH_SOUNDCLOUD_ID=Api Soundcloud Id -OAUTH_SOUNDCLOUD_SECRET=Api Soundcloud Secret -OAUTH_SPOTIFY_NAME=Api Spotify -OAUTH_SPOTIFY_ID=Api Spotify id -OAUTH_SPOTIFY_SECRET=Api Spotify Secret -OAUTH_STRAVA_NAME=Api Strava -OAUTH_STRAVA_ID=Api Strava Id -OAUTH_STRAVA_SECRET=Api Strava Secret -OAUTH_TUMBLR_NAME=Api Tumblr -OAUTH_TUMBLR_ID=Api Tumblr Id -OAUTH_TUMBLR_SECRET=Api Tumblr Secret -OAUTH_TWITTER_NAME=Api Twitter -OAUTH_TWITTER_ID=Api Twitter Id -OAUTH_TWITTER_SECRET=Api Twitter Secret -OAUTH_USTREAM_NAME=Api Ustream -OAUTH_USTREAM_ID=Api Ustream Id -OAUTH_USTREAM_SECRET=Api Ustream Secret -OAUTH_VIMEO_NAME=Api Vimeo -OAUTH_VIMEO_ID=Api Vimeo Id -OAUTH_VIMEO_SECRET=Api Vimeo Secret -OAUTH_YAHOO_NAME=Api Yahoo -OAUTH_YAHOO_ID=Api Yahoo Id -OAUTH_YAHOO_SECRET=Api Yahoo Secret -OAUTH_YAMMER_NAME=Api Yammer -OAUTH_YAMMER_ID=Api Yammer Id -OAUTH_YAMMER_SECRET=Api Yammer Secret diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 72985a9c0db..802fb02e6ef 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -31,6 +31,7 @@ StatusOrderSentShort=In process StatusOrderSent=Shipment in process StatusOrderOnProcessShort=Ordered StatusOrderProcessedShort=Processed +StatusOrderDelivered=Delivered StatusOrderToBillShort=Delivered StatusOrderToBill2Short=To bill StatusOrderApprovedShort=Approved @@ -63,7 +64,6 @@ SearchOrder=Search order SearchACustomerOrder=Search a customer order SearchASupplierOrder=Search a supplier order ShipProduct=Ship product -Discount=Discount CreateOrder=Create Order RefuseOrder=Refuse order ApproveOrder=Approve order diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 1ff53d36797..fe618aa58c4 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -10,27 +10,26 @@ BirthdayAlertOn= birthday alert active BirthdayAlertOff= birthday alert inactive Notify_FICHINTER_VALIDATE=Intervention validated Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail -Notify_BILL_VALIDATE=Customer invoice validated -Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_VALIDATE=Customer order validated +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused -Notify_ORDER_VALIDATE=Customer order validated Notify_PROPAL_VALIDATE=Customer proposal validated Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail Notify_WITHDRAW_TRANSMIT=Transmission withdrawal Notify_WITHDRAW_CREDIT=Credit withdrawal Notify_WITHDRAW_EMIT=Perform withdrawal -Notify_ORDER_SENTBYMAIL=Customer order sent by mail Notify_COMPANY_CREATE=Third party created Notify_COMPANY_SENTBYMAIL=Mails sent from third party card -Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated Notify_BILL_PAYED=Customer invoice payed Notify_BILL_CANCEL=Customer invoice canceled Notify_BILL_SENTBYMAIL=Customer invoice sent by mail -Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated -Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail @@ -58,13 +57,13 @@ Miscellaneous=Miscellaneous NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
        The two lines are separated by a carriage return.

        __SIGNATURE__ -PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __REF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierProposal=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ @@ -138,7 +137,6 @@ VolumeUnitinch3=in³ VolumeUnitounce=ounce VolumeUnitlitre=litre VolumeUnitgallon=gallon -Size=size SizeUnitm=m SizeUnitdm=dm SizeUnitcm=cm diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index b2eadfce654..54f8cb1980f 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -8,6 +8,7 @@ PAYPAL_API_SANDBOX=Mode test/sandbox PAYPAL_API_USER=API username PAYPAL_API_PASSWORD=API password PAYPAL_API_SIGNATURE=API signature +PAYPAL_SSLVERSION=Curl SSL Version PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only PaypalModeIntegral=Integral PaypalModeOnlyPaypal=PayPal only diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index ddda0152245..8c850fdabd3 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -76,6 +76,8 @@ SellingPriceHT=Selling price (net of tax) SellingPriceTTC=Selling price (inc. tax) PublicPrice=Public price CurrentPrice=Current price +CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. +CostPriceUsage=In a future version, this value could be used for margin calculation. NewPrice=New price MinPrice=Min. selling price MinPriceHT=Min. selling price (net of tax) @@ -104,7 +106,6 @@ AddToOtherProposals=Add to other proposals AddToMyBills=Add to my bills AddToOtherBills=Add to other bills CorrectStock=Correct stock -AddPhoto=Add photo ListOfStockMovements=List of stock movements BuyingPrice=Buying price PriceForEachProduct=Products with specific prices @@ -137,7 +138,6 @@ KeywordFilter=Keyword filter CategoryFilter=Category filter ProductToAddSearch=Search product to add AddDel=Add/Delete -Quantity=Quantity NoMatchFound=No match found ProductAssociationList=List of products/services that are component of this virtual product/package ProductParentList=List of package products/services with this product as a component @@ -190,6 +190,8 @@ ClonePricesProduct=Clone main informations and prices CloneCompositionProduct=Clone packaged product/service ProductIsUsed=This product is used NewRefForClone=Ref. of new product/service +SellingPrices=Selling prices +BuyingPrices=Buying prices CustomerPrices=Customer prices SuppliersPrices=Supplier prices SuppliersPricesOfProductsOrServices=Supplier prices (of products or services) @@ -250,7 +252,7 @@ UnitPmp=Net unit VWAP CostPmpHT=Net total VWAP ProductUsedForBuild=Auto consumed by production ProductBuilded=Production completed -ProductsMultiPrice=Product multi-price +ProductsMultiPrice=Products and prices for each price level ProductsOrServiceMultiPrice=Customer prices (of products or services, multi-prices) ProductSellByQuarterHT=Products turnover quarterly before tax ServiceSellByQuarterHT=Services turnover quarterly before tax @@ -309,3 +311,4 @@ PropalMergePdfProductChooseFile=Select PDF files IncludingProductWithTag=Including product/service with tag DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer WarningSelectOneDocument=Please select at least one document +DefaultUnitToShow=Units diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 505f6bce8e5..4bb6a52af8b 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -99,7 +99,6 @@ ReOpenAProject=Open project ConfirmReOpenAProject=Are you sure you want to re-open this project ? ProjectContact=Project contacts ActionsOnProject=Events on project -OpenedProjects=Opened projects YouAreNotContactOfProject=You are not a contact of this private project DeleteATimeSpent=Delete time spent ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? @@ -180,6 +179,7 @@ YouCanCompleteRef=If you want to complete the ref with some information (to use OpenedProjectsByThirdparties=Opened projects by thirdparties OpportunityTotalAmount=Opportunities total amount OpportunityPonderatedAmount=Opportunities weighted amount +OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability (depending on status of opportunity) OppStatusPROSP=Prospection OppStatusQUAL=Qualification OppStatusPROPO=Proposal diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index b0e2887feb0..c90b7abeba2 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -11,10 +11,11 @@ DraftRequests=Draft requests LastModifiedRequests=Last %s modified price requests RequestsOpened=Open price requests SupplierProposalArea=Supplier proposals area -Askpricesupplier=Supplier proposals +SupplierProposalShort=Supplier proposal +SupplierProposals=Supplier proposals NewAskPrice=New price request NewAsk=New request -ShowAskpricesupplier=Show price request +ShowSupplierProposal=Show price request AddSupplierProposal=Create a price request SupplierProposalRefFourn=Supplier ref SupplierProposalDate=Delivery date @@ -25,22 +26,22 @@ DateAsk=Date of request DeleteAsk=Delete request ValidateAsk=Validate request AddAsk=Create a request -AskpricesupplierDraft=Drafts -AskpricesupplierOpened=Open -AskpricesupplierStatusDraft=Draft (needs to be validated) -AskpricesupplierStatusValidated=Validated (request is open) -AskpricesupplierStatusOpened=Validated (request is open) -AskpricesupplierStatusClosed=Closed -AskpricesupplierStatusSigned=Accepted -AskpricesupplierStatusNotSigned=Refused -AskpricesupplierStatusBilled=Billed -AskpricesupplierStatusDraftShort=Draft -AskpricesupplierStatusValidatedShort=Validated -AskpricesupplierStatusOpenedShort=Open -AskpricesupplierStatusClosedShort=Closed -AskpricesupplierStatusSignedShort=Accepted -AskpricesupplierStatusNotSignedShort=Refused -AskpricesupplierStatusBilledShort=Billed +SupplierProposalDraft=Drafts +SupplierProposalOpened=Open +SupplierProposalStatusDraft=Draft (needs to be validated) +SupplierProposalStatusValidated=Validated (request is open) +SupplierProposalStatusOpened=Validated (request is open) +SupplierProposalStatusClosed=Closed +SupplierProposalStatusSigned=Accepted +SupplierProposalStatusNotSigned=Refused +SupplierProposalStatusBilled=Billed +SupplierProposalStatusDraftShort=Draft +SupplierProposalStatusValidatedShort=Validated +SupplierProposalStatusOpenedShort=Open +SupplierProposalStatusClosedShort=Closed +SupplierProposalStatusSignedShort=Accepted +SupplierProposalStatusNotSignedShort=Refused +SupplierProposalStatusBilledShort=Billed CopyAskFrom=Create price request by copying existing a request CreateEmptyAsk=Create blank request CloneAsk=Clone price request diff --git a/htdocs/langs/en_US/trips.lang b/htdocs/langs/en_US/trips.lang index c6f4f316a04..b0c2014a104 100644 --- a/htdocs/langs/en_US/trips.lang +++ b/htdocs/langs/en_US/trips.lang @@ -28,8 +28,6 @@ AnyOtherInThisListCanValidate=Person to inform for validation. TripSociete=Information company TripSalarie=Informations user TripNDF=Informations expense report -DeleteLine=Delete a line of the expense report -ConfirmDeleteLine=Are you sure you want to delete this line ? PDFStandardExpenseReports=Standard template to generate a PDF document for expense report ExpenseReportLine=Expense report line TF_OTHER=Other @@ -53,8 +51,6 @@ AddLineMini=Add Date_DEBUT=Period date start Date_FIN=Period date end ModePaiement=Payment mode -Note=Note -Project=Project VALIDATOR=User responsible for approval VALIDOR=Approved by diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 81e1d48d46c..8a7dfcfe787 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -41,7 +41,6 @@ SearchAUser=Search a user LoginNotDefined=Login is not defined. NameNotDefined=Name is not defined. ListOfUsers=List of users -Administrator=Administrator SuperAdministrator=Super Administrator SuperAdministratorDesc=Global administrator AdministratorDesc=Administrator @@ -121,4 +120,5 @@ UseTypeFieldToChange=Use field Type to change OpenIDURL=OpenID URL LoginUsingOpenID=Use OpenID to login WeeklyHours=Weekly hours -ColorUser=Color of the user \ No newline at end of file +ColorUser=Color of the user +DisabledInMonoUserMode=Disabled in maintenance mode diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 47b8863cf25..8248042d10c 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -48,7 +48,6 @@ RefusedReason=Reason for rejection RefusedInvoicing=Billing the rejection NoInvoiceRefused=Do not charge the rejection InvoiceRefused=Invoice refused (Charge the rejection to customer) -Status=Status StatusUnknown=Unknown StatusWaiting=Waiting StatusTrans=Sent diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 455cb209986..b9f5a664fe5 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -297,3 +297,4 @@ PropalMergePdfProductChooseFile=Sélectionnez les fichiers PDF IncludingProductWithTag=Incluant un produit ayant le tag/catégorie DefaultPriceRealPriceMayDependOnCustomer=Prix ​​par défaut, le prix réel peut dépendre du client WarningSelectOneDocument=Sélectionnez au moins un document +DefaultUnitToShow=Unités diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 97f36381257..256e1bc4129 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -178,6 +178,7 @@ TaskAssignedToEnterTime=Tâche assignée. La saisie de temps sur cette tâche de OpenedProjectsByThirdparties=Projets ouverts par tiers OpportunityTotalAmount=Montant total des opportunités OpportunityPonderatedAmount=Montant pondéré des opportunités +OpportunityPonderatedAmountDesc=Montant pondéré par la probabilité (dépendante du statut) des opportunités OppStatusPROSP=Prospection OppStatusQUAL=Qualification OppStatusPROPO=Proposition diff --git a/htdocs/langs/fr_FR/supplier_proposal.lang b/htdocs/langs/fr_FR/supplier_proposal.lang index 2bbf73507ba..3d3037b58a8 100644 --- a/htdocs/langs/fr_FR/supplier_proposal.lang +++ b/htdocs/langs/fr_FR/supplier_proposal.lang @@ -11,10 +11,10 @@ DraftRequests=Demandes brouillons LastModifiedRequests=Les %s dernières demandes de prix modifiées RequestsOpened=Demandes de prix ouvertes SupplierProposalArea=Espace des demandes de prix fournisseurs -Askpricesupplier=Demande de prix fournisseur +SupplierProposal=Demande de prix fournisseur NewAskPrice=Nouvelle demande de prix NewAsk=Nouvelle demande -ShowAskpricesupplier=Afficher la demande de prix +ShowSupplierProposal=Afficher la demande de prix AddSupplierProposal=Créer une demande de prix SupplierProposalRefFourn=Réf. fournisseur SupplierProposalDate=Date de livraison @@ -25,20 +25,20 @@ DateAsk=Date de demande DeleteAsk=Supprimer demande ValidateAsk=Valider demande AddAsk=Créer une demande -AskpricesupplierDraft=Brouillons -AskpricesupplierOpened=Ouvertes -AskpricesupplierStatusDraft=Brouillon (à valider) -AskpricesupplierStatusValidated=Validée (demande ouverte) -AskpricesupplierStatusOpened=Validée (demande ouverte) -AskpricesupplierStatusClosed=Fermée -AskpricesupplierStatusSigned=Acceptée -AskpricesupplierStatusNotSigned=Refusée -AskpricesupplierStatusDraftShort=Brouillon -AskpricesupplierStatusValidatedShort=Validée -AskpricesupplierStatusOpenedShort=Ouverte -AskpricesupplierStatusClosedShort=Fermée -AskpricesupplierStatusSignedShort=Acceptée -AskpricesupplierStatusNotSignedShort=Refusée +SupplierProposalDraft=Brouillons +SupplierProposalOpened=Ouvertes +SupplierProposalStatusDraft=Brouillon (à valider) +SupplierProposalStatusValidated=Validée (demande ouverte) +SupplierProposalStatusOpened=Validée (demande ouverte) +SupplierProposalStatusClosed=Fermée +SupplierProposalStatusSigned=Acceptée +SupplierProposalStatusNotSigned=Refusée +SupplierProposalStatusDraftShort=Brouillon +SupplierProposalStatusValidatedShort=Validée +SupplierProposalStatusOpenedShort=Ouverte +SupplierProposalStatusClosedShort=Fermée +SupplierProposalStatusSignedShort=Acceptée +SupplierProposalStatusNotSignedShort=Refusée CopyAskFrom=Créer demande/devis par recopie d'une demande existante CreateEmptyAsk=Créer demande/devis vierge CloneAsk=Cloner demande de prix diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index c08c80536d7..9ccae056b90 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -117,7 +117,7 @@ if ($action == 'add') } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $_GET["commande_id"]=$_POST["commande_id"]; @@ -278,8 +278,8 @@ elseif ($action == 'remove_file') $upload_dir = $conf->expedition->dir_output . "/receipt"; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file,0,0,0,$object); - if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); + else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); } diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index a6e9f352d4e..b575536f950 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -54,11 +54,11 @@ if ($action == 'confirm_paid' && $confirm == 'yes') $result = $object->set_paid($user); if ($result > 0) { - setEventMessage($langs->trans('LoanPaid')); + setEventMessages($langs->trans('LoanPaid'), null, 'mesgs'); } else { - setEventMessage($loan->error, 'errors'); + setEventMessages($loan->error, null, 'errors'); } } @@ -69,13 +69,13 @@ if ($action == 'confirm_delete' && $confirm == 'yes') $result=$object->delete($user); if ($result > 0) { - setEventMessage($langs->trans('LoanDeleted')); + setEventMessages($langs->trans('LoanDeleted'), null, 'mesgs'); header("Location: index.php"); exit; } else { - setEventMessage($loan->error, 'errors'); + setEventMessages($loan->error, null, 'errors'); } } @@ -121,7 +121,7 @@ if ($action == 'add' && $user->rights->loan->write) $id=$object->create($user); if ($id <= 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -157,7 +157,7 @@ else if ($action == 'update' && $user->rights->loan->write) } else { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } else diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 25d0f015253..e99691d8ff9 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -83,6 +83,12 @@ if ($filtre) { } $sql.= " GROUP BY l.rowid, l.label, l.capital, l.datestart, l.dateend"; $sql.= $db->order($sortfield,$sortorder); +$numall = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $numall = $db->num_rows($result); +} $sql.= $db->plimit($limit+1, $offset); //print $sql; @@ -93,13 +99,16 @@ if ($resql) $i = 0; $var=true; - print load_fiche_titre($langs->trans("Loans")); - $param=""; - if ($optioncss != '') $param.='&optioncss='.$optioncss; + if ($search_ref) $param.="&search_ref=".$search_ref; + if ($search_label) $param.="&search_label=".$search_user; + if ($search_amount) $param.="&search_amount=".$search_amount_ht; + if ($optioncss != '') $param.='&optioncss='.$optioncss; print '
        '."\n"; if ($optioncss != '') print ''; + print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $numall,'title_generic.png'); + print ''; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"l.rowid","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 8d8b5dd1ecf..6315264bad7 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -65,7 +65,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del } else { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } @@ -103,7 +103,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->loan->wri } else { - setEventMessage($payment->error); + setEventMessages($payment->error, $payment->errors, 'errors'); $db->rollback(); } } diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 69cfecbe5c2..06061da5c22 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -83,7 +83,7 @@ if ($action == 'add_payment') $amount = GETPOST('amount_capital') + GETPOST('amount_insurance') + GETPOST('amount_interest'); if ($amount == 0) { - setEventMessage($langs->trans('ErrorNoPaymentDefined'), 'errors'); + setEventMessages($langs->trans('ErrorNoPaymentDefined'), null, 'errors'); $error++; } @@ -109,7 +109,7 @@ if ($action == 'add_payment') $paymentid = $payment->create($user); if ($paymentid < 0) { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } } @@ -119,7 +119,7 @@ if ($action == 'add_payment') $result = $payment->addPaymentToBank($user, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); if (! $result > 0) { - setEventMessage($payment->error, 'errors'); + setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } } @@ -307,7 +307,5 @@ if ($_GET["action"] == 'create') print "\n"; } - -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d173282fdb9..890027c9d30 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1269,7 +1269,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs // Global js function print ''."\n"; - print ''."\n"; + print ''."\n"; // Add datepicker default options print ''."\n"; @@ -1461,13 +1461,13 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $logouthtmltext.=$langs->trans("Logout").'
        '; $logouttext .=''; - $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout.png', 'class="login"', 0, 0, 1); + $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1); $logouttext .=''; } else { $logouthtmltext.=$langs->trans("NoLogoutProcessWithAuthMode",$_SESSION["dol_authmode"]); - $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout.png', 'class="login"', 0, 0, 1); + $logouttext .= img_picto($langs->trans('Logout').":".$langs->trans('Logout'), 'logout_top.png', 'class="login"', 0, 0, 1); } print '\n"; diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index 8ff533df259..706d14ebe12 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -73,7 +73,7 @@ if ($action == 'remises') { if (dolibarr_set_const($db, 'MARGIN_METHODE_FOR_DISCOUNT', $_POST['MARGIN_METHODE_FOR_DISCOUNT'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { @@ -85,7 +85,7 @@ if ($action == 'typemarges') { if (dolibarr_set_const($db, 'MARGIN_TYPE', $_POST['MARGIN_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { @@ -97,7 +97,7 @@ if ($action == 'contact') { if (dolibarr_set_const($db, 'AGENT_CONTACT_TYPE', $_POST['AGENT_CONTACT_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - setEventMessage($langs->trans("RecordModifiedSuccessfully")); + setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } else { diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php index 83ed0ccfc0f..f9189ed7e97 100644 --- a/htdocs/margin/agentMargins.php +++ b/htdocs/margin/agentMargins.php @@ -94,7 +94,7 @@ print '
        '; if ($user->rights->margins->read->all) { print ''; print ''; } diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php index 7a36a316d13..c419a804210 100644 --- a/htdocs/opensurvey/card.php +++ b/htdocs/opensurvey/card.php @@ -99,7 +99,7 @@ if ($action == 'update') $res=$object->update($user); if ($res < 0) { - setEventMessage($object->error,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action='edit'; } } @@ -131,7 +131,7 @@ if (GETPOST('ajoutcomment')) if (! $resql) { - setEventMessage($langs->trans('ErrorInsertingComment'), 'errors'); + setEventMessages($langs->trans('ErrorInsertingComment'), null, 'errors'); } } } diff --git a/htdocs/opensurvey/img/accept-24.png b/htdocs/opensurvey/img/accept-24.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/accept.png b/htdocs/opensurvey/img/accept.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/add-16.png b/htdocs/opensurvey/img/add-16.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/add-24.png b/htdocs/opensurvey/img/add-24.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/calendar-32.png b/htdocs/opensurvey/img/calendar-32.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/cancel.png b/htdocs/opensurvey/img/cancel.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/chart-32.png b/htdocs/opensurvey/img/chart-32.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/fforward.png b/htdocs/opensurvey/img/fforward.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/medaille.png b/htdocs/opensurvey/img/medaille.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/next.png b/htdocs/opensurvey/img/next.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/object_opensurvey.png b/htdocs/opensurvey/img/object_opensurvey.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/previous.png b/htdocs/opensurvey/img/previous.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/img/rewind.png b/htdocs/opensurvey/img/rewind.png old mode 100755 new mode 100644 diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index 4844d9f8e59..fe73419c98b 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -38,9 +38,10 @@ $status=GETPOST('status'); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$limit = $conf->liste_limit; $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield="p.date_fin"; @@ -48,8 +49,6 @@ if (! $sortorder) $sortorder="DESC"; if ($page < 0) { $page = 0; } -$limit = $conf->liste_limit; -$offset = $limit * $page; $langs->load("opensurvey"); diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index ca10eac09b9..5c14a20de23 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -91,7 +91,7 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout $num_rows = $db->num_rows($resql); if ($num_rows > 0) { - setEventMessage($langs->trans("VoteNameAlreadyExists"),'errors'); + setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); $error++; } else @@ -1024,11 +1024,11 @@ if (isset($_POST["boutonp"]) && $_POST["nom"] == "") { } if (isset($erreur_prenom) && $erreur_prenom) { - setEventMessage($langs->trans('VoteNameAlreadyExists'), 'errors'); + setEventMessages($langs->trans('VoteNameAlreadyExists'), null, 'errors'); } if (isset($erreur_ajout_date) && $erreur_ajout_date) { - setEventMessage($langs->trans("ErrorWrongDate"), 'errors'); + setEventMessages($langs->trans("ErrorWrongDate"), null, 'errors'); } //fin du tableau diff --git a/htdocs/opensurvey/wizard/choix_autre.php b/htdocs/opensurvey/wizard/choix_autre.php index 9797762d6cb..a415d6b4987 100644 --- a/htdocs/opensurvey/wizard/choix_autre.php +++ b/htdocs/opensurvey/wizard/choix_autre.php @@ -84,7 +84,7 @@ if (isset($_POST["confirmecreation"])) //message d'erreur si aucun champ renseigné if ($testremplissage != "ok" || (!$toutchoix)) { - setEventMessage($langs->trans("ErrorOpenSurveyOneChoice"), 'errors'); + setEventMessages($langs->trans("ErrorOpenSurveyOneChoice"), null, 'errors'); } else { //format du sondage AUTRE diff --git a/htdocs/opensurvey/wizard/choix_date.php b/htdocs/opensurvey/wizard/choix_date.php index 6a1efd39617..ecfe319828a 100644 --- a/htdocs/opensurvey/wizard/choix_date.php +++ b/htdocs/opensurvey/wizard/choix_date.php @@ -156,13 +156,13 @@ if (GETPOST('confirmation')) } if (isset($errheure)) { - setEventMessage($langs->trans("ErrorBadFormat"), 'errors'); + setEventMessages($langs->trans("ErrorBadFormat"), null, 'errors'); } } //If just one day and no other time options, error message if (count($_SESSION["totalchoixjour"])=="1" && $_POST["horaires0"][0]=="" && $_POST["horaires0"][1]=="" && $_POST["horaires0"][2]=="" && $_POST["horaires0"][3]=="" && $_POST["horaires0"][4]=="") { - setEventMessage($langs->trans("MoreChoices"), 'errors'); + setEventMessages($langs->trans("MoreChoices"), null, 'errors'); $erreur=true; } diff --git a/htdocs/opensurvey/wizard/create_survey.php b/htdocs/opensurvey/wizard/create_survey.php index ec78e9789ca..c9ba1324a70 100644 --- a/htdocs/opensurvey/wizard/create_survey.php +++ b/htdocs/opensurvey/wizard/create_survey.php @@ -94,12 +94,12 @@ if (GETPOST("creation_sondage_date") || GETPOST("creation_sondage_autre")) $_SESSION['champdatefin'] = dol_print_date($champdatefin,'dayrfc'); //$testdate = false; //$_SESSION['champdatefin'] = dol_print_date($champdatefin,'dayrfc'); - setEventMessage('ExpireDate','warnings'); + setEventMessages('ExpireDate', null, 'warnings'); } } if (! $testdate) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("ExpireDate")), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("ExpireDate")), null, 'errors'); } if ($titre && $testdate) diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php index 5a7301613c4..98645575a13 100644 --- a/htdocs/paybox/admin/paybox.php +++ b/htdocs/paybox/admin/paybox.php @@ -67,7 +67,7 @@ if ($action == 'setvalue' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index fd649b825bc..f794989c59e 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -51,6 +51,8 @@ if ($action == 'setvalue' && $user->admin) if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_API_SIGNATURE",GETPOST('PAYPAL_API_SIGNATURE','alpha'),'chaine',0,'',$conf->entity); if (! $result > 0) $error++; + $result=dolibarr_set_const($db, "PAYPAL_SSLVERSION",GETPOST('PAYPAL_SSLVERSION','alpha'),'chaine',0,'',$conf->entity); + if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_CREDITOR",GETPOST('PAYPAL_CREDITOR','alpha'),'chaine',0,'',$conf->entity); if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYPAL_API_INTEGRAL_OR_PAYPALONLY",GETPOST('PAYPAL_API_INTEGRAL_OR_PAYPALONLY','alpha'),'chaine',0,'',$conf->entity); @@ -73,7 +75,7 @@ if ($action == 'setvalue' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { @@ -111,7 +113,7 @@ print $langs->trans("PaypalDesc")."
        \n"; if (! function_exists('curl_version')) { $langs->load("errors"); - setEventMessage($langs->trans("ErrorPhpCurlNotInstalled"), 'errors'); + setEventMessages($langs->trans("ErrorPhpCurlNotInstalled"), null, 'errors'); } @@ -119,6 +121,7 @@ print '
        '; print '
        '.$langs->trans('SalesRepresentative').''; - print $form->select_dolusers($agentid, 'agentid', 1); + print $form->select_dolusers($agentid, 'agentid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); print '
        '; +// Account Parameters $var=true; print ''; print ''; @@ -151,6 +154,13 @@ print ''; +$var=!$var; +print ''; + +// Usage Parameters $var=true; print ''; print ''; diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 824f312a9af..f06624cb076 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -702,8 +702,8 @@ function hash_call($methodName,$nvpStr) exit;*/ curl_setopt($ch, CURLOPT_URL, $API_Endpoint); curl_setopt($ch, CURLOPT_VERBOSE, 1); - //curl_setopt($ch, CURLOPT_SSLVERSION, 3); // Force SSLv3 - curl_setopt($ch, CURLOPT_SSLVERSION, 1); // Force TLSv1 + // TLSv1 by default or change to TLSv1.2 in module configuration + curl_setopt($ch, CURLOPT_SSLVERSION, (empty($conf->global->PAYPAL_SSLVERSION)?1:$conf->global->PAYPAL_SSLVERSION)); //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); diff --git a/htdocs/product/admin/dynamic_prices.php b/htdocs/product/admin/dynamic_prices.php index 79d7cdebfc2..45086630c47 100644 --- a/htdocs/product/admin/dynamic_prices.php +++ b/htdocs/product/admin/dynamic_prices.php @@ -43,14 +43,14 @@ $price_globals = new PriceGlobalVariable($db); if ($action == 'edit_variable') { $res = $price_globals->fetch($selection); if ($res < 1) { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } $price_updaters = new PriceGlobalVariableUpdater($db); if ($action == 'edit_updater') { $res = $price_updaters->fetch($selection); if ($res < 1) { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } @@ -67,7 +67,7 @@ if (!empty($action) && empty($cancel)) { if (!empty($save)) { foreach ($price_globals->listGlobalVariables() as $entry) { if ($price_globals->id != $entry->id && dol_strtolower($price_globals->code) == dol_strtolower($entry->code)) { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); $save = null; } } @@ -78,21 +78,21 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } elseif ($action == 'edit_variable' && !empty($save)) { $res = $price_globals->update($user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } elseif ($action == 'delete_variable') { $res = $price_globals->delete($selection, $user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_globals->error, 'errors'); + setEventMessages($price_globals->error, $price_globals->errors, 'errors'); } } @@ -113,7 +113,7 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } elseif ($action == 'edit_updater' && !empty($save)) { //Verify if process() works @@ -124,14 +124,14 @@ if (!empty($action) && empty($cancel)) { if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } elseif ($action == 'delete_updater') { $res = $price_updaters->delete($selection, $user); if ($res > 0) { $action = ''; } else { - setEventMessage($price_updaters->error, 'errors'); + setEventMessages($price_updaters->error, $price_updaters->errors, 'errors'); } } } elseif (!empty($cancel)) { diff --git a/htdocs/product/admin/price_rules.php b/htdocs/product/admin/price_rules.php index 83d90485b3d..64fa982fff1 100644 --- a/htdocs/product/admin/price_rules.php +++ b/htdocs/product/admin/price_rules.php @@ -89,13 +89,13 @@ if ($_POST) { SET fk_level = ".$db->escape($i_fk_level).", var_percent = ".$i_var_percent.", var_min_percent = ".$i_var_min_percent." WHERE level = ".$i; if (!$db->query($sql)) { - setEventMessage($langs->trans('ErrorSavingChanges'), 'errors'); + setEventMessages($langs->trans('ErrorSavingChanges'), null, 'errors'); } } } - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } /* diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index 9c979862933..57f6577f789 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -51,8 +51,9 @@ $select_pricing_rules=array( ); if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice - $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("Experimental").')'; + $langs->load("admin"); + $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY'] = $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; // TODO If this is enabled, price must be hidden when price by qty is enabled, also price for quantity must be used when adding product into order/propal/invoice + $select_pricing_rules['PRODUIT_CUSTOMER_PRICES_BY_QTY&PRODUIT_MULTIPRICES'] = $langs->trans('MultiPricesAbility') . '+' . $langs->trans('PriceByQuantity').' ('.$langs->trans("VersionExperimental").')'; } // Clean param @@ -97,12 +98,12 @@ if ($action == 'setModuleOptions') if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { $db->rollback(); - setEventMessage($langs->trans("Error"), 'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } @@ -195,11 +196,11 @@ if ($action) if (! $error) { - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { - setEventMessage($langs->trans("Error"), 'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php index 1f2820358e1..0d3ea7584f1 100644 --- a/htdocs/product/admin/product_tools.php +++ b/htdocs/product/admin/product_tools.php @@ -57,7 +57,7 @@ if ($action == 'convert') if ($oldvatrate == $newvatrate) { $langs->load("errors"); - setEventMessage($langs->trans("ErrorNewValueCantMatchOldValue"),'errors'); + setEventMessages($langs->trans("ErrorNewValueCantMatchOldValue"), null, 'errors'); $error++; } @@ -225,12 +225,12 @@ if ($action == 'convert') // Output result if (! $error) { - if ($nbrecordsmodified > 0) setEventMessage($langs->trans("RecordsModified",$nbrecordsmodified)); - else setEventMessage($langs->trans("NoRecordFound"),'warnings'); + if ($nbrecordsmodified > 0) setEventMessages($langs->trans("RecordsModified",$nbrecordsmodified), null, 'mesgs'); + else setEventMessages($langs->trans("NoRecordFound"), null, 'warnings'); } else { - setEventMessage($langs->trans("Error"),'errors'); + setEventMessages($langs->trans("Error"), null, 'errors'); } } diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 77b14b24c7a..33a84719ba7 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -149,21 +149,21 @@ if (empty($reshook)) else $errors[] = 'FailedToValidateBarCode'; $error++; - setEventMessage($errors,'errors'); + setEventMessages($errors, null, 'errors'); } } if ($action == 'setaccountancy_code_buy') { $result = $object->setAccountancyCode('buy', GETPOST('accountancy_code_buy')); - if ($result < 0) setEventMessage(join(',',$object->errors), 'errors'); + if ($result < 0) setEventMessages(join(',',$object->errors), null, 'errors'); $action=""; } if ($action == 'setaccountancy_code_sell') { $result = $object->setAccountancyCode('sell', GETPOST('accountancy_code_sell')); - if ($result < 0) setEventMessage(join(',',$object->errors), 'errors'); + if ($result < 0) setEventMessages(join(',',$object->errors), null, 'errors'); $action=""; } @@ -174,17 +174,23 @@ if (empty($reshook)) if (! GETPOST('label')) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Label')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Label')), null, 'errors'); $action = "create"; $error++; } if (empty($ref)) { - setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Ref')), 'errors'); + setEventMessages($langs->trans('ErrorFieldRequired',$langs->transnoentities('Ref')), null, 'errors'); $action = "create"; $error++; } - + if (GETPOST('duration_value') && ! GETPOST('duration_unit')) + { + setEventMessage($langs->trans('ErrorFieldRequired',$langs->transnoentities('Unit')), 'errors'); + $action = "create"; + $error++; + } + if (! $error) { $units = GETPOST('units', 'int'); @@ -224,7 +230,8 @@ if (empty($reshook)) if ($result < 0) { $error++; - setEventMessage('Failed to get bar code type information '.$stdobject->error, 'errors'); + $mesg='Failed to get bar code type information '; + setEventMessages($mesg.$stdobject->error, $mesg.$stdobject->errors, 'errors'); } $object->barcode_type_code = $stdobject->barcode_type_code; $object->barcode_type_coder = $stdobject->barcode_type_coder; @@ -290,8 +297,8 @@ if (empty($reshook)) } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans($object->error), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans($object->error), null, 'errors'); $action = "create"; } } @@ -353,7 +360,8 @@ if (empty($reshook)) if ($result < 0) { $error++; - setEventMessage('Failed to get bar code type information '.$stdobject->error, 'errors'); + $mesg='Failed to get bar code type information '; + setEventMessages($mesg.$stdobject->error, $mesg.$stdobject->errors, 'errors'); } $object->barcode_type_code = $stdobject->barcode_type_code; $object->barcode_type_coder = $stdobject->barcode_type_coder; @@ -378,15 +386,15 @@ if (empty($reshook)) } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans($object->error), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans($object->error), null, 'errors'); $action = 'edit'; } } else { - if (count($object->errors)) setEventMessage($object->errors, 'errors'); - else setEventMessage($langs->trans("ErrorProductBadRefOrLabel"), 'errors'); + if (count($object->errors)) setEventMessages($object->error, $object->errors, 'errors'); + else setEventMessages($langs->trans("ErrorProductBadRefOrLabel"), null, 'errors'); $action = 'edit'; } } @@ -400,7 +408,7 @@ if (empty($reshook)) { if (! GETPOST('clone_content') && ! GETPOST('clone_prices') ) { - setEventMessage($langs->trans("NoCloneOptionsSpecified"), 'errors'); + setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } else { @@ -427,7 +435,7 @@ if (empty($reshook)) if ($result < 1) { $db->rollback(); - setEventMessage($langs->trans('ErrorProductClone'), 'errors'); + setEventMessages($langs->trans('ErrorProductClone'), null, 'errors'); header("Location: ".$_SERVER["PHP_SELF"]."?id=".$originalId); exit; } @@ -454,7 +462,7 @@ if (empty($reshook)) $mesg=$langs->trans("ErrorProductAlreadyExists",$object->ref); $mesg.=' '.$langs->trans("ShowCardHere").'.'; - setEventMessage($mesg, 'errors'); + setEventMessages($mesg, null, 'errors'); $object->fetch($id); } else @@ -462,12 +470,12 @@ if (empty($reshook)) $db->rollback(); if (count($object->errors)) { - setEventMessage($object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); dol_print_error($db,$object->errors); } else { - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); dol_print_error($db,$object->error); } } @@ -498,7 +506,7 @@ if (empty($reshook)) } else { - setEventMessage($langs->trans($object->error), 'errors'); + setEventMessages($langs->trans($object->error), null, 'errors'); $reload = 0; $action=''; } @@ -624,7 +632,7 @@ if (empty($reshook)) return; } - setEventMessage($langs->trans("ErrorUnknown") . ": $result", 'errors'); + setEventMessages($langs->trans("ErrorUnknown") . ": $result", null, 'errors'); } elseif (GETPOST('commandeid') > 0) { $result = $commande->addline( $desc, @@ -696,7 +704,7 @@ if (empty($reshook)) } else { $action=""; - setEventMessage($langs->trans("WarningSelectOneDocument"), 'warnings'); + setEventMessages($langs->trans("WarningSelectOneDocument"), null, 'warnings'); } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index aaf5aaf1baa..b68ac04b87d 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -881,7 +881,7 @@ class Product extends CommonObject // Delete all child tables if (! $error) { - $elements = array('product_fournisseur_price','product_price','product_lang','categorie_product','product_stock'); + $elements = array('product_fournisseur_price','product_price','product_lang','categorie_product','product_stock','product_customer_price'); foreach($elements as $table) { if (! $error) @@ -1563,7 +1563,7 @@ class Product extends CommonObject } $sql = "SELECT rowid, ref, ref_ext, label, description, url, note, customcode, fk_country, price, price_ttc,"; - $sql.= " price_min, price_min_ttc, price_base_type, tva_tx, recuperableonly as tva_npr, localtax1_tx, localtax2_tx, tosell,"; + $sql.= " price_min, price_min_ttc, price_base_type, cost_price, tva_tx, recuperableonly as tva_npr, localtax1_tx, localtax2_tx, tosell,"; $sql.= " tobuy, fk_product_type, duration, seuil_stock_alerte, canvas,"; $sql.= " weight, weight_units, length, length_units, surface, surface_units, volume, volume_units, barcode, fk_barcode_type, finished,"; $sql.= " accountancy_code_buy, accountancy_code_sell, stock, pmp,"; @@ -1606,6 +1606,7 @@ class Product extends CommonObject $this->price_min = $obj->price_min; $this->price_min_ttc = $obj->price_min_ttc; $this->price_base_type = $obj->price_base_type; + $this->cost_price = $obj->cost_price; $this->tva_tx = $obj->tva_tx; //! French VAT NPR $this->tva_npr = $obj->tva_npr; diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 86dfb8a8fd4..9686c4683ae 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -85,9 +85,11 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se $error++; $action = 're-edit'; if ($object->error == "isFatherOfThis") { - setEventMessage($langs->trans("ErrorAssociationIsFatherOfThis"), 'errors'); - } else { - setEventMessage($object->error, 'errors'); + setEventMessages($langs->trans("ErrorAssociationIsFatherOfThis"), null, 'errors'); + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -101,7 +103,7 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { $error++; $action = 're-edit'; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } diff --git a/htdocs/product/document.php b/htdocs/product/document.php index ecb3d12bb52..8a4c68990c6 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -105,7 +105,7 @@ if (empty($reshook)) $filetomerge->file_name=$filename; $result=$filetomerge->delete_by_file($user); if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } } } @@ -137,7 +137,7 @@ if ($action=='filemerge') $result=$filetomerge->delete_by_product($user, $object->id); } if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } // for each file checked add it to the product @@ -152,7 +152,7 @@ if ($action=='filemerge') $result=$filetomerge->create($user); if ($result<0) { - setEventMessage($filetomerge->error,'errors'); + setEventMessages($filetomerge->error, $filetomerge->errors, 'errors'); } } } diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php index ba00d3be3bd..d7d059ae10d 100644 --- a/htdocs/product/dynamic_price/editor.php +++ b/htdocs/product/dynamic_price/editor.php @@ -75,7 +75,7 @@ if ($action == 'add') $priceparser = new PriceParser($db); $price_result = $priceparser->parseProductSupplierExpression($id, $expression, 0, 0); if ($price_result < 0) { //Expression is not valid - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } else { @@ -85,21 +85,21 @@ if ($action == 'add') if ($result > 0) //created successfully, set the eid to newly created entry { $eid = $price_expression->id; - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } else { - setEventMessage("add: ".$price_expression->error, 'errors'); + setEventMessages("add: ".$price_expression->error, $price_expression->errors, 'errors'); } } } else if ($result < 0) { - setEventMessage("add find: ".$price_expression->error, 'errors'); + setEventMessages("add find: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } } @@ -115,7 +115,7 @@ if ($action == 'update') $priceparser = new PriceParser($db); $price_result = $priceparser->parseProductSupplierExpression($id, $expression, 0, 0); if ($price_result < 0) { //Expression is not valid - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } else { @@ -125,21 +125,21 @@ if ($action == 'update') $result = $price_expression->update($user); if ($result < 0) { - setEventMessage("update: ".$price_expression->error, 'errors'); + setEventMessages("update: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); } } } else if ($result < 0) { - setEventMessage("update find: ".$price_expression->error, 'errors'); + setEventMessages("update find: ".$price_expression->error, $price_expression->errors, 'errors'); } else { - setEventMessage($langs->trans("ErrorRecordAlreadyExists"), 'errors'); + setEventMessages($langs->trans("ErrorRecordAlreadyExists"), null, 'errors'); } } } @@ -151,7 +151,7 @@ if ($action == 'delete') $result = $price_expression->delete($eid, $user); if ($result < 0) { - setEventMessage("delete: ".$price_expression->error, 'errors'); + setEventMessages("delete: ".$price_expression->error, $price_expression->errors, 'errors'); } $eid = 0; } @@ -231,7 +231,7 @@ print ''; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 96aa9aa6311..1f5e35a043a 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -46,6 +46,7 @@ $rowid=GETPOST('rowid','int'); $action=GETPOST('action', 'alpha'); $cancel=GETPOST('cancel', 'alpha'); $socid=GETPOST('socid', 'int'); +$cost_price=GETPOST('cost_price', 'int'); $backtopage=GETPOST('backtopage','alpha'); $error=0; @@ -91,17 +92,37 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { + if ($action == 'setcost_price') + { + if ($id) + { + $result=$object->fetch($id); + $result=$object->setValueFrom('cost_price', price2num($cost_price)); + if ($result > 0) + { + $object->cost_price = price2num($cost_price); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); + } + else + { + $error++; + setEventMessages($object->error, $object->errors, 'errors'); + } + } + $action=''; + } + if ($action == 'remove_pf') { - if ($rowid) + if ($rowid) // id of product supplier price to remove { $action = ''; - $result=$product->remove_product_fournisseur_price($rowid); + $result=$object->remove_product_fournisseur_price($rowid); if($result > 0){ - setEventMessage($langs->trans("PriceRemoved")); + setEventMessages($langs->trans("PriceRemoved"), null, 'mesgs'); }else{ $error++; - setEventMessages($product->error, $product->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -130,7 +151,7 @@ if (empty($reshook)) { $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorFieldMustBeANumeric",'eeee'), 'errors'); + setEventMessages($langs->trans("ErrorFieldMustBeANumeric",'eeee'), null, 'errors'); } if (empty($quantity)) { @@ -178,12 +199,12 @@ if (empty($reshook)) $object->fetch($object->product_id_already_linked); $productLink = $object->getNomUrl(1,'supplier'); - setEventMessage($langs->trans("ReferenceSupplierIsAlreadyAssociatedWithAProduct",$productLink), 'errors'); + setEventMessages($langs->trans("ReferenceSupplierIsAlreadyAssociatedWithAProduct",$productLink), null, 'errors'); } else if ($ret < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -199,7 +220,7 @@ if (empty($reshook)) { $error++; - setEventMessage($object->error, $object->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } else { @@ -210,7 +231,7 @@ if (empty($reshook)) $price_result = $priceparser->parseProductSupplier($id, $price_expression, $quantity, $tva_tx); if ($price_result < 0) { //Expression is not valid $error++; - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } } if (! $error && ! empty($conf->dynamicprices->enabled)) { @@ -218,7 +239,7 @@ if (empty($reshook)) if ($ret < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -282,6 +303,17 @@ if ($id > 0 || $ref) } print ''; + // Cost price. Can be used for margin module for option "calculate margin on explicit cost price + // Accountancy sell code + print ''; + print '
        '.$langs->trans("AccountParameter").'
        '; +print $langs->trans("PAYPAL_SSLVERSION").''; +print $form->selectarray("PAYPAL_SSLVERSION",array('1'=> $langs->trans('TLSv1'),'6'=> $langs->trans('TLSv1.2')),$conf->global->PAYPAL_SSLVERSION); +print '
        '.$langs->trans("UsageParameter").'
        '; + $textdesc =$langs->trans("CostPriceDescription"); + $textdesc.="
        ".$langs->trans("CostPriceUsage"); + $text=$form->textwithpicto($langs->trans("CostPrice"), $textdesc, 1, 'help', ''); + print $form->editfieldkey($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6'); + print '
        '; + print $form->editfieldval($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6'); + print '
        '; print '
    '; @@ -435,7 +467,7 @@ if ($id > 0 || $ref) window.location = "'.DOL_URL_ROOT.'/product/dynamic_price/editor.php?id='.$id.'&tab=fournisseurs&eid=" + $("#eid").attr("value"); } function on_change() { - if ($("#eid").attr("value") == 0) { + if ($("#eid").val() == 0) { jQuery("#price_numeric").show(); } else { jQuery("#price_numeric").hide(); @@ -463,7 +495,7 @@ if ($id > 0 || $ref) print ' '.$langs->trans('days').''; print ''; - // Charges ???? + // Option to define a transport cost on supplier price if ($conf->global->PRODUCT_CHARGES) { if (! empty($conf->margin->enabled)) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index b656b88efc6..5924a89956b 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -61,7 +61,7 @@ $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield="p.ref"; @@ -293,7 +293,7 @@ else // Displays product removal confirmation if (GETPOST('delprod')) { - setEventMessage($langs->trans("ProductDeleted", GETPOST('delprod'))); + setEventMessages($langs->trans("ProductDeleted", GETPOST('delprod')), null, 'mesgs'); } if ($sref) $param="&sref=".$sref; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 3f16a20d98b..e5b93d981af 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -6,7 +6,7 @@ * Copyright (C) 2006 Andre Cianfarani * Copyright (C) 2014 Florian Henry * Copyright (C) 2014 Juanjo Menent - * Copyright (C) 2014 Philippe Grand + * Copyright (C) 2014-2015 Philippe Grand * Copyright (C) 2014 Ion agorria * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2015 Marcos García @@ -131,7 +131,7 @@ if (empty($reshook)) if ($priceparser->parseProduct($object) < 0) { $error ++; - setEventMessage($priceparser->translatedError(), 'errors'); + setEventMessages($priceparser->translatedError(), null, 'errors'); } } } @@ -194,7 +194,7 @@ if (empty($reshook)) $newprice_min = price2num($val['price_min'], 'MU'); if (!empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier) { - setEventMessage($langs->trans("MinimumPriceLimit", price($maxpricesupplier, 0, '', 1, - 1, - 1, 'auto')), 'errors'); + setEventMessages($langs->trans("MinimumPriceLimit", price($maxpricesupplier, 0, '', 1, - 1, - 1, 'auto')), null, 'errors'); $error ++; break; } @@ -203,7 +203,7 @@ if (empty($reshook)) if ($res < 0) { $error ++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); break; } } @@ -211,12 +211,12 @@ if (empty($reshook)) if (!$error && $object->update($object->id, $user) < 0) { $error++; - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } if (empty($error)) { $action = ''; - setEventMessage($langs->trans("RecordSaved")); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); } else { $action = 'edit_price'; @@ -229,7 +229,7 @@ if (empty($reshook)) { $result = $object->log_price_delete($user, $_GET ["lineid"]); if ($result < 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -341,7 +341,7 @@ if (empty($reshook)) if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier) { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + setEventMessages($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')), null, 'errors'); $error++; $action='add_customer_price'; } @@ -351,9 +351,9 @@ if (empty($reshook)) $result = $prodcustprice->create($user, 0, $update_child_soc); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } else { - setEventMessage($langs->trans('RecordSaved'), 'mesgs'); + setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); } $action = ''; @@ -367,9 +367,9 @@ if (empty($reshook)) $result = $prodcustprice->delete($user); if ($result < 0) { - setEventMessage($prodcustprice->error, 'mesgs'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'mesgs'); } else { - setEventMessage($langs->trans('RecordDeleted'), 'errors'); + setEventMessages($langs->trans('RecordDeleted'), null, 'errors'); } $action = ''; } @@ -391,7 +391,7 @@ if (empty($reshook)) if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + setEventMessages($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')), null, 'errors'); $error++; $action='update_customer_price'; } @@ -401,9 +401,9 @@ if (empty($reshook)) $result = $prodcustprice->update($user, 0, $update_child_soc); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); } else { - setEventMessage($langs->trans('Save'), 'mesgs'); + setEventMessages($langs->trans('Save'), null, 'mesgs'); } $action = ''; @@ -841,13 +841,13 @@ if ($action == 'edit_price' && $object->getRights()->creer)