aboutsummaryrefslogtreecommitdiff
path: root/model/Conferences.php
blob: 5562e1faf85c89e24caef13b5aea14a2044c127d (plain)
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']);
	}
}