<?php

	/**
	 * Klasse, die ein Produkt behandelt
	 */
	class wpsg_product extends wpsg_model
	{
		
		/**
		 * Lädt die Daten des Produkts
		 */
		public function load($product_id)
		{
		
			parent::load($product_id);
							
			$this->data = $this->db->fetchRow("SELECT P.* FROM `".WPSG_TBL_PRODUCTS."` AS P WHERE P.`id` = '".wpsg_q($product_id)."' ");

			if ($this->shop->isOtherLang())
			{
			
				$trans_produkt = $this->db->fetchRow("
					SELECT
						P.`id`, P.`name`, P.`beschreibung`, P.`detailname`
					FROM
						`".WPSG_TBL_PRODUCTS."` AS P
					WHERE
						P.`lang_locale` = '".wpsg_q($this->shop->getCurrentLanguage())."' AND
						P.`lang_parent` = '".wpsg_q($product_id)."'
				");
			
				if ($trans_produkt['id'] > 0)
				{
						
					$this->data['name'] = $trans_produkt['name'];
					$this->data['beschreibung'] = $trans_produkt['beschreibung'];
					$this->data['detailname'] = $trans_produkt['detailname'];
						
				}
				
			}
			
			if ($this->data['id'] != $product_id) $this->shop->throwErrorCode('100_5');
			
			return true;
				
		} // public function load($product_id)
		
		/**
		 * Setzt einen Wert in der META Tabelle
		 */
		public function setMeta($meta_key, $meta_value)
		{
				
			$nExistsID = $this->db->fetchOne("SELECT M.`id` FROM `".WPSG_TBL_META."` AS M WHERE M.`meta_table` = 'WPSG_TBL_PRODUCTS' AND M.`meta_key` = '".wpsg_q($meta_key)."' AND `target_id` = '".wpsg_q($this->id)."' ");
				
			if (wpsg_isSizedInt($nExistsID))
			{
		
				$this->db->UpdateQuery(WPSG_TBL_META, array(
					'meta_value' => wpsg_q($meta_value)
				), " `id` = '".wpsg_q($nExistsID)."' ");
		
			}
			else
			{
		
				$this->db->ImportQuery(WPSG_TBL_META, array(
					'target_id' => wpsg_q($this->id),
					'meta_table' => "WPSG_TBL_PRODUCTS",
					'meta_key' => wpsg_q($meta_key),
					'meta_value' => wpsg_q($meta_value)
				));
		
			}
				
		} // public function setMeta($meta_key, $meta_value)
		
		/**
		 * Gibt einen META Value zurück
		 */
		public function getMeta($meta_key)
		{
				
			$meta_value = $this->db->fetchOne("SELECT M.`meta_value` FROM `".WPSG_TBL_META."` AS M WHERE M.`meta_table` = 'WPSG_TBL_PRODUCTS' AND M.`meta_key` = '".wpsg_q($meta_key)."' AND `target_id` = '".wpsg_q($this->id)."' ");
				
			return $meta_value;
				
		} // public function getMeta($meta_key)
		
		/**
		 * Gibt den Namen des Produktes zurück
		 */
		public function getProductName()
		{
									
			return $this->name;
			
		} // public function getProductName()
		
		/**
		 * Gibt die ProduktURL zurück
		 * Siehe auch wpsg_ShopController->getProduktLink (Macht das gleiche, aber beachtet den Basket von welcher URL es hinzugefügt wurde da URL nicht eindeutig)
		 */
		public function getProductURL()
		{
			
			$url = false;
			
			$this->shop->callMods('getProduktlink', array($this->id, &$url));
			
			if ($url === false)
			{
			
				if (wpsg_isSizedInt($this->partikel))
				{
					
					return get_permalink($this->partikel);
					
				}
				else
				{
						
					$basket_url = $this->shop->getURL(wpsg_ShopController::URL_BASKET);
						
					if (strpos($basket_url, "?") > 0)
					{
						
						$basket_url .= "&wpsg_action=showProdukt&produkt_id=".$this->id;
						
					}
					else
					{
						
						$basket_url .= "?wpsg_action=showProdukt&produkt_id=".$this->id;
						
					}
											
					return $basket_url;
						
				}
			
			}
			else
			{
			
				return $url;
			
			}
			
		} // public function getProductURL()
		
		/**
		 * Gibt true zurück, wenn die Zahlungsarten für das Produkt eingeschränkt sind
		 * @return bool 
		 */
		public function hasLimitedPayment()
		{
			
			$arAllowedPayment = explode(',', $this->allowedpayments);
			$arAllowedPayment = wpsg_trim($arAllowedPayment, '0');
			
			if (wpsg_isSizedArray($arAllowedPayment))
			{
				
				return true;
				
			}
			
		} // public function hasLimitedPayment()
				
		/**
		 * Gibt einen Array mit IDs von Zahlungsarten zurück, die für dieses Produkt erlaubt sind
		 * Vorsicht! Wenn alle erlaubt sind gibt es einen leeren Array zurück, deshalb mit hasLimitedPayment vorher prüfen
		 * @return array
		 */
		public function getAllowedPayment()
		{
			
			if (!$this->hasLimitedPayment()) return array();
			else
			{
				
				$arPayment = wpsg_trim((array)explode(',', $this->allowedpayments), '0');
				
				return $arPayment;
				
			}
			
		} // public function getAllowedPayment()
		
		/**
		 * Gibt true zurück, wenn die Versandarten für das Produkt eingeschränkt sind
		 */
		public function hasLimitedShipping()
		{
				
			$arAllowedShipping = explode(',', $this->allowedshipping);
			$arAllowedShipping = wpsg_trim($arAllowedShipping, '0');
			
			if (wpsg_isSizedArray($arAllowedShipping))
			{
		
				return true;
		
			}
				
		} // public function hasLimitedShipping()
		
		/**
		 * Gibt einen Array mit IDs von Versandarten zurück, die für dieses Produkt erlaubt sind
		 * Vorsicht! Wenn alle erlaubt sind gibt es einen leeren Array zurück, deshalb mit hasLimitedPayment vorher prüfen
		 * @return array
		 */
		public function getAllowedShipping()
		{
			
			if (!$this->hasLimitedShipping()) return array();
			else
			{
				
				$arShipping = wpsg_trim((array)explode(',', $this->allowedshipping), '0');
				
				return $arShipping;
				
			}
			
		} // public function getAllowedShipping()
		
	} // class wpsg_product extends wpsg_model

?>