Subversion-Projekte lars-tiefland.ci

Revision

Revision 2008 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
5 lars 1
<?php
2
 
3
/**
4
 * @author Lars Tiefland
5
 * @copyright 2016
6
 */
7
 
519 lars 8
/**
9
 * Artikel_model
10
 *
11
 * Liest alle Daten für Artikel
12
 *
527 lars 13
 * @package WebanOS CI
14
 * @author Lars Tiefland
15
 * @copyright 2016
16
 * @version $Id: Artikel_model.php 2419 2021-04-02 12:23:58Z lars $
519 lars 17
 * @access public
18
 */
9 lars 19
class Artikel_model extends CI_Model
5 lars 20
{
519 lars 21
	/**
22
	 * Artikel_model::__construct()
23
	 *
24
	 * @return
25
	 */
55 lars 26
	public function __construct()
27
	{
28
		parent::__construct();
29
		$this->load->model('alias_model', 'alias');
58 lars 30
		$this->load->model('preise_model', 'preise');
363 lars 31
		$this->load->model('medien_model', 'medien');
358 lars 32
		$this->load->model('shop_position_model', 'shop_position');
55 lars 33
 
34
	}
519 lars 35
	/**
36
	 * Artikel_model::list_artikel()
37
	 *
38
	 * Artikelübersicht
39
	 *
40
	 * @param mixed $father
41
	 * @param bool $return_zero_price
42
	 * @return
43
	 */
591 lars 44
	public function list_artikel($father, $return_zero_price = false, $start = 0, $limit = null)
5 lars 45
	{
77 lars 46
		$artikel = array();
601 lars 47
		$sql = 'SELECT
48
				SQL_CALC_FOUND_ROWS
49
				ID
50
			FROM
51
				artikel
52
			WHERE
603 lars 53
				father = '.$father.'
54
			AND
55
				language = "DE"
56
			AND
57
				status = 0
601 lars 58
		';
603 lars 59
		if (!is_null($limit))
60
		{
61
			$sql .= '
62
				LIMIT
63
					'.$start.','.$limit.'
64
			';
65
		}
602 lars 66
		$query = $this->db->query($sql);
605 lars 67
		$sql = "SELECT FOUND_ROWS() AS total";
68
		$ret = $this->db->query($sql);
69
		$erg = $ret->row_array();
70
		$count = $erg['total'];
23 lars 71
		while ($row = $query->unbuffered_row('array'))
18 lars 72
		{
370 lars 73
			$item = $this->get_item_info($row["ID"], $return_zero_price);
360 lars 74
			if (is_array($item))
75
			{
76
				$artikel[] = $item;
77
			}
18 lars 78
		}
596 lars 79
		$ret = array(
80
			'artikel' => $artikel,
81
			'count' => $count,
82
			);
83
		return $ret;
5 lars 84
	}
519 lars 85
	/**
86
	 * Artikel_model::get_artikel()
87
	 *
88
	 * einzelner Artikel
89
	 *
90
	 * @param mixed $id
91
	 * @param bool $return
92
	 * @return
93
	 */
1994 lars 94
	public function get_artikel($id, $return = false, $versand = false)
5 lars 95
	{
35 lars 96
		if (is_numeric($id))
97
		{
220 lars 98
			if ($return === false)
99
			{
100
				$link = $this->get_link($id, 1);
101
				header("Location: ".$link);
102
			}
103
			else
104
			{
2008 lars 105
				$row = $this->get_item_info($id, true, $versand);
226 lars 106
				return $row;
220 lars 107
			}
35 lars 108
		}
36 lars 109
		else
110
		{
111
			$query = $this->db->get_where('alias', array(
112
				"alias" => $id.'.html',
113
				"type_id" => 1,
114
				));
115
			$row = $query->row_array();
116
			$id = $row["id"];
220 lars 117
			$row = $this->get_item_info($id);
118
			return $row;
119
		}
120
	}
121
 
519 lars 122
	/**
123
	 * Artikel_model::get_link()
124
	 *
125
	 * erzeuge Link für Artikel
126
	 *
127
	 * @param mixed $id
128
	 * @return
129
	 */
220 lars 130
	private function get_link($id)
131
	{
132
		$link = $this->alias->get_link($id, 1);
579 lars 133
		return "/".$link;
220 lars 134
	}
226 lars 135
 
519 lars 136
	/**
137
	 * Artikel_model::get_item_info()
138
	 *
139
	 * alle Infos für Artikel inkl. Prüfung auf Sperrkriterien
140
	 *
141
	 * @param mixed $id
142
	 * @param bool $return_zero_price
143
	 * @return
144
	 */
2008 lars 145
	private function get_item_info($id, $return_zero_price = false, $versand=false)
220 lars 146
	{
226 lars 147
		$query = $this->db->get_where('artikel', array(
148
			'id' => $id,
149
			"language" => "DE",
150
			));
151
		$row = $query->row_array();
152
		$row['itemLink'] = $this->get_link($row["ID"]);
153
		$preise = $this->preise->get_prices($row["ID"]);
1997 lars 154
		if (count($preise) && $versand===false)
343 lars 155
		{
369 lars 156
			if ((float)$preise["preis1"] > 0 || $return_zero_price === true)
355 lars 157
			{
728 lars 158
				$row['grundpreis'] = "";
732 lars 159
				if (isset($row['gebinde_menge']) && $row["gebinde_menge"] > 0 && isset($row['gebinde_einheit']) &&
160
					$row["gebinde_einheit"])
728 lars 161
				{
162
					$row["grundpreis"] = $row["preis1"] / $row["gebinde_menge"];
163
				}
385 lars 164
				$path = getPath($row['Father']);
165
				if (is_array($path))
166
				{
167
					$row['path'] = $path;
168
					$row = array_merge($row, $preise);
169
					$row["shopPosition"] = $this->shop_position->get_position($row['Father']);
170
					$row["shopPosition"][] = array(
171
						'Name' => $row['kurzbezeichnung'],
172
						'link' => $row['itemLink'],
173
						);
174
					$medien = $this->medien->get_artikel_medien($row["ID"]);
175
					$row["medien"] = $medien;
176
					$row["preis"] = $row["preis1"];
177
					return $row;
178
				}
355 lars 179
			}
343 lars 180
		}
1997 lars 181
		elseif($versand===true)
182
		{
183
			return $row;
184
		}
5 lars 185
	}
494 lars 186
 
519 lars 187
	/**
188
	 * Artikel_model::serie()
189
	 *
190
	 * @param mixed $serien_id
191
	 * @return
192
	 */
494 lars 193
	public function serie($serien_id)
194
	{
195
		$items = array();
196
		// ME: erstmal gucken, ob es eine Serie zu einem Ordner ist
197
		$sql = "SELECT DISTINCT
198
                    a.ID as aID
199
                FROM
200
                    shop_link_table slt,
201
                    directory d
202
                JOIN
203
                    artikel a
204
                ON
205
                    a.Father = d.id
206
                WHERE
495 lars 207
                    slt.Father = ".$serien_id."
494 lars 208
                AND
209
                    d.id = slt.id
210
                AND
211
                    verwendung = 'd2s'";
212
 
213
		$q = $this->db->query($sql);
214
		if ($q)
215
		{
216
			while ($r = $q->unbuffered_row('array'))
217
			{
218
				// alle Artikel zum Ordner holen
219
				$item = $this->get_item_info($r['aID'], true);
220
				if (is_array($item))
221
				{
222
					$items[] = $item;
223
				}
224
 
225
			}
226
		}
495 lars 227
		$sql = "SELECT DISTINCT
228
				id
229
			FROM
230
				shop_link_table
231
			WHERE
232
				Father = ".$serien_id."
233
			AND
234
				verwendung = 'a2s'";
494 lars 235
		$q = $this->db->query($sql);
236
		if ($q)
237
		{
238
			while ($r = $q->unbuffered_row('array'))
239
			{
240
				$item = $this->get_item_info($r['id'], true);
241
				if (is_array($item) && !in_array($item, $items))
242
				{
243
					$items[] = $item;
244
				}
245
			}
246
		}
247
 
248
		return $items;
249
	}
5 lars 250
}
251
 
2008 lars 252
?>