Seditio Source code viewer
Root | Root
./Seditio-Developer/Seditio-177/sitemap.php
<?PHP

/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
http://www.neocrome.net
http://www.seditio.org
[BEGIN_SED]
File=sitemap.php
Version=177
Updated=2017-nov-18
Type=Core
Author=Seditio Team
Description=XML Sitemap Generator
[END_SED]
==================== */

define('SED_CODE', TRUE);
define('SED_RSS', TRUE);
$location = 'Sitemap';
$z = 'sitemap';

require(
'system/functions.php');
@include(
'datas/config.php');
require(
'system/common.php');

$smcfg['pages']['changefreq']  = "daily"; // (always/hourly/daily/weekly/monthly/yearly/never)
$smcfg['pages']['priority']    = "0.8";   // (default: 0.5)
$smcfg['pages']['limit']       = 40000;    

$smcfg['lists']['changefreq']  = "weekly";
$smcfg['lists']['priority']    = "0.5";
$smcfg['lists']['limit']       = 1000;

$smcfg['index']['changefreq']  = "always";
$smcfg['index']['priority']    = "1.0";

$smcfg['forums']['changefreq'] = "daily";
$smcfg['forums']['priority']   = "0.2";
$smcfg['forums']['limit']      = 3000;

$m = sed_import('m','G','ALP'); // (index/lists/pages/forums)

if (isset($smcfg[$m]))
{
 
$feed .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
 
$feed .= "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; // current version
}

$i = 1;

