Quick Search:

View

Revision:

Diff

Diff from 583 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/osCommerce/branches/hpdl/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
555
17       global $osC_Database, $osC_Services, $osC_Language, $osC_Image;
hpdl
210
18
hpdl
246
19       if (!empty($id)) {
hpdl
583
20         $Qproduct = $osC_Database->query('select p.products_id as id, p.products_quantity as quantity, 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, i.image from :table_products p left join :table_products_images i on (p.products_id = i.products_id and i.products_images_groups_id = :products_images_groups_id and i.default_flag = :default_flag), :table_products_description pd where');
hpdl
246
21         $Qproduct->bindTable(':table_products', TABLE_PRODUCTS);
hpdl
556
22         $Qproduct->bindTable(':table_products_images', TABLE_PRODUCTS_IMAGES);
hpdl
246
23         $Qproduct->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
hpdl
245
24
hpdl
246
25         if (is_numeric($id) || ereg('[0-9]+[{[0-9]+}[0-9]+]*$', $id)) {
26           $Qproduct->appendQuery('p.products_id = :products_id');
27           $Qproduct->bindInt(':products_id', tep_get_prid($id));
28         } else {
29           $Qproduct->appendQuery('pd.products_keyword = :products_keyword');
30           $Qproduct->bindValue(':products_keyword', $id);
31         }
hpdl
245
32
hpdl
246
33         $Qproduct->appendQuery('and p.products_status = 1 and p.products_id = pd.products_id and pd.language_id = :language_id');
hpdl
583
34         $Qproduct->bindInt(':products_images_groups_id', $osC_Image->getID('product_info'));
35         $Qproduct->bindInt(':default_flag', 1);
hpdl
377
36         $Qproduct->bindInt(':language_id', $osC_Language->getID());
hpdl
246
37         $Qproduct->execute();
hpdl
210
38
hpdl
248
39         if ($Qproduct->numberOfRows() === 1) {
40           $this->_data = $Qproduct->toArray();
hpdl
210
41
hpdl
300
42           $Qcategory = $osC_Database->query('select categories_id from :table_products_to_categories where products_id = :products_id limit 1');
43           $Qcategory->bindTable(':table_products_to_categories', TABLE_PRODUCTS_TO_CATEGORIES);
44           $Qcategory->bindInt(':products_id', $this->_data['id']);
45           $Qcategory->execute();
46
47           $this->_data['category_id'] = $Qcategory->valueInt('categories_id');
48
hpdl
248
49           $Qcheck = $osC_Database->query('select products_attributes_id from :table_products_attributes patrib where products_id = :products_id limit 1');
50           $Qcheck->bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
51           $Qcheck->bindInt(':products_id', $this->_data['id']);
52           $Qcheck->execute();
hpdl
210
53
hpdl
248
54           if ($Qcheck->numberOfRows() === 1) {
55             $this->_data['attributes'] = array();
hpdl
210
56
hpdl
248
57             $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');
58             $Qattributes->bindTable(':table_products_attributes', TABLE_PRODUCTS_ATTRIBUTES);
59             $Qattributes->bindTable(':table_products_options', TABLE_PRODUCTS_OPTIONS);
60             $Qattributes->bindTable(':table_products_options_values', TABLE_PRODUCTS_OPTIONS_VALUES);
61             $Qattributes->bindInt(':products_id', $this->_data['id']);
hpdl
377
62             $Qattributes->bindInt(':language_id', $osC_Language->getID());
63             $Qattributes->bindInt(':language_id', $osC_Language->getID());
hpdl
248
64             $Qattributes->execute();
hpdl
210
65
hpdl
248
66             while ($Qattributes->next()) {
67               $this->_data['attributes'][] = array('options_id' => $Qattributes->valueInt('options_id'),
68                                                    'options_name' => $Qattributes->value('products_options_name'),
69                                                    'options_values_id' => $Qattributes->valueInt('options_values_id'),
70                                                    'options_values_name' => $Qattributes->value('products_options_values_name'),
71                                                    'options_values_price' => $Qattributes->value('options_values_price'),
72                                                    'price_prefix' => $Qattributes->value('price_prefix'));
73             }
hpdl
246
74           }
hpdl
213
75
hpdl
248
76           if ($osC_Services->isStarted('reviews')) {
77             $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');
78             $Qavg->bindTable(':table_reviews', TABLE_REVIEWS);
79             $Qavg->bindInt(':products_id', $this->_data['id']);
hpdl
377
80             $Qavg->bindInt(':languages_id', $osC_Language->getID());
hpdl
248
81             $Qavg->execute();
hpdl
213
82
hpdl
248
83             $this->_data['reviews_average_rating'] = round($Qavg->value('rating'));
84           }
hpdl
246
85         }
hpdl
213
86       }
hpdl
210
87     }
88
hpdl
246
89     function isValid() {
90       if (empty($this->_data)) {
91         return false;
92       }
93
94       return true;
95     }
96
hpdl
213
97     function getData($key) {
98       if (isset($this->_data[$key])) {
99         return $this->_data[$key];
100       }
101
102       return false;
103     }
104
hpdl
210
105     function getID() {
106       return $this->_data['id'];
107     }
108
109     function getTitle() {
110       return $this->_data['name'];
111     }
112
113     function getDescription() {
114       return $this->_data['description'];
115     }
116
117     function hasModel() {
118       return (isset($this->_data['model']) && !empty($this->_data['model']));
119     }
120
121     function getModel() {
122       return $this->_data['model'];
123     }
124
hpdl
248
125     function hasKeyword() {
126       return (isset($this->_data['keyword']) && !empty($this->_data['keyword']));
127     }
128
hpdl
246
129     function getKeyword() {
130       return $this->_data['keyword'];
131     }
132
hpdl
248
133     function hasTags() {
134       return (isset($this->_data['tags']) && !empty($this->_data['tags']));
135     }
136
137     function getTags() {
138       return $this->_data['tags'];
139     }
140
hpdl
210
141     function getPrice() {
142     }
143
144     function getPriceFormated($with_special = false) {
145       global $osC_Services, $osC_Specials, $osC_Currencies;
146
147       if (($with_special === true) && $osC_Services->isStarted('specials') && ($new_price = $osC_Specials->getPrice($this->_data['id']))) {
148         $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>';
149       } else {
150         $price = $osC_Currencies->displayPrice($this->_data['price'], $this->_data['tax_class_id']);
151       }
152
153       return $price;
154     }
155
hpdl
300
156     function getCategoryID() {
157       return $this->_data['category_id'];
158     }
159
hpdl
210
160     function hasImage() {
161       return (isset($this->_data['image']) && !empty($this->_data['image']));
162     }
163
164     function getImage() {
165       return $this->_data['image'];
166     }
167
168     function hasURL() {
169       return (isset($this->_data['url']) && !empty($this->_data['url']));
170     }
171
172     function getURL() {
173       return $this->_data['url'];
174     }
175
176     function getDateAvailable() {
177       return $this->_data['date_available'];
178     }
179
180     function getDateAdded() {
181       return $this->_data['date_added'];
182     }
183
184     function hasAttributes() {
185       return (isset($this->_data['attributes']) && !empty($this->_data['attributes']));
186     }
187
188     function &getAttributes() {
189       global $osC_Currencies;
190
191       $array = array();
192
193       foreach ($this->_data['attributes'] as $attribute) {
194         if (!isset($array[$attribute['options_id']])) {
195           $array[$attribute['options_id']] = array('options_name' => $attribute['options_name'],
196                                                    'values' => array(),
197                                                    'data' => array());
198         }
199
200         $array[$attribute['options_id']]['values'][] = array('options_values_id' => $attribute['options_values_id'],
201                                                              'options_values_name' => $attribute['options_values_name'],
202                                                              'options_values_price' => $attribute['options_values_price'],
203                                                              'price_prefix' => $attribute['price_prefix']);
204
205         $array[$attribute['options_id']]['data'][] = array('id' => $attribute['options_values_id'],
206                                                            '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']) . ')' : ''));
207       }
208
209       return $array;
210     }
211
212     function checkEntry($id) {
213       global $osC_Database;
214
hpdl
246
215       $Qcheck = $osC_Database->query('select p.products_id from :table_products p');
hpdl
210
216       $Qcheck->bindTable(':table_products', TABLE_PRODUCTS);
hpdl
245
217
218       if (is_numeric($id) || ereg('[0-9]+[{[0-9]+}[0-9]+]*$', $id)) {
hpdl
246
219         $Qcheck->appendQuery('where p.products_id = :products_id');
hpdl
245
220         $Qcheck->bindInt(':products_id', tep_get_prid($id));
221       } else {
hpdl
246
222         $Qcheck->appendQuery(', :table_products_description pd where pd.products_keyword = :products_keyword and pd.products_id = p.products_id');
223         $Qcheck->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
224         $Qcheck->bindValue(':products_keyword', $id);
hpdl
245
225       }
226
hpdl
246
227       $Qcheck->appendQuery('and p.products_status = 1 limit 1');
hpdl
210
228       $Qcheck->execute();
229
230       if ($Qcheck->numberOfRows() === 1) {
231         return true;
232       }
233
234       return false;
235     }
236
237     function incrementCounter() {
hpdl
377
238       global $osC_Database, $osC_Language;
hpdl
210
239
240       $Qupdate = $osC_Database->query('update :table_products_description set products_viewed = products_viewed+1 where products_id = :products_id and language_id = :language_id');
241       $Qupdate->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
242       $Qupdate->bindInt(':products_id', tep_get_prid($this->_data['id']));
hpdl
377
243       $Qupdate->bindInt(':language_id', $osC_Language->getID());
hpdl
210
244       $Qupdate->execute();
245     }
hpdl
211
246
247     function &getListingNew() {
hpdl
555
248       global $osC_Database, $osC_Language, $osC_Image;
hpdl
211
249
hpdl
583
250       $Qproducts = $osC_Database->query('select p.products_id, p.products_price, p.products_tax_class_id, p.products_date_added, pd.products_name, pd.products_keyword, m.manufacturers_name, i.image from :table_products p left join :table_manufacturers m on (p.manufacturers_id = m.manufacturers_id) left join :table_products_images i on (p.products_id = i.products_id and i.products_images_groups_id = :products_images_groups_id and i.default_flag = :default_flag), :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');
hpdl
211
251       $Qproducts->bindTable(':table_products', TABLE_PRODUCTS);
252       $Qproducts->bindTable(':table_manufacturers', TABLE_MANUFACTURERS);
hpdl
556
253       $Qproducts->bindTable(':table_products_images', TABLE_PRODUCTS_IMAGES);
hpdl
211
254       $Qproducts->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
hpdl
556
255       $Qproducts->bindInt(':products_images_groups_id', $osC_Image->getID('default'));
hpdl
583
256       $Qproducts->bindInt(':default_flag', 1);
hpdl
377
257       $Qproducts->bindInt(':language_id', $osC_Language->getID());
hpdl
211
258       $Qproducts->setBatchLimit($_GET['page'], MAX_DISPLAY_PRODUCTS_NEW);
259       $Qproducts->execute();
260
261       return $Qproducts;
262     }
hpdl
210
263   }
264 ?>