Quick Search:

View

Revision:

Diff

Diff from 248 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/osCommerce/trunk/oscommerce/includes/classes/product.php

Annotated File View

hpdl
210
1 <?php
2 /*
3   $Id: account.php 207 2005-09-26 01:29:31 +0200 (Mo, 26 Sep 2005) hpdl $
4
5   osCommerce, Open Source E-Commerce Solutions
6   http://www.oscommerce.com
7
8   Copyright (c) 2005 osCommerce
9
10   Released under the GNU General Public License
11 */
12
13   class osC_Product {
14     var $_data = array();
15
16     function osC_Product($id) {
hpdl
213
17       global $osC_Database, $osC_Services;
hpdl
210
18
hpdl
246
19       if (!empty($id)) {
20         $Qproduct = $osC_Database->query('select p.products_id as id, p.products_quantity as quantity, p.products_image as image, p.products_price as price, p.products_tax_class_id as tax_class_id, p.products_date_added as date_added, p.products_date_available as date_available, p.manufacturers_id, pd.products_name as name, pd.products_description as description, pd.products_model as model, pd.products_keyword as keyword, pd.products_tags as tags, pd.products_url as url from :table_products p, :table_products_description pd where');
21         $Qproduct->bindTable(':table_products', TABLE_PRODUCTS);
22         $Qproduct->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
hpdl
245
23
hpdl
246
24         if (is_numeric($id) || ereg('[0-9]+[{[0-9]+}[0-9]+]*$', $id)) {
25           $Qproduct->appendQuery('p.products_id = :products_id');
26           $Qproduct->bindInt(':products_id', tep_get_prid($id));
27         } else {
28           $Qproduct->appendQuery('pd.products_keyword = :products_keyword');
29           $Qproduct->bindValue(':products_keyword', $id);
30         }
hpdl
245
31
hpdl
246
32         $Qproduct->appendQuery('and p.products_status = 1 and p.products_id = pd.products_id and pd.language_id = :language_id');
33         $Qproduct->bindInt(':language_id', $_SESSION['languages_id']);
34         $Qproduct->execute();
hpdl
210
35
hpdl
248
36         if ($Qproduct->numberOfRows() === 1) {
37           $this->_data = $Qproduct->toArray();
hpdl
210
38
hpdl
248
39           $Qcheck = $osC_Database->query('select products_attributes_id from :table_products_attributes patrib where products_id = :products_id limit 1');
40           $Qcheck->bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
41           $Qcheck->bindInt(':products_id', $this->_data['id']);
42           $Qcheck->execute();
hpdl
210
43
hpdl
248
44           if ($Qcheck->numberOfRows() === 1) {
45             $this->_data['attributes'] = array();
hpdl
210
46
hpdl
248
47             $Qattributes = $osC_Database->query('select pa.*, po.*, pov.* from :table_products_attributes pa, :table_products_options po, :table_products_options_values pov where pa.products_id = :products_id and pa.options_id = po.products_options_id and po.language_id = :language_id and pa.options_values_id = pov.products_options_values_id and pov.language_id = :language_id order by po.products_options_name, pov.products_options_values_name');
48             $Qattributes->bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
49             $Qattributes->bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
50             $Qattributes->bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
51             $Qattributes->bindInt(':products_id', $this->_data['id']);
52             $Qattributes->bindInt(':language_id', $_SESSION['languages_id']);
53             $Qattributes->bindInt(':language_id', $_SESSION['languages_id']);
54             $Qattributes->execute();
hpdl
210
55
hpdl
248
56             while ($Qattributes->next()) {
57               $this->_data['attributes'][] = array('options_id' => $Qattributes->valueInt('options_id'),
58                                                    'options_name' => $Qattributes->value('products_options_name'),
59                                                    'options_values_id' => $Qattributes->valueInt('options_values_id'),
60                                                    'options_values_name' => $Qattributes->value('products_options_values_name'),
61                                                    'options_values_price' => $Qattributes->value('options_values_price'),
62                                                    'price_prefix' => $Qattributes->value('price_prefix'));
63             }
hpdl
246
64           }
hpdl
213
65
hpdl
248
66           if ($osC_Services->isStarted('reviews')) {
67             $Qavg = $osC_Database->query('select avg(reviews_rating) as rating from :table_reviews where products_id = :products_id and languages_id = :languages_id and reviews_status = 1');
68             $Qavg->bindTable(':table_reviews', TABLE_REVIEWS);
69             $Qavg->bindInt(':products_id', $this->_data['id']);
70             $Qavg->bindInt(':languages_id', $_SESSION['languages_id']);
71             $Qavg->execute();
hpdl
213
72
hpdl
248
73             $this->_data['reviews_average_rating'] = round($Qavg->value('rating'));
74           }
hpdl
246
75         }
hpdl
213
76       }
hpdl
210
77     }
78
hpdl
246
79     function isValid() {
80       if (empty($this->_data)) {
81         return false;
82       }
83
84       return true;
85     }
86
hpdl
213
87     function getData($key) {
88       if (isset($this->_data[$key])) {
89         return $this->_data[$key];
90       }
91
92       return false;
93     }
94
hpdl
210
95     function getID() {
96       return $this->_data['id'];
97     }
98
99     function getTitle() {
100       return $this->_data['name'];
101     }
102
103     function getDescription() {
104       return $this->_data['description'];
105     }
106
107     function hasModel() {
108       return (isset($this->_data['model']) && !empty($this->_data['model']));
109     }
110
111     function getModel() {
112       return $this->_data['model'];
113     }
114
hpdl
248
115     function hasKeyword() {
116       return (isset($this->_data['keyword']) && !empty($this->_data['keyword']));
117     }
118
hpdl
246
119     function getKeyword() {
120       return $this->_data['keyword'];
121     }
122
hpdl
248
123     function hasTags() {
124       return (isset($this->_data['tags']) && !empty($this->_data['tags']));
125     }
126
127     function getTags() {
128       return $this->_data['tags'];
129     }
130
hpdl
210
131     function getPrice() {
132     }
133
134     function getPriceFormated($with_special = false) {
135       global $osC_Services, $osC_Specials, $osC_Currencies;
136
137       if (($with_special === true) && $osC_Services->isStarted('specials') && ($new_price = $osC_Specials->getPrice($this->_data['id']))) {
138         $price = '<s>' . $osC_Currencies->displayPrice($this->_data['price'], $this->_data['tax_class_id']) . '</s> <span class="productSpecialPrice">' . $osC_Currencies->displayPrice($new_price, $this->_data['tax_class_id']) . '</span>';
139       } else {
140         $price = $osC_Currencies->displayPrice($this->_data['price'], $this->_data['tax_class_id']);
141       }
142
143       return $price;
144     }
145
146     function hasImage() {
147       return (isset($this->_data['image']) && !empty($this->_data['image']));
148     }
149
150     function getImage() {
151       return $this->_data['image'];
152     }
153
154     function hasURL() {
155       return (isset($this->_data['url']) && !empty($this->_data['url']));
156     }
157
158     function getURL() {
159       return $this->_data['url'];
160     }
161
162     function getDateAvailable() {
163       return $this->_data['date_available'];
164     }
165
166     function getDateAdded() {
167       return $this->_data['date_added'];
168     }
169
170     function hasAttributes() {
171       return (isset($this->_data['attributes']) && !empty($this->_data['attributes']));
172     }
173
174     function &getAttributes() {
175       global $osC_Currencies;
176
177       $array = array();
178
179       foreach ($this->_data['attributes'] as $attribute) {
180         if (!isset($array[$attribute['options_id']])) {
181           $array[$attribute['options_id']] = array('options_name' => $attribute['options_name'],
182                                                    'values' => array(),
183                                                    'data' => array());
184         }
185
186         $array[$attribute['options_id']]['values'][] = array('options_values_id' => $attribute['options_values_id'],
187                                                              'options_values_name' => $attribute['options_values_name'],
188                                                              'options_values_price' => $attribute['options_values_price'],
189                                                              'price_prefix' => $attribute['price_prefix']);
190
191         $array[$attribute['options_id']]['data'][] = array('id' => $attribute['options_values_id'],
192                                                            'text' => $attribute['options_values_name'] . ($attribute['options_values_price'] != '0' ? ' (' . $attribute['price_prefix'] . $osC_Currencies->displayPrice($attribute['options_values_price'], $this->_data['tax_class_id']) . ')' : ''));
193       }
194
195       return $array;
196     }
197
198     function checkEntry($id) {
199       global $osC_Database;
200
hpdl
246
201       $Qcheck = $osC_Database->query('select p.products_id from :table_products p');
hpdl
210
202       $Qcheck->bindTable(':table_products', TABLE_PRODUCTS);
hpdl
245
203
204       if (is_numeric($id) || ereg('[0-9]+[{[0-9]+}[0-9]+]*$', $id)) {
hpdl
246
205         $Qcheck->appendQuery('where p.products_id = :products_id');
hpdl
245
206         $Qcheck->bindInt(':products_id', tep_get_prid($id));
207       } else {
hpdl
246
208         $Qcheck->appendQuery(', :table_products_description pd where pd.products_keyword = :products_keyword and pd.products_id = p.products_id');
209         $Qcheck->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
210         $Qcheck->bindValue(':products_keyword', $id);
hpdl
245
211       }
212
hpdl
246
213       $Qcheck->appendQuery('and p.products_status = 1 limit 1');
hpdl
210
214       $Qcheck->execute();
215
216       if ($Qcheck->numberOfRows() === 1) {
217         return true;
218       }
219
220       return false;
221     }
222
223     function incrementCounter() {
224       global $osC_Database;
225
226       $Qupdate = $osC_Database->query('update :table_products_description set products_viewed = products_viewed+1 where products_id = :products_id and language_id = :language_id');
227       $Qupdate->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
228       $Qupdate->bindInt(':products_id', tep_get_prid($this->_data['id']));
229       $Qupdate->bindInt(':language_id', $_SESSION['languages_id']);
230       $Qupdate->execute();
231     }
hpdl
211
232
233     function &getListingNew() {
234       global $osC_Database;
235
236       $Qproducts = $osC_Database->query('select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from :table_products p left join :table_manufacturers m on (p.manufacturers_id = m.manufacturers_id), :table_products_description pd where p.products_status = 1 and p.products_id = pd.products_id and pd.language_id = :language_id order by p.products_date_added desc, pd.products_name');
237       $Qproducts->bindTable(':table_products', TABLE_PRODUCTS);
238       $Qproducts->bindTable(':table_manufacturers', TABLE_MANUFACTURERS);
239       $Qproducts->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
240       $Qproducts->bindInt(':language_id', $_SESSION['languages_id']);
241       $Qproducts->setBatchLimit($_GET['page'], MAX_DISPLAY_PRODUCTS_NEW);
242       $Qproducts->execute();
243
244       return $Qproducts;
245     }
hpdl
210
246   }
247 ?>