Subversion-Projekte lars-tiefland.ci

Revision

Revision 943 | Revision 2108 | 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
 
950 lars 38
	public function del($id = null)
910 lars 39
	{
950 lars 40
		if ($id)
936 lars 41
		{
950 lars 42
			$task = $this->get_task($id);
43
			$this->smarty->assign("task", $task);
44
			$this->smarty->view('scheduler_del.tpl');
936 lars 45
		}
950 lars 46
		else
47
		{
48
			$sql="
49
				DELETE FROM
50
					schnittstellen
51
				WHERE
52
					ID = ".$this->input->post('id')."
53
			";
54
			$res = $this->db->query($sql);
55
			if ($res)
56
			{
57
				$msg = "Cronjob wurde erfolgreich gelöscht!";
58
			}
59
			else
60
			{
61
				$msg = "Leider ist ein Fehler aufgetreten.<br>";
62
				$msg .= "Bitte versuchen Sie es sp&auml;ter noch einmal!<br>";
63
				//$msg .= mysql_error();
64
			}
65
			echo $msg;
66
		}
67
	}
68
	public function edit($id = null)
69
	{
916 lars 70
		if ($id)
71
		{
72
			$task = $this->get_task($id);
73
		}
74
		else
75
		{
925 lars 76
			$domain = explode(".", $_SERVER["HTTP_HOST"]);
77
			$dom = array_shift($domain);
78
			$site_full = implode(".", $domain);
79
			if ($domain[count($domain) - 1] == "local")
80
			{
81
				unset($domain[count($domain) - 1]);
82
			}
83
			$site = implode(".", $domain);
916 lars 84
			unset($out);
85
			if ($site != $site_full)
86
			{
87
				$out = substr($site, 0, 16);
88
			}
89
			elseif ($site_full == "weban.de")
90
			{
91
				$out = "www-data";
92
			}
93
			else
94
			{
927 lars 95
				$cmd = "cat /etc/passwd | grep ".__SHOP__." | cut -d \":\" -f1";
916 lars 96
				exec($cmd, $out);
97
				$out = $out[0];
98
			}
99
			$task["user"] = $out;
100
		}
101
		$rep_hours[0] = "exakt";
102
		$rep_hours[1] = "jede Stunde";
103
		$hours[0] = 0;
104
		$hours[1] = 1;
105
		for ($i = 2; $i <= 23; $i++)
106
		{
107
			$hours[$i] = $i;
108
			$rep_hours[$i] = "Alle ".$i." Stunden";
109
		}
110
		$rep_min[0] = "exakt";
111
		$rep_min[1] = "jede Minute";
112
		for ($i = 2; $i <= 30; $i++)
113
		{
114
			$rep_min[$i] = "Alle ".$i." Minuten";
115
		}
116
		for ($i = 0; $i <= 59; $i++)
117
		{
118
			$minutes[$i] = $i;
119
		}
120
		$nutzungsarten = array(
121
			"" => "",
122
			"dual" => "dual",
123
			"automatisch" => "automatisch",
124
			);
125
		$tage = array(
126
			"Sonntag",
127
			"Montag",
128
			"Dienstag",
129
			"Mittwoch",
130
			"Donnerstag",
131
			"Freitag",
132
			"Samstag",
133
			);
134
		for ($i = 1; $i <= 12; $i++)
135
		{
136
			$mon = sprintf("%02d", $i);
137
			$datum = "01.".$mon.".".date("Y");
138
			$monate[$i] = strftime("%B", strtotime($datum));
139
		}
140
		$dom = array();
141
		for ($i = 1; $i <= 31; $i++)
142
		{
143
			$day = sprintf("%02d", $i);
144
			$dom[$i] = $i;
145
		}
146
		$this->smarty->assign("task", $task);
147
		$this->smarty->assign("monate", $monate);
148
		$this->smarty->assign("tage", $tage);
149
		$this->smarty->assign("dom", $dom);
150
		$this->smarty->assign("nutzungsarten", $nutzungsarten);
151
		$this->smarty->assign("minutes", $minutes);
152
		$this->smarty->assign("rep_min", $rep_min);
153
		$this->smarty->assign("rep_hours", $rep_hours);
154
		$this->smarty->assign("hours", $hours);
914 lars 155
		$this->smarty->view('scheduler_edit.tpl');
910 lars 156
	}
