$backup Bisherige Sicherung. * @param string $name Optionsname. * @param string $previous Spaltenwert autoload vor der Aenderung. * @param string $target Neues Ziel: 'on' oder 'off'. * @param int $time Zeitpunkt. * @param int $max Hoechstzahl der Eintraege. * @return array */ public static function merge( array $backup, $name, $previous, $target, $time, $max = self::MAX_ENTRIES ) { $original = isset( $backup[ $name ]['previous'] ) ? $backup[ $name ]['previous'] : $previous; // Neu anhaengen, damit die Reihenfolge der Einfuegung erhalten bleibt. unset( $backup[ $name ] ); $backup[ $name ] = array( 'previous' => (string) $original, 'target' => (string) $target, 'time' => (int) $time, ); // Ueber der Grenze: die aeltesten (nach Zeit, bei Gleichstand nach Einfuegung) streichen. while ( count( $backup ) > $max ) { $oldest_key = null; $oldest_time = null; foreach ( $backup as $key => $entry ) { if ( null === $oldest_time || $entry['time'] < $oldest_time ) { $oldest_key = $key; $oldest_time = $entry['time']; } } unset( $backup[ $oldest_key ] ); } return $backup; } /** * @param array> $backup Bisherige Sicherung. * @param string $name Optionsname. * @return array> */ public static function remove( array $backup, $name ) { unset( $backup[ $name ] ); return $backup; } }