Mister Spy Say ="Hello Kids ... :D" ___ ____ _ _____ | \/ (_) | | / ___| | . . |_ ___| |_ ___ _ __ \ `--. _ __ _ _ | |\/| | / __| __/ _ \ '__| `--. \ '_ \| | | | | | | | \__ \ || __/ | /\__/ / |_) | |_| | \_| |_/_|___/\__\___|_| \____/| .__/ \__, | | | __/ | |_| |___/ Bot Mister Spy V3
Mister Spy

Mister Spy

Current Path : /home/caballoscriollos/public_html/web/library/
Upload File :
Current File : /home/caballoscriollos/public_html/web/library/class.sitemapgenerator.php

<?php

if (file_exists('class.noticias.php')) 	require_once('class.noticias.php');
if (file_exists('class.eventos.php')) 	require_once('class.eventos.php');
if (file_exists('class.rubros.php')) 	require_once('class.rubros.php');
if (file_exists('class.productos.php')) require_once('class.productos.php');
if (file_exists('class.videos.php')) 	require_once('class.videos.php');
if (file_exists('class.audios.php')) 	require_once('class.audios.php');
if (file_exists('class.faqs.php')) 		require_once('class.faqs.php');
require_once('class.categorias.php');
require_once('class.configuraciones.php');
require_once('class.modulos.php');
require_once('class.sitemapchangefreq.php');
require_once('class.sitemaps.php');


abstract class SitemapGenerator
{
	static public function BuildIndexMap() 
	{
		/* declaramos variables necesarias */
		$oModulos = new Modulos();

		/* abrimos el archivo */
		$Handdle = fopen(dirname(__FILE__) . '/../espanol/sitemap.xml', "w");

		/* obtenemos informacion de los modulo para verificar cuales estan activos */
		$oModuloNoticias 	= $oModulos->GetById(Modulo::Noticias);
		$oModuloEventos 	= $oModulos->GetById(Modulo::Eventos);
		$oModuloDescargas 	= $oModulos->GetById(Modulo::Descargas);
		$oModuloVideos 		= $oModulos->GetById(Modulo::Videos);
		$oModuloFaqs 		= $oModulos->GetById(Modulo::Faqs);
		$oModuloAudios 		= $oModulos->GetById(Modulo::Audios);
		$oModuloCatalogo 	= $oModulos->GetById(Modulo::Catalogo);
		$oModuloCampanias 	= $oModulos->GetById(Modulo::Campanias);

		/* generamos los sitemaps por contenido */
		SitemapGenerator::BuildMap('General');
		if ($oModuloNoticias->Activo) 	SitemapGenerator::BuildMap('Noticias');
		if ($oModuloEventos->Activo) 	SitemapGenerator::BuildMap('Eventos');
		if ($oModuloDescargas->Activo) 	SitemapGenerator::BuildMap('Descargas');
		if ($oModuloVideos->Activo) 	SitemapGenerator::BuildMap('Videos');
		if ($oModuloFaqs->Activo) 		SitemapGenerator::BuildMap('Faqs');
		if ($oModuloAudios->Activo) 	SitemapGenerator::BuildMap('Audios');
		if ($oModuloCatalogo->Activo) 	SitemapGenerator::BuildMap('Catalogo');
		if ($oModuloCampanias->Activo) 	SitemapGenerator::BuildMap('Newsletter');
		
		$Node = '<?xml version="1.0" encoding="UTF-8"?>';
		$Node.= '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
		http://www.google.com/schemas/sitemap/0.84/siteindex.xsd">';
		$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_general.xml', 'sitemap_general.xml');
		if ($oModuloNoticias->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_noticias.xml', 'sitemap_noticias.xml');
		if ($oModuloEventos->Activo) 
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_eventos.xml', 'sitemap_eventos.xml');
		if ($oModuloDescargas->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_descargas.xml', 'sitemap_descargas.xml');
		if ($oModuloVideos->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_videos.xml', 'sitemap_videos.xml');
		if ($oModuloFaqs->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_faqs.xml', 'sitemap_faqs.xml');
		if ($oModuloAudios->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_audios.xml', 'sitemap_audios.xml');
		if ($oModuloCatalogo->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_catalogo.xml', 'sitemap_catalogo.xml');
		if ($oModuloCampanias->Activo)
			$Node.= SitemapGenerator::AddChildMap(Config::UrlSitioEspanol . 'sitemap_newsletter.xml', 'sitemap_newsletter.xml');
			
		$Node.= '</sitemapindex>';

		fwrite($Handdle, $Node);
		fclose($Handdle);

		/* notificamos a los buscadores que se ha actualizado el sitemap */		
		SitemapGenerator::PingToAll();
	}
	
	
	static private function AddChildMap($Loc, $FileName) 
	{
		if (file_exists($FileName)) 
		{
			$Node = "<sitemap>\n";
			$Node.= 	"<loc>" . $Loc . "</loc>\n";
			$Node.= 	"<lastmod>" . date("Y-m-d\TH:i:s", filemtime($FileName)) . "-07:00</lastmod>\n";
			$Node.= "</sitemap>\n";
			
			return $Node;
		} 

		return '';
	}
	
	
	static public function BuildMap($MapName = 'General')
	{
		$oCategorias = new Categorias();

		/* obtenemos informacion de configuracion del sitio */
		$oConfiguraciones = new Configuraciones();
		$oConfiguracion = $oConfiguraciones->GetRow();

		$Node = '<?xml version="1.0" encoding="UTF-8"?>';
		$Node.= '<urlset
		xmlns="http://www.google.com/schemas/sitemap/0.84"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
		http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">';

		/* Verificamos el mapa a generar */
		switch ($MapName) 
		{
			case 'General':

				$FileName='sitemap_general.xml';

				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'nosotros', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'delivery', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'contacto', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'ayuda', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'contrasenia_recovery', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'home', '0.5', SitemapChangeFreq::Hourly);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'login', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'mi_cuenta', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'registro', '0.5', SitemapChangeFreq::Never);
				
				break;

			case 'Noticias':

				$oNoticias = new Noticias();

				$FileName 		= 'sitemap_servicios.xml';
				$arrNoticias 	= $oNoticias->GetAll();

				foreach ($arrNoticias as $oNoticia) 
				{
					$Url = Config::UrlSitioEspanol . 'servicios/';
					$Url.= UrlFriendly($oNoticia->Titulo) . '_' . $oNoticia->IdNoticia;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Eventos':

				$oEventos = new Eventos();

				$FileName 	= 'sitemap_eventos.xml';
				$arrEventos = $oEventos->GetAll();

				foreach ($arrEventos as $oEvento) 
				{
					$Url = Config::UrlSitioEspanol . 'eventos/'; 
					$Url.= UrlFriendly($oEvento->Titulo) . '_' . $oEvento->IdEvento;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Descargas':

				$oArchivos = new Archivos();

				$FileName 				= 'sitemap_descargas.xml';
				$arrDescargas 			= $oArchivos->GetAll();
				$arrCategoriasDescargas = $oCategorias->GetByIdTipo(ContenidoTipos::Archivos);

				foreach ($arrDescargas as $oDescarga) 
				{
					$Url = Config::UrlSitioEspanol . 'archivos/';
					$Url.= UrlFriendly($oDescarga->Titulo) . '_' . $oDescarga->IdArchivo;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				foreach ($arrCategoriasDescargas as $oCategoria) 
				{
					$Url = Config::UrlSitioEspanol . 'descargas/'; 
					$Url.= UrlFriendly($oCategoria->KeyCategoria);
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Videos':

				$oVideos = new Videos();

				$FileName 				= 'sitemap_videos.xml';
				$arrVideos 				= $oVideos->GetAll();
				$arrCategoriasVideos 	= $oCategorias->GetByIdTipo(ContenidoTipos::Videos);

				foreach ($arrVideos as $oVideo) 
				{
					$Url = Config::UrlSitioEspanol . 'videos/';
					$Url.= UrlFriendly($oVideo->Nombre) . '_' . $oVideo->IdVideo;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				foreach ($arrCategoriasVideos as $oCategoria) 
				{
					$Url = Config::UrlSitioEspanol . 'videos/'; 
					$Url.= UrlFriendly($oCategoria->KeyCategoria);
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Faqs':
			
				$oFaqs = new Faqs();
						
				$FileName 			= 'sitemap_faqs.xml';
				$arrFaqs 			= $oFaqs->GetAll();
				$arrCategoriasFaqs 	= $oCategorias->GetByIdTipo(ContenidoTipos::Faq);				

				foreach ($arrFaqs as $oFaq) 
				{
					$Url = Config::UrlSitioEspanol . 'faqs/';
					$Url.= UrlFriendly($oFaq->Pregunta) . '_' . $oFaq->IdFaq;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				foreach ($arrCategoriasFaqs as $oCategoria) 
				{
					$Url = Config::UrlSitioEspanol . 'faq/';
					$Url.= UrlFriendly($oCategoria->KeyCategoria);
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;
				
			case 'Audios':

				$oAudios = new Audios();
		
				$FileName 				= 'sitemap_audios.xml';
				$arrAudios 				= $oAudios->GetAll();
				$arrCategoriasAudios 	= $oCategorias->GetByIdTipo(ContenidoTipos::Audio);

				foreach ($arrAudios as $oAudio) 
				{
					$Url = Config::UrlSitioEspanol . 'audio/';
					$Url.= UrlFriendly($oAudio->Nombre) . '_' . $oAudio->IdAudio;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}
		
				foreach ($arrCategoriasAudios as $oCategoria) 
				{
					$Url = Config::UrlSitioEspanol . 'audio/'; 
					$Url.= UrlFriendly($oCategoria->KeyCategoria);
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Catalogo':

				$oRubros 	= new Rubros();
				$oProductos	= new Productos();
								
				$FileName 		= 'sitemap_catalogo.xml';
				$arrRubros 		= $oRubros->GetAll();
				$arrProductos	= $oProductos->GetAll();

				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'ofertas', '0.5', SitemapChangeFreq::Hourly);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'catalogo', '0.5', SitemapChangeFreq::Hourly);

				/* contenido de rubros 
				foreach ($arrRubros as $oRubro)
				{
					$Url = Config::UrlSitioEspanol . 'productos/';
					$Url.= $oRubro->KeyRubro;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}*/
				
				/* contenido de subrubros */
				if ($oConfiguracion->TipoCatalogo == 'B' || $oConfiguracion->TipoCatalogo == 'C')
				{
					foreach ($arrRubros as $oRubro)
					{
						$arrSubrubros = $oRubro->GetAllSubrubros();
					
						foreach ($arrSubrubros as $oSubrubro)
						{
							$Url = Config::UrlSitioEspanol . 'productos/';
							$Url.= $oRubro->KeyRubro . '/' . $oSubrubro->KeySubrubro;
							
							$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
						}
					}
				}
				
				/* contenido de categorias */
				if ($oConfiguracion->TipoCatalogo == 'C')
				{
					foreach ($arrRubros as $oRubro)
					{
						$arrSubrubros = $oRubro->GetAllSubrubros();
					
						foreach ($arrSubrubros as $oSubrubro)
						{
							$arrCategorias = $oSubrubro->GetAllCategorias();
						
							foreach ($arrCategorias as $oCategoria)
							{
								$Url = Config::UrlSitioEspanol . 'productos/';
								$Url.= $oRubro->KeyRubro . '/' . $oSubrubro->KeySubrubro . '/' . $oCategotia->KeyCategoria;
								
								$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
							}
						}
					}
				}
		
				/* contenido de productos */
				foreach ($arrProductos as $oProducto) 
				{
					$Url = Config::UrlSitioEspanol . 'productos/'; 
					$Url.= UrlFriendly($oProducto->Producto) . '_' . $oProducto->IdProducto;
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				break;

			case 'Newsletter':
			
				$oEdiciones = new Ediciones();
				
				$FileName 		= 'sitemap_newsletter.xml';
				$arrEdiciones 	= $oEdiciones->GetAll();

				foreach ($arrEdiciones as $oEdicion)
				{
					$Url = $oEdicion->GetUrl();
					
					$Node.= SitemapGenerator::AddUrl($Url, '0.5', SitemapChangeFreq::Never);
				}

				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'newsletter_cancelar', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'newsletter_cancelar_ok', '0.5', SitemapChangeFreq::Never);
				$Node.= SitemapGenerator::AddUrl(Config::UrlSitioEspanol . 'newsletter_registro', '0.5', SitemapChangeFreq::Never);
				
				break;
		}
		
		$Node.= '</urlset>';
		
		$FileName = dirname(__FILE__) . '/../espanol/' . $FileName;
		$Handdle = fopen($FileName, "w");
		
		fwrite($Handdle, $Node);
		fclose($Handdle);
	}


	static private function AddUrl($Url = '', $Priority = '0.5', $Freq = 'never') 
	{
		if (empty($Url)) $Url = Config::UrlSitioEspanol;
		
		$Node = "<url>\n";
		$Node.= "	<loc>" . $Url . "</loc>\n";
		$Node.= "	<priority>" . $Priority . "</priority>\n";
		$Node.= "	<changefreq>" . $Freq . "</changefreq>\n";
		$Node.= "</url>\n";
		
		return $Node;
	}
	
	
	static private function PingGoogleSitemaps($Url_xml = '')
	{
		$Url_xml = Config::UrlSitioEspanol . 'sitemap.xml';
	
	   	$status = 0;
	   	$google = 'www.google.com';
	   
		if ($fp = @fsockopen($google, 80))
		{
		  	$req =  'GET /webmasters/sitemaps/ping?sitemap=' .
				  urlencode( $Url_xml ) . " HTTP/1.1\r\n" .
				  "Host: $google\r\n" .
				  "User-Agent: Mozilla/5.0 (compatible; " .
				  PHP_OS . ") PHP/" . PHP_VERSION . "\r\n" .
				  "Connection: Close\r\n\r\n";
		  	
			fwrite($fp, $req);
		  	while (!feof($fp))
		  	{
			 	if (@preg_match('~^HTTP/\d\.\d (\d+)~i', fgets($fp, 128), $m))
			 	{
					$status = intval( $m[1] );
					break;
			 	}
		  	}
		  	fclose($fp);
		}
		
		return($status);
	}
	
	
	static private function Ping($Url)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $Url);
		curl_setopt($ch, CURLOPT_HEADER, 1);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$data = curl_exec($ch);
		curl_close($ch);
	}
	
	
	static private function PingToAll()
	{
		/* hacemos un ping para avisar a Yahoo */
		$Url = 'http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=' . Config::UrlSitioEspanol . 'sitemap.xml';
		SitemapGenerator::Ping($Url);
		
		/* hacemos un ping para avisar a Google */
		$Url = 'http://www.google.com/webmasters/sitemaps/ping?sitemap=' . Config::UrlSitioEspanol . 'sitemap.xml';
		SitemapGenerator::Ping($Url);
		
		/* hacemos un ping para avisar a Ask */
		$Url = 'http://submissions.ask.com/ping?sitemap=' . Config::UrlSitioEspanol . 'sitemap.xml';
		SitemapGenerator::Ping($Url);
	}
}

?>

Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat