Files
awo-hamburg-intranet/module/sitemap/sitemap.php

149 lines
4.1 KiB
PHP

<?php
/***************************\
|***DO NOT EDIT THIS FILE***|
|**EDIT sitemap.config.php**|
\***************************/
error_reporting(E_ALL);
//Read global variables from config file
require_once( 'sitemap.config.php' );
// Include all functions
require_once('sitemap.functions.php');
//Default html header makes browsers ignore \n
header("Content-Type: text/plain");
$color = false;
$version_script = 2;
if ($version_script != $version_functions || $version_functions != $version_config){
logger("Script versions mismatch!",3);
logger("Update necessary",3);
logger("Version of sitemap.functions.php " .$version_functions ,3);
logger("Version of sitemap.config.php " .$version_config ,3);
logger("Version of sitemap.php " .$version_script ,3);
logger("Download new files here: https://www.github.com/knyzorg/sitemap-generator-crawler" ,3);
die("Stopped.");
}
// Add PHP CLI support
if (php_sapi_name() === 'cli' && PHP_OS != 'WINNT') {
parse_str(implode('&', array_slice($argv, 1)), $args);
$color = true;
}
//Allow variable overloading with CLI
if (isset($args['file'])) {
$file = $args['file'];
}
if (isset($args['site'])) {
$site = $args['site'];
}
if (isset($args['max_depth'])) {
global $max_depth;
$max_depth = $args['max_depth'];
}
if (isset($args['enable_frequency'])) {
global $enable_frequency;
$enable_frequency = $args['enable_frequency'];
}
if (isset($args['enable_priority'])) {
global $enable_priority;
$enable_priority = $args['enable_priority'];
}
if (isset($args['enable_modified'])) {
global $enable_modified;
$enable_modified = $args['enable_modified'];
}
if (isset($args['freq'])) {
global $freq;
$freq = $args['freq'];
}
if (isset($args['priority'])) {
global $priority;
$priority = $args['priority'];
}
if (isset($args['blacklist'])) {
global $blacklist;
$blacklist = $args['blacklist'];
}
if (isset($args['debug'])) {
global $debug;
$debug = $args['debug'];
}
if (isset($args['ignore_arguments'])) {
global $ignore_arguments;
$ignore_arguments = !!$args['ignore_arguments'];
}
if (isset($args['pdf_index'])) {
$pdf_index = $args['pdf_index'];
}
//Begin stopwatch for statistics
$start = microtime(true);
//Setup file stream
$tempfile = tempnam(sys_get_temp_dir(), 'sitemap.xml.');
global $file_stream;
$file_stream = fopen($tempfile, "w") or die("Error: Could not create temporary file $tempfile" . "\n");
fwrite($file_stream, $xmlheader);
// Global variable, non-user defined
global $depth;
global $scanned;
global $indexed;
global $deferredLinks;
$depth = 0;
$indexed = 0;
$scanned = array();
$deferredLinks = array();
// Reduce domain to root in case of monkey
global $real_site;
$real_site = domain_root($site);
if ($real_site != $site){
logger("Reformatted site from $site to $real_site", 2);
}
// Begin by crawling the original url
scan_url($real_site);
// Finalize sitemap
fwrite($file_stream, "</urlset>\n");
fclose($file_stream);
// Pretty-print sitemap
if ((PHP_OS == 'WINNT') ? `where xmllint` : `which xmllint`) {
logger("Found xmllint, pretty-printing sitemap", 0);
$responsevalue = exec('xmllint --format ' . $tempfile . ' -o ' . $tempfile . ' 2>&1', $discardedoutputvalue, $returnvalue);
if ($returnvalue) {
die("Error: " . $responsevalue . "\n");
}
}
// Generate and print out statistics
$time_elapsed_secs = round(microtime(true) - $start, 2);
logger("Sitemap has been generated in " . $time_elapsed_secs . " second" . (($time_elapsed_secs >= 1 ? 's' : '') . "and saved to $file"), 0);
$size = sizeof($scanned);
logger("Scanned a total of $size pages and indexed $indexed pages.", 0);
// Rename partial file to the real file name. `rename()` overwrites any existing files
rename($tempfile, $_SERVER['DOCUMENT_ROOT'].'/'.$file);
// Apply permissions
chmod($_SERVER['DOCUMENT_ROOT'].'/'.$file, $permissions);
// Declare that the script has finished executing and exit
logger("Operation Completed", 0);