Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
3 lars 1
<?php
2
/* $Id: Basket.class.php 7 2007-04-11 07:43:23Z markus $ */
3
 
4
/**
5
 * Basket handling class, for Shop modules.
6
 *
7
 * This class handles the loading of any function needed by
8
 * a module e.g. Shop or any else. You easy could instance
9
 * this in the main Class of the module.
10
 * @see Shop()
11
 *
12
 * PHP versions 4 and 5
13
 *
14
 * LICENSE: This source file is subject to version 3.0 of the PHP license
15
 * that is available through the world-wide-web at the following URI:
16
 * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
17
 * the PHP License and are unable to obtain it through the web, please
18
 * send a note to license@php.net so we can mail you a copy immediately.
19
 *
20
 * @category   CMS
21
 * @package    Basket
22
 * @author     Markus Niewerth <markus@weban.de>
23
 * @copyright  1997-2005 The PHP Group
24
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
25
 * @since      File available since Release 1.0.1
26
 */
27
 
28
 
29
// {{{ constants
30
 
31
	 // -------------------
32
	 // IF any put in here!
33
	 // -------------------
34
 
35
// }}}
36
// {{{ GLOBALS
37
 
38
	 // -------------------
39
	 // IF any put in here!
40
	 // -------------------
41
 
42
// }}}
43
// {{{ Functions
44
 
45
/**
46
 * Funktions Verwaltungs Modul
47
 *
48
 * This class handles the loading of any function needed by
49
 * a module e.g. Shop or any else. You easy could instance
50
 * this in the main Class of the module.
51
 * @see Shop()
52
 *
53
 * Diese Klasse behandelt das laden von Funktionen, die mit hilfe
54
 * von listFiles aufgelistet werden, oder durch �bergabe von
55
 * parametern, geladen werden k�nnen.
56
 *
57
 * @category   CMS
58
 * @package    Weban_Shop
59
 * @author     Markus Niewerth 	<markus@weban.de>
60
 * @author     Lars Tiefland 	<tiefland@weban.de>
61
 * @copyright  1997-2007 Webagentur Niewerth
62
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
63
 * @link       http://server2/intranet/3_0.txt
64
 * @see        Functions
65
 * @since      Class available since Release 1.1
66
 */
67
 
68
 
