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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php
class Conferences extends ModelBase
{
const MANDATOR_DIR = 'configs/conferences/';
public static function getConferences() {
$conferences = [];
foreach(scandir(forceslash(Conferences::MANDATOR_DIR)) as $el)
{
if($el[0] == '.')
continue;
$conferences[$el] = Conferences::getConferenceInformation($el);
}
return $conferences;
}
public static function getConferencesCount() {
return count(Conferences::getConferences());
}
public static function getActiveConferences() {
return array_values(array_filter(
Conferences::getConferences(),
function($info) {
return $info['active'];
}
));
}
public static function getActiveConferencesCount() {
return count(Conferences::getActiveConferences());
}
public static function getConferencesSorted() {
$sorted = Conferences::getConferences();
usort($sorted, function($a, $b) {
return @$b['CONFIG']['CONFERENCE']['STARTS_AT'] - @$a['CONFIG']['CONFERENCE']['STARTS_AT'];
});
return $sorted;
}
public static function getFinishedConferencesSorted() {
$sorted = Conferences::getConferencesSorted();
$finished = array_values(array_filter($sorted, function($c) {
return @$c['CONFIG']['CONFERENCE']['ENDS_AT'] < time();
}));
return $finished;
}
public static function getLastConference() {
return Conferences::getFinishedConferencesSorted()[0];
}
public static function exists($mandator) {
return array_key_exists($mandator, Conferences::getConferences());
}
public static function getConferenceInformation($mandator) {
if(isset($GLOBALS['CONFIG']))
$saved_config = $GLOBALS['CONFIG'];
Conferences::load($mandator);
$conf = new Conference();
$info = [
'slug' => $mandator,
'link' => forceslash($mandator),
'active' => !$conf->isClosed(),
'title' => $conf->getTitle(),
'description' => $conf->getDescription(),
'relive' => $conf->hasRelive() ? forceslash($mandator).$conf->getReliveUrl() : null,
'releases' => $conf->hasReleases() ? $conf->getReleasesUrl() : null,
'CONFIG' => $GLOBALS['CONFIG'],
];
unset($GLOBALS['CONFIG']);
if(isset($saved_config))
$GLOBALS['CONFIG'] = $saved_config;
return $info;
}
public static function hasCustomStyles($mandator) {
return file_exists(Conferences::getCustomStyles($mandator));
}
public static function getCustomStyles($mandator) {
return forceslash(Conferences::getCustomStylesDir($mandator)).'main.less';
}
public static function getCustomStylesDir($mandator) {
return forceslash(Conferences::MANDATOR_DIR).forceslash($mandator);
}
public static function load($mandator) {
include(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php');
return isset($GLOBALS['CONFIG']);
}
}
|