<?php
/**
- * @file src/Util/Network.php
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
*/
+
namespace Friendica\Util;
use DOMDocument;
use DomXPath;
-use Friendica\Core\Config;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\System;
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_USERAGENT, $a->getUserAgent());
- $range = intval(Config::get('system', 'curl_range_bytes', 0));
+ $range = intval(DI::config()->get('system', 'curl_range_bytes', 0));
if ($range > 0) {
@curl_setopt($ch, CURLOPT_RANGE, '0-' . $range);
if (!empty($opts['timeout'])) {
@curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']);
} else {
- $curl_time = Config::get('system', 'curl_timeout', 60);
+ $curl_time = DI::config()->get('system', 'curl_timeout', 60);
@curl_setopt($ch, CURLOPT_TIMEOUT, intval($curl_time));
}
// by default we will allow self-signed certs
// but you can override this
- $check_cert = Config::get('system', 'verifyssl');
+ $check_cert = DI::config()->get('system', 'verifyssl');
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
if ($check_cert) {
@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
}
- $proxy = Config::get('system', 'proxy');
+ $proxy = DI::config()->get('system', 'proxy');
if (strlen($proxy)) {
@curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
@curl_setopt($ch, CURLOPT_PROXY, $proxy);
- $proxyuser = @Config::get('system', 'proxyuser');
+ $proxyuser = @DI::config()->get('system', 'proxyuser');
if (strlen($proxyuser)) {
@curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser);
}
}
- if (Config::get('system', 'ipv4_resolve', false)) {
+ if (DI::config()->get('system', 'ipv4_resolve', false)) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_USERAGENT, $a->getUserAgent());
- if (Config::get('system', 'ipv4_resolve', false)) {
+ if (DI::config()->get('system', 'ipv4_resolve', false)) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
if (intval($timeout)) {
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
} else {
- $curl_time = Config::get('system', 'curl_timeout', 60);
+ $curl_time = DI::config()->get('system', 'curl_timeout', 60);
curl_setopt($ch, CURLOPT_TIMEOUT, intval($curl_time));
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
- $check_cert = Config::get('system', 'verifyssl');
+ $check_cert = DI::config()->get('system', 'verifyssl');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
if ($check_cert) {
@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
}
- $proxy = Config::get('system', 'proxy');
+ $proxy = DI::config()->get('system', 'proxy');
if (strlen($proxy)) {
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
- $proxyuser = Config::get('system', 'proxyuser');
+ $proxyuser = DI::config()->get('system', 'proxyuser');
if (strlen($proxyuser)) {
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser);
}
*/
public static function isUrlValid(string $url)
{
- if (Config::get('system', 'disable_url_validation')) {
+ if (DI::config()->get('system', 'disable_url_validation')) {
return $url;
}
*/
public static function isEmailDomainValid(string $addr)
{
- if (Config::get('system', 'disable_email_validation')) {
+ if (DI::config()->get('system', 'disable_email_validation')) {
return true;
}
return false;
}
- $str_allowed = Config::get('system', 'allowed_sites');
+ $str_allowed = DI::config()->get('system', 'allowed_sites');
if (! $str_allowed) {
return true;
}
return false;
}
- $domain_blocklist = Config::get('system', 'blocklist', []);
+ $domain_blocklist = DI::config()->get('system', 'blocklist', []);
if (!$domain_blocklist) {
return false;
}
return false;
}
- $str_allowed = Config::get('system', 'allowed_email', '');
+ $str_allowed = DI::config()->get('system', 'allowed_email', '');
if (empty($str_allowed)) {
return true;
}
return $url;
}
+
+ /**
+ * Adds query string parameters to the provided URI. Replace the value of existing keys.
+ *
+ * @param string $path
+ * @param array $additionalParams Associative array of parameters
+ * @return string
+ */
+ public static function appendQueryParam(string $path, array $additionalParams)
+ {
+ $parsed = parse_url($path);
+
+ $params = [];
+ if (!empty($parsed['query'])) {
+ parse_str($parsed['query'], $params);
+ }
+
+ $params = array_merge($params, $additionalParams);
+
+ $parsed['query'] = http_build_query($params);
+
+ return self::unparseURL($parsed);
+ }
}