Created
May 31, 2012 19:48
-
-
Save salayhin/2845775 to your computer and use it in GitHub Desktop.
Class for create sitemap in PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Create Site map | |
* | |
* @category Model | |
* @author Md. Sirajus Salayhin <[email protected]> | |
* | |
*/ | |
class xmlSitemap | |
{ | |
public function generateXML() | |
{ | |
$xmlFile = "../sitemap.xml"; | |
$fh = fopen($xmlFile, 'w') or die("can't open file"); | |
$sql = "SELECT DISTINCT * ,DATE_FORMAT(date, '%Y-%m-%dT%H:%i:%s+00:00') AS new_date FROM articles | |
WHERE articles.status = 0 ORDER BY articles.id DESC"; | |
$res = mysql_query($sql); | |
while ($row = mysql_fetch_assoc($res)) { | |
$content[] = $row; | |
} | |
$str = ''; | |
$str .= '<?xml version="1.0" encoding="UTF-8"?>'; | |
$str .= '<?xml-stylesheet type="text/xsl" href="sitemap.xsl"?> | |
<!-- sitemap-generator-url="http://www.yourdomain.com" sitemap-generator-version="3.2.6" --> | |
<!-- generated-on="October 13, 2011 05:29" -->'; | |
$str .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; | |
for ($i = 0; $i < count($content); $i++) { | |
$str .= '<url>'; | |
$str .= '<loc>http://www.yourdomain.com/article.php?id=' . $content[$i]['id'] . '</loc>'; | |
$str .= '<lastmod>' . $content[$i]['new_date'] . '</lastmod>'; | |
$str .= '<changefreq>daily</changefreq>'; | |
$str .= '<priority>1.0</priority>'; | |
$str .= '</url>'; | |
} | |
$str .= '</urlset>'; | |
fwrite($fh, $str); | |
fclose($fh); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version = "1.0" encoding = "UTF-8"?> | |
<xsl:stylesheet version="2.0" | |
xmlns:html="http://www.w3.org/TR/REC-html40" | |
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9" | |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> | |
<xsl:template match="/"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head> | |
<title>XML Sitemap</title> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | |
<style type="text/css"> | |
body { | |
font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana; | |
font-size: 13px; | |
} | |
#intro { | |
background-color: #CFEBF7; | |
border: 1px #2580B2 solid; | |
padding: 5px 13px 5px 13px; | |
margin: 10px; | |
} | |
#intro p { | |
line-height: 16.8667px; | |
} | |
td { | |
font-size: 11px; | |
} | |
th { | |
text-align: left; | |
padding-right: 30px; | |
font-size: 11px; | |
} | |
tr.high { | |
background-color: whitesmoke; | |
} | |
#footer { | |
padding: 2px; | |
margin: 10px; | |
font-size: 8pt; | |
color: gray; | |
} | |
#footer a { | |
color: gray; | |
} | |
a { | |
color: black; | |
} | |
</style> | |
</head> | |
<body> | |
<h1>XML Sitemap</h1> | |
<div id="intro"> | |
<p> | |
articleofweek.com | |
</p> | |
</div> | |
<div id="content"> | |
<table cellpadding="5"> | |
<tr style="border-bottom:1px black solid;"> | |
<th>URL</th> | |
<th>Priority</th> | |
<th>Change Frequency</th> | |
<th>LastChange (GMT)</th> | |
</tr> | |
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/> | |
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> | |
<xsl:for-each select="sitemap:urlset/sitemap:url"> | |
<tr> | |
<xsl:if test="position() mod 2 != 1"> | |
<xsl:attribute name="class">high</xsl:attribute> | |
</xsl:if> | |
<td> | |
<xsl:variable name="itemURL"> | |
<xsl:value-of select="sitemap:loc"/> | |
</xsl:variable> | |
<a href="{$itemURL}"> | |
<xsl:value-of select="sitemap:loc"/> | |
</a> | |
</td> | |
<td> | |
<xsl:value-of select="concat(sitemap:priority*100,'%')"/> | |
</td> | |
<td> | |
<xsl:value-of | |
select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/> | |
</td> | |
<td> | |
<xsl:value-of | |
select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/> | |
</td> | |
</tr> | |
</xsl:for-each> | |
</table> | |
</div> | |
<div id="footer"> | |
</div> | |
</body> | |
</html> | |
</xsl:template> | |
</xsl:stylesheet> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* XML Pingomatic | |
* | |
* @category Model | |
* @author Md. Sirajus Salayhin <[email protected]> | |
* | |
*/ | |
class xmlPingoMatic | |
{ | |
public function pingoMatic($debug = false) | |
{ | |
$sql = "SELECT DISTINCT * ,DATE_FORMAT(date, '%Y-%m-%dT%H:%i:%s+00:00') AS new_date FROM articles | |
WHERE articles.status = 0 | |
AND DATE_FORMAT(date, '%Y-%m-%d') = CURDATE() ORDER BY articles.id DESC"; | |
$res = mysql_query($sql); | |
while ($row = mysql_fetch_assoc($res)) { | |
$data[] = $row; | |
} | |
$content = ''; | |
$content .= '<?xml version="1.0"?>'; | |
$content .= '<methodCall>'; | |
$content .= '<methodName>weblogUpdates.ping</methodName>'; | |
$content .= '<params>'; | |
for ($i = 0; $i < count($data); $i++) { | |
$content .= '<param>'; | |
$content .= '<value>' . $data[$i]['title'] . '</value>'; | |
$content .= '</param>'; | |
$content .= '<param>'; | |
$content .= '<value>' . 'http://www.yourdomain.com/article.php?id=' . $data[$i]['id'] . '</value>'; | |
$content .= '</param>'; | |
} | |
$content .= ' </params>'; | |
$content .= '</methodCall>'; | |
$headers = "POST / HTTP/1.0\r\n" . | |
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\r\n" . | |
"Host: rpc.pingomatic.com\r\n" . | |
"Content-Type: text/xml\r\n" . | |
"Content-length: " . strlen($content); | |
if ($debug) nl2br($headers); | |
$request = $headers . "\r\n\r\n" . $content; | |
$response = ""; | |
$fs = fsockopen('rpc.pingomatic.com', 80, $errno, $errstr); | |
if ($fs) { | |
fwrite($fs, $request); | |
while (!feof($fs)) $response .= fgets($fs); | |
if ($debug) echo "<xmp>" . $response . "</xmp>"; | |
fclose($fs); | |
preg_match_all("/<(name|value|boolean|string)>(.*)<\/(name|value|boolean|string)>/U", $response, $ar, PREG_PATTERN_ORDER); | |
for ($i = 0; $i < count($ar[2]); $i++) $ar[2][$i] = strip_tags($ar[2][$i]); | |
return array('status' => ($ar[2][1] == 1 ? 'ko' : 'ok'), 'msg' => $ar[2][3]); | |
} else { | |
if ($debug) echo "<xmp>" . $errstr . " (" . $errno . ")</xmp>"; | |
return array('status' => 'ko', 'msg' => $errstr . " (" . $errno . ")"); | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment