Classi per la configurazione upload
Cristiano Magro
2018-01-16 ee1a7b42cf449b82c8f5dc03e6a53f4b94bcc0cc
src/UploadFile/SetupUpload.class.php
@@ -8,6 +8,7 @@
 * javascript di gestione del plupload
 *
 * @author Cristiano Magro
 *
 */
class SetupUpload {
@@ -55,8 +56,16 @@
        return $this->sizeLimitFileUpload;
    }
    /**
     * Dimensione massima del singolo file caricato
     *
     * Accetta sia '1024' che '1 kb' effettuando la conversione interna
     * necessaria.
     * @param string $x sia '1024' che '1 kb'
     * @return \SetupUpload
     */
    public function setSizeLimitFile($x) {
        $this->sizeLimitFileUpload = $x;
        $this->sizeLimitFileUpload = self::str2Bytes($x);
        return $this;
    }
@@ -107,12 +116,25 @@
        return $this;
    }
    /**
     * Restituisce il numero massimo di file previsti nella coda
     * @return integer Max numero file
     */
    public function getNumMaxFiles() {
        return $this->numMaxFiles;
    }
    public function setNumMaxFiles($x) {
        $this->numMaxFiles = $x;
    /**
     * Viene impostato il numero massimo di file caricabili
     * @param integer $numero
     * @return \SetupUpload fluent style
     */
    public function setNumMaxFiles($numero) {
        if (!is_integer($numero) || $numero <= 0) {
            throw new Upload_Exc_Error();
        }
        $this->numMaxFiles = $numero;
        return $this;
    }
@@ -120,8 +142,16 @@
        return $this->sizeMaxFilesByte;
    }
    /**
     * Dimensione Totale massima dei file caricabili
     *
     * Accetta sia '1024' che '1 kb' effettuando la conversione interna
     * necessaria.
     * @param string $x sia '1024' che '1 kb'
     * @return \SetupUpload
     */
    public function setSizeMaxFilesByte($x) {
        $this->sizeMaxFilesByte = $x;
        $this->sizeMaxFilesByte = self::str2Bytes($x);
        return $this;
    }
@@ -164,22 +194,35 @@
        return json_encode($dati);
    }
    /**
     * Converte una stringa nei corrispondenti bytes.
     * 
     * 1 Mb = 1024^2
     * 
     * @param string $strSize Stringa da convertire
     * @throws UploadFile_Excs
     * @return integer
     */
    public static function str2Bytes($strSize) {
        $Units = array('b' => 0, 'kb' => 1, 'mb' => 2, 'gb' => 3, 'tb' => 4);
        $strUnit = strtolower($strSize);
        $strUnit = preg_replace('/[^a-z]/', '', $strUnit);
        $strValue = preg_replace('/[^0-9]/', '', $strSize);
        $value = intval($strValue);
        $value = intval(preg_replace('/[^0-9]/', '', $strSize));
        //validazione
        if (strlen(trim($strSize)) === 0) {
            //una stringa vuota non può essere convertita
            throw new Upload_Exc_Error();
        } elseif (strlen(trim($strValue)) === 0) {
            //se non trovo la parte del valore della stringa non posso convertire
            throw new Upload_Exc_Error();
        } elseif (strlen($strUnit) >= 1 && !array_key_exists($strUnit, $Units)) {
            //l'unita' non e' nota
            throw new Upload_Exc_Error();
        }
        $Units = array('b' => 0, 'kb' => 1, 'mb' => 2, 'gb' => 3, 'tb' => 4);
        $Exponent = isset($Units[$strUnit]) ? $Units[$strUnit] : 0;
        return ($value * pow(1024, $Exponent));