179 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			179 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php | ||
|  | class googlemap { | ||
|  | 	 | ||
|  | 	var $home = ""; | ||
|  | 	var $limit = 0; | ||
|  | 	var $news_priority = "0.5"; | ||
|  | 	var $stat_priority = "0.5"; | ||
|  | 	var $priority = "0.6"; | ||
|  | 	var $cat_priority = "0.7"; | ||
|  | 	 | ||
|  | 	function googlemap($config) {$this->home = $config['http_home_url'];} | ||
|  | 	 | ||
|  | 	function build_map() { | ||
|  | 		$map = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; | ||
|  | 		$map .= $this->get_static(); | ||
|  | 		$map .= $this->get_categories(); | ||
|  | 		$map .= $this->get_news(); | ||
|  | 		$map .= $this->get_forum(); | ||
|  | 		$map .= "</urlset>"; | ||
|  | 		return $map; | ||
|  | 	} | ||
|  | 
 | ||
|  |     function build_index( $count ) { | ||
|  |    		$map = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; | ||
|  |    		$lastmod = date( "Y-m-d" ); | ||
|  |    		$map .= "<sitemap>\n<loc>{$this->home}uploads/sitemap1.xml</loc>\n<lastmod>{$lastmod}</lastmod>\n</sitemap>\n"; | ||
|  |    		for ($i =0; $i < $count; $i++) { | ||
|  |    			$t = $i+2; | ||
|  |    			$map .= "<sitemap>\n<loc>{$this->home}uploads/sitemap{$t}.xml</loc>\n<lastmod>{$lastmod}</lastmod>\n</sitemap>\n"; | ||
|  |    		} | ||
|  |    		$map .= "</sitemapindex>"; | ||
|  |    		return $map; | ||
|  |    	} | ||
|  | 
 | ||
|  |    	function build_stat() { | ||
|  |    		$map = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; | ||
|  |    		$map .= $this->get_static(); | ||
|  |    		$map .= $this->get_categories(); | ||
|  |    		$map .= "</urlset>"; | ||
|  |    		return $map; | ||
|  |    	} | ||
|  | 
 | ||
|  |    	function build_map_news( $n ) { | ||
|  |    		$map = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"; | ||
|  |    		$map .= $this->get_news( $n ); | ||
|  |    		$map .= "</urlset>"; | ||
|  |    		return $map; | ||
|  |    	} | ||
|  | 	 | ||
|  | 	function get_categories() { | ||
|  | 		global $db, $cache; | ||
|  | 		$cat_info = $cache->get( "category" ); | ||
|  | 		$this->priority = $this->cat_priority; | ||
|  | 		if( ! is_array( $cat_info ) ) { | ||
|  | 			$cat_info = array (); | ||
|  | 			$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" ); | ||
|  | 			while ( $row = $db->get_row() ) { | ||
|  | 				$cat_info[$row['id']] = array (); | ||
|  | 				foreach ( $row as $key => $value ) { | ||
|  | 					$cat_info[$row['id']][$key] = $value; | ||
|  | 				} | ||
|  | 			} | ||
|  |             $cache->set( "category", $cat_info ); | ||
|  | 			$db->free(); | ||
|  | 		} | ||
|  | 		 | ||
|  | 		$xml = ""; | ||
|  | 		$lastmod = date( "Y-m-d" ); | ||
|  | 		 | ||
|  | 		foreach ( $cat_info as $cats ) { | ||
|  | 			$loc = $this->home . $this->get_url( $cats[id], $cat_info ) . "/"; | ||
|  | 			$xml .= $this->get_xml( $loc, $lastmod ); | ||
|  | 		} | ||
|  | 		return $xml; | ||
|  | 	} | ||
|  | 	 | ||
|  | 	function get_news($page = false) { | ||
|  | 		global $db, $config; | ||
|  | 		 | ||
|  | 		$xml = ""; | ||
|  | 		$this->priority = $this->news_priority; | ||
|  | 		 | ||
|  |         if ( $page ) { | ||
|  |       			$page = $page - 1; | ||
|  |       			$page = $page * 40000; | ||
|  |       			$this->limit = " LIMIT {$page},40000"; | ||
|  |       		} else { | ||
|  |       			if( $this->limit < 1 ) $this->limit = false; | ||
|  |       			if( $this->limit ) { | ||
|  |       				$this->limit = " LIMIT 0," . $this->limit; | ||
|  |       			} else { | ||
|  |       				$this->limit = ""; | ||
|  |       			} | ||
|  |       		} | ||
|  | 		 | ||
|  | 		$thisdate = date( "Y-m-d H:i:s", (time() + ($config['date_adjust'] * 60)) ); | ||
|  | 		if( $config['no_date'] ) $where_date = " AND date < '" . $thisdate . "'"; | ||
|  | 		else $where_date = ""; | ||
|  | 		 | ||
|  | 		$result = $db->query( "SELECT id, date, alt_name, editdate FROM " . PREFIX . "_post WHERE approve=1" . $where_date . " ORDER BY date DESC" . $this->limit ); | ||
|  | 		 | ||
|  | 		while ( $row = $db->get_row( $result ) ) { | ||
|  | 			if ( $row['editdate'] ){$row['date'] =  $row['editdate']; | ||
|  |             } else {$row['date'] = strtotime($row['date']);} | ||
|  | 			$loc = $this->home . $row['id'] . "-" . $row['alt_name'] . ".html"; | ||
|  | 			$xml .= $this->get_xml( $loc, date( "Y-m-d", $row['date'] ) ); | ||
|  | 		} | ||
|  | 		return $xml; | ||
|  | 	} | ||
|  | 	 | ||
|  | 	function get_static() { | ||
|  | 		global $db; | ||
|  | 		 | ||
|  | 		$xml = ""; | ||
|  | 		$lastmod = date( "Y-m-d" ); | ||
|  | 		 | ||
|  | 		$this->priority = $this->stat_priority; | ||
|  | 		 | ||
|  | 		$result = $db->query( "SELECT name FROM " . PREFIX . "_static" ); | ||
|  | 		while ( $row = $db->get_row( $result ) ) { | ||
|  | 			if( $row['name'] == "dle-rules-page" ) continue; | ||
|  |             $loc = $this->home . $row['name'] . ".html"; | ||
|  | 			$xml .= $this->get_xml( $loc, $lastmod ); | ||
|  | 		} | ||
|  | 		return $xml; | ||
|  | 	} | ||
|  | 	 | ||
|  | 	function get_url($id, $cat_info) { | ||
|  | 		 | ||
|  | 		if( ! $id ) return; | ||
|  | 		 | ||
|  | 		$parent_id = $cat_info[$id]['parentid']; | ||
|  | 		 | ||
|  | 		$url = $cat_info[$id]['alt_name']; | ||
|  | 		 | ||
|  | 		while ( $parent_id ) { | ||
|  | 			 | ||
|  | 			$url = $cat_info[$parent_id]['alt_name'] . "/" . $url; | ||
|  | 			 | ||
|  | 			$parent_id = $cat_info[$parent_id]['parentid']; | ||
|  | 			 | ||
|  | 			if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break; | ||
|  | 		 | ||
|  | 		} | ||
|  | 		 | ||
|  | 		return $url; | ||
|  | 	} | ||
|  | 	 | ||
|  |     function get_forum() { | ||
|  |         global $db; | ||
|  | 
 | ||
|  |         $xml = ""; | ||
|  |         $lastmod=date("Y-m-d"); | ||
|  | 
 | ||
|  |         $this->priority = $this->stat_priority; | ||
|  |         $result = $db->query("SELECT tid FROM " . PREFIX . "_forum_topics"); | ||
|  |         while($row = $db->get_row($result)) { | ||
|  |             $loc = $this->home."forum/topic_".$row['tid']; | ||
|  |             $xml .= $this->get_xml($loc, $lastmod); | ||
|  |         } | ||
|  |     return $xml; | ||
|  |     } | ||
|  | 
 | ||
|  | 	function get_xml($loc, $lastmod) { | ||
|  | 		 | ||
|  | 		$loc = htmlspecialchars( $loc ); | ||
|  | 		 | ||
|  | 		$xml = "\t<url>\n"; | ||
|  | 		$xml .= "\t\t<loc>$loc</loc>\n"; | ||
|  | 		$xml .= "\t\t<lastmod>$lastmod</lastmod>\n"; | ||
|  | 		$xml .= "\t\t<priority>" . $this->priority . "</priority>\n"; | ||
|  | 		$xml .= "\t</url>\n"; | ||
|  | 		 | ||
|  | 		return $xml; | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | ?>
 |