aboutsummaryrefslogtreecommitdiff
path: root/Neutron-trunk/widgets/calendar/source.php
blob: dd644a97aa4edbb202d9c1b420b8366f9a4abeb8 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php

class MpcmsFeatureCalendar {
    private function isJson($string) {
        json_decode($string);
        return (json_last_error() == JSON_ERROR_NONE);
    }

    public function __construct() {
        if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/lang")) {
    file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/lang", "fr");
}

$langsel = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/lang");
$lang = [];

if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/" . $langsel)) {
    $langprops = scandir($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/" . $langsel . "/");
    foreach ($langprops as $langprop) {
        if ($langprop != "." && $langprop != "..") {
            $langpieces = explode("/", implode("/", explode("\\", $langprop)));
            $langitemsel = explode(".", $langpieces[count($langpieces) - 1]);
            $langitem = $langitemsel[count($langitemsel) - 1];
            if ($langitemsel[count($langitemsel) - 1] != "json") {
                require $_SERVER['DOCUMENT_ROOT'] . "/api/electrode/quit.php";quit("Unable to load language file: " . implode(".", $langitemsel) . " is not in a valid format. Language files must be JSON.");
            } else {
                json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/" . $langsel . "/" . $langprop), true);
                if (json_last_error() == JSON_ERROR_NONE) {
                    $lang[$langitemsel[count($langitemsel) - 2]] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/" . $langsel . "/" . $langprop), true);
                } else {
                    require $_SERVER['DOCUMENT_ROOT'] . "/api/electrode/quit.php";quit("Unable to load language file: " . implode(".", $langitemsel) . " isn't a valid JSON file. Please check for syntax errors and retry.");
                }
            }
        }
    }
} else {
    if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/fr")) {
        echo("Unable to load language files: unable to find selected language files, loading fallback files");
        $langprops = scandir($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/fr/");
        foreach ($langprops as $langprop) {
            if ($langprop != "." && $langprop != "..") {
                $langpieces = explode("/", implode("/", explode("\\", $langprop)));
                $langitemsel = explode(".", $langpieces[count($langpieces) - 1]);
                $langitem = $langitemsel[count($langitemsel) - 1];
                if ($langitemsel[count($langitemsel) - 1] != "json") {
                    require $_SERVER['DOCUMENT_ROOT'] . "/api/electrode/quit.php";quit("Unable to load language file: " . implode(".", $langitemsel) . " is not in a valid format. Language files must be JSON.");
                } else {
                    json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/fr/" . $langprop), true);
                    if (json_last_error() == JSON_ERROR_NONE) {
                        $lang[$langitemsel[count($langitemsel) - 2]] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/resources/i18n/fr/" . $langprop), true);
                    } else {
                        require $_SERVER['DOCUMENT_ROOT'] . "/api/electrode/quit.php";quit("Unable to load language file: " . implode(".", $langitemsel) . " isn't a valid JSON file. Please check for syntax errors and retry.");
                    }
                }
            }
        }
    } else {
        require $_SERVER['DOCUMENT_ROOT'] . "/api/electrode/quit.php";quit("Unable to load language files: unable to find selected language files, and unable to find fallback language files");
    }
}

        global $GLOBALS;
        global $_RENDERER;

        echo('<div id="widget-space"><ul>');
        $jsonraw = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/caldb.json");
        if ($this::isJson($jsonraw)) {
            $json = json_decode($jsonraw);
            $eventlist = [];
            foreach ($json->events as $event) {
                if (isset($event->timestamp)) {
                    array_push($eventlist, $event->timestamp);
                }
            }
            sort($eventlist);
            $pos = 1;
            $shown = 0;
            if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/calendar_events")) {
                $calevn = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/webcontent/calendar_events");
            } else {
                $calevn = "3";
            }
            foreach ($eventlist as $event) {
                if ($pos == ($calevn + 1)) {} else {
                    foreach ($json->events as $el) {
                        if (isset($el->timestamp)) {
                            if ($el->timestamp == $event) {
                                (int)$currentDate = date("Ymd");
                                if ($currentDate < $el->timestamp) {
                                    $shown = $shown + 1;
                                    if (isset($el->link)) {
                                        if ($el->link != "" && $el->link != "http://") {
                                            echo("<li><b><a target=\"_blank\" class=\"sblink\" href=\"" . $el->link . "\">" . $el->datestr . "</b> : " . $el->name . "</a></li>");
                                        } else {
                                            echo("<li><b>" . $el->datestr . "</b> : " . $el->name . "</li>");
                                        }
                                    } else {
                                        echo("<li><b>" . $el->datestr . "</b> : " . $el->name . "</li>");
                                    }
                                    $pos = $pos + 1;
                                }
                                if ($currentDate == $el->timestamp) {
                                    $shown = $shown + 1;
                                    echo("<li><b>{$lang["widgets"]["calendar"]["today"]}</b> : " . $el->name . "</li>");
                                    $pos = $pos + 1;
                                }
                            }
                        }
                    }
                }
            }
            if ($shown == "0") {
                echo("</ul><div style=\"text-align: center;\"><i>{$lang["widgets"]["calendar"]["nothing"]}</i></div>");
            }
        } else {
            echo("<b>{$lang["widgets"]["calendar"]["corrupt"]}</b>");
        }
        if ($_RENDERER === "Neutron Titanium") {
            echo("</ul><small><a href=\"/cms-special/calendar\">{$lang["widgets"]["calendar"]["more"]}</a></small></div>");
        } else {
            echo("</ul><small><a href=\"{$GLOBALS["SYSTEM_ROOT"]}/cms-special/calendar\">{$lang["widgets"]["calendar"]["more"]}</a></small></div>");
        }
    }
}