Subversion-Projekte lars-tiefland.ci

Revision

Revision 2212 | Revision 2232 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1887 lars 1
<?php
2
 
3
/**
4
 * @author Lars Tiefland
5
 * @copyright 2016
6
 */
7
 
8
/**
9
 * Medien_model
10
 *
11
 * Liest die Bilder von Artikeln oder Kategorien aus
12
 *
13
 * @package WebanOS CI
14
 * @author Lars Tiefland
15
 * @copyright 2016
16
 * @version $Id: Medien_model.php 2213 2017-12-23 20:23:44Z lars $
17
 * @access public
18
 */
19
class Medien_model extends CI_Model
20
{
21
	private $sql;
22
	private $formate;
23
	private $basis;
24
	/**
25
	 * Medien_model::__construct()
26
	 *
27
	 * stellt alle nötigen SQL-Abfragen und Formate für die Medien bereit
28
	 *
29
	 * @return
30
	 */
31
	public function __construct()
32
	{
33
		parent::__construct();
34
		$this->basis = $this->config->item('base_url');
35
		$this->formate = array(
36
			"" => "",
37
			"_klein" => "kl/",
38
			"_mini" => "mini/",
39
			"_gr" => "gr/",
40
			"_br" => "br/",
41
			"_ba" => "ba/",
42
			"_nav" => "nav/",
43
			"_sl" => "sl/",
44
			"_start" => "start/",
45
			"_icon" => "icon/",
46
			);
47
 
1901 lars 48
		$this->sql["medien"]["artikel"] = "SELECT
1931 lars 49
				m.id,
1887 lars 50
				m.name,
51
				m.folder,
52
				m.beschreibung,
53
				m.typ,
54
				am.rang,
1892 lars 55
				am.aehnlich,
56
				mt.name AS typ_name
1887 lars 57
			FROM
58
				medien m
59
			JOIN
60
				artikel_medien am
1892 lars 61
			JOIN
62
				content_management.medien_typ mt
63
			ON
64
				mt.id=m.typ
1887 lars 65
			WHERE
66
				am.medien_id=m.id
67
			AND
68
				artikel_id=?
69
			AND
70
				typ=?
71
			ORDER BY
72
				rang
73
		";
74
		$this->sql["medien"]["category"] = "SELECT
1931 lars 75
				m.id,
1887 lars 76
				m.name,
77
				m.folder,
78
				m.beschreibung,
1894 lars 79
				m.typ,
1887 lars 80
				dm.rang,
1892 lars 81
				dm.aehnlich,
1893 lars 82
				mt.name AS typ_name
1887 lars 83
			FROM
84
				medien m
85
			JOIN
86
				directory_medien dm
1892 lars 87
			JOIN
88
				content_management.medien_typ mt
89
			ON
90
				mt.id=m.typ
1887 lars 91
			WHERE
92
				dm.medien_id=m.id
93
			AND
94
				directory_id=?
95
			AND
96
				typ=?
97
			ORDER BY
98
				rang
99
		";
1901 lars 100
		$this->sql["medien"]["artikel_all"] = "SELECT
1931 lars 101
				m.id,
1900 lars 102
				m.name,
103
				m.folder,
104
				m.beschreibung,
105
				m.typ,
106
				am.rang,
107
				am.aehnlich,
108
				mt.name AS typ_name
109
			FROM
110
				medien m
111
			JOIN
112
				artikel_medien am
113
			JOIN
114
				content_management.medien_typ mt
115
			ON
116
				mt.id=m.typ
117
			WHERE
118
				am.medien_id=m.id
119
			AND
120
				artikel_id=?
121
			ORDER BY
122
				rang
123
		";
124
		$this->sql["medien"]["category_all"] = "SELECT
1931 lars 125
				m.id,
1900 lars 126
				m.name,
127
				m.folder,
128
				m.beschreibung,
129
				m.typ,
130
				dm.rang,
131
				dm.aehnlich,
132
				mt.name AS typ_name
133
			FROM
134
				medien m
135
			JOIN
136
				directory_medien dm
137
			JOIN
138
				content_management.medien_typ mt
139
			ON
140
				mt.id=m.typ
141
			WHERE
142
				dm.medien_id=m.id
143
			AND
144
				directory_id=?
145
			ORDER BY
146
				rang
147
		";
1925 lars 148
		$aehnlich = array(
149
			"nein",
150
			"ja",
151
			);
1928 lars 152
		$this->smarty->assign("aehnlich", $aehnlich);
2180 lars 153
		$this->sql["medien"]["list"] = "SELECT
154
                *
155
            FROM
156
                medien
157
            WHERE
2195 lars 158
                folder=?
159
            AND
160
                typ!=3
2180 lars 161
        ";
2212 lars 162
 
163
		$this->sql["medien"]["artikel_add"] = "INSERT INTO
2210 lars 164
                artikel_medien
165
            SET
166
                medien_id=?,
167
                artikel_id=?,
2213 lars 168
                rang=?,
169
                aehnlich=0
2210 lars 170
        ";
1887 lars 171
	}
172
 
173
	/**
174
	 * Medien_model::get_artikel_medien()
175
	 *
176
	 * Liest alle Medien für einen Artikel aus und erzeugt alle konfigurierten URLs (relativ und absolut)
177
	 *
178
	 * @param mixed $artikel_id
179
	 * @param integer $typ
180
	 * @return
181
	 */
1900 lars 182
	public function get_artikel_medien($artikel_id, $typ = null)
1887 lars 183
	{
184
		$medien = array();
2180 lars 185
		if (is_null($typ)) {
1900 lars 186
			$am_res = $this->db->query($this->sql["medien"]["artikel_all"], array($artikel_id, ));
2180 lars 187
		} else {
1900 lars 188
			$am_res = $this->db->query($this->sql["medien"]["artikel"], array(
189
				$artikel_id,
190
				$typ,
191
				));
192
		}
2180 lars 193
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
194
		if ($am_res->num_rows()) {
195
			while ($row = $am_res->unbuffered_row('array')) {
1887 lars 196
				$url = '/images/upload/';
197
				$folder = '';
2180 lars 198
				if ($row['folder']) {
1887 lars 199
					$folder = $row['folder'];
200
					$ende = substr($folder, -1);
2180 lars 201
					if ($ende != '/') {
1887 lars 202
						$folder .= '/';
203
					}
204
				}
205
				$url .= $folder;
206
				$b_name = $row['name'];
2180 lars 207
				foreach ($this->formate as $format => $dir) {
208
					$row['bild_url' . $format] = $url . $dir . $b_name;
209
					$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 210
				}
2180 lars 211
				$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 212
				$row["size"] = filesize($row["path"]);
213
				$row["img_size"] = GetImageSize($row["path"]);
1887 lars 214
				$medien[] = $row;
215
			}
2180 lars 216
		} else {
1887 lars 217
			$url = "/images/webelemente/";
218
			$b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
219
			$row["name"] = $b_name;
220
			$row["beschreibung"] = "";
221
			$row["folder"] = "";
1893 lars 222
			$row["typ"] = 1;
223
			$rot["typ_name"] = "Bild";
2180 lars 224
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 225
			$row["size"] = filesize($row["path"]);
226
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 227
			foreach ($this->formate as $format => $dir) {
228
				$row["bild_url" . $format] = $url . $b_name;
229
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 230
			}
231
			$medien[] = $row;
232
		}
233
		return $medien;
234
	}
235
 
236
	/**
237
	 * Medien_model::get_category_medien()
238
	 *
239
	 * Liest alle Medien für eine Kategorie aus und erzeugt alle konfigurierten URLs (relativ und absolut)
240
	 *
241
	 * @param mixed $category_id
242
	 * @param integer $typ
243
	 * @return
244
	 */
1900 lars 245
	public function get_category_medien($category_id, $typ = null)
1887 lars 246
	{
2180 lars 247
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
1887 lars 248
		$medien = array();
2180 lars 249
		if (is_null($typ)) {
1900 lars 250
			$am_res = $this->db->query($this->sql["medien"]["category_all"], array($category_id, ));
2180 lars 251
		} else {
1900 lars 252
			$am_res = $this->db->query($this->sql["medien"]["category"], array(
253
				$category_id,
254
				$typ,
255
				));
256
		}
2180 lars 257
		if ($am_res->num_rows()) {
258
			while ($row = $am_res->unbuffered_row('array')) {
1887 lars 259
				$url = '/images/upload/';
260
				$folder = '';
2180 lars 261
				if ($row['folder']) {
1887 lars 262
					$folder = $row['folder'];
263
					$ende = substr($folder, -1);
2180 lars 264
					if ($ende != '/') {
1887 lars 265
						$folder .= '/';
266
					}
267
				}
268
				$url .= $folder;
269
				$b_name = $row['name'];
2180 lars 270
				foreach ($this->formate as $format => $dir) {
271
					$row['bild_url' . $format] = $url . $dir . $b_name;
272
					$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 273
				}
2180 lars 274
				$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 275
				$row["size"] = filesize($row["path"]);
276
				$row["img_size"] = GetImageSize($row["path"]);
1887 lars 277
				$medien[] = $row;
278
			}
2180 lars 279
		} else {
1887 lars 280
			$url = "/images/webelemente/";
281
			$b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
282
			$row["name"] = $b_name;
283
			$row["beschreibung"] = "";
284
			$row["folder"] = "";
1893 lars 285
			$row["typ"] = 1;
286
			$rot["typ_name"] = "Bild";
2180 lars 287
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 288
			$row["size"] = filesize($row["path"]);
289
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 290
			foreach ($this->formate as $format => $dir) {
291
				$row["bild_url" . $format] = $url . $b_name;
292
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 293
			}
294
			$medien[] = $row;
295
		}
296
		return $medien;
297
	}
2180 lars 298
 
299
	public function get()
300
	{
2190 lars 301
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
2199 lars 302
		$folder = $this->input->get('folder');
303
		if (!$folder) {
304
			$folder = "";
305
		}
306
		$res = $this->db->query($this->sql["medien"]["list"], array($folder));
2185 lars 307
		while ($row = $res->unbuffered_row("array")) {
2189 lars 308
			$url = '/images/upload/';
309
			$folder = '';
310
			if ($row['folder']) {
311
				$folder = $row['folder'];
312
				$ende = substr($folder, -1);
313
				if ($ende != '/') {
314
					$folder .= '/';
315
				}
316
			}
317
			$url .= $folder;
318
			$b_name = $row['name'];
319
			foreach ($this->formate as $format => $dir) {
320
				$row['bild_url' . $format] = $url . $dir . $b_name;
321
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
322
			}
323
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
324
			$row["size"] = filesize($row["path"]);
325
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 326
			$medien[] = $row;
327
		}
328
		return $medien;
329
	}
2212 lars 330
 
331
	public function add()
332
	{
333
		$l_type = $this->input->get("l_type");
334
		$l_id = $this->input->get("l_id");
335
		switch ($l_type) {
336
			case "a":
337
				$sql = "SELECT
338
                        MAX(rang) AS rang
339
                    FROM
340
                        artikel_medien
341
                    WHERE
342
                        artikel_id=" . $l_id . "
343
                ";
344
				break;
345
			case "d":
346
				$sql = "SELECT
347
                        MAX(rang) AS rang
348
                    FROM
349
                        directory_medien
350
                    WHERE
351
                        artikel_id=" . $l_id . "
352
                ";
353
				break;
354
		}
355
		$res = $this->db->query($sql);
356
		$row = $res->unbuffered_row("array");
357
		$rang = $row["rang"] + 10;
358
		$b_id = $this->input->get("b_id");
359
		$this->db->query($this->sql["medien"]["artikel_add"], array(
360
			$b_id,
361
			$l_id,
362
			$rang,
363
			));
364
	}
1887 lars 365
}
366
 
367
?>