public function json_encode_rows($data) { $rows = array(); foreach ($data as $k => $v) { if (is_array($v)) { $tmp = array(); foreach ($v as $val) { $tmp[] = '"' . json_value_encode($val, 1) . '"'; } $rows[] = '"' . $k . '"' . ':' . '[' . implode(',', $tmp) . ']'; } else { $rows[] = '"' . $k . '"' . ':' . '"' . json_value_encode($v, 1) . '"'; } } return $rows; }
function ajax_attrib_select_and_price() { $db = JFactory::getDBO(); $jshopConfig = JSFactory::getConfig(); $display_price = JRequest::getVar('display_price'); $jshopConfig->setDisplayPriceFront($display_price); $product_id = JRequest::getInt('product_id'); $change_attr = JRequest::getInt('change_attr'); if ($jshopConfig->use_decimal_qty) { $qty = floatval(str_replace(",", ".", JRequest::getVar('qty', 1))); } else { $qty = JRequest::getInt('qty', 1); } if ($qty < 0) { $qty = 1; } $attribs = JRequest::getVar('attr'); if (!is_array($attribs)) { $attribs = array(); } $freeattr = array(); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onBeforeLoadDisplayAjaxAttrib', array(&$product_id, &$change_attr, &$qty, &$attribs, &$freeattr)); $product = JSFactory::getTable('product', 'jshop'); $product->load($product_id); $dispatcher->trigger('onBeforeLoadDisplayAjaxAttrib2', array(&$product)); $attributesDatas = $product->getAttributesDatas($attribs); $product->setAttributeActive($attributesDatas['attributeActive']); $attributeValues = $attributesDatas['attributeValues']; $product->setFreeAttributeActive($freeattr); $attributes = $product->getBuildSelectAttributes($attributeValues, $attributesDatas['attributeSelected'], 1); $rows = array(); foreach ($attributes as $k => $v) { $rows[] = '"id_' . $k . '":"' . json_value_encode($v->selects, 1) . '"'; } $pricefloat = $product->getPrice($qty, 1, 1, 1); $price = formatprice($pricefloat); $available = intval($product->getQty() > 0); $ean = $product->getEan(); $weight = $product->getWeight(); $rows[] = '"price":"' . json_value_encode($price) . '"'; $rows[] = '"pricefloat":"' . $pricefloat . '"'; $rows[] = '"available":"' . $available . '"'; $rows[] = '"ean":"' . json_value_encode($ean) . '"'; $rows[] = '"weight":"' . json_value_encode($weight) . '"'; $qty_in_stock = getDataProductQtyInStock($product); $rows[] = '"qty":"' . json_value_encode(sprintQtyInStock($qty_in_stock)) . '"'; $product->updateOtherPricesIncludeAllFactors(); $dispatcher->trigger('onBeforeDisplayAjaxAttrib', array(&$rows, &$product)); print '{' . implode(",", $rows) . '}'; die; }
/** * get attributes html selects, price for select attribute */ function ajax_attrib_select_and_price() { $db = JFactory::getDBO(); $jshopConfig = JSFactory::getConfig(); $product_id = JRequest::getInt('product_id'); $change_attr = JRequest::getInt('change_attr'); if ($jshopConfig->use_decimal_qty) { $qty = floatval(str_replace(",", ".", JRequest::getVar('qty', 1))); } else { $qty = JRequest::getInt('qty', 1); } if ($qty < 0) { $qty = 0; } $attribs = JRequest::getVar('attr'); if (!is_array($attribs)) { $attribs = array(); } $freeattr = JRequest::getVar('freeattr'); if (!is_array($freeattr)) { $freeattr = array(); } $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onBeforeLoadDisplayAjaxAttrib', array(&$product_id, &$change_attr, &$qty, &$attribs, &$freeattr)); $product = JSFactory::getTable('product', 'jshop'); $product->load($product_id); $dispatcher->trigger('onBeforeLoadDisplayAjaxAttrib2', array(&$product)); $attributesDatas = $product->getAttributesDatas($attribs); $product->setAttributeActive($attributesDatas['attributeActive']); $attributeValues = $attributesDatas['attributeValues']; $product->setFreeAttributeActive($freeattr); $attributes = $product->getBuildSelectAttributes($attributeValues, $attributesDatas['attributeSelected']); $rows = array(); foreach ($attributes as $k => $v) { $rows[] = '"id_' . $k . '":"' . json_value_encode($v->selects, 1) . '"'; } $pricefloat = $product->getPrice($qty, 1, 1, 1); $price = formatprice($pricefloat); $available = intval($product->getQty() > 0); $displaybuttons = intval(intval($product->getQty() > 0) || $jshopConfig->hide_buy_not_avaible_stock == 0); $ean = $product->getEan(); $weight = formatweight($product->getWeight()); $basicprice = formatprice($product->getBasicPrice()); $min_kolichestvo = $product->min_kolichestvo; $rows[] = '"price":"' . json_value_encode($price) . '"'; $rows[] = '"pricefloat":"' . $pricefloat . '"'; $rows[] = '"available":"' . $available . '"'; $rows[] = '"min_kolichestvo":"' . $min_kolichestvo . '"'; $rows[] = '"ean":"' . json_value_encode($ean) . '"'; if ($jshopConfig->admin_show_product_basic_price) { $rows[] = '"basicprice":"' . json_value_encode($basicprice) . '"'; } if ($jshopConfig->product_show_weight) { $rows[] = '"weight":"' . json_value_encode($weight) . '"'; } if ($jshopConfig->product_list_show_price_default && $product->product_price_default > 0) { $rows[] = '"pricedefault":"' . json_value_encode(formatprice($product->product_price_default)) . '"'; } if ($jshopConfig->product_show_qty_stock) { $qty_in_stock = getDataProductQtyInStock($product); $rows[] = '"qty":"' . json_value_encode(sprintQtyInStock($qty_in_stock)) . '"'; } $product->updateOtherPricesIncludeAllFactors(); if (is_array($product->product_add_prices)) { foreach ($product->product_add_prices as $k => $v) { $rows[] = '"pq_' . $v->product_quantity_start . '":"' . json_value_encode(formatprice($v->price)) . '"'; } } if ($product->product_old_price) { $old_price = formatprice($product->product_old_price); $rows[] = '"oldprice":"' . json_value_encode($old_price) . '"'; } $rows[] = '"displaybuttons":"' . $displaybuttons . '"'; if ($jshopConfig->hide_delivery_time_out_of_stock) { $rows[] = '"showdeliverytime":"' . $product->getDeliveryTimeId() . '"'; } if ($jshopConfig->use_extend_attribute_data) { $template_path = $jshopConfig->template_path . $jshopConfig->template . "/product"; $images = $product->getImages(); $videos = $product->getVideos(); $demofiles = $product->getDemoFiles(); $tmp = array(); foreach ($images as $img) { $tmp[] = '"' . $img->image_name . '"'; } if (!file_exists($template_path . "/block_image_thumb.php")) { $displayimgthumb = intval(count($images) > 1 || count($videos) && count($images)); $rows[] = '"images":[' . implode(",", $tmp) . '],"displayimgthumb":"' . $displayimgthumb . '"'; } $view_name = "product"; $view_config = array("template_path" => $template_path); $view = $this->getView($view_name, getDocumentType(), '', $view_config); $view->setLayout("demofiles"); $view->assign('config', $jshopConfig); $view->assign('demofiles', $demofiles); $demofiles = $view->loadTemplate(); $rows[] = '"demofiles":"' . json_value_encode($demofiles, 1) . '"'; if (file_exists($template_path . "/block_image_thumb.php")) { $product->getDescription(); $view_name = "product"; $view_config = array("template_path" => $template_path); $view = $this->getView($view_name, getDocumentType(), '', $view_config); $view->setLayout("block_image_thumb"); $view->assign('config', $jshopConfig); $view->assign('images', $images); $view->assign('videos', $videos); $view->assign('image_product_path', $jshopConfig->image_product_live_path); $dispatcher->trigger('onBeforeDisplayProductViewBlockImageThumb', array(&$view)); $block_image_thumb = $view->loadTemplate(); $view_name = "product"; $view_config = array("template_path" => $template_path); $view = $this->getView($view_name, getDocumentType(), '', $view_config); $view->setLayout("block_image_middle"); $view->assign('config', $jshopConfig); $view->assign('images', $images); $view->assign('videos', $videos); $view->assign('product', $product); $view->assign('noimage', $jshopConfig->noimage); $view->assign('image_product_path', $jshopConfig->image_product_live_path); $view->assign('path_to_image', $jshopConfig->live_path . 'images/'); $dispatcher->trigger('onBeforeDisplayProductViewBlockImageMiddle', array(&$view)); $block_image_middle = $view->loadTemplate(); $rows[] = '"block_image_thumb":"' . json_value_encode($block_image_thumb, 1) . '"'; $rows[] = '"block_image_middle":"' . json_value_encode($block_image_middle, 1) . '"'; } } $dispatcher->trigger('onBeforeDisplayAjaxAttrib', array(&$rows, &$product)); print '{' . implode(",", $rows) . '}'; die; }