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 get_product_rows($ids, $use_search_and_filters = false, $pagination = null, $use_menu_params = false) { if ($ids != null && is_array($ids) == false) { $ids = array($ids); } $db = JFactory::getDbo(); $query = $db->getQuery(true); $model_options = WDFHelper::get_model('options'); $options = $model_options->get_options(); $module_filters = WDFInput::get('module_filters'); $decimals = $options->option_show_decimals == 1 ? 2 : 0; $row_default_currency = WDFDb::get_row('currencies', $db->quoteName('default') . ' = 1'); //get products data $query->clear(); $query = $this->add_product_rows_query_select($query); $query = $this->add_product_rows_query_from($query); if ($ids != null) { $query = $this->add_product_rows_query_where_ids($query, $ids); } if ($use_search_and_filters == true) { $query = $this->add_product_rows_query_where_filter_name($query); $query = $this->add_product_rows_query_where_filter_category($query); if ($query === false) { WDFHelper::redirect('systempages', 'displayerror', '', 'code=2'); } $query = $this->add_product_rows_query_where_filter_manufacturer($query); $query = $this->add_product_rows_query_where_filter_price($query); $query = $this->add_product_rows_query_where_filter_date_added($query); $query = $this->add_product_rows_query_where_filter_minimum_rating($query); $query = $this->add_product_rows_query_where_filter_tags($query); $query = $this->add_product_rows_query_order($query); } else { if ($use_menu_params == true) { $query = $this->add_product_rows_query_where_filter_menu_params($query); } } $query->where('T_PRODUCTS.published = 1'); if ($pagination != null) { $db->setQuery($query, $pagination->limitstart, $pagination->limit); } else { $db->setQuery($query); } $product_rows = $db->loadObjectList(); if ($db->getErrorNum()) { return false; } // additional data foreach ($product_rows as $product_row) { // url $product_row->url = JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displayproduct&product_id=' . $product_row->id); $product_row->url_absolute = WDFUrl::get_site_url() . 'index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displayproduct&product_id=' . $product_row->id; // image $images = WDFJson::decode($product_row->images); $product_row->image = empty($images) == false ? $images[0] : ''; //videos $product_row->videos = WDFJson::decode($product_row->videos); // label $label_thumbs = WDFJson::decode($product_row->label_thumb); $product_row->label_thumb = empty($label_thumbs) == false ? $label_thumbs[0] : ''; // rating $product_row->rating_url = ''; $product_row->rating_msg = ''; if ($options->feedback_enable_guest_feedback == 0 && WDFHelper::is_user_logged_in() == false) { $product_row->can_rate = 0; $product_row->rating_msg = WDFText::get('MSG_LOG_IN_TO_RATE'); } elseif ($product_row->can_rate == 0) { $product_row->rating_msg = WDFText::get('MSG_YOU_HAVE_ALREADY_RATED_THIS_PRODUCT'); } else { $product_row->rating_url = WDFUrl::get_site_url() . 'index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=ajax_rate_product&product_id=' . $product_row->id; } // category $product_row->category_url = $product_row->category_id == 0 ? '' : JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=categories&task=displaycategory&category_id=' . $product_row->category_id); // manufacturer $product_row->manufacturer_url = $product_row->manufacturer_id == 0 ? '' : JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=manufacturers&task=displaymanufacturer&manufacturer_id=' . $product_row->manufacturer_id); $manufacturer_logos = WDFJson::decode($product_row->manufacturer_logo); $product_row->manufacturer_logo = empty($manufacturer_logos) == true ? '' : $manufacturer_logos[0]; // prices $product_row->price_text = number_format($product_row->price, $decimals); $product_row->market_price_text = $product_row->market_price != '0.00' ? number_format($product_row->market_price, $decimals) : ''; // currency symbols if ($row_default_currency->sign_position == 0) { $product_row->price_text = $row_default_currency->sign . $product_row->price_text; $product_row->market_price_text = $product_row->market_price != '0.00' ? $row_default_currency->sign . $product_row->market_price_text : ''; } else { $product_row->price_text = $product_row->price_text . $row_default_currency->sign; $product_row->market_price_text = $product_row->market_price != '0.00' ? $product_row->market_price_text . $row_default_currency->sign : ''; } $product_row->currency_sign = $row_default_currency->sign; // availability if ($product_row->unlimited == 1) { $product_row->is_available = true; $product_row->available_msg = WDFText::get('IN_STOCK'); $product_row->stock_class = 'class="wd_in_stock"'; } elseif ($product_row->amount_in_stock > 0) { $product_row->is_available = true; $product_row->available_msg = WDFText::get('IN_STOCK') . ': ' . $product_row->amount_in_stock; $product_row->stock_class = 'class="wd_in_stock"'; } else { $product_row->is_available = false; $product_row->available_msg = WDFText::get('OUT_OF_STOCK'); $product_row->stock_class = 'class="wd_out_of_stock"'; } // checkout privileges $products_in_stock = $product_row->amount_in_stock > 0 || $product_row->unlimited == 1 ? true : false; $product_row->can_checkout = $products_in_stock == true ? true : false; // compare url $product_row->compare_url = JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displaycompareproducts&product_id=' . $product_row->id); // review urls $product_row->reviews_url = JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displayproductreviews&product_id=' . $product_row->id); $product_row->write_review_url = JRoute::_('index.php?option=com_' . WDFHelper::get_com_name() . '&controller=products&task=displayproductreviews&product_id=' . $product_row->id . '&write_review=1'); } return $product_rows; }
public function save_product_review() { $app = JFactory::getApplication(); $model_options = WDFHelper::get_model('options'); $options = $model_options->get_options(); // check is guest feedback enabled if ($options->feedback_enable_guest_feedback != 0 || WDFHelper::is_user_logged_in() == true) { $j_user = JFactory::getUser(); $feedback_published = $options->feedback_publish_review_when_added == 1 ? 1 : 0; $product_id = WDFInput::get('product_id', 0, 'int'); $feedback_user_name = $j_user ? $j_user->name : ''; $feedback_sender_name = WDFInput::get('user_name'); $feedback_text = JRequest::getVar('review_text', '', 'post', 'string', JREQUEST_ALLOWRAW); if ($feedback_sender_name == '' || $feedback_text == '') { $app->enqueueMessage(WDFText::get('MSG_FAILED_TO_SUBMIT_REVIEW'), 'error'); } else { $row_feedback = WDFDb::get_table_instance('feedback'); $row_feedback->j_user_id = $j_user->id; $row_feedback->user_ip_address = WDFUtils::get_client_ip_address(); $row_feedback->user_name = $feedback_user_name; $row_feedback->sender_name = $feedback_sender_name; $row_feedback->product_id = $product_id; $row_feedback->date = date('Y-m-d H:i:s'); $row_feedback->text = $feedback_text; $row_feedback->published = $feedback_published; if ($row_feedback->store() == false) { $app->enqueueMessage(WDFText::get('MSG_FAILED_TO_SUBMIT_REVIEW'), 'error'); } else { $msg = $feedback_published == true ? WDFText::get('MSG_REVIEW_PUBLISHED') : WDFText::get('MSG_REVIEW_SUBMITTED'); $this->sent_review_notification_email($product_id); $app->enqueueMessage($msg, 'message'); } } } WDFHelper::redirect('products', 'displayproductreviews&product_id=' . $product_id); }