$numeric_fields = ['gsid', 'hide', 'account-type', 'manually-approve'];
- if (!empty($data['photo']) && !Network::isValidHttpUrl($data['photo'])) {
- Logger::info('Invalid URL for photo', ['url' => $data['url'], 'photo' => $data['photo']]);
- unset($data['photo']);
+ if (!empty($data['photo'])) {
+ $data['photo'] = Network::addBasePath($data['photo'], $data['url']);
+
+ if (!Network::isValidHttpUrl($data['photo'])) {
+ Logger::warning('Invalid URL for photo', ['url' => $data['url'], 'photo' => $data['photo']]);
+ unset($data['photo']);
+ }
}
$newdata = [];
*/
private static function ownHost(string $host): bool
{
- $own_host = DI::baseUrl()->getHostname();
+ $own_host = DI::baseUrl()->getHost();
$parts = parse_url($host);
* @return array Webfinger data
* @throws HTTPException\InternalServerErrorException
*/
- private static function getWebfingerArray(string $uri): array
+ public static function getWebfingerArray(string $uri): array
{
$parts = parse_url($uri);
$result = self::feed($uri);
} else {
// We overwrite the detected nick with our try if the previois routines hadn't detected it.
- // Additionally it is overwritten when the nickname doesn't make sense (contains spaces).
+ // Additionally, it is overwritten when the nickname doesn't make sense (contains spaces).
if ((empty($result['nick']) || (strstr($result['nick'], ' '))) && ($nick != '')) {
$result['nick'] = $nick;
}
}
if ($avatar) {
foreach ($avatar->attributes as $attribute) {
- if ($attribute->name == 'src') {
- $data['photo'] = trim($attribute->value);
- if (!empty($data['photo']) && !parse_url($data['photo'], PHP_URL_SCHEME) && !parse_url($data['photo'], PHP_URL_HOST)) {
- $data['photo'] = $baseurl . $data['photo'];
- }
+ if (($attribute->name == 'src') && !empty($attribute->value)) {
+ $data['photo'] = Network::addBasePath($attribute->value, $baseurl);
}
}
}
*/
private static function feed(string $url, bool $probe = true): array
{
- $curlResult = DI::httpClient()->get($url, HttpClientAccept::FEED_XML);
+ try {
+ $curlResult = DI::httpClient()->get($url, HttpClientAccept::FEED_XML);
+ } catch(\Throwable $e) {
+ DI::logger()->info('Error requesting feed URL', ['url' => $url, 'exception' => $e]);
+ return [];
+ }
+
if ($curlResult->isTimeout()) {
self::$isTimeout = true;
return [];
}
+
$feed = $curlResult->getBody();
$feed_data = Feed::import($feed);