diff --git a/dataobject_manager/code/AssetManager.php b/dataobject_manager/code/AssetManager.php
index 358c2ec..c7ea141 100644
--- a/dataobject_manager/code/AssetManager.php
+++ b/dataobject_manager/code/AssetManager.php
@@ -24,7 +24,7 @@ class AssetManager extends FileDataObjectManager
$fields->push(new SimpleTreeDropdownField('ParentID','Folder',"Folder"));
$fields->push(new HiddenField('ID','',$controller->ID));
- parent::__construct($controller, $name, $sourceClass, null, $headings, $fields, "Classname != 'Folder'");
+ parent::__construct($controller, $name, $sourceClass, null, $headings, $fields, "\"Classname\" != 'Folder'");
}
function FieldHolder()
diff --git a/dataobject_manager/code/AssetManagerFolder.php b/dataobject_manager/code/AssetManagerFolder.php
index eb34ea2..5947ea9 100644
--- a/dataobject_manager/code/AssetManagerFolder.php
+++ b/dataobject_manager/code/AssetManagerFolder.php
@@ -15,7 +15,7 @@ class AssetManagerFolder extends DataObjectDecorator
'Title' => 30,
'Filename' => 70
));
- $folder_filter = "(Classname != 'Folder' AND ParentID = ".$this->owner->ID.")";
+ $folder_filter = "(\"Classname\" != 'Folder' AND \"ParentID\" = ".$this->owner->ID.")";
$filter = $a->sourceFilter ? "({$a->sourceFilter}) AND $folder_filter" : $folder_filter;
$a->setSourceFilter($filter);
$a->setParentClass("Folder");
diff --git a/dataobject_manager/code/DataObjectManager.php b/dataobject_manager/code/DataObjectManager.php
index c4bf4eb..db7aa0b 100644
--- a/dataobject_manager/code/DataObjectManager.php
+++ b/dataobject_manager/code/DataObjectManager.php
@@ -201,10 +201,10 @@ class DataObjectManager extends ComplexTableField
if($this->Sortable() && (!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == "SortOrder")) {
$this->sort = "SortOrder";
- $this->sourceSort = "SortOrder ASC";
+ $this->sourceSort = "\"SortOrder\" ASC";
}
elseif(isset($_REQUEST['ctf'][$this->Name()]['sort']) && !empty($_REQUEST['ctf'][$this->Name()]['sort'])) {
- $this->sourceSort = $_REQUEST['ctf'][$this->Name()]['sort'] . " " . $this->sort_dir;
+ $this->sourceSort = "\"" . $_REQUEST['ctf'][$this->Name()]['sort'] . "\" " . $this->sort_dir;
}
else {
$this->sourceSort = singleton($this->sourceClass())->stat('default_sort');
@@ -749,7 +749,7 @@ class DataObjectManager_Controller extends Controller
if(!isset($relationName)) return false;
list($parentClass, $componentClass, $parentField, $componentField, $table) = singleton($ownerClass)->many_many($relationName);
foreach($map as $sort => $id)
- DB::query("UPDATE `$table` SET SortOrder = $sort WHERE {$className}ID = $id AND {$ownerClass}ID = $controllerID");
+ DB::query("UPDATE \"$table\" SET \"SortOrder\" = $sort WHERE \"{$className}ID\" = $id AND \"{$ownerClass}ID\" = $controllerID");
}
else {
foreach($map as $sort => $id) {
diff --git a/dataobject_manager/code/FileDataObjectManager.php b/dataobject_manager/code/FileDataObjectManager.php
index 92ced06..9ac3829 100644
--- a/dataobject_manager/code/FileDataObjectManager.php
+++ b/dataobject_manager/code/FileDataObjectManager.php
@@ -138,11 +138,11 @@ class FileDataObjectManager extends DataObjectManager
protected function getImportFolderHierarchy($parentID, $level = 0)
{
$options = array();
- if($children = DataObject::get("Folder", "ParentID = $parentID")) {
+ if($children = DataObject::get("Folder", "\"ParentID\" = $parentID")) {
foreach($children as $child) {
$indent="";
for($i=0;$i<$level;$i++) $indent .= " ";
- $files = DataObject::get($this->importClass, "ClassName != 'Folder' AND ParentID = $child->ID");
+ $files = DataObject::get($this->importClass, "\"ClassName\" != 'Folder' AND \"ParentID\" = $child->ID");
$count = $files ? $files->Count() : "0";
$options[$this->importLinkFor($child)] = $indent.$child->Title . " <span>($count files)</span>";
$options += $this->getImportFolderHierarchy($child->ID, $level+1);
@@ -154,7 +154,7 @@ class FileDataObjectManager extends DataObjectManager
protected function getUploadFolderHierarchy($parentID, $level = 0)
{
$options = array();
- if($children = DataObject::get("Folder", "ParentID = $parentID")) {
+ if($children = DataObject::get("Folder", "\"ParentID\" = $parentID")) {
foreach($children as $child) {
$indent="";
for($i=0;$i<$level;$i++) $indent .= " ";
@@ -565,7 +565,7 @@ class FileDataObjectManager extends DataObjectManager
protected function ImportForm($folder_id = null)
{
$folder_id = isset($_POST['folder_id']) ? $_POST['folder_id'] : $this->importFolderID;;
- if($files = DataObject::get($this->importClass, "ClassName != 'Folder' AND ParentID = $folder_id"))
+ if($files = DataObject::get($this->importClass, "\"ClassName\" != 'Folder' AND \"ParentID\" = $folder_id"))
$fields = $this->getImportFields();
$fields->push(new HiddenField('folder_id','',$folder_id));
$fields->push(new LiteralField('select','<div class="select"><span>Select</span>: <a href="javascript:void(0)" rel="all">all</a> | <a href="javascript:void(0)" rel="none">none</a></div>'));
diff --git a/dataobject_manager/code/HasManyDataObjectManager.php b/dataobject_manager/code/HasManyDataObjectManager.php
index add6956..c91962d 100644
--- a/dataobject_manager/code/HasManyDataObjectManager.php
+++ b/dataobject_manager/code/HasManyDataObjectManager.php
@@ -62,9 +62,9 @@ class HasManyDataObjectManager extends DataObjectManager
function getQuery($limitClause = null) {
if($this->customQuery) {
$query = $this->customQuery;
- $query->select[] = "{$this->sourceClass}.ID AS ID";
- $query->select[] = "{$this->sourceClass}.ClassName AS ClassName";
- $query->select[] = "{$this->sourceClass}.ClassName AS RecordClassName";
+ $query->select[] = "\"{$this->sourceClass}\".\"ID\" AS \"ID\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"ClassName\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"RecordClassName\"";
}
else {
$query = singleton($this->sourceClass)->extendedSQL($this->sourceFilter, $this->sourceSort, $limitClause, $this->sourceJoin);
diff --git a/dataobject_manager/code/HasManyFileDataObjectManager.php b/dataobject_manager/code/HasManyFileDataObjectManager.php
index 1af7d02..d69d0c2 100644
--- a/dataobject_manager/code/HasManyFileDataObjectManager.php
+++ b/dataobject_manager/code/HasManyFileDataObjectManager.php
@@ -59,9 +59,9 @@ class HasManyFileDataObjectManager extends FileDataObjectManager
function getQuery($limitClause = null) {
if($this->customQuery) {
$query = $this->customQuery;
- $query->select[] = "{$this->sourceClass}.ID AS ID";
- $query->select[] = "{$this->sourceClass}.ClassName AS ClassName";
- $query->select[] = "{$this->sourceClass}.ClassName AS RecordClassName";
+ $query->select[] = "\"{$this->sourceClass}\".\"ID\" AS \"ID\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"ClassName\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"RecordClassName\"";
}
else {
$query = singleton($this->sourceClass)->extendedSQL($this->sourceFilter, $this->sourceSort, $limitClause, $this->sourceJoin);
diff --git a/dataobject_manager/code/HasOneDataObjectManager.php b/dataobject_manager/code/HasOneDataObjectManager.php
index 18042b7..dd9ba63 100644
--- a/dataobject_manager/code/HasOneDataObjectManager.php
+++ b/dataobject_manager/code/HasOneDataObjectManager.php
@@ -37,7 +37,7 @@ class HasOneDataObjectManager extends HasManyDataObjectManager
}
function isChildSet($childID) {
- return DataObject::get($this->controllerClass(), '`' . $this->joinField . "` = '$childID'");
+ return DataObject::get($this->controllerClass(), '"' . $this->joinField . "\" = '$childID'");
}
function ExtraData() {
diff --git a/dataobject_manager/code/HasOneFileDataObjectManager.php b/dataobject_manager/code/HasOneFileDataObjectManager.php
index a504400..0b62258 100644
--- a/dataobject_manager/code/HasOneFileDataObjectManager.php
+++ b/dataobject_manager/code/HasOneFileDataObjectManager.php
@@ -37,7 +37,7 @@ class HasOneFileDataObjectManager extends HasManyFileDataObjectManager
}
function isChildSet($childID) {
- return DataObject::get($this->controllerClass(), '`' . $this->joinField . "` = '$childID'");
+ return DataObject::get($this->controllerClass(), '"' . $this->joinField . "\" = '$childID'");
}
function ExtraData() {
diff --git a/dataobject_manager/code/ImageAssetManager.php b/dataobject_manager/code/ImageAssetManager.php
index ad1fd35..1c2ff4f 100644
--- a/dataobject_manager/code/ImageAssetManager.php
+++ b/dataobject_manager/code/ImageAssetManager.php
@@ -23,7 +23,7 @@ class ImageAssetManager extends ImageDataObjectManager
$fields->push(new SimpleTreeDropdownField('ParentID','Folder',"Folder"));
$fields->push(new HiddenField('ID','',$controller->ID));
- parent::__construct($controller, $name, $sourceClass, null, $headings, $fields, "Classname != 'Folder'");
+ parent::__construct($controller, $name, $sourceClass, null, $headings, $fields, "\"Classname\" != 'Folder'");
}
}
\ No newline at end of file
diff --git a/dataobject_manager/code/ManyManyDataObjectManager.php b/dataobject_manager/code/ManyManyDataObjectManager.php
index d962b9f..5c16af6 100644
--- a/dataobject_manager/code/ManyManyDataObjectManager.php
+++ b/dataobject_manager/code/ManyManyDataObjectManager.php
@@ -60,7 +60,7 @@ class ManyManyDataObjectManager extends HasManyDataObjectManager
$sourceField = 'Child';
$parentID = $this->controller->ID;
- $this->sourceJoin .= " LEFT JOIN `$manyManyTable` ON (`$source`.`ID` = `{$sourceField}ID` AND `$manyManyTable`.`{$this->manyManyParentClass}ID` = '$parentID')";
+ $this->sourceJoin .= " LEFT JOIN \"$manyManyTable\" ON (\"$source\".\"ID\" = \"{$sourceField}ID\" AND \"$manyManyTable\".\"{$this->manyManyParentClass}ID\" = '$parentID')";
$this->joinField = 'Checked';
if(isset($_REQUEST['ctf'][$this->Name()]['only_related']))
@@ -80,32 +80,32 @@ class ManyManyDataObjectManager extends HasManyDataObjectManager
}
- protected function loadSort()
- {
+ protected function loadSort() {
if($this->ShowAll())
$this->setPageSize(999);
+ $original_sort = $this->sourceSort;
if(SortableDataObject::is_sortable_many_many($this->sourceClass(), $this->manyManyParentClass)) {
list($parentClass, $componentClass, $parentField, $componentField, $table) = singleton($this->controllerClass())->many_many($this->Name());
$sort_column = "MMSort";
if(!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == $sort_column) {
$this->sort = $sort_column;
- $this->sourceSort = "$sort_column " . SortableDataObject::$sort_dir;
- $this->sourceSort .= ",Checked DESC";
+ $this->sourceSort = "\"$sort_column\" " . SortableDataObject::$sort_dir;
+ $this->sourceSort .= ", \"Checked\" DESC";
}
}
elseif($this->Sortable() && (!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == "SortOrder")) {
$this->sort = "SortOrder";
- $this->sourceSort = "SortOrder " . SortableDataObject::$sort_dir;
- $this->sourceSort .= ", Checked DESC";
+ $this->sourceSort = "\"SortOrder\" " . SortableDataObject::$sort_dir;
+ $this->sourceSort .= ", \"Checked\" DESC";
}
elseif(isset($_REQUEST['ctf'][$this->Name()]['sort']) && !empty($_REQUEST['ctf'][$this->Name()]['sort'])) {
- $this->sourceSort = $_REQUEST['ctf'][$this->Name()]['sort'] . " " . $this->sort_dir;
+ $this->sourceSort = "\"".$_REQUEST['ctf'][$this->Name()]['sort'] . "\" " . $this->sort_dir;
}
-
+ if ($original_sort && $original_sort != $this->sourceSort) $this->sourceSort .= ', '.$original_sort;
}
@@ -140,9 +140,9 @@ class ManyManyDataObjectManager extends HasManyDataObjectManager
function getQuery($limitClause = null) {
if($this->customQuery) {
$query = $this->customQuery;
- $query->select[] = "{$this->sourceClass}.ID AS ID";
- $query->select[] = "{$this->sourceClass}.ClassName AS ClassName";
- $query->select[] = "{$this->sourceClass}.ClassName AS RecordClassName";
+ $query->select[] = "\"{$this->sourceClass}\".\"ID\" AS \"ID\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"ClassName\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"RecordClassName\"";
}
else {
$query = singleton($this->sourceClass)->extendedSQL($this->sourceFilter, $this->sourceSort, $limitClause, $this->sourceJoin);
@@ -151,18 +151,27 @@ class ManyManyDataObjectManager extends HasManyDataObjectManager
$SNG = singleton($this->sourceClass);
foreach($this->FieldList() as $k => $title) {
- if(! $SNG->hasField($k) && ! $SNG->hasMethod('get' . $k))
+ if(! $SNG->hasField($k) && ! $SNG->hasMethod('get' . $k)) {
+ // everything we add to select must be added to groupby too...
$query->select[] = $k;
+ $query->groupby[] = $k;
+ }
}
$parent = $this->controllerClass();
$mm = $this->manyManyTable;
- $if_clause = "IF(`$mm`.`{$this->manyManyParentClass}ID` IS NULL, '0', '1')";
- $query->select[] = "$if_clause AS Checked";
- if(SortableDataObject::is_sortable_many_many($this->sourceClass(), $this->manyManyParentClass))
- $query->select[] = "IFNULL(`$mm`.SortOrder,9999999) AS MMSort";
+ $when_clause = "CASE WHEN \"$mm\".\"{$this->manyManyParentClass}ID\" IS NULL THEN '0' ELSE '1' END";
+ $query->select[] = "$when_clause AS \"Checked\"";
+ // everything we add to select must be added to groupby too...
+ $query->groupby[] = $when_clause;
+
+ if (SortableDataObject::is_sortable_many_many($this->sourceClass(), $this->manyManyParentClass)) {
+ $query->select[] = "COALESCE(\"$mm\".\"SortOrder\",9999999) AS \"MMSort\"";
+ // everything we add to select must be added to groupby too...
+ $query->groupby[] = "COALESCE(\"$mm\".\"SortOrder\",9999999)";
+ }
if($this->OnlyRelated())
- $query->where[] = $if_clause;
+ $query->where[] = "(\"$mm\".\"{$this->manyManyParentClass}ID\" IS NOT NULL)";
}
return clone $query;
}
diff --git a/dataobject_manager/code/ManyManyFileDataObjectManager.php b/dataobject_manager/code/ManyManyFileDataObjectManager.php
index 7aa480a..132207b 100644
--- a/dataobject_manager/code/ManyManyFileDataObjectManager.php
+++ b/dataobject_manager/code/ManyManyFileDataObjectManager.php
@@ -56,7 +56,7 @@ class ManyManyFileDataObjectManager extends HasManyFileDataObjectManager
$sourceField = 'Child';
$parentID = $this->controller->ID;
- $this->sourceJoin .= " LEFT JOIN `$manyManyTable` ON (`$source`.`ID` = `{$sourceField}ID` AND `$manyManyTable`.`{$this->manyManyParentClass}ID` = '$parentID')";
+ $this->sourceJoin .= " LEFT JOIN \"$manyManyTable\" ON (\"$source\".\"ID\" = \"{$sourceField}ID\" AND \"$manyManyTable\".\"{$this->manyManyParentClass}ID\" = '$parentID')";
$this->joinField = 'Checked';
if(isset($_REQUEST['ctf'][$this->Name()]['only_related']))
@@ -77,28 +77,27 @@ class ManyManyFileDataObjectManager extends HasManyFileDataObjectManager
}
- protected function loadSort()
- {
+ protected function loadSort() {
if($this->ShowAll())
$this->setPageSize(999);
- if(SortableDataObject::is_sortable_many_many($this->sourceClass(), $this->manyManyParentClass)) {
- list($parentClass, $componentClass, $parentField, $componentField, $table) = singleton($this->controllerClass())->many_many($this->Name());
- $sort_column = "`$table`.SortOrder";
- if(!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == $sort_column) {
- $this->sort = $sort_column;
- $this->sourceSort = "$sort_column " . SortableDataObject::$sort_dir;
- }
- }
-
- elseif($this->Sortable() && (!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == "SortOrder")) {
+ $original_sort = $this->sourceSort;
+ if (SortableDataObject::is_sortable_many_many($this->sourceClass(), $this->manyManyParentClass)) {
+ list($parentClass, $componentClass, $parentField, $componentField, $table) = singleton($this->controllerClass())->many_many($this->Name());
+ $sort_column = "$table.SortOrder";
+ if (!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == $sort_column) {
+ $this->sort = $sort_column;
+ $this->sourceSort = "\"$table\".\"SortOrder\" " . SortableDataObject::$sort_dir;
+ }
+ } elseif ($this->Sortable() && (!isset($_REQUEST['ctf'][$this->Name()]['sort']) || $_REQUEST['ctf'][$this->Name()]['sort'] == "SortOrder")) {
$this->sort = "SortOrder";
- $this->sourceSort = "SortOrder " . SortableDataObject::$sort_dir;
+ $this->sourceSort = "\"SortOrder\" " . SortableDataObject::$sort_dir;
+ } elseif (isset($_REQUEST['ctf'][$this->Name()]['sort'])) {
+ $this->sourceSort = "\"" . $_REQUEST['ctf'][$this->Name()]['sort'] . "\" " . $this->sort_dir;
}
- elseif(isset($_REQUEST['ctf'][$this->Name()]['sort']))
- $this->sourceSort = $_REQUEST['ctf'][$this->Name()]['sort'] . " " . $this->sort_dir;
+ if ($original_sort && $original_sort != $this->sourceSort) $this->sourceSort .= ', '.$original_sort;
}
@@ -133,9 +132,9 @@ class ManyManyFileDataObjectManager extends HasManyFileDataObjectManager
function getQuery($limitClause = null) {
if($this->customQuery) {
$query = $this->customQuery;
- $query->select[] = "{$this->sourceClass}.ID AS ID";
- $query->select[] = "{$this->sourceClass}.ClassName AS ClassName";
- $query->select[] = "{$this->sourceClass}.ClassName AS RecordClassName";
+ $query->select[] = "\"{$this->sourceClass}\".\"ID\" AS \"ID\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"ClassName\"";
+ $query->select[] = "\"{$this->sourceClass}\".\"ClassName\" AS \"RecordClassName\"";
}
else {
$query = singleton($this->sourceClass)->extendedSQL($this->sourceFilter, $this->sourceSort, $limitClause, $this->sourceJoin);
@@ -144,16 +143,21 @@ class ManyManyFileDataObjectManager extends HasManyFileDataObjectManager
$SNG = singleton($this->sourceClass);
foreach($this->FieldList() as $k => $title) {
- if(! $SNG->hasField($k) && ! $SNG->hasMethod('get' . $k))
+ if(! $SNG->hasField($k) && ! $SNG->hasMethod('get' . $k)) {
$query->select[] = $k;
+ // everything we add to select must be added to groupby too...
+ $query->groupby[] = $k;
+ }
}
$parent = $this->controllerClass();
$mm = $this->manyManyTable;
- $if_clause = "IF(`$mm`.`{$this->manyManyParentClass}ID` IS NULL, '0', '1')";
- $query->select[] = "$if_clause AS Checked";
+ $when_clause = "CASE WHEN \"$mm\".\"{$this->manyManyParentClass}ID\" IS NULL THEN '0' ELSE '1' END";
+ $query->select[] = "$when_clause AS \"Checked\"";
+ // everything we add to select must be added to groupby too...
+ $query->groupby[] = $when_clause;
if($this->OnlyRelated())
- $query->where[] = $if_clause;
+ $query->where[] = "(\"$mm\".\"{$this->manyManyParentClass}ID\" IS NOT NULL)";
}
return clone $query;
}
diff --git a/dataobject_manager/code/SortableDataObject.php b/dataobject_manager/code/SortableDataObject.php
index 0393460..7366ad4 100644
--- a/dataobject_manager/code/SortableDataObject.php
+++ b/dataobject_manager/code/SortableDataObject.php
@@ -99,13 +99,13 @@ class SortableDataObject extends DataObjectDecorator
if($sort_field) break;
foreach($join_tables as $join_table) {
if(stristr($from,$join_table)) {
- $sort_field = "`$join_table`.SortOrder";
+ $sort_field = "\"$join_table\".\"SortOrder\"";
break;
}
}
}
}
- if(!$sort_field) $sort_field = "SortOrder";
+ if(!$sort_field) $sort_field = "\"SortOrder\"";
if(!$query->orderby || ($query->orderby == $this->owner->stat('default_sort')))
$query->orderby = "$sort_field " . self::$sort_dir;
diff --git a/dataobject_manager/code/dropdown_fields/SimpleTreeDropdownField.php b/dataobject_manager/code/dropdown_fields/SimpleTreeDropdownField.php
index 0d7cdfe..f0d93d5 100644
--- a/dataobject_manager/code/dropdown_fields/SimpleTreeDropdownField.php
+++ b/dataobject_manager/code/dropdown_fields/SimpleTreeDropdownField.php
@@ -21,7 +21,7 @@ class SimpleTreeDropdownField extends HTMLDropdownField
{
$options = array();
$class = ($this->sourceClass == "SiteTree" || is_subclass_of($this->sourceClass, "SiteTree")) ? "SiteTree" : $this->sourceClass;
- if($children = DataObject::get($class, "ParentID = $parentID")) {
+ if($children = DataObject::get($class, "\"ParentID\" = $parentID")) {
foreach($children as $child) {
$indent="";
for($i=0;$i<$level;$i++) $indent .= " ";
diff --git a/dataobject_manager/code/flv/FLV.php b/dataobject_manager/code/flv/FLV.php
index 93afedd..7aca3fa 100644
--- a/dataobject_manager/code/flv/FLV.php
+++ b/dataobject_manager/code/flv/FLV.php
@@ -189,7 +189,7 @@ class FLV extends File
public function getThumbnail()
{
- if($img = DataObject::get_one("Image","Title = 'flv_thumb_{$this->ID}'"))
+ if($img = DataObject::get_one("Image","\"Title\" = 'flv_thumb_{$this->ID}'"))
return Director::fileExists($img->Filename) ? $img : false;
return false;
}
@@ -209,7 +209,7 @@ class FLV extends File
private function createThumbnail()
{
$img_title = "flv_thumb_".$this->ID;
- if($existing = DataObject::get("Image","Title = '$img_title'")) {
+ if($existing = DataObject::get("Image","\"Title\" = '$img_title'")) {
foreach($existing as $file) $file->delete();
}
$folder = Folder::findOrMake(self::$thumbnail_folder);