MDL-73868 oauth2: Remove multiple slashes in image URL

There is an issue with the current Badgr manifest because the image
URL contains double slash which is causing an error when storing it
in the database (https://api.test.badgr.com/static//images/logo.png).
This issue parses image URL and removes multiple slashes in URL.
This commit is contained in:
Sara Arjona 2022-02-14 11:30:13 +01:00
parent d24a4ab56f
commit c4e6ac585d

View file

@ -76,6 +76,8 @@ class imsbadgeconnect extends base_definition {
} else if ($key == 'image' && empty($issuer->get('image'))) { } else if ($key == 'image' && empty($issuer->get('image'))) {
// Update the image with the value in the manifest file if it's valid and empty in the issuer. // Update the image with the value in the manifest file if it's valid and empty in the issuer.
$url = filter_var($value, FILTER_SANITIZE_URL); $url = filter_var($value, FILTER_SANITIZE_URL);
// Remove multiple slashes in URL. It will fix the Badgr bug with image URL defined in their manifest.
$url = preg_replace('/([^:])(\/{2,})/', '$1/', $url);
if (filter_var($url, FILTER_VALIDATE_URL) !== false) { if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
$issuer->set('image', $url); $issuer->set('image', $url);
$issuer->update(); $issuer->update();