<?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);
|
}
|
|
}
|