916 lars 157
 
933 lars 158
	public function save()
159
	{
160
		$intervall = $this->create_intervall();
936 lars 161
		if (!column_exists("schnittstellen", "aktiv", $GLOBALS["webs"]["datenbank"], $this->
162
			db))
933 lars 163
		{
164
			$sql = "
165
                ALTER TABLE
166
                    schnittstellen
167
                ADD
168
                    aktiv BOOL NOT NULL DEFAULT '1' AFTER user
169
            ";
170
			$this->db->query($sql);
171
		}
936 lars 172
		if (column_exists("schnittstellen", "email", $GLOBALS["webs"]["datenbank"], $this->
173
			db))
933 lars 174
		{
175
			$extra = "email='".$this->input->post('email')."',";
176
		}
177
		if ($this->input->post('id'))
178
		{
179
			$sql = "
180
                UPDATE
181
                    schnittstellen
182
                SET
183
                    ".$extra."
184
                    name='".$this->input->post("name")."',
185
                    art='".$this->input->post('art')."',
186
                    user='".$this->input->post('user')."',
187
                    skript='".$this->input->post('skript')."',
188
                    parameter='".$this->input->post('parameter')."',
189
                    nutzungsart='".$this->input->post('nutzungsart')."',
190
                    aktiv = ".$this->input->post('aktiv').",
191
                    intervall='".$intervall."',
192
                    letzte_aenderung_von='".$_SERVER["PHP_AUTH_USER"]."'
193
                WHERE
194
                    id='".$this->input->post('id')."'
195
            ";
196
			$res = $this->db->query($sql);
197
			if ($res)
198
			{
199
				$msg = "Cronjob erfolgreich aktualisiert!";
200
			}
201
			else
202
			{
203
				$msg = "Leider ist ein Fehler aufgetreten.<br>";
204
				$msg .= "Bitte versuchen Sie es sp&auml;ter noch einmal!<br>";
205
				//$msg .= mysql_error();
206
			}
207
		}
208
		else
209
		{
210
			$sql = "
211
                INSERT INTO
212
                    schnittstellen
213
                SET
214
                    ".$extra."
215
                    name='".$this->input->post('name')."',
216
                    art='".$this->input->post('art')."',
217
                    user='".$this->input->post('user')."',
218
                    skript='".$this->input->post('skript')."',
219
                    parameter='".$this->input->post('parameter')."',
220
                    nutzungsart='".$this->input->post('nutzungsart')."',
221
                    aktiv = ".$this->input->post('aktiv').",
222
                    intervall='".$intervall."',
223
                    erstellt_am=NOW(),
224
                    erstellt_von='".$_SERVER["PHP_AUTH_USER"]."',
225
                    letzte_aenderung_von='".$_SERVER["PHP_AUTH_USER"]."'
226
 
227
            ";
228
			$res = $this->db->query($sql);
229
			if ($res)
230
			{
231
				$msg = "neuen Cronjob erfolgreich angelegt!";
232
			}
233
			else
234
			{
235
				$msg = "Leider ist ein Fehler aufgetreten.<br>";
236
				$msg .= "Bitte versuchen Sie es sp&auml;ter noch einmal!<br>";
237
				//$msg .= mysql_error();
238
			}
239
		}
240
		echo $msg;
241
	}
242
 
916 lars 243
	private function get_task($id)
244
	{
245
		$sql = "SELECT
246
				*
247
			FROM
248
				schnittstellen
249
			WHERE
250
				id=".$id."
251
		";
917 lars 252
		$res = $this->db->query($sql);
253
		$task = $res->row_array();
916 lars 254
		$intervall = $this->parse_intervall($task["intervall"]);
255
		$task["intervallParsed"] = $intervall;
256
		return $task;
257
	}
258
 
917 lars 259
	private function parse_intervall($intervall)
