Subversion-Projekte lars-tiefland.ci

Revision

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