Subversion-Projekte lars-tiefland.ci

Revision

Revision 919 | Revision 926 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
869 lars 1
<?php
2
 
3
class Scheduler extends CI_Controller
4
{
5
	public function __construct()
6
	{
7
		parent::__construct();
8
	}
9
	public function index()
10
	{
873 lars 11
		$tasks = array();
12
		$sql = "SELECT
13
				id,
14
				name,
15
				art,
16
				skript,
17
				parameter,
18
				intervall,
19
				user
20
			FROM
21
				schnittstellen
22
			WHERE
23
				nutzungsart IN ('dual','automatisch')
24
			AND
25
				user!=''
26
			ORDER BY
27
				user
28
		";
29
		$res = $this->db->query($sql);
30
		while ($row = $res->unbuffered_row('array'))
31
		{
32
			$tasks[] = $row;
33
		}
34
		$this->smarty->assign("tasks", $tasks);
869 lars 35
		$this->smarty->view('scheduler.tpl');
36
	}
912 lars 37
 
38
	public function edit($id = null)
910 lars 39
	{
916 lars 40
		if ($id)
41
		{
42
			$task = $this->get_task($id);
43
		}
44
		else
45
		{
925 lars 46
			$domain = explode(".", $_SERVER["HTTP_HOST"]);
47
			$dom = array_shift($domain);
48
			$site_full = implode(".", $domain);
49
			if ($domain[count($domain) - 1] == "local")
50
			{
51
				unset($domain[count($domain) - 1]);
52
			}
53
			$site = implode(".", $domain);
916 lars 54
			unset($out);
55
			if ($site != $site_full)
56
			{
57
				$out = substr($site, 0, 16);
58
			}
59
			elseif ($site_full == "weban.de")
60
			{
61
				$out = "www-data";
62
			}
63
			else
64
			{
65
				$cmd = "cat /etc/passwd | grep ".__SITE__." | cut -d \":\" -f1";
66
				exec($cmd, $out);
67
				$out = $out[0];
68
			}
69
			$task["user"] = $out;
70
		}
71
		$rep_hours[0] = "exakt";
72
		$rep_hours[1] = "jede Stunde";
73
		$hours[0] = 0;
74
		$hours[1] = 1;
75
		for ($i = 2; $i <= 23; $i++)
76
		{
77
			$hours[$i] = $i;
78
			$rep_hours[$i] = "Alle ".$i." Stunden";
79
		}
80
		$rep_min[0] = "exakt";
81
		$rep_min[1] = "jede Minute";
82
		for ($i = 2; $i <= 30; $i++)
83
		{
84
			$rep_min[$i] = "Alle ".$i." Minuten";
85
		}
86
		for ($i = 0; $i <= 59; $i++)
87
		{
88
			$minutes[$i] = $i;
89
		}
90
		$nutzungsarten = array(
91
			"" => "",
92
			"dual" => "dual",
93
			"automatisch" => "automatisch",
94
			);
95
		$tage = array(
96
			"Sonntag",
97
			"Montag",
98
			"Dienstag",
99
			"Mittwoch",
100
			"Donnerstag",
101
			"Freitag",
102
			"Samstag",
103
			);
104
		for ($i = 1; $i <= 12; $i++)
105
		{
106
			$mon = sprintf("%02d", $i);
107
			$datum = "01.".$mon.".".date("Y");
108
			$monate[$i] = strftime("%B", strtotime($datum));
109
		}
110
		$dom = array();
111
		for ($i = 1; $i <= 31; $i++)
112
		{
113
			$day = sprintf("%02d", $i);
114
			$dom[$i] = $i;
115
		}
116
		$this->smarty->assign("task", $task);
117
		$this->smarty->assign("monate", $monate);
118
		$this->smarty->assign("tage", $tage);
119
		$this->smarty->assign("dom", $dom);
120
		$this->smarty->assign("nutzungsarten", $nutzungsarten);
121
		$this->smarty->assign("minutes", $minutes);
122
		$this->smarty->assign("rep_min", $rep_min);
123
		$this->smarty->assign("rep_hours", $rep_hours);
124
		$this->smarty->assign("hours", $hours);
914 lars 125
		$this->smarty->view('scheduler_edit.tpl');
910 lars 126
	}
916 lars 127
 
128
	private function get_task($id)
129
	{
130
		$sql = "SELECT
131
				*
132
			FROM
133
				schnittstellen
134
			WHERE
135
				id=".$id."
136
		";
917 lars 137
		$res = $this->db->query($sql);
138
		$task = $res->row_array();
916 lars 139
		$intervall = $this->parse_intervall($task["intervall"]);
140
		$task["intervallParsed"] = $intervall;
141
		$zeit = $intervall["hour"].":".$intervall["min"].":00";
142
		$task["zeit"] = ($zeit);
143
		return $task;
144
	}
145
 
917 lars 146
	private function parse_intervall($intervall)
916 lars 147
	{
148
		list($minute, $hour, $dom, $mon, $dow) = explode(" ", $intervall);
149
		$pos = strpos($minute, "/");
150
		if ($pos !== false)
151
		{
918 lars 152
			$intervallArr["min"] = null;
916 lars 153
			$intervallArr["rep_min"] = substr($minute, $pos + 1);
154
		}
155
		elseif ($minute == "*")
156
		{
918 lars 157
			$intervallArr["min"] = null;
916 lars 158
			$intervallArr["rep_min"] = 1;
159
		}
160
		else
161
		{
162
			$intervallArr["min"] = $minute;
163
			$intervallArr["rep_min"] = 0;
164
		}
165
		$pos = strpos($hour, "/");
166
		if ($pos !== false)
167
		{
919 lars 168
			$intervallArr["hour"] = null;
916 lars 169
			$intervallArr["rep_hour"] = substr($hour, $pos + 1);
170
		}
171
		elseif ($hour == "*")
172
		{
919 lars 173
			$intervallArr["hour"] = null;
916 lars 174
			$intervallArr["rep_hour"] = 1;
175
		}
176
		else
177
		{
178
			$intervallArr["hour"] = explode(",", $hour);
179
			$intervallArr["rep_hour"] = 0;
180
		}
181
		if ($mon == "*")
182
		{
183
			$intervallArr["mon"] = array(
184
				1,
185
				2,
186
				3,
187
				4,
188
				5,
189
				6,
190
				7,
191
				8,
192
				9,
193
				10,
194
				11,
195
				12,
196
				);
197
		}
198
		else
199
		{
200
			$intervallArr["mon"] = explode(",", $mon);
201
		}
202
		if ($dow == "*")
203
		{
204
			$intervallArr["dow"] = array(
205
				0,
206
				1,
207
				2,
208
				3,
209
				4,
210
				5,
211
				6,
212
				);
213
		}
214
		else
215
		{
216
			$intervallArr["dow"] = explode(",", $dow);
217
		}
218
		if ($dom == "*")
219
		{
220
			for ($i = 1; $i <= 31; $i++)
221
			{
222
				$intervallArr["dom"][] = $i;
223
			}
224
		}
225
		else
226
		{
227
			$intervallArr["dom"] = explode(",", $dom);
228
		}
229
		return $intervallArr;
230
	}
231
 
917 lars 232
	function create_intervall()
916 lars 233
	{
234
		if ($_POST["rep_hour"] != 0)
235
		{
236
			$hour = "*";
237
			if ($_POST["rep_hour"] != 1)
238
			{
239
				$hour .= "/".$_POST["rep_hour"];
240
			}
241
		}
242
		elseif (count($_POST["Time_Hour"]) == 24)
243
		{
244
			$hour = "*";
245
		}
246
		else
247
		{
248
			$hour = implode(",", $_POST["Time_Hour"]);
249
		}
250
		if ($_POST["rep_min"] != 0)
251
		{
252
			$min = "*";
253
			if ($_POST["rep_min"] != 1)
254
			{
255
				$min .= "/".$_POST["rep_min"];
256
			}
257
		}
258
		elseif (count($_POST["Time_Minute"]) == 60)
259
		{
260
			$min = "*";
261
		}
262
		else
263
		{
264
			$min = implode(",", $_POST["Time_Minute"]);
265
		}
266
		if (count($_POST["dow"]) == 7)
267
		{
268
			$dow = "*";
269
		}
270
		else
271
		{
272
			$dow = implode(",", $_POST["dow"]);
273
		}
274
 
275
		if (count($_POST["dom"]) == 31)
276
		{
277
			$dom = "*";
278
		}
279
		else
280
		{
281
			$dom = implode(",", $_POST["dom"]);
282
		}
283
 
284
		if (count($_POST["mon"]) == 12)
285
		{
286
			$mon = "*";
287
		}
288
		else
289
		{
290
			$mon = implode(",", $_POST["mon"]);
291
		}
292
 
293
		$intervall = $min." ".$hour." ".$dom." ".$mon." ".$dow;
294
		$intervall = trim($intervall, "#");
295
		return $intervall;
296
	}
869 lars 297
}