916 lars 260
	{
261
		list($minute, $hour, $dom, $mon, $dow) = explode(" ", $intervall);
262
		$pos = strpos($minute, "/");
263
		if ($pos !== false)
264
		{
918 lars 265
			$intervallArr["min"] = null;
916 lars 266
			$intervallArr["rep_min"] = substr($minute, $pos + 1);
267
		}
268
		elseif ($minute == "*")
269
		{
918 lars 270
			$intervallArr["min"] = null;
916 lars 271
			$intervallArr["rep_min"] = 1;
272
		}
273
		else
274
		{
275
			$intervallArr["min"] = $minute;
276
			$intervallArr["rep_min"] = 0;
277
		}
278
		$pos = strpos($hour, "/");
279
		if ($pos !== false)
280
		{
919 lars 281
			$intervallArr["hour"] = null;
916 lars 282
			$intervallArr["rep_hour"] = substr($hour, $pos + 1);
283
		}
284
		elseif ($hour == "*")
285
		{
919 lars 286
			$intervallArr["hour"] = null;
916 lars 287
			$intervallArr["rep_hour"] = 1;
288
		}
289
		else
290
		{
291
			$intervallArr["hour"] = explode(",", $hour);
292
			$intervallArr["rep_hour"] = 0;
293
		}
294
		if ($mon == "*")
295
		{
296
			$intervallArr["mon"] = array(
297
				1,
298
				2,
299
				3,
300
				4,
301
				5,
302
				6,
303
				7,
304
				8,
305
				9,
306
				10,
307
				11,
308
				12,
309
				);
310
		}
311
		else
312
		{
313
			$intervallArr["mon"] = explode(",", $mon);
314
		}
315
		if ($dow == "*")
316
		{
317
			$intervallArr["dow"] = array(
318
				0,
319
				1,
320
				2,
321
				3,
322
				4,
323
				5,
324
				6,
325
				);
326
		}
327
		else
328
		{
329
			$intervallArr["dow"] = explode(",", $dow);
330
		}
331
		if ($dom == "*")
332
		{
333
			for ($i = 1; $i <= 31; $i++)
334
			{
335
				$intervallArr["dom"][] = $i;
336
			}
337
		}
338
		else
339
		{
340
			$intervallArr["dom"] = explode(",", $dom);
341
		}
342
		return $intervallArr;
343
	}
344
 
917 lars 345
	function create_intervall()
916 lars 346
	{
933 lars 347
		if ($this->input->post('rep_hour') != 0)
916 lars 348
		{
349
			$hour = "*";
933 lars 350
			if ($this->input->post('rep_hour') != 1)
916 lars 351
			{
933 lars 352
				$hour .= "/".$this->input->post('rep_hour');
916 lars 353
			}
354
		}
933 lars 355
		elseif (count($this->input->post('Time_Hour')) == 24)
916 lars 356
		{
357
			$hour = "*";
358
		}
359
		else
360
		{
933 lars 361
			$hour = implode(",", $this->input->post('Time_Hour'));
916 lars 362
		}
933 lars 363
		if ($this->input->post('rep_min') != 0)
916 lars 364
		{
365
			$min = "*";
933 lars 366
			if ($this->input->post('rep_min') != 1)
916 lars 367
			{
933 lars 368
				$min .= "/".$this->input->post('rep_min');
916 lars 369
			}
370
		}
933 lars 371
		elseif (count($this->input->post('Time_Minute')) == 60)
916 lars 372
		{
373
			$min = "*";
374
		}
375
		else
376
		{
933 lars 377
			$min = implode(",", $this->input->post('Time_Minute'));
916 lars 378
		}
933 lars 379
		if (count($this->input->post('dow')) == 7)
916 lars 380
		{
381
			$dow = "*";
382
		}
383
		else
384
		{
933 lars 385
			$dow = implode(",", $this->input->post('dow'));
916 lars 386
		}
387
 
933 lars 388
		if (count($this->input->post('dom')) == 31)
916 lars 389
		{
390
			$dom = "*";
391
		}
392
		else
393
		{
933 lars 394
			$dom = implode(",", $this->input->post('dom'));
916 lars 395
		}
396
 
933 lars 397
		if (count($this->input->post('mon')) == 12)
916 lars 398
		{
399
			$mon = "*";
400
		}
401
		else
402
		{
933 lars 403
			$mon = implode(",", $this->input->post('mon'));
916 lars 404
		}
405
 
406
		$intervall = $min." ".$hour." ".$dom." ".$mon." ".$dow;
407
		$intervall = trim($intervall, "#");
408
		return $intervall;
409
	}
869 lars 410
}