switch (
$m)
{
case
'index':
       
         
$items[$i]['loc'] = $cfg['mainurl']."/";
         
$items[$i]['lastmod'] = @date("Y-m-d\TH:i:s+00:00", $sys['now']);
       
$items[$i]['changefreq'] = $smcfg['index']['changefreq'];
         
$items[$i]['priority'] = $smcfg['index']['priority'];        
       
        break;

case
'lists':

       
$sql = sed_sql_query("SELECT structure_code FROM $db_structure WHERE structure_code NOT LIKE 'system' ORDER BY structure_path ASC");
       
        while (
$row = sed_sql_fetchassoc($sql))
        {
            list(
$usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('page', $row['structure_code']);
            if(
$usr['auth_read'])
              {
             
$i++;
             
$sys['catcode'] = $row['structure_code']; //new in v175
             
$row['list_url'] = sed_url("list", "c=".$row['structure_code'], "", false, false);  
               
$items[$i]['loc'] = $cfg['mainurl']."/".$row['list_url'];
               
$items[$i]['lastmod'] = @date("Y-m-d\TH:i:s+00:00", $sys['now']);
             
$items[$i]['changefreq'] = $smcfg['lists']['changefreq'];
               
$items[$i]['priority'] = $smcfg['lists']['priority'];
              }                
        }
       
        break;

case
'pages':

        if (
$cfg['disable_page']) { break; }
       
       
$sql_cat = "";
        if (!empty(
$c))
            {            
           
$mtch = $sed_cat[$c]['path'].".";
           
$mtchlen = mb_strlen($mtch);
           
$catsub = array();
           
$catsub[] = $c;            
            foreach(
$sed_cat as $k => $x)
                {
                if (
mb_substr($x['path'], 0, $mtchlen) == $mtch && sed_auth('page', $k, 'R'))
                    {
$catsub[] = $k; }
                }
           
$sql_cat = " AND page_cat IN ('".implode("','", $catsub)."')";            
            }
       
       
$sql = sed_sql_query("SELECT page_id, page_alias, page_title, page_cat, page_date FROM $db_pages
        WHERE page_state = 0 AND page_cat NOT LIKE 'system'"
.$sql_cat." ORDER by page_date DESC LIMIT ".$smcfg['pages']['limit']);
       
        while (
$row = sed_sql_fetchassoc($sql))
            {        
          list(
$usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('page', $row['page_cat']);
          if(
$usr['auth_read'])
            {
             
$i++;
           
$sys['catcode'] = $row['page_cat']; //new in v175        
             
$row['page_pageurl'] = (empty($row['page_alias'])) ? sed_url("page", "id=".$row['page_id'], "", false, false) : sed_url("page", "al=".$row['page_alias'], "", false, false);          
             
$items[$i]['loc'] = $cfg['mainurl']."/".$row['page_pageurl'];
             
$items[$i]['lastmod'] = @date("Y-m-d\TH:i:s+00:00", $row['page_date']);
           
$items[$i]['changefreq'] = $smcfg['pages']['changefreq'];
             
$items[$i]['priority'] = $smcfg['pages']['priority'];
              }
          }
       
        break;

case
'forums':
       
       
// forum sections
       
       
$sql = sed_sql_query("SELECT s.fs_id, s.fs_title, s.fs_category, s.fs_topiccount, s.fs_postcount, s.fs_lt_date FROM $db_forum_sections AS s LEFT JOIN
       
$db_forum_structure AS n ON n.fn_code=s.fs_category ORDER by fn_path ASC, fs_order ASC");

        while (
$row = sed_sql_fetchassoc($sql))
        {
                list(
$usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('forums', $row['fs_id']);
                if(
$usr['auth_read'])
                {
                 
$i++;
                 
$row['fs_url'] = sed_url("forums","m=topics&s=".$row['fs_id'], "", false, false);
                   
$items[$i]['loc'] = $cfg['mainurl']."/".$row['fs_url'];
                   
$items[$i]['lastmod'] = @date("Y-m-d\TH:i:s+00:00", $row['fs_lt_date']);
                 
$items[$i]['changefreq'] = $smcfg['forums']['changefreq'];
                   
$items[$i]['priority'] = $smcfg['forums']['priority'];                        
                }
        }
       
       
// forum posts
       
       
$sql = sed_sql_query("SELECT t.ft_id, t.ft_movedto, s.fs_id, p.fp_updated FROM $db_forum_posts p
       LEFT JOIN
$db_forum_topics t ON ( p.fp_topicid = t.ft_id ) LEFT JOIN $db_forum_sections s ON ( p.fp_sectionid = s.fs_id )
       GROUP BY t.ft_id ORDER BY t.ft_sticky DESC, p.fp_creation DESC LIMIT "
.$smcfg['forums']['limit']);
       
        while (
$row = sed_sql_fetchassoc($sql))
        {
                list(
$usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('forums', $row['fs_id']);
                if(
$usr['auth_read'])
                {
                 
$i++;
                 
$moved = ($row['ft_movedto']) ? $row['ft_movedto'] : $row['ft_id'];
                 
$row['fp_url'] = sed_url('forums', 'm=posts&q='.$moved, "", false, false);
                   
$items[$i]['loc'] = $cfg['mainurl']."/".$row['fp_url'];
                   
$items[$i]['lastmod'] = @date("Y-m-d\TH:i:s+00:00", $row['fp_updated']);
                 
$items[$i]['changefreq'] = $smcfg['forums']['changefreq'];
                   
$items[$i]['priority'] = $smcfg['forums']['priority'];                        
                }
        }        

        break;

default:
       
       
// site map index by default
       
$feed .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
       
$feed .= "<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
        foreach(
$smcfg as $key => $value)
        {
               
$feed .= "<sitemap>\n";
               
$feed .= "<loc>".$cfg['mainurl']."/".sed_url("sitemap", "m=".$key)."</loc>\n";
               
$feed .= "<lastmod>".@date("Y-m-d\TH:i:s+00:00", $sys['now'])."</lastmod>\n";
               
$feed .= "</sitemap>\n";
        }
       
$feed .= "</sitemapindex>\n";
       
        break;
       
}

if (isset(
$smcfg[$m])) {
   
    foreach (
$items as $item)
    {        
     
$feed .= "<url>\n";
     
$feed .= "<loc>".$item['loc']."</loc>\n";
     
$feed .= "<lastmod>".$item['lastmod']."</lastmod>\n";
     
$feed .= "<changefreq>".$item['changefreq']."</changefreq>\n";
     
$feed .= "<priority>".$item['priority']."</priority>\n";
     
$feed .= "</url>\n";        
    }
   
$feed .= "</urlset>";
   
}

function
miscGzHandler($buf) {
   
$zipRatio = 5;    // 0 <= zipRatio <= 9 depends of your server
   
$bufZiped = gzcompress($buf, $zipRatio);
   
$bufZiped = pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00)
        .
substr($bufZiped, 0, -4)
        .
pack('V',crc32($buf))
        .
pack('V',strlen($buf));
       
header('Content-description: File Transfer');
       
header('Content-type: application/x-gzip');
       
header('Content-encoding: gzip/x-gzip');
       
header('Content-length: '.strlen($bufZiped));
       
header("Content-Disposition: attachment; filename=sitemap.xml.gz");
    return
$bufZiped;
}

/*
@ob_start('miscGzHandler');
echo(utf8_encode($feed));
@ob_end_flush(); // miscGzHandler
*/

@ob_clean();
header("Content-type: text/xml; charset=UTF-8");
echo(
utf8_encode($feed));
exit;

?>
Presented with Sourceer