Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 39 and 311] [Versions 39 and 400] [Versions 39 and 401] [Versions 39 and 402] [Versions 39 and 403]

   1  <?php
   2  
   3  namespace MaxMind\Db\Reader;
   4  
   5  /**
   6   * This class provides the metadata for the MaxMind DB file.
   7   *
   8   * @property int    $nodeCount                This is an unsigned 32-bit
   9   *                                            integer indicating the number of
  10   *                                            nodes in the search tree.
  11   * @property int    $recordSize               This is an unsigned 16-bit
  12   *                                            integer. It indicates the number
  13   *                                            of bits in a record in the search
  14   *                                            tree. Note that each node
  15   *                                            consists of two records.
  16   * @property int    $ipVersion                This is an unsigned 16-bit
  17   *                                            integer which is always 4 or 6.
  18   *                                            It indicates whether the database
  19   *                                            contains IPv4 or IPv6 address
  20   *                                            data.
  21   * @property string $databaseType             This is a string that indicates
  22   *                                            the structure of each data record
  23   *                                            associated with an IP address.
  24   *                                            The actual definition of these
  25   *                                            structures is left up to the
  26   *                                            database creator.
  27   * @property array  $languages                An array of strings, each of
  28   *                                            which is a language code. A given
  29   *                                            record may contain data items
  30   *                                            that have been localized to some
  31   *                                            or all of these languages. This
  32   *                                            may be undefined.
  33   * @property int    $binaryFormatMajorVersion This is an unsigned 16-bit
  34   *                                            integer indicating the major
  35   *                                            version number for the database's
  36   *                                            binary format.
  37   * @property int    $binaryFormatMinorVersion This is an unsigned 16-bit
  38   *                                            integer indicating the minor
  39   *                                            version number for the database's
  40   *                                            binary format.
  41   * @property int    $buildEpoch               This is an unsigned 64-bit
  42   *                                            integer that contains the
  43   *                                            database build timestamp as a
  44   *                                            Unix epoch value.
  45   * @property array  $description              This key will always point to a
  46   *                                            map (associative array). The keys
  47   *                                            of that map will be language
  48   *                                            codes, and the values will be a
  49   *                                            description in that language as a
  50   *                                            UTF-8 string. May be undefined
  51   *                                            for some databases.
  52   */
  53  class Metadata
  54  {
  55      private $binaryFormatMajorVersion;
  56      private $binaryFormatMinorVersion;
  57      private $buildEpoch;
  58      private $databaseType;
  59      private $description;
  60      private $ipVersion;
  61      private $languages;
  62      private $nodeByteSize;
  63      private $nodeCount;
  64      private $recordSize;
  65      private $searchTreeSize;
  66  
  67      public function __construct($metadata)
  68      {
  69          $this->binaryFormatMajorVersion =
  70              $metadata['binary_format_major_version'];
  71          $this->binaryFormatMinorVersion =
  72              $metadata['binary_format_minor_version'];
  73          $this->buildEpoch = $metadata['build_epoch'];
  74          $this->databaseType = $metadata['database_type'];
  75          $this->languages = $metadata['languages'];
  76          $this->description = $metadata['description'];
  77          $this->ipVersion = $metadata['ip_version'];
  78          $this->nodeCount = $metadata['node_count'];
  79          $this->recordSize = $metadata['record_size'];
  80          $this->nodeByteSize = $this->recordSize / 4;
  81          $this->searchTreeSize = $this->nodeCount * $this->nodeByteSize;
  82      }
  83  
  84      public function __get($var)
  85      {
  86          return $this->$var;
  87      }
  88  }