public function get_row() { $db = JFactory::getDbo(); if (WDFInput::get('type')) { $id = WDFInput::get('id'); } else { $id = WDFInput::get('category_id', WDFParams::get('category_id', 0, 'int')); } $row = WDFDb::get_row('categories', array($db->quoteName('id') . ' = ' . $id, $db->quoteName('published') . ' = 1')); if ($row->id == 0) { $row->id = 0; $row->name = JText::_('root'); } // additional data // path categories $row->path_categories = $this->get_category_path_categories($row->id); // info if (WDFInput::get('type')) { $row->show_info = WDFInput::get('show_info'); } else { $row->show_info = WDFParams::get('show_info', 1); } // image if ($row->images != null) { $images = WDFJson::decode($row->images); $row->image = empty($images) == false ? $images[0] : ''; } else { $row->image = ''; } // subcategories if (WDFInput::get('type')) { $row->show_subcategories = WDFInput::get('show_subcategories'); } else { $row->show_subcategories = WDFParams::get('show_subcategories', 1); } if (WDFInput::get('type')) { $row->subcategories_cols = WDFInput::get('number_columns'); } else { $row->subcategories_cols = WDFParams::get('subcategories_cols', 1); } $subcategories = $this->get_category_subcategories($row->id); if ($subcategories === false) { WDFHelper::redirect('systempages', 'displayerror', '', 'code=2'); } $row->subcategories = $subcategories; if (empty($row->subcategories) == true) { $row->show_subcategories = 0; } // category tree if (WDFInput::get('type')) { $row->show_tree = WDFInput::get('show_path'); } else { $row->show_tree = WDFParams::get('show_tree', 1); } // products and count if (WDFInput::get('type')) { $row->show_products = WDFInput::get('show_products'); } else { $row->show_products = WDFParams::get('show_products', 1); } if (WDFInput::get('type')) { $row->products_count = WDFInput::get('products_count'); } else { $row->products_count = WDFParams::get('products_count'); } $row->products = array(); if ($row->show_products == 1) { $products = $this->get_category_products($row->id, $row->products_count); if ($products === false) { WDFHelper::redirect('systempages', 'displayerror', '', 'code=2'); } $row->products = $products; } if (empty($row->products) == true) { $row->show_products = 0; } // url view products $row->url_view_products = JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displayproducts&search_category_id=' . $row->id); return $row; }
private function add_product_rows_query_where_filter_tags(JDatabaseQuery $query) { $db = JFactory::getDbo(); $model_options = WDFHelper::get_model('options'); $options = $model_options->get_options(); $filters_data = $this->get_filters_data(); $module_filters = WDFInput::get('module_filters'); if ($options->search_enable_search == 1 && $options->filter_tags == 1 || $module_filters == 1) { foreach ($filters_data['tags'] as $tag_name) { $query->where('T_PRODUCT_TAGS.tag_names LIKE ' . $db->quote('%,' . $tag_name . ',%')); } } return $query; }
public function ajax_rate_product() { WDFInput::set('tmpl', 'component'); $model_options = WDFHelper::get_model('options'); $options = $model_options->get_options(); $db = JFactory::getDbo(); $query = $db->getQuery(true); $j_user = JFactory::getUser(); $product_id = WDFInput::get('product_id', 0, 'int'); $rating_data = WDFJson::decode(stripslashes(WDFInput::get('rating_data_json'))); $rating = (double) $rating_data->rating; // check privileges $can_rate = true; if ($options->feedback_enable_guest_feedback == 0 && WDFHelper::is_user_logged_in() == false) { $can_rate = false; $msg = WDFText::get('MSG_LOG_IN_TO_RATE'); } else { $query->clear(); $query->select('id'); $query->from('#__ecommercewd_ratings'); if (WDFHelper::is_user_logged_in() == true) { $query->where('j_user_id = ' . $j_user->id); } else { $query->where('user_ip_address = ' . $db->quote(WDFUtils::get_client_ip_address())); } $query->where('product_id = ' . $product_id); $db->setQuery($query); $rating_rows = $db->loadObjectList(); if ($db->getErrorNum()) { $can_rate = false; $msg = WDFText::get('MSG_FAILED_TO_RATE'); } if ($rating_rows != null && count($rating_rows) > 0) { $can_rate = false; $msg = WDFText::get('MSG_YOU_HAVE_ALREADY_RATED_THIS_PRODUCT'); } } if ($can_rate == true) { // save rating $query->clear(); $query->insert('#__ecommercewd_ratings (j_user_id, user_ip_address, product_id, rating,`date`)'); $query_values = array(); $query_values[] = $db->quote($j_user->id); $query_values[] = $db->quote(WDFUtils::get_client_ip_address()); $query_values[] = $db->quote($product_id); $query_values[] = $db->quote($rating); $query_values[] = 'NOW()'; $query->values(implode(',', $query_values)); $db->setQuery($query); $db->query(); if ($db->getErrorNum()) { $msg = WDFText::get('MSG_FAILED_TO_RATE'); } else { $msg = WDFText::get('MSG_SUCCESSFULLY_RATED'); } } // get average rating $query->clear(); $query->select('FORMAT(AVG(rating), 1)'); $query->from('#__ecommercewd_ratings'); $query->where('product_id = ' . $product_id); $db->setQuery($query); $average_rating = $db->loadResult(); if ($db->getErrorNum()) { $msg = $db->getErrorMsg(); } // return data $data = array(); $data['msg'] = $msg; $data['rating'] = $average_rating; echo WDFJson::encode($data); die; }