1<?php
2
3
4namespace OCA\Appointments\Controller;
5
6use OC_Util;
7use OCA\Appointments\Backend\BackendManager;
8use OCA\Appointments\Backend\BackendUtils;
9use OCP\AppFramework\Controller;
10use OCP\AppFramework\Http\TemplateResponse;
11use OCP\IConfig;
12use OCP\IRequest;
13
14class DebugController extends Controller
15{
16    private $userId;
17    private $config;
18    private $utils;
19    /** @var \OCA\Appointments\Backend\IBackendConnector $bc */
20    private $bc;
21
22    public function __construct($AppName,
23                                IRequest $request,
24        $UserId,
25                                IConfig $config,
26                                BackendUtils $utils,
27                                BackendManager $backendManager) {
28        parent::__construct($AppName, $request);
29        $this->userId = $UserId;
30        $this->config = $config;
31        $this->utils = $utils;
32        /** @noinspection PhpUnhandledExceptionInspection */
33        $this->bc = $backendManager->getConnector();
34    }
35
36    /**
37     * @NoAdminRequired
38     */
39    function settingsDump() {
40
41        $keys = [
42            BackendUtils::KEY_ORG,
43            BackendUtils::KEY_EML,
44            BackendUtils::KEY_CLS,
45            BackendUtils::KEY_PSN,
46            BackendUtils::KEY_MPS_COL,
47            BackendUtils::KEY_PAGES,
48            BackendUtils::KEY_DIR,
49            BackendUtils::KEY_REMINDERS,
50            BackendUtils::KEY_TALK,
51            BackendUtils::KEY_FORM_INPUTS_JSON,
52            BackendUtils::KEY_FORM_INPUTS_HTML,
53            BackendUtils::KEY_USE_DEF_EMAIL,
54            BackendUtils::KEY_EMAIL_FIX,
55            BackendUtils::KEY_TMPL_INFO,
56            BackendUtils::KEY_TMPL_DATA,
57        ];
58
59        $data = '<strong>Nextcloud Version</strong>: ' . OC_Util::getVersionString() . "\n"
60            . '<strong>Appointments Version</strong>: ' . $this->config->getAppValue($this->appName, 'installed_version', "N/A") . "\n"
61            . '<strong>Time zone</strong>: ' . $this->utils->getUserTimezone($this->userId, $this->config)->getName() . " ("
62            . "calendar: " . $this->config->getUserValue($this->userId, 'calendar', 'timezone', "N/A") . ", "
63            . "core: " . $this->config->getUserValue($this->userId, 'core', 'timezone', "N/A") . ")\n"
64            . '<strong>Key</strong>: ' . ($this->config->getUserValue($this->userId, $this->appName, "cnk") !== "" ? "Yes" : "No") . "\n\n";
65
66        foreach ($keys as $k) {
67            $data .= '<strong>' . $k . '</strong>: ' . var_export($this->utils->getUserSettings(
68                    $k, $this->userId), true);
69            $data .= "\n\n";
70        }
71        $tr = new TemplateResponse($this->appName, 'settings_dump', [], "base");
72        $params['data'] = $data;
73        $tr->setParams($params);
74        return $tr;
75    }
76
77    function getRawCalendarData() {
78        $data = "";
79        $status = 400;
80
81        $calInfoStr = $this->request->getParam("cal_info");
82        if ($calInfoStr !== null) {
83            $calInfo = json_decode($calInfoStr, true);
84            if ($calInfo !== null && isset($calInfo["id"]) && isset($calInfo["isSubscription"])) {
85
86                $calData = var_export($calInfo, true) . '<br>';
87
88                $d = $this->bc->getRawCalData($calInfo, $this->userId);
89
90                $data = $calData . '<br>' . var_export($d, true);
91                $status = 200;
92            }
93        }
94
95        $tr = new TemplateResponse($this->appName, 'settings_dump', [], "base");
96        $tr->setParams(['data' => $data]);
97        $tr->setStatus($status);
98        return $tr;
99
100    }
101
102}