Subversion-Projekte lars-tiefland.ci

Revision

Revision 1997 | Zur aktuellen Revision | 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 2008 2017-02-02 19:03:01Z 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
		/*$this->db->select('ID');
368 lars 48
		//$this->db->order_by('Lieferstatus', 'ASC');
49
		//$this->db->order_by('Rang', 'DESC');
591 lars 50
		if (!is_null($limit))
51
		{
601 lars 52
		$this->db->limit($limit, $start);
591 lars 53
		}
19 lars 54
		$query = $this->db->get_where('artikel', array(
601 lars 55
		"father" => $father,
56
		"language" => "DE",
57
		"status" => 0,
58
		));*/
59
		$sql = 'SELECT
60
				SQL_CALC_FOUND_ROWS
61
				ID
62
			FROM
63
				artikel
64
			WHERE
603 lars 65
				father = '.$father.'
66
			AND
67
				language = "DE"
68
			AND
69
				status = 0
601 lars 70
		';
603 lars 71
		if (!is_null($limit))
72
		{
73
			$sql .= '
74
				LIMIT
75
					'.$start.','.$limit.'
76
			';
77
		}
602 lars 78
		$query = $this->db->query($sql);
605 lars 79
		$sql = "SELECT FOUND_ROWS() AS total";
80
		$ret = $this->db->query($sql);
81
		$erg = $ret->row_array();
82
		$count = $erg['total'];
23 lars 83
		while ($row = $query->unbuffered_row('array'))
18 lars 84
		{
370 lars 85
			$item = $this->get_item_info($row["ID"], $return_zero_price);
360 lars 86
			if (is_array($item))
87
			{
88
				$artikel[] = $item;
89
			}
18 lars 90
		}
596 lars 91
		$ret = array(
92
			'artikel' => $artikel,
93
			'count' => $count,
94
			);
95
		return $ret;
5 lars 96
	}
519 lars 97
	/**
98
	 * Artikel_model::get_artikel()
99
	 *
100
	 * einzelner Artikel
101
	 *
102
	 * @param mixed $id
103
	 * @param bool $return
104
	 * @return
105
	 */
1994 lars 106
	public function get_artikel($id, $return = false, $versand = false)
5 lars 107
	{
35 lars 108
		if (is_numeric($id))
109
		{
220 lars 110
			if ($return === false)
111
			{
112
				$link = $this->get_link($id, 1);
113
				header("Location: ".$link);
114
			}
115
			else
116
			{
2008 lars 117
				$row = $this->get_item_info($id, true, $versand);
226 lars 118
				return $row;
220 lars 119
			}
35 lars 120
		}
36 lars 121
		else
122
		{
123
			$query = $this->db->get_where('alias', array(
124
				"alias" => $id.'.html',
125
				"type_id" => 1,
126
				));
127
			$row = $query->row_array();
128
			$id = $row["id"];
220 lars 129
			$row = $this->get_item_info($id);
130
			return $row;
131
		}
132
	}
133
 
519 lars 134
	/**
135
	 * Artikel_model::get_link()
136
	 *
137
	 * erzeuge Link für Artikel
138
	 *
139
	 * @param mixed $id
140
	 * @return
141
	 */
220 lars 142
	private function get_link($id)
143
	{
144
		$link = $this->alias->get_link($id, 1);
579 lars 145
		return "/".$link;
220 lars 146
	}
226 lars 147
 
519 lars 148
	/**
149
	 * Artikel_model::get_item_info()
150
	 *
151
	 * alle Infos für Artikel inkl. Prüfung auf Sperrkriterien
152
	 *
153
	 * @param mixed $id
154
	 * @param bool $return_zero_price
155
	 * @return
156
	 */
2008 lars 157
	private function get_item_info($id, $return_zero_price = false, $versand=false)
220 lars 158
	{
226 lars 159
		$query = $this->db->get_where('artikel', array(
160
			'id' => $id,
161
			"language" => "DE",
162
			));
163
		$row = $query->row_array();
164
		$row['itemLink'] = $this->get_link($row["ID"]);
165
		$preise = $this->preise->get_prices($row["ID"]);
1997 lars 166
		if (count($preise) && $versand===false)
343 lars 167
		{
369 lars 168
			if ((float)$preise["preis1"] > 0 || $return_zero_price === true)
355 lars 169
			{
728 lars 170
				$row['grundpreis'] = "";
732 lars 171
				if (isset($row['gebinde_menge']) && $row["gebinde_menge"] > 0 && isset($row['gebinde_einheit']) &&
172
					$row["gebinde_einheit"])
728 lars 173
				{
174
					$row["grundpreis"] = $row["preis1"] / $row["gebinde_menge"];
175
				}
385 lars 176
				$path = getPath($row['Father']);
177
				if (is_array($path))
178
				{
179
					$row['path'] = $path;
180
					$row = array_merge($row, $preise);
181
					$row["shopPosition"] = $this->shop_position->get_position($row['Father']);
182
					$row["shopPosition"][] = array(
183
						'Name' => $row['kurzbezeichnung'],
184
						'link' => $row['itemLink'],
185
						);
186
					$medien = $this->medien->get_artikel_medien($row["ID"]);
187
					$row["medien"] = $medien;
188
					$row["preis"] = $row["preis1"];
189
					return $row;
190
				}
355 lars 191
			}
343 lars 192
		}
1997 lars 193
		elseif($versand===true)
194
		{
195
			return $row;
196
		}
5 lars 197
	}
494 lars 198
 
519 lars 199
	/**
200
	 * Artikel_model::serie()
201
	 *
202
	 * @param mixed $serien_id
203
	 * @return
204
	 */
494 lars 205
	public function serie($serien_id)
206
	{
207
		$items = array();
208
		// ME: erstmal gucken, ob es eine Serie zu einem Ordner ist
209
		$sql = "SELECT DISTINCT
210
                    a.ID as aID
211
                FROM
212
                    shop_link_table slt,
213
                    directory d
214
                JOIN
215
                    artikel a
216
                ON
217
                    a.Father = d.id
218
                WHERE
495 lars 219
                    slt.Father = ".$serien_id."
494 lars 220
                AND
221
                    d.id = slt.id
222
                AND
223
                    verwendung = 'd2s'";
224
 
225
		$q = $this->db->query($sql);
226
		if ($q)
227
		{
228
			while ($r = $q->unbuffered_row('array'))
229
			{
230
				// alle Artikel zum Ordner holen
231
				$item = $this->get_item_info($r['aID'], true);
232
				if (is_array($item))
233
				{
234
					$items[] = $item;
235
				}
236
 
237
			}
238
		}
495 lars 239
		$sql = "SELECT DISTINCT
240
				id
241
			FROM
242
				shop_link_table
243
			WHERE
244
				Father = ".$serien_id."
245
			AND
246
				verwendung = 'a2s'";
494 lars 247
		$q = $this->db->query($sql);
248
		if ($q)
249
		{
250
			while ($r = $q->unbuffered_row('array'))
251
			{
252
				$item = $this->get_item_info($r['id'], true);
253
				if (is_array($item) && !in_array($item, $items))
254
				{
255
					$items[] = $item;
256
				}
257
			}
258
		}
259
 
260
		return $items;
261
	}
5 lars 262
}
263
 
2008 lars 264
?>