Dorftrottel: Funktion nicht einwandfrei

Beitrag lesen

Hallo,

ich schreibe aus einer Datenbank eine schöne XML Datei leider ist diese nicht konform mit den XML Standarts.
Weil der Anfang

<?xml version="1.0" standalone="yes"?>  
<datenbank>

als auch das Ende
</datenbank>
sowie zwischen den Einträgen ein Enter ist.

Die Funktion habe ich entdeckt (siehe unten) auch die Stelle wo scheinbar alle Daten eingefügt werden $xml_sdr_tmp_html aber wo kann ich jetzt den XML Header und Footer einfügen? Und wie entferne ich das Enter zwischen den Datensätzten.

function rs_make_xml()  
{  
	global $wpdb, $rs_event_defaults;  
if ( $_REQUEST['gkmodes'] == 'regen_xml_file' )  
{  
	if ( $fp = @fopen(ABSPATH . 'zeiten.xml', 'w+') )  
	{  
		// Cachedatei vorbereiten  
		$input	= '';  
  
	$lower_time = time();  
	$sort_order = 'ASC';  
  
	$query_string = "  
  SELECT DISTINCT  
    meta.meta_value as `date`,  
    post.post_title as `title`,  
    post.post_content as `fulltext`,  
    post.ID as id,  
    post.post_excerpt as `excerpt`  
  FROM  
    {$wpdb->postmeta} as meta,  
    {$wpdb->posts} as post,  
    {$wpdb->term_relationships} as cats  
  WHERE  
    meta.post_id = post.ID  
  AND  
    post.ID = cats.object_id  
  AND  
    meta.meta_key = 'rs_event'  
  AND  
    post.post_date <= '".current_time('mysql')."'  
  AND  
    meta.meta_value >= {$lower_time}  
  AND  
    post.post_status = 'publish'  
  ORDER BY  
    meta.meta_value {$sort_order}";  
  
	/*** Get a list of the events from our query string */  
	$event_list = $wpdb->get_results($query_string);  
  
	/*** Items for outputting will be placed here for imploding later */  
	$output_array = array();  
  
	/*** If the query has returned an array, do stuff */  
	if(is_array($event_list))  
	{  
		/*** To store previous dates if we have $group_by_date turned on */  
		$previous_date = false;  
  
		/*** Loop through each event */  
		foreach($event_list as $event)  
		{  
			$show_time = 1;  
			if (strlen($event->date) == 11) {  
				$show_time = 0;  
				settype($event->date, "integer");  
			}  
  
			$output_date = date('d.m.Y', $event->date);  
			$output_time = date('H:i:s', $event->date);  
  
			if('' == $event->excerpt)  
			{  
				$event->excerpt = $event->fulltext;  
				$event->excerpt = apply_filters('the_content', $event->excerpt);  
				$event->excerpt = str_replace(']]>', ']]&gt;', $event->excerpt);  
				$event->excerpt = strip_tags($event->excerpt);  
				$excerpt_length = 55;  
				$words = explode(' ', $event->excerpt, $excerpt_length + 1);  
				if (count($words) > $excerpt_length)  
				{  
					array_pop($words);  
					array_push($words, '[...]');  
					$event->excerpt = implode(' ', $words);  
				}  
			}  
  
			/*** Tidy these up into keys/values and add filters */  
$query_string_2 = 'SELECT `meta_value` FROM ' . $wpdb->postmeta . ' WHERE `post_id`=' . $event->id . ' AND `meta_key`=\'rs_sender\'';  
$temp2 = $wpdb->get_var($query_string_2);  
  
$xml_sdr_tmp_html = "<datensatz>  
<date>%DATE%</date>  
<sender>%SENDER%</sender>  
<time>%TIME%</time>  
<titel>%TITLE%</titel>  
<url>%URL%</url>  
</datensatz>";  
  
			$replacements = array  
			(  
				'%URL%' => get_permalink($event->id),  
				'%DATE%' => apply_filters('the_date', $output_date),  
				'%TIME%' => apply_filters('the_time', $output_time),  
				'%TITLE%' => apply_filters('the_title', $event->title),  
                                '%SENDER%' => $temp2,  
				'%FULLTEXT%' => apply_filters('the_content', $event->fulltext),  
				'%EXCERPT%' => apply_filters('the_excerpt', $event->excerpt),  
			);  
  
			$replacements['%TIME%'] = $values['time_separator'] . $replacements['%TIME%'];  
			if ($show_time == 0) {  
				$replacements['%TIME%'] = "";  
			}  
  
			$xml_sdr_tmp_html = str_replace(array_keys($replacements), array_values($replacements), $xml_sdr_tmp_html);  
  
                        $input .= (empty($input))? '' : "\n\n";  
                        $input .= $xml_sdr_tmp_html;  
  
			}  
		}  
  
		@flock($fp, LOCK_EX);  
		@fwrite($fp, $input);  
		@flock($fp, LOCK_UN);  
		@fclose($fp);  
		@chmod(ABSPATH . 'wp-content/plugins/sendezeiten.xml', 0777);  
	}  
        exit;