summaryrefslogtreecommitdiffstats
path: root/modules-available/locationinfo/inc/coursebackend/coursebackend_dummy.inc.php
blob: 2cb2be18e4c24633c131ef41176cb3a1601ebec2 (plain) (blame)
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
125
126
127
128
129
130
131
132
133
134
135
<?php

class CourseBackend_Dummy extends CourseBackend
{
	private $pw;

	const DEBUG = true;

	/**
	 * uses json to setCredentials, the json must follow the form given in
	 * getCredentials
	 *
	 * @param array $data with the credentials
	 * @param string $url address of the server
	 * @param int $serverId ID of the server
	 * @returns bool if the credentials were in the correct format
	 */
	public function setCredentialsInternal($json)
	{
		$x = $json;
		$this->pw = $x['password'];

		if ($this->pw === "mfg") {
			return true;
		}
		$this->addError("USE mfg as password!", true);
		return false;
	}

	/**
	 * @return boolean true if the connection works, false otherwise
	 */
	public function checkConnection()
	{
		if ($this->pw == "mfg") {
			return true;
		}
		$this->addError("USE mfg as password!", true);
		return false;
	}

	/**
	 * @returns array with parameter name as key and and an array with type, help text and mask  as value
	 */
	public function getCredentialDefinitions()
	{
		$options = ["opt1", "opt2", "opt3", "opt4", "opt5", "opt6", "opt7", "opt8"];
		return [
			new BackendProperty('username', 'string', 'default-user'),
			new BackendProperty('password', 'password'),
			new BackendProperty('integer', 'int', 7),
			new BackendProperty('option', $options),
			new BackendProperty('CheckTheBox', 'bool'),
			new BackendProperty('CB2t', 'bool', true)
		];
	}

	/**
	 * @return string return display name of backend
	 */
	public function getDisplayName()
	{
		return 'Dummy with array';
	}

	/**
	 * @return int desired caching time of results, in seconds. 0 = no caching
	 */
	public function getCacheTime()
	{
		return 0;
	}

	/**
	 * @return int age after which timetables are no longer refreshed should be
	 * greater then CacheTime
	 */
	public function getRefreshTime()
	{
		return 0;
	}

	/**
	 * Internal version of fetch, to be overridden by subclasses.
	 *
	 * @param $roomIds array with local ID as key and serverId as value
	 * @return array a recursive array that uses the roomID as key
	 * and has the schedule array as value. A schedule array contains an array in this format:
	 * ["start"=>'YYYY-MM-DD<T>HH:MM:SS',"end"=>'YYYY-MM-DD<T>HH:MM:SS',"title"=>string]
	 */
	public function fetchSchedulesInternal($roomId)
	{
		$a = array();
		foreach ($roomId as $id) {
			if ($id == 1) {
				$now = time();
				return array($id => array(
					array(
						'title' => 'Lange',
						'start' => date('Y-m-d', $now) . 'T0:00:00',
						'end' => date('Y-m-d', $now + 86400 * 3) . 'T0:00:00',
					)
				));
			}
			// Normal
			$x = array();
			$time = strtotime('last Monday');
			$end = strtotime('+14 days', $time);
			srand(crc32($id) ^ $time);
			$last = $time;
			do {
				do {
					$time += rand(4, 10) * 900;
					$h = date('G', $time);
				} while ($h < 7 || $h > 19);
				$today = strtotime('today', $time);
				if ($today !== $last) {
					srand(crc32($id) ^ $today);
					$last = $today;
				}
				$dur = rand(2,6) * 1800;
				$x[] = array(
					'title' => 'Test ' . rand(1000,9999),
					'start' => date('Y-m-d\TH:i:s', $time),
					'end' => date('Y-m-d\TH:i:s', $time + $dur),
				);
				$time += $dur;
			} while ($time < $end);
			$a[$id] = $x;
		}

		return $a;
	}

}