/** * Send the data, to the submit url * * @param string $data The popularity data * @return string An empty string if everything worked fine, a string describing the error otherwise */ function sendData($data) { $error = ''; $httpClient = new DokuHTTPClient(); $status = $httpClient->sendRequest($this->submitUrl, array('data' => $data), 'POST'); if (!$status) { $error = $httpClient->error; } return $error; }
/** * Any implementing HTTP providers should send a request to the provided endpoint with the parameters. * They should return, in string form, the response body and throw an exception on error. * * @param UriInterface $endpoint * @param mixed $requestBody * @param array $extraHeaders * @param string $method * * @return string * * @throws TokenResponseException */ public function retrieveResponse(UriInterface $endpoint, $requestBody, array $extraHeaders = array(), $method = 'POST') { $http = new \DokuHTTPClient(); $http->headers = array_merge($http->headers, $extraHeaders); $ok = $http->sendRequest($endpoint->getAbsoluteUri(), $requestBody, $method); if (!$ok) { throw new TokenResponseException($http->error); } return $http->resp_body; }
/** * Remeber HTTPClient Cookie after successfull authentication */ function sendRequest($url, $data = '', $method = 'GET') { $returnCode = parent::sendRequest($url, $data, $method); if ($this->settings->cookie == null) { $this->settings->cookie = $this->cookies; } return $returnCode; }
/** * Run a few sanity checks * * @author Andreas Gohr <*****@*****.**> */ function check() { global $conf; global $INFO; /* @var Input $INPUT */ global $INPUT; if ($INFO['isadmin'] || $INFO['ismanager']) { msg('DokuWiki version: ' . getVersion(), 1); if (version_compare(phpversion(), '5.3.3', '<')) { msg('Your PHP version is too old (' . phpversion() . ' vs. 5.3.3+ needed)', -1); } else { msg('PHP version ' . phpversion(), 1); } } else { if (version_compare(phpversion(), '5.3.3', '<')) { msg('Your PHP version is too old', -1); } } $mem = (int) php_to_byte(ini_get('memory_limit')); if ($mem) { if ($mem < 16777216) { msg('PHP is limited to less than 16MB RAM (' . $mem . ' bytes). Increase memory_limit in php.ini', -1); } elseif ($mem < 20971520) { msg('PHP is limited to less than 20MB RAM (' . $mem . ' bytes), you might encounter problems with bigger pages. Increase memory_limit in php.ini', -1); } elseif ($mem < 33554432) { msg('PHP is limited to less than 32MB RAM (' . $mem . ' bytes), but that should be enough in most cases. If not, increase memory_limit in php.ini', 0); } else { msg('More than 32MB RAM (' . $mem . ' bytes) available.', 1); } } if (is_writable($conf['changelog'])) { msg('Changelog is writable', 1); } else { if (file_exists($conf['changelog'])) { msg('Changelog is not writable', -1); } } if (isset($conf['changelog_old']) && file_exists($conf['changelog_old'])) { msg('Old changelog exists', 0); } if (file_exists($conf['changelog'] . '_failed')) { msg('Importing old changelog failed', -1); } else { if (file_exists($conf['changelog'] . '_importing')) { msg('Importing old changelog now.', 0); } else { if (file_exists($conf['changelog'] . '_import_ok')) { msg('Old changelog imported', 1); if (!plugin_isdisabled('importoldchangelog')) { msg('Importoldchangelog plugin not disabled after import', -1); } } } } if (is_writable(DOKU_CONF)) { msg('conf directory is writable', 1); } else { msg('conf directory is not writable', -1); } if ($conf['authtype'] == 'plain') { global $config_cascade; if (is_writable($config_cascade['plainauth.users']['default'])) { msg('conf/users.auth.php is writable', 1); } else { msg('conf/users.auth.php is not writable', 0); } } if (function_exists('mb_strpos')) { if (defined('UTF8_NOMBSTRING')) { msg('mb_string extension is available but will not be used', 0); } else { msg('mb_string extension is available and will be used', 1); if (ini_get('mbstring.func_overload') != 0) { msg('mb_string function overloading is enabled, this will cause problems and should be disabled', -1); } } } else { msg('mb_string extension not available - PHP only replacements will be used', 0); } if (!UTF8_PREGSUPPORT) { msg('PHP is missing UTF-8 support in Perl-Compatible Regular Expressions (PCRE)', -1); } if (!UTF8_PROPERTYSUPPORT) { msg('PHP is missing Unicode properties support in Perl-Compatible Regular Expressions (PCRE)', -1); } $loc = setlocale(LC_ALL, 0); if (!$loc) { msg('No valid locale is set for your PHP setup. You should fix this', -1); } elseif (stripos($loc, 'utf') === false) { msg('Your locale <code>' . hsc($loc) . '</code> seems not to be a UTF-8 locale, you should fix this if you encounter problems.', 0); } else { msg('Valid locale ' . hsc($loc) . ' found.', 1); } if ($conf['allowdebug']) { msg('Debugging support is enabled. If you don\'t need it you should set $conf[\'allowdebug\'] = 0', -1); } else { msg('Debugging support is disabled', 1); } if ($INFO['userinfo']['name']) { msg('You are currently logged in as ' . $INPUT->server->str('REMOTE_USER') . ' (' . $INFO['userinfo']['name'] . ')', 0); msg('You are part of the groups ' . join($INFO['userinfo']['grps'], ', '), 0); } else { msg('You are currently not logged in', 0); } msg('Your current permission for this page is ' . $INFO['perm'], 0); if (is_writable($INFO['filepath'])) { msg('The current page is writable by the webserver', 0); } else { msg('The current page is not writable by the webserver', 0); } if ($INFO['writable']) { msg('The current page is writable by you', 0); } else { msg('The current page is not writable by you', 0); } // Check for corrupted search index $lengths = idx_listIndexLengths(); $index_corrupted = false; foreach ($lengths as $length) { if (count(idx_getIndex('w', $length)) != count(idx_getIndex('i', $length))) { $index_corrupted = true; break; } } foreach (idx_getIndex('metadata', '') as $index) { if (count(idx_getIndex($index . '_w', '')) != count(idx_getIndex($index . '_i', ''))) { $index_corrupted = true; break; } } if ($index_corrupted) { msg('The search index is corrupted. It might produce wrong results and most probably needs to be rebuilt. See <a href="http://www.dokuwiki.org/faq:searchindex">faq:searchindex</a> for ways to rebuild the search index.', -1); } elseif (!empty($lengths)) { msg('The search index seems to be working', 1); } else { msg('The search index is empty. See <a href="http://www.dokuwiki.org/faq:searchindex">faq:searchindex</a> for help on how to fix the search index. If the default indexer isn\'t used or the wiki is actually empty this is normal.'); } // rough time check $http = new DokuHTTPClient(); $http->max_redirect = 0; $http->timeout = 3; $http->sendRequest('http://www.dokuwiki.org', '', 'HEAD'); $now = time(); if (isset($http->resp_headers['date'])) { $time = strtotime($http->resp_headers['date']); $diff = $time - $now; if (abs($diff) < 4) { msg("Server time seems to be okay. Diff: {$diff}s", 1); } else { msg("Your server's clock seems to be out of sync! Consider configuring a sync with a NTP server. Diff: {$diff}s"); } } }