Пример #1
0
 /**
  * Comprueba que el archivo cumple las reglas de validación
  * respecto a tipo y tamaño
  *
  * Las propiedades del archivo a validar deben estar cargadas
  * en $this->_ArrayDoc
  *
  * @param array $rules Array con las reglas de validación
  * @return boolean TRUE si cumple las reglas de validación
  */
 public function validaArchivo(array $rules)
 {
     if ($this->_ArrayDoc['error'] == '0') {
         // Comprar que no excede el número máximo de documentos permitidos
         if ($rules['numMaxDocs'] > 0) {
             $doc = new CpanDocs();
             $nDocs = $doc->getNumberOfRecords("Type = '{$rules['type']}' and IsThumbNail='0'");
             unset($doc);
             $limiteExcedido = $nDocs >= $rules['numMaxDocs'];
         }
         if (!$limiteExcedido) {
             // Comprobacion de tamaño
             $prohibidoTamano = ($rules['maxFileSize'] > 0 and $this->_ArrayDoc['size'] > $rules['maxFileSize']);
             // Comprobación de tipo
             $path_parts = pathinfo($this->_ArrayDoc['name']);
             $extension = strtolower($path_parts['extension']);
             $prohibidoTipo = !in_array($extension, $rules['allowTypes']);
             if ($prohibidoTipo) {
                 $this->_errores[] = "El tipo de archivo '" . $this->_ArrayDoc['type'] . "' no está permitido.";
             }
             if ($prohibidoTamano) {
                 $this->_errores[] = "El tamaño del archivo (" . round($this->_ArrayDoc['size'] / 1000, 2) . " Kb) supera el limite autorizado (" . $rules['maxFileSize'] / 1000 . " Kb).";
             }
         } else {
             $this->_errores[] = "Se ha excedido el número máximo de archivos contratado. Por favor, contacte con el web master";
         }
     } else {
         switch ($this->_ArrayDoc['error']) {
             case '':
                 // No hay error, el archivo ya está subido
                 break;
             case '1':
                 $this->_errores[] = "El tamaño del archivo es superior al permitido por el hosting (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '2':
                 $this->_errores[] = "El tamaño del archivo es superior al permitido (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '3':
                 $this->_errores[] = "El archivo fue solo parcialmente subido (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '4':
                 $this->_errores[] = "El archivo no se ha cargado (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '6':
                 $this->_errores[] = "No se ha localizado la carpeta temporal de subidas (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '7':
                 $this->_errores[] = "Hubo un fallo al escribir en el disco (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
             case '8':
                 $this->_errores[] = "La carga del archivo ha sido interrumpida (Cod. Error: {$this->_ArrayDoc['error']}).";
                 break;
         }
     }
     return count($this->_errores) == 0;
 }