Sitemap
function RemoveExtension($strName) // Written By Anton Zamov (http://zamov.online.fr/cv.html)
{
$ext = strrchr($strName, '.');
if($ext !== false)
{
$strName = substr($strName, 0, -strlen($ext));
}
return $strName;
}
/*
Function: format_title
Purpose: creates a normal looking title from a link
Arguments: $url
$url: a link to convert into a title
Returns: a title
*/
function format_title($url) //Creates the Titles from the links
{
include("titles.php");
$pieces = explode('/', $url);
$url = "/" . $pieces[count($pieces)-1];
if(array_key_exists($url, $titles)) // Check to see if you specified a title for the current URL
{
return $titles[$url]; // Returns the specified URL
} else {
$title = substr($url, strrpos($url, "/")+1); // Grabs just the file name (no slashes)
$title = RemoveExtension($title);
$title = str_replace("-", " ", $title); // replaces hyphens with spaces
$title = str_replace("_", " ", $title); // replaces hyphens with spaces
$title = ucwords($title); // Capitalizes first letter of every word
return $title;
}
}
/*
Function: format_url
Purpose: creates a list including the link and title
Arguments: $url
$url: a link for the list and to create a title (using format_title function)
Returns: a complete list item
*/
function format_url($url) //Gets the line of code to be used
{
$title = format_title($url);
$link = '' . $title . '' . "\n";
return $link;
}
/*
Function: folder_strip
Purpose: strips the next folder from an array of URLs
Arguments: $urls, $strip, $start
$urls: the array of links from your sitemap file
$strip: the folder to strip including a slash (/sales for example)
$start: what link to start on in the $urls array
Returns: $urls array
*/
function folder_strip($urls, $strip, $start)
{
for($i = $start; $i < count($urls); $i++) // Go through every url
{
$urls[$i] = str_replace($strip, "", $urls[$i]); // strip the folder name out of it
}
return $urls;
}
/*
Function: format_folder
Purpose: this is a recursive function that takes care of a folder in the sitemap file and creates another unordered list for each folder
and all the links in a folder, and keeps going until all links and files in the initial folder have been gone through
Arguments: $urls, $strip, $links = array()
$urls: the array of links from your sitemap file
$start: the array key to start on
$links = array(): an optional argument that contains the same urls array but necessary for the recursive functionality to work
Returns: the link number that it ended on so that the sitemap can continue at the end of the links
*/
function format_folder($urls, $start, $links = array())
{
include("folders.php");
$pos = strpos($urls[$start], "/") + 1; // The position of the first slash
$pos_two = strpos($urls[$start], "/", $pos); // The position of the second slash
$folder = substr($urls[$start], $pos, $pos_two-$pos); // The next folder name (i.e., in /os/items/ it would be os
$disp_folder = ucwords($folder); // Defines a default folder name value
if(array_key_exists($folder, $folders)) { $disp_folder = $folders[$folder]; } // Checks to see if you specified a folder name
echo "" . $disp_folder . "";
echo '' . "\n\n";
$i = intval($start); // switching variables, had trouble using the $start, acted like a string
while ($folder == @substr($urls[$i], $pos, @strpos($urls[$i], "/", $pos)-$pos)) // keeps in the same base folder (i.e., /os/)
{
$subpos = strpos($urls[$i], "/", $pos_two + 1); // If there is another sub folder, this detects it
if($subpos != false)
{
$i = format_folder(folder_strip($urls, "/" . $folder, $i), $i, $urls); //Call the function again (recursive)
} else {
if (count($links) > 0) // If this is recursing, this will be used instead of $urls
{
echo format_url($links[$i]);
} else
{
echo format_url($urls[$i]);
}
$i++;
}
}
echo " \n";
return $i;
}
?>
/*
--------------------------------- Phoenix Site Map ---------------------------------
Developed By: Kerry Jones
Company: Phoenix Development (http://www.phoenixdev.net)
Date: 03/08/2007
Version: 1.0
*/
/*************** FUNCTIONS ***************/
function curl_open($url)
{
$curl_handle = curl_init();
// Where should we get the data?
curl_setopt ($curl_handle, CURLOPT_URL, $url);
// This says not to dump it directly to the output stream, but instead
// have it return as a string.
curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);
// the following is optional, but you should consider setting it
// anyway. It prevents your page from hanging if the remote site is
// down.
curl_setopt ($curl_handle, CURLOPT_CONNECTTIMEOUT, 1);
// Now, YOU make the call.
$buffer = curl_exec($curl_handle);
// And tell it to shut down (when your done. You can always make more
// calls if you want.)
curl_close($curl_handle);
// This is where i'd probably do some extra checks on what i just got.
// Paranoia pays dividends.
return $buffer;
}
if($sitemap) { // Check to make sure the sitemap can be found
echo "";
// $xml = simplexml_load_file($sitemap);
$xml = simplexml_load_string(curl_open($sitemap));// Load the sitemap xml file
/*
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $sitemap);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$xml = curl_exec($ch);
curl_close($ch);
*/
// Set variable types
$loc = array();
$lastmod = array();
$changefreq = array();
$priority = array();
for($i = 0; $i < count($xml->url); $i++) // Convert to separate arrays (3 of them aren't currently used but may be used in the future)
{
$loc[$i] = str_replace($website, "", $xml->url[$i]->loc);
$lastmod[$i] = $xml->url[$i]->lastmod;
$changefreq[$i] = $xml->url[$i]->changefreq;
$priority[$i]= $xml->url[$i]->priority;
}
array_multisort($priority, SORT_NUMERIC, SORT_DESC, $loc, $lastmod, $changefreq);
for($i = 0; $i < count($loc); $i++) // For loop to go through all the URLs
{
if(substr_count($loc[$i], "/", 1) > 0) // Check to see if it's in a folder
{
$i = format_folder($loc, $i); // takes care of folders and returns the last link spat out
} else
{
echo format_url($loc[$i]); // formats the link so that the Title looks nice and goes to the proper address
}
}
echo " ";
} else { // If the sitemap can't be found, you should write some sort of error message and I suggest sending an e-mail to yourself
include("error.php");
}
?>
Back to the Forbes Magazine article on Ignatius Piazza
|