69
class Basket  {
70
 
71
	// {{{ properties
72
 
73
	/**
74
	 * Holds all file/function names.
75
	 *
76
	 * @var array
77
     */
78
	var $basketItems;
79
 
80
	/**
81
	 * Extensions to load.
82
	 *
83
	 * This parameter is needed in the file loader/includer.
84
	 *
85
	 * @var string
86
	 * @access private
87
     */
88
	var $_basketItems;
89
 
90
	// }}}
91
	// {{{ Functions()
92
 
93
	function Basket ()
94
	{
95
		// Init needed Parameters.
96
		$this->basketItems 		= array();
97
		$this->_basketItems 	= &$this->basketItems;
98
	}
99
	// }}}
100
	// {{{ factory()
101
 
102
	function &factory ($_option='new')
103
	{
104
		if( strlen($_option) < 3 ) {
105
			return false;
106
		} elseif($_option == 'new') {
107
			return new Basket();
108
		}
109
		elseif ($_option=="add")
110
		{
111
			return $this->_add($_GET["ID"], NULL);
112
		}
113
		elseif($_option=="update")
114
		{
115
			return $this->_update($_GET["ID"], NULL);
116
		} else {
117
			return false;
118
		}
119
	}
120
	// }}}
121
	// {{{ _engine()
122
 
123
	function _engine ($_type, $_file)
124
	{
125
		switch ($_type) {
126
			case 'add':
127
				return add($itemID, $option);
128
				break;
129
			case "update":
130
				break;
131
			case 'remove':
132
				return remove($item);
133
				break;
134
		}
135
		return true;
136
	}
137
	// }}}
138
	// {{{ _load()
139
	function _load ($_function)
140
	{
141
		return true;
142
	}
143
	// }}}
144
	// {{{ _remove()
145
 
146
	function _remove ($itemID)
147
	{
148
		//return 0;
149
		if(in_array($itemID, $_SESSION["SHOP"]["BASKET"]))
150
		{
151
			unset($this->basketItems[$itemID]);
152
			return true;
153
		}
154
		else
155
		{
156
			return false;
157
		}
158
	}
159
	// }}}
160
	// {{{ _add()
161
 
162
/**
163
 * adds an article to the basket
164
 * @param int $itemID
165
 * @param mixed $option
166
 * @return object
167
 */
168
	function _add ($itemID, $option=NULL)
169
	{
170
		$item = array
171
				(
172
					"ID"	=> $itemID,
173
					"Menge" => 1
174
				);
175
 
176
		if ($option)
177
		{
178
			$item["option"] = $option;
179
		}
180
 
181
		$this->basketItems[$itemID]=$item;
182
		$_SESSION["SHOP"]["BASKET"]=$this->basketItems;
183
		return $this;
184
		//return 1;
185
	}
186
	// }}}
187
/**
188
 * updates an article in the basket
189
 * @param int $itemID
190
 * @return object
191
 */
192
 
193
	function _update($itemID)
194
	{
195
		var_dump($_GET["Menge"]);
196
		if (is_array($_GET["Menge"]))
197
		{
198
			foreach(array_keys($_GET["Menge"]) as $elem)
199
			{
200
//				if ($_SESSION["SHOP"]["BASKET"][$elem])
201
				{
202
					$_SESSION["SHOP"]["BASKET"][$elem]["Menge"] = $_GET[Menge][$elem] * 1;
203
					$this->basketItems=$_SESSION["SHOP"]["BASKET"];
204
					if ($_SESSION["SHOP"]["BASKET"][$elem]["Menge"] == 0)
205
					{
206
						unset($_SESSION["SHOP"]["BASKET"][$elem]);
207
					}
208
				}
209
			}
210
		}
211
		return $this;
212
	}
213
 
214
/**
215
 * get the basket content
216
 * @return array
217
 */
218
	function getContent()
219
	{
220
		// Itemtemplate auslesen
221
		$template = file_get_contents($basketContentTepmlatePath."2/2.htm");
222
 
223
		foreach($_SESSION['SHOP']['BASKET'] as $basketItem)
224
		{
225
			if ($basketItem['Versand']) { continue; }
226
 
227
			$basketItem['optionen'] = $this->basketItemOptions($basketItem);
228
 
229
			// Artikelinformationen holen
230
			$item=getItem($basketItem['ID']);
231
 
232
			$AddOnItems	= getAddOnItems($basketItem['ID']);
233
 
234
			/* ************************************************************************ */
235
			// AddOnItemstemplate auslesen
236
			$template1 = file_get_contents($basketContentTepmlatePath."5/5.htm");
237
 
238
			$buffer=array();
239
			foreach($AddOnItems as $AddOnItem)
240
			{
241
				$buffer[] = templateContent($AddOnItem, $template1);
242
			}
243
 
244
			$buffer['AddOnItems'] = implode("",$buffer);
245
 
246
			// AddOnItemContainertemplate auslesen
247
			$template2 = file_get_contents($basketContentTepmlatePath."6/6.htm");
248
 
249
			$item['AddOnItems'] = templateContent($buffer, $template2);
250
 
251
			/* ************************************************************************ */
252
 
253
			$item=array_merge
254
			(
255
				$item,
256
				$basketItem
257
			);
258
 
259
			$item['gesPreis'] = getBasketItemSumme($item);
260
			$item['preis'] = numberFormat($item['preis'])." &euro;";
261
 
262
			// Artikel ausgeben
263
			return $item;
264
		}
265
	}
266
 
267
/**
268
 * adds an article to the basket
269
 * @param int $itemID
270
 * @return array
271
 */
272
	function basketItemOptions($basketItem)
273
	{
274
		if (is_array($basketItem['option']))
275
		{
276
			$buffer=array();
277
			$itemOption=getOptions($basketItem['ID']);	// Marked for replace
278
			foreach(array_keys($basketItem['option']) as $id)
279
			{
280
				$buffer[]=$itemOption[$id]['options'][$basketItem['option'][$id]]['optionName'];
281
			}
282
			$buffer="(".implode(", ",$buffer).")";
283
			return $buffer;
284
		}
285
	}
286
 
287
 
288
	function getBasketSumme($noVersand=false)
289
	{
290
		$buffer=0;
291
		foreach($_SESSION['SHOP']['BASKET'] as $basketItem)
292
		{
293
			if (($noVersand == true) and ($basketItem['Versand']))
294
			{
295
				return $buffer;
296
			}else{
297
				$item=getItem($basketItem['ID'], true); 		// Marked for replace
298
				$buffer = $buffer+$basketItem['Menge']*$item['preis'];
299
			}
300
		}
301
		return $buffer;
302
	}
303
 
304
	function getBasketSummeMWST($mwst=19, $netOpt=true)
305
	{
306
		if ($netOpt)  // Von Hundert
307
		{
308
			return $this->getBasketSumme() / (100) * $mwst;
309
		} else {	  // Auf Hundert
310
			return $this->getBasketSumme() / (100 + $mwst) * $mwst;
311
		}
312
	}
313
 
314
	function getBasketSummeBrutto($mwst=19)
315
	{
316
		return $this->getBasketSumme() + $this->getBasketSummeMWST($mwst,true);
317
	}
318
 
319
	function getBasketSummeNetto($mwst=19)
320
	{
321
		return $this->getBasketSumme() - $this->getBasketSummeMWST($mwst,false);
322
	}
323
 
324
	function getBasketItemSumme($item)
325
	{
326
		return number_format($item["preis"] * $item['Menge'],2,',','.'). ' &euro;';
327
	}
328
 
329
	function getBasketItemsCount()
330
	{
331
		$buffer=0;
332
		foreach($_SESSION['SHOP']['BASKET'] as $basketItem)
333
		{
334
			if ($basketItem['Versand'])
335
			{}
336
			else
337
			{ $buffer++; }
338
		}
339
		return $buffer;
340
	}
341
 
342
	function getBasketItemPartsCount()
343
	{
344
		$buffer=0;
345
		foreach($_SESSION['SHOP']['BASKET'] as $basketItem)
346
		{
347
			if ($basketItem['Versand'])
348
			{}
349
			else
350
			{ $buffer+=$basketItem['Menge']; }
351
		}
352
		return $buffer;
353
	}
354
 
355
	function getBasketItems()
356
	{
357
		$buffer=array();
358
 
359
		foreach($_SESSION['SHOP']['BASKET'] as $basketItemID => $basketData)
360
		{
361
			$buf = array_merge
362
					(
363
						getItem($basketItemID), 	// Marked for replace
364
						$basketData
365
					);
366
 
367
			$buf["kurzbezeichnung"].=" ".$this->basketItemOptions($basketData);
368
 
369
 
370
 
371
			$buf["basketItemSumme"] = $this->getBasketItemSumme($buf);
372
			$buffer[] = $buf;
373
		}
374
 
375
		return $buffer;
376
	}
377
 
378
	function getBasketItemGewicht($item)
379
	{
380
		return $item['gewicht'] * $item['Menge'];
381
	}
382
 
383
	function getBasketGewicht()
384
	{
385
		$query="
386
			SELECT
387
				ID,
388
				gewicht as gewicht
389
			FROM
390
				artikel
391
			WHERE
392
				Language = 'DE'
393
			AND
394
				ID = ".implode(" or ID=",array_keys($_SESSION['SHOP']['BASKET']));
395
		$result = mysql_query ($query) or die (mysql_errno().": ".mysql_error());
396
		$temp=0;
397
		while($zeile=mysql_fetch_array($result))
398
		{
399
			$temp+= $_SESSION['SHOP']['BASKET'][$zeile['ID']]['Menge'] * $zeile['gewicht'];
400
		}
401
		if ($temp==0)
402
		{
403
			return 10;
404
		}
405
		else
406
		{
407
			return $temp;
408
		}
409
	}
410
 
411
}
412
 
413
/*
414
 * Local variables:
415
 * tab-width: 4
416
 * c-basic-offset: 4
417
 * c-hanging-comment-ender-p: nil
418
 * End:
419
 */
420
?>