Subversion-Projekte lars-tiefland.ci

Revision

Revision 2234 | 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 2383 2018-10-05 17:37:09Z 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
2383 lars 154
				*
155
			FROM
156
				medien
157
			WHERE
158
				folder=?
159
			AND
160
				typ!=3
161
		";
2212 lars 162
 
163
		$this->sql["medien"]["artikel_add"] = "INSERT INTO
2383 lars 164
				artikel_medien
165
			SET
166
				medien_id=?,
167
				artikel_id=?,
168
				rang=?,
169
				aehnlich=0
170
		";
2233 lars 171
		$this->sql["medien"]["directory_add"] = "INSERT INTO
2383 lars 172
				directory_medien
173
			SET
174
				medien_id=?,
175
				directory_id=?,
176
				rang=?,
177
				aehnlich=0
178
		";
1887 lars 179
	}
180
 
181
	/**
182
	 * Medien_model::get_artikel_medien()
183
	 *
184
	 * Liest alle Medien für einen Artikel aus und erzeugt alle konfigurierten URLs (relativ und absolut)
185
	 *
186
	 * @param mixed $artikel_id
187
	 * @param integer $typ
188
	 * @return
189
	 */
1900 lars 190
	public function get_artikel_medien($artikel_id, $typ = null)
1887 lars 191
	{
192
		$medien = array();
2180 lars 193
		if (is_null($typ)) {
1900 lars 194
			$am_res = $this->db->query($this->sql["medien"]["artikel_all"], array($artikel_id, ));
2180 lars 195
		} else {
1900 lars 196
			$am_res = $this->db->query($this->sql["medien"]["artikel"], array(
197
				$artikel_id,
198
				$typ,
199
				));
200
		}
2180 lars 201
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
202
		if ($am_res->num_rows()) {
203
			while ($row = $am_res->unbuffered_row('array')) {
1887 lars 204
				$url = '/images/upload/';
205
				$folder = '';
2180 lars 206
				if ($row['folder']) {
1887 lars 207
					$folder = $row['folder'];
208
					$ende = substr($folder, -1);
2180 lars 209
					if ($ende != '/') {
1887 lars 210
						$folder .= '/';
211
					}
212
				}
213
				$url .= $folder;
214
				$b_name = $row['name'];
2180 lars 215
				foreach ($this->formate as $format => $dir) {
216
					$row['bild_url' . $format] = $url . $dir . $b_name;
217
					$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 218
				}
2180 lars 219
				$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 220
				$row["size"] = filesize($row["path"]);
221
				$row["img_size"] = GetImageSize($row["path"]);
1887 lars 222
				$medien[] = $row;
223
			}
2180 lars 224
		} else {
1887 lars 225
			$url = "/images/webelemente/";
226
			$b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
227
			$row["name"] = $b_name;
228
			$row["beschreibung"] = "";
229
			$row["folder"] = "";
1893 lars 230
			$row["typ"] = 1;
231
			$rot["typ_name"] = "Bild";
2180 lars 232
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 233
			$row["size"] = filesize($row["path"]);
234
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 235
			foreach ($this->formate as $format => $dir) {
236
				$row["bild_url" . $format] = $url . $b_name;
237
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 238
			}
239
			$medien[] = $row;
240
		}
241
		return $medien;
242
	}
243
 
244
	/**
245
	 * Medien_model::get_category_medien()
246
	 *
247
	 * Liest alle Medien für eine Kategorie aus und erzeugt alle konfigurierten URLs (relativ und absolut)
248
	 *
249
	 * @param mixed $category_id
250
	 * @param integer $typ
251
	 * @return
252
	 */
1900 lars 253
	public function get_category_medien($category_id, $typ = null)
