From 54655e3e7145384132a6be67a13a7f62dbcf8fd1 Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Tue, 27 Aug 2019 11:35:47 +0200
Subject: [PATCH] Merge branch 'FilesFilter'

---
 src/Vola/UploadFile/FilesFilter.class.php |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/src/Vola/UploadFile/FilesFilter.class.php b/src/Vola/UploadFile/FilesFilter.class.php
new file mode 100644
index 0000000..25a1aa3
--- /dev/null
+++ b/src/Vola/UploadFile/FilesFilter.class.php
@@ -0,0 +1,107 @@
+<?php
+/**
+ * User: Cristiano Magro
+ * Date: 08/07/2019
+ */
+
+class FilesFilter
+{
+
+    private $filtro = array();
+
+    public function toJson()
+    {
+
+        $temp = array();
+
+        /** @var FilterExt $filtro */
+        foreach ($this->filtro as $filtro) {
+            $temp[] = $filtro->getFilterObj();
+        }
+
+        return json_encode($temp);
+    }
+
+    public function addExt($extension = '')
+    {
+        $titolo = $this->decodeTitolo($extension);
+        if ($titolo != null) {
+            if ($this->filtro[$titolo] instanceof FilterExt) {
+                $this->addExtensionToFilter($titolo, $extension);
+            } else {
+                $this->createFilter($titolo, $extension);
+            }
+        }
+        return $this;
+    }
+
+    /**
+     * Decodifico il titolo in base all'estensione.
+     * Il confronto viene eseguito in lowercase
+     * @param string $ext
+     * @return string
+     */
+    public function decodeTitolo($ext)
+    {
+        switch (strtolower($ext)) {
+            case 'gif':
+            case 'jpg':
+            case 'jpeg':
+            case 'png':
+            case 'wmf':
+            case 'tif':
+            case 'tiff':
+                $titolo = "Image files";
+                break;
+            case 'doc':
+            case 'txt':
+            case 'docx':
+            case 'docm':
+            case 'opsx':
+            case 'odt':
+            case 'rtf':
+            case 'pdf':
+                $titolo = "Documenti";
+                break;
+            case 'mp3':
+            case 'wav':
+                $titolo = "Audio files";
+                break;
+            case 'zip':
+            case 'rar':
+            case 'gz':
+                $titolo = "Zip files";
+                break;
+            case 'xls':
+            case 'xlsx':
+            case 'eml':
+            case 'msg':
+            case 'xps':
+            case 'cvs':
+                $titolo = "Excel files";
+                break;
+        }
+
+        return $titolo;
+    }
+
+    /**
+     * @param $titolo
+     * @param $extension
+     */
+    private function createFilter($titolo, $extension)
+    {
+        $filtro = new FilterExt($titolo, $extension);
+        $this->filtro[$titolo] = $filtro;
+    }
+
+    /**
+     * @param $titolo
+     * @param $extension
+     */
+    private function addExtensionToFilter($titolo, $extension)
+    {
+        $this->filtro[$titolo]->addExt($extension);
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.8.0