[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/ -> Info.php (source)

   1  <?php
   2  
   3  namespace dokuwiki;
   4  
   5  /**
   6   * Basic Information about DokuWiki
   7   *
   8   * @todo much of infoutils should be moved here
   9   */
  10  class Info
  11  {
  12      /**
  13       * Parse the given version string into its parts
  14       *
  15       * @param string $version
  16       * @return array
  17       * @throws \Exception
  18       */
  19      public static function parseVersionString($version)
  20      {
  21          $return = [
  22              'type' => '', // stable, rc
  23              'date' => '', // YYYY-MM-DD
  24              'hotfix' => '', // a, b, c, ...
  25              'version' => '', // sortable, full version string
  26              'codename' => '', // codename
  27              'raw' => $version, // raw version string as given
  28          ];
  29  
  30          if (preg_match('/^(rc)?(\d{4}-\d{2}-\d{2})([a-z]*)/', $version, $matches)) {
  31              $return['date'] = $matches[2];
  32              if ($matches[1] == 'rc') {
  33                  $return['type'] = 'rc';
  34              } else {
  35                  $return['type'] = 'stable';
  36              }
  37              if ($matches[3]) {
  38                  $return['hotfix'] = $matches[3];
  39              }
  40          } else {
  41              throw new \Exception('failed to parse version string');
  42          }
  43  
  44          [, $return['codename']] = sexplode(' ', $version, 2);
  45          $return['codename'] = trim($return['codename'], ' "');
  46  
  47          $return['version'] = $return['date'];
  48          $return['version'] .= $return['type'] == 'rc' ? 'rc' : $return['hotfix'];
  49  
  50          return $return;
  51      }
  52  }