icamys / php-sitemap-generator

A simple PHP sitemap generator.
MIT License
168 stars 65 forks source link

Add image sitemap #22

Closed icamys closed 2 years ago

icamys commented 3 years ago

https://developers.google.com/search/docs/advanced/sitemaps/image-sitemaps

seyitahmettanriver commented 3 years ago

`<?php

namespace Icamys\SitemapGenerator\Extensions;

use InvalidArgumentException; use XMLWriter;

class GoogleImageExtension { private static $requiredFields = [ 'loc', ];

public static function writeImageTag(XMLWriter $xmlWriter, string $loc, array $extFields)
{
    self::validate($loc, $extFields);

    $xmlWriter->startElement('image:image');
    $xmlWriter->writeElement('image:loc', $extFields['loc']);
    $xmlWriter->writeElement('image:title', htmlentities($extFields['title'], ENT_QUOTES));

    if (isset($extFields['caption'])) {
        $xmlWriter->writeElement('image:caption', $extFields['caption']);
    }
    if (isset($extFields['geo_location'])) {
        $xmlWriter->writeElement('image:geo_location', $extFields['geo_location']);
    }
    if (isset($extFields['license'])) {
        $xmlWriter->writeElement('image:license', $extFields['license']);
    }

    $xmlWriter->endElement();
}

public static function validate($loc, $extFields)
{
    $extFieldNames = array_keys($extFields);

    if (count(array_intersect(self::$requiredFields, $extFieldNames)) !== count(self::$requiredFields)) {
        throw new InvalidArgumentException(
            sprintf("Missing required fields: %s", implode(', ', array_diff(self::$requiredFields, $extFieldNames)))
        );
    }
}

}`

icamys commented 3 years ago

@seyitahmettanriver Thanks for the code. I'll take a look at it in my spare time.