MySql hat geschrieben:
Ich wollte wissen was ihr anders machen würdet.
Ich werde, wie gewünscht, sagen was ich an dem Snippet anders gemacht hätte.
Dies bedeutet nicht, dass ich die log Funktion so als sinnvoll erachte!
Zitat:
public static function guildLog($input,$section,$guild,$guildname,$date) {
Eine Klassen-Funktion, die nicht auf $this zurückgreift sollte man in PHP 5.x als static deklarieren, damit du wenn du sie zB mal statisch aufrufen willst nicht an performance verlierst oder unter 5.3 sogar den Dienst verweigert. Zwar sind statische Aufrufe von der Geschwindigkeit minimal langsamer, aber ihre allgemeinen Vorteile überwiegen in diesem Fall.
$this->bbcode_second_pass_code('', 'if (db_num_rows(db_query('SELECT setting FROM settings WHERE setting="guildLog"'))==1) {')
Hier fängt es dann erstmal an warum überhaupt dieses SQL Statement?
Wenn du unbedingt vorher eine Query machen willst dann ist ein COUNT sauberer auch wenn vllt auf dem ersten Blick mehr arbeit.
Aber hier ist erst gar keine Query von nöten.
hier reicht:
$this->bbcode_second_pass_code('', 'if (is_array($log = unserialize(getsetting('guildLog',null)))) {')
$this->bbcode_second_pass_code('', '
$value = end($log);
$last_key = key($log);
$log[$guild][$section][($last_key+1)]['msg'] = $input;
')
Das kannst du dir auch sparen, da php keys selber verwaltet.
Fazit code sollte eigentlich so aussehen:
PHP:
public static function guildLog($input,$section,$guild,$guildname,$date)
{
$log = unserialize( getsetting( 'guildLog', serialize( array() ) ) );
$log[$guild][$section][]['msg'] = $input;
$log[$guild][$section][]['general']['id'] = $guild;
$log[$guild][$section][]['general']['name'] = $guildname;
$log[$guild][$section][]['general']['date'] = $date;
savesetting('guildLog',serialize($log));
}
Und die eleganteste Lösung:
PHP:
public static function guildLog($input,$section,$guild,$guildname,$date)
{
$log = unserialize( getsetting( 'guildLog', serialize( array() ) ) );
$log[$guild][$section][] = array( 'msg' => $input, 'general' => array( 'id' => $guild, 'name' => $guildname, 'date' => $date ) );
savesetting('guildLog',serialize($log));
}