1887 lars 254
	{
2180 lars 255
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
1887 lars 256
		$medien = array();
2180 lars 257
		if (is_null($typ)) {
1900 lars 258
			$am_res = $this->db->query($this->sql["medien"]["category_all"], array($category_id, ));
2180 lars 259
		} else {
1900 lars 260
			$am_res = $this->db->query($this->sql["medien"]["category"], array(
261
				$category_id,
262
				$typ,
263
				));
264
		}
2180 lars 265
		if ($am_res->num_rows()) {
266
			while ($row = $am_res->unbuffered_row('array')) {
1887 lars 267
				$url = '/images/upload/';
268
				$folder = '';
2180 lars 269
				if ($row['folder']) {
1887 lars 270
					$folder = $row['folder'];
271
					$ende = substr($folder, -1);
2180 lars 272
					if ($ende != '/') {
1887 lars 273
						$folder .= '/';
274
					}
275
				}
276
				$url .= $folder;
277
				$b_name = $row['name'];
2180 lars 278
				foreach ($this->formate as $format => $dir) {
279
					$row['bild_url' . $format] = $url . $dir . $b_name;
280
					$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 281
				}
2180 lars 282
				$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 283
				$row["size"] = filesize($row["path"]);
284
				$row["img_size"] = GetImageSize($row["path"]);
1887 lars 285
				$medien[] = $row;
286
			}
2180 lars 287
		} else {
1887 lars 288
			$url = "/images/webelemente/";
289
			$b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
290
			$row["name"] = $b_name;
291
			$row["beschreibung"] = "";
292
			$row["folder"] = "";
1893 lars 293
			$row["typ"] = 1;
294
			$rot["typ_name"] = "Bild";
2180 lars 295
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
1896 lars 296
			$row["size"] = filesize($row["path"]);
297
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 298
			foreach ($this->formate as $format => $dir) {
299
				$row["bild_url" . $format] = $url . $b_name;
300
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
1887 lars 301
			}
302
			$medien[] = $row;
303
		}
304
		return $medien;
305
	}
2180 lars 306
 
307
	public function get()
308
	{
2190 lars 309
		$basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
2199 lars 310
		$folder = $this->input->get('folder');
311
		if (!$folder) {
312
			$folder = "";
313
		}
314
		$res = $this->db->query($this->sql["medien"]["list"], array($folder));
2185 lars 315
		while ($row = $res->unbuffered_row("array")) {
2189 lars 316
			$url = '/images/upload/';
317
			$folder = '';
318
			if ($row['folder']) {
319
				$folder = $row['folder'];
320
				$ende = substr($folder, -1);
321
				if ($ende != '/') {
322
					$folder .= '/';
323
				}
324
			}
325
			$url .= $folder;
326
			$b_name = $row['name'];
327
			foreach ($this->formate as $format => $dir) {
328
				$row['bild_url' . $format] = $url . $dir . $b_name;
329
				$row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
330
			}
331
			$row["path"] = $basis . $row["folder"] . "/" . $row["name"];
332
			$row["size"] = filesize($row["path"]);
333
			$row["img_size"] = GetImageSize($row["path"]);
2180 lars 334
			$medien[] = $row;
335
		}
336
		return $medien;
337
	}
2212 lars 338
 
339
	public function add()
340
	{
341
		$l_type = $this->input->get("l_type");
342
		$l_id = $this->input->get("l_id");
343
		switch ($l_type) {
344
			case "a":
345
				$sql = "SELECT
2383 lars 346
						MAX(rang) AS rang
347
					FROM
348
						artikel_medien
349
					WHERE
350
						artikel_id=" . $l_id . "
351
				";
2234 lars 352
				$addSql = $this->sql["medien"]["artikel_add"];
2212 lars 353
				break;
354
			case "d":
355
				$sql = "SELECT
2383 lars 356
						MAX(rang) AS rang
357
					FROM
358
						directory_medien
359
					WHERE
360
						directory_id=" . $l_id . "
361
				";
2234 lars 362
				$addSql = $this->sql["medien"]["directory_add"];
2212 lars 363
				break;
364
		}
365
		$res = $this->db->query($sql);
366
		$row = $res->unbuffered_row("array");
367
		$rang = $row["rang"] + 10;
368
		$b_id = $this->input->get("b_id");
2233 lars 369
		$this->db->query($addSql, array(
2212 lars 370
			$b_id,
371
			$l_id,
372
			$rang,
373
			));
374
	}
1887 lars 375
}
376
 
377
?>