-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcontroller.php
87 lines (72 loc) · 2.35 KB
/
controller.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
namespace Concrete\Package\MrSetlessFiles;
use Events;
use Concrete\Core\File\File;
use Concrete\Core\File\Set\Set as FileSet;
use Package;
defined('C5_EXECUTE') or die("Access Denied.");
class Controller extends Package
{
protected $pkgHandle = 'mr_setless_files';
protected $appVersionRequired = '5.7';
protected $pkgVersion = '1.0';
public function getPackageDescription()
{
return t("Automatically put files without a set into their own fileset");
}
public function getPackageName()
{
return t("Fileset for Setless Files");
}
public function install()
{
parent::install();
$setless_fs = FileSet::getByName('Setless');
if (empty($setless_fs)) {
$setless_fs = FileSet::createAndGetSet('Setless', 1);
}
}
public function uninstall()
{
$setless_fs = FileSet::getByName('Setless');
if (!empty($setless_fs)) {
$setless_fs->delete();
}
parent::uninstall();
}
public function on_start()
{
Events::addListener('on_file_add', function($e) {
$setless_fs = FileSet::getByName('Setless');
/* @var $e \Concrete\Core\File\Event\FileVersion */
$event_object = $e->getFileVersionObject();
$setless_fs->addFileToSet($event_object);
});
Events::addListener('on_file_added_to_set', function($e) {
$setless_fs = FileSet::getByName('Setless');
/* @var $e \Concrete\Core\File\Event\FileSetFile */
$event_object = $e->getFileSetFileObject();
$file = File::getByID($event_object->fID);
$file_sets = $file->getFileSets();
$file_set_ids = array();
foreach ($file_sets as $file_set) {
$file_set_ids[] = $file_set->fsID;
}
// If file is in multiple sets and setless is one of them, remove from setless
if (count($file_set_ids) >= 2 && in_array($setless_fs->fsID, $file_set_ids)) {
$setless_fs->removeFileFromSet($file);
}
});
Events::addListener('on_file_removed_from_set', function($e) {
$setless_fs = FileSet::getByName('Setless');
/* @var $e \Concrete\Core\File\Event\FileSetFile */
$event_object = $e->getFileSetFileObject();
$file = File::getByID($event_object->fID);
$file_sets = $file->getFileSets();
// If file is no longer in any sets, add to setless
if (count($file_sets) == 0) {
$setless_fs->addFileToSet($file);
}
});
}
}