[erledigt] FilesystemManager erweitern - filesize

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: FilesystemManager erweitern - filesize

Beitrag von welworx » 08.08.2011, 09:25:09

Da hast du völlig recht, dass das unnötig ist.

Hab im Zuge des Anpassens auch noch einen anderen kleinen Fehler behoben.

Sollte nun passen:

Code: Alles auswählen

/**
     * Diese Funktion formatiert eine als $size übermittelte Byte Zahl.
     * Optional kann die der Wert der Kommastellen auf die gerundet  bzw. eine 
     * Einheit in die umgeformt werden soll angegeben werden.
     * 
     * Wenn die Ausgabeinheit nicht definiert ist, wird der $decimal Parameter 
     * verwendet um zu klären welches Format gewünscht ist. Sollte dieser auch 
     * nicht definiert, wird ermittelt ob es sich um ein Windows System handelt.
     * Falls ja wird die Größe binär berechnet.
     * 
     * @author Werner Liemberger <wpublicmail [at] gmail.com>
     * 
     * @version 1.0, 30.6.2011
     * 
     * @param byte $size Bytewert der Formatiert werden soll
     * @param int $round Anzahl der Kommastellen auf die gerundet werden soll
     * @param $server Wenn überprüft werden soll ob das System sich um ein Windows System handelt, wird mit true der Server untersucht und mit false der Client.
     * @param string $unit Einheit auf die umgeformt werden soll
     * @param bool $decimal Gibt die Einheit mit Dezimalpräfix zurück, ansonsten jene mit dem Binärpräfix
     * @return string Liefert den formatierten Größenwert als String inklusive Einheit zurück. 
     */
    public static function formatByte($size, $round=2, $server=false, $unit=null, $decimal=null) {

        $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');

        if ($decimal === null) {
            if ($server == false) {
                $userAgent = strtolower($_SERVER['SERVER_SOFTWARE']);
            } else {
                $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
            }
            if (preg_match('/windows|win32/', $userAgent)) {
                $decimal = false;
            }
        }

        if ($decimal == false) {
            $divisor = 1024;
        } else {
            $divisor = 1000;
        }

        if ($unit == null) {
            $i = 0;
            $j = count($units);
            while ($size >= $divisor && $i < $j) {
                $size/=$divisor;
                $i++;
            }
            return round($size, $round) . ' ' . $units[$i];
        } else {
            $key = array_keys($units, $unit, true);
            return round($size / pow($divisor, $key[0]), $round) . ' ' . $unit;
        }
    } 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: FilesystemManager erweitern - filesize

Beitrag von dr.e. » 08.08.2011, 20:09:06

Hi Werner,

habe deine Änderungen übernommen und eingecheckt.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast