Schnelle Lösung für eine sortierte Ausgabe mittels des fivestar Modules für Drupal

<?php

//Anzahl der Einträge pro Seite
$anzahl_pro_seite = 2;

//die Einträge
$seiten = array(
	array(	'node' => 12
		'name' => 'mööt',
		'url' => 'xxxx',
		'banner' => '',
		'dauer' => '(24)',
		'sendeplan' => 'http://www.aaaaaa/showplan.php',
		'genre' => 'Schranz',
		'stream' => '1 Stream / 128k'),
	array(	'node' => 3,
		'name' => 'pppp',
		'url' => 'yyyyyy',
		'banner' => 'http://xxxx.gif',
		'dauer' => '(24)',
		'sendeplan' => 'ssssss',
		'genre' => 'asd',
		'stream' => '1 Stream / 128k'),
	array(	'node' => 11,
		'name' => 'qwe',
		'url' => 'qwe.net',
		'banner' => 'http://www.qwe.net/images/banner4.jpg',
		'dauer' => '(24)',
		'sendeplan' => '',
		'genre' => 'qwe',
		'stream' => '1 Stream / 128k'),
	array(	'node' => 13,
		'name' => 'tuut',
		'url' => 'tuut.net',
		'banner' => '',
		'dauer' => '(24)',
		'sendeplan' => '',
		'genre' => 'qwe',
		'stream' => '1 Stream / 128k'),
);

//###//
//Wurde eine Seitenzahl angeben?
if(is_numeric(arg(2)))
	$seitenzahl = (int) arg(2);
else
	$seitenzahl = 1;
//Sortieren wir den Spaß..
foreach($seiten as $k => $seite) {
	$vote_values = fivestar_get_votes('node', $seite['node']);
	$vote[$k] = $vote_values['average']['value'];
	$key[$k] = $k;
	$sort[] = array('key' => $k, 'vote' => $vote_values['average']['value']);
}
array_multisort($vote, SORT_DESC, $key, SORT_ASC, $sort);

//Seiten berechnen
$anzahl = count($sort);
if($anzahl > $anzahl_pro_seite) {
	$start = $anzahl_pro_seite * ($seitenzahl-1);
	if (($anzahl_pro_seite * $seitenzahl) > $anzahl)
		$ende = $anzahl-1;
	else
		$ende = $start + $anzahl_pro_seite - 1 ;
}
else
{
	$start = 0;
	$ende = $anzahl-1;
}

	//Einträge ausgeben
	for($i = $start; $i <= $ende; $i++) {
		$v = &$sort[$i];
		$cn = node_load($seiten[$v['key']]['node']);
		print_r('
		<p class=\"rtecenter\">
		'.l('<img alt=\"'.$seiten[$v['key']]['name'].'\" style=\"width: 350px; height: 60px;\" src=\"'.$seiten[$v['key']]['banner'].'\" />','node/'.$seiten[$v['key']]['node'], array('html' => TRUE)).'
		</p>
		<p class=\"rtecenter\">'.$seiten[$v['key']]['url'].' (24h) / '.((empty($seiten[$v['key']]['sendeplan'])) ? 'kein Sendeplan' : '<a href=\"'.$seiten[$v['key']]['sendeplan'].'\">Sendeplan</a>').'</p>
		<table width=\"200\" cellspacing=\"5\" cellpadding=\"1\" border=\"0\" align=\"center\">
		<colgroup width=\"400\" span=\"2\"></colgroup>
		<tbody>
		<tr>
		<td><b>Genre:</b></td>
		<td>'.$seiten[$v['key']]['genre'].'</td>
		</tr>
		<tr>
		<td><b>Stream:</b></td>
		<td>'.$seiten[$v['key']]['stream'].'</td>
		</tr>
		<tr>
		<td><b>Bewertung:</b></td>
		<td>'.fivestar_widget_form($cn).'</td>
		</tr>
		</tbody>
		</table>
		<p class=\"rtecenter\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
		<p> </p>');
		unset($cn);
	}
	//Seitenzahlen ausgeben
	if (arg(0) == 'node' && is_numeric(arg(1))){
		$seitenanzahl = ceil($anzahl / $anzahl_pro_seite);
		print_r('<p class=\"rtecenter\">Seite ');
		for($i = 1; $i < $seitenanzahl; $i++)
			print_r('<u>'.l($i,arg(0).'/'.arg(1).'/'.$i).'</u> / ');
		print_r('<u>'.l($seitenanzahl,arg(0).'/'.arg(1).'/'.$seitenanzahl).'</u>');
		print_r('</p>');
	}
?>

Schreibe einen Kommentar