[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/HTTP/ -> DokuHTTPClient.php (source)

   1  <?php
   2  
   3  namespace dokuwiki\HTTP;
   4  
   5  use dokuwiki\Extension\Event;
   6  
   7  /**
   8   * Adds DokuWiki specific configs to the HTTP client
   9   *
  10   * @author Andreas Goetz <cpuidle@gmx.de>
  11   * @link https://www.dokuwiki.org/devel:httpclient
  12   */
  13  class DokuHTTPClient extends HTTPClient
  14  {
  15      /**
  16       * Constructor.
  17       *
  18       * @author Andreas Gohr <andi@splitbrain.org>
  19       */
  20      public function __construct()
  21      {
  22          global $conf;
  23  
  24          // call parent constructor
  25          parent::__construct();
  26  
  27          // set some values from the config
  28          $this->proxy_host = $conf['proxy']['host'];
  29          $this->proxy_port = $conf['proxy']['port'];
  30          $this->proxy_user = $conf['proxy']['user'];
  31          $this->proxy_pass = conf_decodeString($conf['proxy']['pass']);
  32          $this->proxy_ssl = $conf['proxy']['ssl'];
  33          $this->proxy_except = $conf['proxy']['except'];
  34  
  35          // allow enabling debugging via URL parameter (if debugging allowed)
  36          if ($conf['allowdebug']) {
  37              if (
  38                  isset($_REQUEST['httpdebug']) ||
  39                  (
  40                      isset($_SERVER['HTTP_REFERER']) &&
  41                      strpos($_SERVER['HTTP_REFERER'], 'httpdebug') !== false
  42                  )
  43              ) {
  44                  $this->debug = true;
  45              }
  46          }
  47      }
  48  
  49  
  50      /**
  51       * Wraps an event around the parent function
  52       *
  53       * @triggers HTTPCLIENT_REQUEST_SEND
  54       * @author   Andreas Gohr <andi@splitbrain.org>
  55       */
  56      /**
  57       * @param string $url
  58       * @param string|array $data the post data either as array or raw data
  59       * @param string $method
  60       * @return bool
  61       */
  62      public function sendRequest($url, $data = '', $method = 'GET')
  63      {
  64          $httpdata = [
  65              'url' => $url,
  66              'data' => $data,
  67              'method' => $method
  68          ];
  69          $evt = new Event('HTTPCLIENT_REQUEST_SEND', $httpdata);
  70          if ($evt->advise_before()) {
  71              $url = $httpdata['url'];
  72              $data = $httpdata['data'];
  73              $method = $httpdata['method'];
  74          }
  75          $evt->advise_after();
  76          unset($evt);
  77          return parent::sendRequest($url, $data, $method);
  78      }
  79  }