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