Project import generated by Copybara.

GitOrigin-RevId: 63746295f1a5ab5a619056791995793d65529e62
diff --git a/src/inc/files.php b/src/inc/files.php
new file mode 100644
index 0000000..5f9cce2
--- /dev/null
+++ b/src/inc/files.php
@@ -0,0 +1,106 @@
+<?php
+class files {
+  const NAME_LENGTH = 16;
+  const MAX_SIZE = 6*1024*1024;
+  const READABLE_MAX_SIZE = "6 MB";
+
+  public static $acceptedFormats = ["pdf", "png", "jpg", "jpeg", "bmp", "gif"];
+  public static $mimeTypes = array(
+    "pdf" => "application/pdf",
+    "png" => "image/png",
+    "jpg" => "image/jpeg",
+    "jpeg" => "image/jpeg",
+    "bmp" => "image/bmp",
+    "gif" => "image/gif"
+  );
+  public static $readableMimeTypes = array(
+    "pdf" => "Documento PDF",
+    "png" => "Imagen PNG",
+    "jpg" => "Imagen JPG",
+    "jpeg" => "Imagen JPG",
+    "bmp" => "Imagen BMP",
+    "gif" => "Imagen GIF"
+  );
+  public static $mimeTypesIcons = array(
+    "pdf" => "insert_drive_file",
+    "png" => "image",
+    "jpg" => "image",
+    "jpeg" => "image",
+    "bmp" => "image",
+    "gif" => "image"
+  );
+
+  public static function getAcceptAttribute($pretty = false) {
+    $formats = array_map(function($el) {
+      return ".".$el;
+    }, self::$acceptedFormats);
+
+    return implode(($pretty ? ", " : ","), $formats);
+  }
+
+  // From https://stackoverflow.com/a/31107425
+  private static function randomStr(int $length = 64, string $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string {
+    if ($length < 1) {
+      throw new \RangeException("Length must be a positive integer");
+    }
+    $pieces = [];
+    $max = mb_strlen($keyspace, '8bit') - 1;
+    for ($i = 0; $i < $length; ++$i) {
+      $pieces []= $keyspace[random_int(0, $max)];
+    }
+    return implode('', $pieces);
+  }
+
+
+  private static function getName($ext) {
+    global $conf;
+
+    $filename = "";
+
+    do {
+      $filename = self::randomStr(self::NAME_LENGTH).".".$ext;
+    } while (file_exists($conf["attachmentsFolder"].$filename));
+
+    return $filename;
+  }
+
+  public static function getFileExtension($file) {
+    $filenameExploded = explode(".", $file);
+    return mb_strtolower($filenameExploded[count($filenameExploded) - 1]);
+  }
+
+  public static function uploadFile(&$file, &$name) {
+    global $conf;
+
+    if (!isset($file["error"]) || is_array($file["error"])) return 1;
+
+    switch ($file["error"]) {
+      case UPLOAD_ERR_OK:
+      break;
+
+      case UPLOAD_ERR_INI_SIZE:
+      case UPLOAD_ERR_FORM_SIZE:
+      return 2;
+      break;
+
+      default:
+      return 1;
+      break;
+    }
+
+    $ext = self::getFileExtension($file["name"]);
+
+    if ($file['size'] > self::MAX_SIZE) return 2;
+    if (!in_array($ext, self::$acceptedFormats)) return 3;
+
+    $name = self::getName($ext);
+
+    return (move_uploaded_file($file["tmp_name"], $conf["attachmentsFolder"].$name) ? 0 : 1);
+  }
+
+  public static function removeFile($name) {
+    global $conf;
+
+    return unlink($conf["attachmentsFolder"].$name);
+  }
+}