[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/sodium_compat/ -> autoload.php (source)

   1  <?php
   2  
   3  if (PHP_VERSION_ID < 70000) {
   4      if (!is_callable('sodiumCompatAutoloader')) {
   5          /**
   6           * Sodium_Compat autoloader.
   7           *
   8           * @param string $class Class name to be autoloaded.
   9           *
  10           * @return bool         Stop autoloading?
  11           */
  12          function sodiumCompatAutoloader($class)
  13          {
  14              $namespace = 'ParagonIE_Sodium_';
  15              // Does the class use the namespace prefix?
  16              $len = strlen($namespace);
  17              if (strncmp($namespace, $class, $len) !== 0) {
  18                  // no, move to the next registered autoloader
  19                  return false;
  20              }
  21  
  22              // Get the relative class name
  23              $relative_class = substr($class, $len);
  24  
  25              // Replace the namespace prefix with the base directory, replace namespace
  26              // separators with directory separators in the relative class name, append
  27              // with .php
  28              $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
  29              // if the file exists, require it
  30              if (file_exists($file)) {
  31                  require_once $file;
  32                  return true;
  33              }
  34              return false;
  35          }
  36  
  37          // Now that we have an autoloader, let's register it!
  38          spl_autoload_register('sodiumCompatAutoloader');
  39      }
  40  } else {
  41      require_once dirname(__FILE__) . '/autoload-php7.php';
  42  }
  43  
  44  /* Explicitly, always load the Compat class: */
  45  if (!class_exists('ParagonIE_Sodium_Compat', false)) {
  46      require_once dirname(__FILE__) . '/src/Compat.php';
  47  }
  48  
  49  if (!class_exists('SodiumException', false)) {
  50      require_once dirname(__FILE__) . '/src/SodiumException.php';
  51  }
  52  if (PHP_VERSION_ID >= 50300) {
  53      // Namespaces didn't exist before 5.3.0, so don't even try to use this
  54      // unless PHP >= 5.3.0
  55      require_once dirname(__FILE__) . '/lib/namespaced.php';
  56      require_once dirname(__FILE__) . '/lib/sodium_compat.php';
  57  } else {
  58      require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
  59  }
  60  if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
  61      if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
  62          require_once dirname(__FILE__) . '/lib/php72compat_const.php';
  63      }
  64      if (PHP_VERSION_ID >= 70000) {
  65          assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
  66      } else {
  67          assert(class_exists('ParagonIE_Sodium_Compat'));
  68      }
  69      require_once(dirname(__FILE__) . '/lib/php72compat.php');
  70  } elseif (!function_exists('sodium_crypto_stream_xchacha20_xor')) {
  71      // Older versions of {PHP, ext/sodium} will not define these
  72      require_once(dirname(__FILE__) . '/lib/php72compat.php');
  73  }
  74  require_once(dirname(__FILE__) . '/lib/stream-xchacha20.php');
  75  require_once(dirname(__FILE__) . '/lib/ristretto255.php');


Generated : Fri Apr 26 08:20:02 2024 Cross-referenced by PHPXref