Subversion-Projekte lars-tiefland.ci

Revision

Revision 927 | Revision 936 | 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
			{
927 lars 65
				$cmd = "cat /etc/passwd | grep ".__SHOP__." | cut -d \":\" -f1";
916 lars 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
 
933 lars 128
	public function save()
129
	{
130
		$intervall = $this->create_intervall();
131
		if (!column_exists("schnittstellen", "aktiv", $GLOBALS["webs"]["datenbank"], $this->db))
132
		{
133
			$sql = "
134
                ALTER TABLE
135
                    schnittstellen
136
                ADD
137
                    aktiv BOOL NOT NULL DEFAULT '1' AFTER user
138
            ";
139
			$this->db->query($sql);
140
		}
141
		if (column_exists("schnittstellen", "email", $GLOBALS["webs"]["datenbank"], $this->db))
142
		{
143
			$extra = "email='".$this->input->post('email')."',";
144
		}
145
		if ($this->input->post('id'))
146
		{
147
			$sql = "
148
                UPDATE
149
                    schnittstellen
150
                SET
151
                    ".$extra."
152
                    name='".$this->input->post("name")."',
153
                    art='".$this->input->post('art')."',
154
                    user='".$this->input->post('user')."',
155
                    skript='".$this->input->post('skript')."',
156
                    parameter='".$this->input->post('parameter')."',
157
                    nutzungsart='".$this->input->post('nutzungsart')."',
158
                    aktiv = ".$this->input->post('aktiv').",
159
                    intervall='".$intervall."',
160
                    letzte_aenderung_von='".$_SERVER["PHP_AUTH_USER"]."'
161
                WHERE
162
                    id='".$this->input->post('id')."'
163
            ";
164
			$res = $this->db->query($sql);
165
			if ($res)
166
			{
167
				$msg = "Cronjob erfolgreich aktualisiert!";
168
			}
169
			else
170
			{
171
				$msg = "Leider ist ein Fehler aufgetreten.<br>";
172
				$msg .= "Bitte versuchen Sie es sp&auml;ter noch einmal!<br>";
173
				//$msg .= mysql_error();
174
			}
175
		}
176
		else
177
		{
178
			$sql = "
179
                INSERT INTO
180
                    schnittstellen
181
                SET
182
                    ".$extra."
183
                    name='".$this->input->post('name')."',
184
                    art='".$this->input->post('art')."',
185
                    user='".$this->input->post('user')."',
186
                    skript='".$this->input->post('skript')."',
187
                    parameter='".$this->input->post('parameter')."',
188
                    nutzungsart='".$this->input->post('nutzungsart')."',
189
                    aktiv = ".$this->input->post('aktiv').",
190
                    intervall='".$intervall."',
191
                    erstellt_am=NOW(),
192
                    erstellt_von='".$_SERVER["PHP_AUTH_USER"]."',
193
                    letzte_aenderung_von='".$_SERVER["PHP_AUTH_USER"]."'
194
 
195
            ";
196
			$res = $this->db->query($sql);
197
			if ($res)
198
			{
199
				$msg = "neuen Cronjob erfolgreich angelegt!";
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
		echo $msg;
209
	}
210
 
916 lars 211
	private function get_task($id)
212
	{
213
		$sql = "SELECT
214
				*
215
			FROM
216
				schnittstellen
217
			WHERE
218
				id=".$id."
219
		";
917 lars 220
		$res = $this->db->query($sql);
221
		$task = $res->row_array();
916 lars 222
		$intervall = $this->parse_intervall($task["intervall"]);
223
		$task["intervallParsed"] = $intervall;
224
		$zeit = $intervall["hour"].":".$intervall["min"].":00";
225
		$task["zeit"] = ($zeit);
226
		return $task;
227
	}
228
 
917 lars 229
	private function parse_intervall($intervall)
916 lars 230
	{
231
		list($minute, $hour, $dom, $mon, $dow) = explode(" ", $intervall);
232
		$pos = strpos($minute, "/");
233
		if ($pos !== false)
234
		{
918 lars 235
			$intervallArr["min"] = null;
916 lars 236
			$intervallArr["rep_min"] = substr($minute, $pos + 1);
237
		}
238
		elseif ($minute == "*")
239
		{
918 lars 240
			$intervallArr["min"] = null;
916 lars 241
			$intervallArr["rep_min"] = 1;
242
		}
243
		else
244
		{
245
			$intervallArr["min"] = $minute;
246
			$intervallArr["rep_min"] = 0;
247
		}
248
		$pos = strpos($hour, "/");
249
		if ($pos !== false)
250
		{
919 lars 251
			$intervallArr["hour"] = null;
916 lars 252
			$intervallArr["rep_hour"] = substr($hour, $pos + 1);
253
		}
254
		elseif ($hour == "*")
255
		{
919 lars 256
			$intervallArr["hour"] = null;
916 lars 257
			$intervallArr["rep_hour"] = 1;
258
		}
259
		else
260
		{
261
			$intervallArr["hour"] = explode(",", $hour);
262
			$intervallArr["rep_hour"] = 0;
263
		}
264
		if ($mon == "*")
265
		{
266
			$intervallArr["mon"] = array(
267
				1,
268
				2,
269
				3,
270
				4,
271
				5,
272
				6,
273
				7,
274
				8,
275
				9,
276
				10,
277
				11,
278
				12,
279
				);
280
		}
281
		else
282
		{
283
			$intervallArr["mon"] = explode(",", $mon);
284
		}
285
		if ($dow == "*")
286
		{
287
			$intervallArr["dow"] = array(
288
				0,
289
				1,
290
				2,
291
				3,
292
				4,
293
				5,
294
				6,
295
				);
296
		}
297
		else
298
		{
299
			$intervallArr["dow"] = explode(",", $dow);
300
		}
301
		if ($dom == "*")
302
		{
303
			for ($i = 1; $i <= 31; $i++)
304
			{
305
				$intervallArr["dom"][] = $i;
306
			}
307
		}
308
		else
309
		{
310
			$intervallArr["dom"] = explode(",", $dom);
311
		}
312
		return $intervallArr;
313
	}
314
 
917 lars 315
	function create_intervall()
916 lars 316
	{
933 lars 317
		if ($this->input->post('rep_hour') != 0)
916 lars 318
		{
319
			$hour = "*";
933 lars 320
			if ($this->input->post('rep_hour') != 1)
916 lars 321
			{
933 lars 322
				$hour .= "/".$this->input->post('rep_hour');
916 lars 323
			}
324
		}
933 lars 325
		elseif (count($this->input->post('Time_Hour')) == 24)
916 lars 326
		{
327
			$hour = "*";
328
		}
329
		else
330
		{
933 lars 331
			$hour = implode(",", $this->input->post('Time_Hour'));
916 lars 332
		}
933 lars 333
		if ($this->input->post('rep_min') != 0)
916 lars 334
		{
335
			$min = "*";
933 lars 336
			if ($this->input->post('rep_min') != 1)
916 lars 337
			{
933 lars 338
				$min .= "/".$this->input->post('rep_min');
916 lars 339
			}
340
		}
933 lars 341
		elseif (count($this->input->post('Time_Minute')) == 60)
916 lars 342
		{
343
			$min = "*";
344
		}
345
		else
346
		{
933 lars 347
			$min = implode(",", $this->input->post('Time_Minute'));
916 lars 348
		}
933 lars 349
		if (count($this->input->post('dow')) == 7)
916 lars 350
		{
351
			$dow = "*";
352
		}
353
		else
354
		{
933 lars 355
			$dow = implode(",", $this->input->post('dow'));
916 lars 356
		}
357
 
933 lars 358
		if (count($this->input->post('dom')) == 31)
916 lars 359
		{
360
			$dom = "*";
361
		}
362
		else
363
		{
933 lars 364
			$dom = implode(",", $this->input->post('dom'));
916 lars 365
		}
366
 
933 lars 367
		if (count($this->input->post('mon')) == 12)
916 lars 368
		{
369
			$mon = "*";
370
		}
371
		else
372
		{
933 lars 373
			$mon = implode(",", $this->input->post('mon'));
916 lars 374
		}
375
 
376
		$intervall = $min." ".$hour." ".$dom." ".$mon." ".$dow;
377
		$intervall = trim($intervall, "#");
378
		return $intervall;
379
	}
869 lars 380
}