<?php
//########################################################################
//#### START #############################################################
//########################################################################
require(__DIR__ . "/../sys/Autoload.php");

$DATA = [];
$CmsService = new CmsService(__DIR__ . "/..");
$CmsService->Initialize($DATA);
$CmsDatabaseConnection = new DatabaseConnection(CMS_DB_HOSTNAME, CMS_DB_USERNAME, CMS_DB_PASSWORD, CMS_DB_DATABASE);
$CmsSiteService = new CmsSiteService($CmsDatabaseConnection);
$CmsPortfolioService = new CmsPortfolioService($CmsDatabaseConnection, __DIR__ . "/..");
$CmsTextService = new CmsTextService($CmsDatabaseConnection);


$LINKS = $CmsSiteService->GetLinkData();
?>
<?php
//########################################################################
//#### SITEMAP ###########################################################
//########################################################################
?>
<?php header('Content-type: application/xml'); ?>
<?= '<?xml version="1.0" encoding="UTF-8"?>' ?>
<urlset xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
    <url>
        <loc><?= WEBSITE_URL ?></loc>
    </url>
    <?php
    // Links
    foreach ($LINKS as $LINK) if (CoreService::IsPathExternal($LINK['path']) === false && $LINK['frontpage'] === false && $LINK['template'] !== 'page') {
        echo '<url><loc>' . WEBSITE_URL . $LINK['path'] . WEBSITE_TRAILINGSLASH . '</loc></url>';
        if ($LINK['sub'] === false) {
            $SUBLINKS = CmsSiteService::GetAutoSublinks($LINK['path'], $LINK['reference_id'], $LINK['reference_type'], $CmsPortfolioService);
            foreach ($SUBLINKS as $SUBLINK) if ($SUBLINK['frontpage'] === false && $SUBLINK['template'] !== 'page') {
                echo '<url><loc>' . WEBSITE_URL . $SUBLINK['path'] . WEBSITE_TRAILINGSLASH . '</loc></url>';
            }
        }
    }
    ?>
    <?php
    // Articles (template 'blog')
    foreach ($LINKS as $LINK) if ($LINK['template'] === 'blog') {
        $ARTICLES = $CmsTextService->GetArticlesData(null, $CmsPortfolioService);
        foreach ($ARTICLES as $ARTICLE) {
            echo '<url><loc>' . WEBSITE_URL . $LINK['path'] . '/' . ($DATA['SETTINGS']['BLOG_SUBLINKS']['article'] ? $DATA['SETTINGS']['BLOG_SUBLINKS']['article'] . '/' : '') . $ARTICLE['slug'] . WEBSITE_TRAILINGSLASH . '</loc></url>';
        }
        break;
    }
    ?>
    <?php
    // Albums (template 'albumaccess')
    $DATA['SITE']['asset_paths']['album'] = CmsSiteService::GetAssetPath('albumaccess', '/{slug}', $LINKS); // /path/{slug}
    if ($DATA['SITE']['asset_paths']['album'] !== null) {
        $ALBUMS = $CmsPortfolioService->GetCollectionData_ByCollectionIDs($CmsPortfolioService->GetCollectionIDs_All(), 'album');
        foreach ($ALBUMS as $ALBUM) {
            echo '<url><loc>' . str_replace('{slug}', $ALBUM['slug'], WEBSITE_URL . $DATA['SITE']['asset_paths']['album']) . WEBSITE_TRAILINGSLASH . '</loc></url>';
        }
    }
    ?>
    <?php
    // Photos (template 'photoaccess')
    $DATA['SITE']['asset_paths']['photo'] = CmsSiteService::GetAssetPath('photoaccess', '/{slug}', $LINKS); // /path/{slug}
    if ($DATA['SITE']['asset_paths']['photo'] !== null && !isset($_GET['plain'])) {
        $PHOTOS = $CmsPortfolioService->GetPhotoData_ByPhotoIDs($CmsPortfolioService->GetPhotoIDs_ByAll());
        foreach ($PHOTOS as $PHOTO) {
            echo '<url>';
            echo '<loc>' . str_replace('{slug}', $PHOTO['slug'], WEBSITE_URL . $DATA['SITE']['asset_paths']['photo']) . WEBSITE_TRAILINGSLASH . '</loc>';
            echo '<image:image>';
            echo '<image:loc>' . WEBSITE_URL . $PHOTO['cache_originalfilename'] . '</image:loc>';
            echo '<image:title>' . (!empty($PHOTO['title']) ? $PHOTO['title'] : $PHOTO['slug']) . '</image:title>';
            if (!empty($PHOTO['caption'])) {
                echo '<image:caption>' . $PHOTO['caption'] . '</image:caption>';
            }
            echo '</image:image>';
            echo '</url>';
        }
    }
    ?>
    <?php
    // Tags for photos (template 'phototags')
    $DATA['SITE']['asset_paths']['phototags'] = CmsSiteService::GetAssetPath('phototags', '/{slug}', $LINKS); // /path/{slug}
    if ($DATA['SITE']['asset_paths']['phototags'] !== null) {
        $TAGS = $CmsPortfolioService->GetTagData_ByTagIDs($CmsPortfolioService->GetTagIDs_All());
        foreach ($TAGS as $TAG) {
            if ($TAG['totaltcount'] >= 1) {
                echo '<url><loc>' . str_replace('{slug}', $TAG['name'], WEBSITE_URL . $DATA['SITE']['asset_paths']['phototags']) . WEBSITE_TRAILINGSLASH . '</loc></url>';
            }
        }
    }
    ?>
</urlset>