/** * Generate product search output */ public function onRSProductSearch() { if (count($this->search) > 0) { $app = JFactory::getApplication(); require_once JPATH_COMPONENT . '/helpers/product.php'; require_once JPATH_COMPONENT . '/helpers/pagination.php'; require_once JPATH_COMPONENT . '/helpers/extra_field.php'; require_once JPATH_COMPONENT_ADMINISTRATOR . '/helpers/text_library.php'; $dispatcher = JDispatcher::getInstance(); $redTemplate = new Redtemplate(); $Redconfiguration = new Redconfiguration(); $producthelper = new producthelper(); $extraField = new extraField(); $texts = new text_library(); $stockroomhelper = new rsstockroomhelper(); $Itemid = JRequest::getInt('Itemid'); $search_type = JRequest::getCmd('search_type'); $cid = JRequest::getInt('category_id'); $manisrch = $this->search; $manufacture_id = $manisrch[0]->manufacturer_id; $templateid = JRequest::getInt('templateid'); // Cmd removes space between to words $keyword = JRequest::getWord('keyword'); $layout = JRequest::getCmd('layout', 'default'); $db = JFactory::getDbo(); $query = 'SELECT category_name' . ' FROM #__redshop_category ' . 'WHERE category_id=' . JRequest::getInt('cid'); $db->setQuery($query); $cat_name = null; if ($catname_array = $db->loadObjectList()) { $cat_name = $catname_array[0]->category_name; } $session = JFactory::getSession(); $model = $this->getModel('search'); $limit = $this->limit; $limitstart = JRequest::getInt('limitstart', 0); $total = $model->_total; JHTML::_('behavior.tooltip'); JHTMLBehavior::modal(); $url = JURI::base(); if ($this->params->get('page_title') != "") { $pagetitle = $this->params->get('page_title'); } else { $pagetitle = JText::_('COM_REDSHOP_SEARCH'); } if ($this->params->get('show_page_heading', 1)) { echo '<h1 class="componentheading' . $this->escape($this->params->get('pageclass_sfx')) . '">'; echo $pagetitle; echo '</h1>'; } echo '<div style="clear:both"></div>'; $category_tmpl = ""; if (count($this->templatedata) > 0 && $this->templatedata[0]->template_desc != "") { $template_desc = $this->templatedata[0]->template_desc; } else { $template_desc = "<div class=\"category_print\">{print}</div>\r\n<div style=\"clear: both;\"></div>\r\n<div class=\"category_main_description\">{category_main_description}</div>\r\n<p>{if subcats} {category_loop_start}</p>\r\n<div id=\"categories\">\r\n<div style=\"float: left; width: 200px;\">\r\n<div class=\"category_image\">{category_thumb_image}</div>\r\n<div class=\"category_description\">\r\n<h2 class=\"category_title\">{category_name}</h2>\r\n{category_description}</div>\r\n</div>\r\n</div>\r\n<p>{category_loop_end} {subcats end if}</p>\r\n<div style=\"clear: both;\"></div>\r\n<div id=\"category_header\">\r\n<div class=\"category_order_by\">{order_by}</div>\r\n</div>\r\n<div class=\"category_box_wrapper\">{product_loop_start}\r\n<div class=\"category_box_outside\">\r\n<div class=\"category_box_inside\">\r\n<div class=\"category_product_image\">{product_thumb_image}</div>\r\n<div class=\"category_product_title\">\r\n<h3>{product_name}</h3>\r\n</div>\r\n<div class=\"category_product_price\">{product_price}</div>\r\n<div class=\"category_product_readmore\">{read_more}</div>\r\n<div>{product_rating_summary}</div>\r\n<div class=\"category_product_addtocart\">{form_addtocart:add_to_cart1}</div>\r\n</div>\r\n</div>\r\n{product_loop_end}\r\n<div class=\"category_product_bottom\" style=\"clear: both;\"></div>\r\n</div>\r\n<div class=\"category_pagination\">{pagination}</div>"; } if (strstr($template_desc, "{product_display_limit}")) { $endlimit = $model->getProductPerPage(); $limit = JRequest::getInt('limit', $endlimit, '', 'int'); } $template_org = $template_desc; $template_d1 = explode("{category_loop_start}", $template_org); if (count($template_d1) > 1) { $template_d2 = explode("{category_loop_end}", $template_d1[1]); if (count($template_d2) > 0) { $category_tmpl = $template_d2[0]; } } $template_org = str_replace($category_tmpl, "", $template_org); $template_org = str_replace("{category_loop_start}", "", $template_org); $template_org = str_replace("{category_loop_end}", "", $template_org); $print = JRequest::getInt('print'); $p_url = @explode('?', $_SERVER['REQUEST_URI']); $print_tag = ''; if ($print) { $print_tag = "<a onclick='window.print();' title='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' ><img src=" . JSYSTEM_IMAGES_PATH . "printButton.png alt='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' title='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' /></a>"; } else { $print_url = $url . "index.php?option=com_redshop&view=search&print=1&tmpl=component"; $print_tag = "<a href='#' onclick='window.open(\"{$print_url}\",\"mywindow\",\"scrollbars=1\",\"location=1\")' title='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' ><img src=" . JSYSTEM_IMAGES_PATH . "printButton.png alt='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' title='" . JText::_('COM_REDSHOP_PRINT_LBL') . "' /></a>"; } $template_org = str_replace("{total_product}", count($this->search), $template_org); $template_org = str_replace("{total_product_lbl}", JText::_('COM_REDSHOP_TOTAL_PRODUCT'), $template_org); if (strstr($template_org, "{compare_product_div}")) { $compare_product_div = ""; if (PRODUCT_COMPARISON_TYPE != "") { $comparediv = $producthelper->makeCompareProductDiv(); $compareUrl = JRoute::_('index.php?option=com_redshop&view=product&layout=compare&Itemid=' . $Itemid); $compare_product_div = "<form name='frmCompare' method='post' action='" . $compareUrl . "' >"; $compare_product_div .= "<a href='javascript:compare();' >" . JText::_('COM_REDSHOP_COMPARE') . "</a>"; $compare_product_div .= "<div id='divCompareProduct'>" . $comparediv . "</div>"; $compare_product_div .= "</form>"; } $template_org = str_replace("{compare_product_div}", $compare_product_div, $template_org); } // Skip html if nosubcategory if (strstr($template_org, "{if subcats}")) { $template_d1 = explode("{if subcats}", $template_org); $template_d2 = explode("{subcats end if}", $template_d1[1]); $template_org = $template_d1[0] . $template_d2[1]; } // End skip html if nosubcategory $template_org = str_replace("{print}", $print_tag, $template_org); $template_org = str_replace("{product_price_slider}", '', $template_org); $template_org = str_replace("{filter_by}", '', $template_org); $template_org = str_replace("{template_selector_category_lbl}", '', $template_org); $template_org = str_replace("{template_selector_category}", '', $template_org); $template_org = str_replace("{category_main_description}", '', $template_org); $template_org = str_replace("{category_main_name}", $cat_name, $template_org); $template_org = str_replace("{category_description}", '', $template_org); $template_org = str_replace("{category_short_desc}", '', $template_org); $template_org = str_replace("{category_name}", '', $template_org); $template_org = str_replace("{if subcats}", '', $template_org); $template_org = str_replace("{subcats end if}", '', $template_org); $template_org = str_replace("{category_main_thumb_image_3}", '', $template_org); $template_org = str_replace("{category_main_short_desc}", '', $template_org); $template_org = str_replace("{category_main_thumb_image_2}", '', $template_org); $template_org = str_replace("{category_main_thumb_image_1}", '', $template_org); $template_org = str_replace("{category_main_thumb_image}", '', $template_org); $template_org = str_replace("{attribute_price_without_vat}", '', $template_org); $template_org = str_replace("{redproductfinderfilter_formstart}", '', $template_org); $template_org = str_replace("{redproductfinderfilter:rp_myfilter}", '', $template_org); $template_org = str_replace("{redproductfinderfilter_formend}", '', $template_org); // Replace redproductfilder filter tag if (strstr($template_org, "{redproductfinderfilter:")) { $redProductFinerHelper = JPATH_SITE . "/components/com_redproductfinder/helpers/redproductfinder_helper.php"; if (file_exists($redProductFinerHelper)) { include_once $redProductFinerHelper; $redproductfinder_helper = new redproductfinder_helper(); $hdnFields = array('texpricemin' => '0', 'texpricemax' => '0', 'manufacturer_id' => $filter_by, 'category_template' => $templateid); $hide_filter_flag = false; if ($this->_id) { $prodctofcat = $producthelper->getProductCategory($this->_id); if (empty($prodctofcat)) { $hide_filter_flag = true; } } $template_org = $redproductfinder_helper->replaceProductfinder_tag($template_org, $hdnFields, $hide_filter_flag); } } // Replace redproductfilder filter tag end here $template_d1 = explode("{product_loop_start}", $template_org); $template_d2 = explode("{product_loop_end}", $template_d1[1]); $template_tmp_desc = $template_d2[0]; $template_desc = $template_d2[0]; // Order By $order_by = ""; $orderby_form = "<form name='orderby_form' action='' method='post' >"; $orderby_form .= $this->lists['order_select']; $orderby_form .= "<input type='hidden' name='view' value='search'>\n\t\t\t<input type='hidden' name='layout' value='{$layout}'>\n\t\t\t<input type='hidden' name='keyword' value='{$keyword}'>\n\t\t\t<input type='hidden' name='category_id' value='{$cid}'>\n\t\t\t<input type='hidden' name='manufacture_id' value='{$manufacture_id}'>\n\t\t\t<input type='hidden' name='templateid' value='{$templateid}'></form>"; if (strstr($template_desc, '{order_by}')) { $order_by = $orderby_form; } $extraFieldName = $extraField->getSectionFieldNameArray(1, 1, 1); $attribute_template = $producthelper->getAttributeTemplate($template_desc); $total_product = $model->_total; $endlimit = $this->limit; $start = JRequest::getInt('limitstart', 0, '', 'int'); if (strstr($template_org, "{pagination}")) { if (strstr($template_org, "{product_display_limit}")) { $endlimit = JRequest::getInt('limit', $endlimit, '', 'int'); } } else { $endlimit = $model->getData(); } if ($endlimit == 0) { $final_endlimit = $total_product; } else { $final_endlimit = $endlimit; } $tagarray = $texts->getTextLibraryTagArray(); $data = ""; $count_no_user_field = 0; for ($i = 0; $i < count($this->search); $i++) { $data_add = ""; $thum_image = ""; $pname = $Redconfiguration->maxchar($this->search[$i]->product_name, CATEGORY_PRODUCT_TITLE_MAX_CHARS, CATEGORY_PRODUCT_TITLE_END_SUFFIX); if ($search_type == 'product_number') { $product_number = str_ireplace($keyword, "<b class='search_hightlight'>" . $keyword . "</b>", $this->search[$i]->product_number); $pro_s_desc = $this->search[$i]->product_s_desc; $pro_desc = $this->search[$i]->product_desc; } else { $product_number = $this->search[$i]->product_number; $pro_s_desc = $this->search[$i]->product_s_desc; $pro_desc = $this->search[$i]->product_desc; if (!in_array($keyword, $tagarray)) { $pname = str_ireplace($keyword, "<b class='search_hightlight'>" . $keyword . "</b>", $pname); $pro_s_desc = str_ireplace($keyword, "<b class='search_hightlight'>" . $keyword . "</b>", $pro_s_desc); $pro_desc = str_ireplace($keyword, "<b class='search_hightlight'>" . $keyword . "</b>", $pro_desc); } } $pro_s_desc = $Redconfiguration->maxchar($pro_s_desc, CATEGORY_PRODUCT_DESC_MAX_CHARS, CATEGORY_PRODUCT_DESC_END_SUFFIX); $link = JRoute::_('index.php?option=com_redshop&view=product&pid=' . $this->search[$i]->product_id . '&Itemid=' . $Itemid); if (strstr($template_desc, '{product_name}')) { $pname = "<a href='" . $link . "'>" . $pname . "</a>"; $data_add = str_replace("{product_name}", $pname, $template_desc); } if (strstr($template_desc, '{product_name_nolink}')) { $data_add = str_replace("{product_name_nolink}", $pname, $template_desc); } $readmore = "<a href='" . $link . "'>" . JText::_('COM_REDSHOP_READ_MORE') . "</a>"; $data_add = str_replace("{read_more}", $readmore, $data_add); $data_add = str_replace("{read_more_link}", $link, $data_add); // RedSHOP Product Plugin JPluginHelper::importPlugin('redshop_product'); $results = $dispatcher->trigger('onPrepareProduct', array(&$data_add, &$params, $this->search[$i])); // End if (strstr($data_add, "{product_delivery_time}")) { $product_delivery_time = $producthelper->getProductMinDeliveryTime($this->search[$i]->product_id); if ($product_delivery_time != "") { $data_add = str_replace("{delivery_time_lbl}", JText::_('DELIVERY_TIME'), $data_add); $data_add = str_replace("{product_delivery_time}", $product_delivery_time, $data_add); } else { $data_add = str_replace("{delivery_time_lbl}", "", $data_add); $data_add = str_replace("{product_delivery_time}", "", $data_add); } } // Product Review/Rating // Fetching reviews $final_avgreview_data = $producthelper->getProductRating($this->search[$i]->product_id); // Attribute ajax chage $data_add = str_replace("{product_rating_summary}", $final_avgreview_data, $data_add); $data_add = $producthelper->getJcommentEditor($this->search[$i], $data_add); $data_add = $producthelper->getExtraSectionTag($extraFieldName, $this->search[$i]->product_id, "1", $data_add, 1); $data_add = str_replace("{product_s_desc}", $pro_s_desc, $data_add); $data_add = str_replace("{product_desc}", $pro_desc, $data_add); $data_add = str_replace("{product_id_lbl}", JText::_('COM_REDSHOP_PRODUCT_ID_LBL'), $data_add); $data_add = str_replace("{product_id}", $this->search[$i]->product_id, $data_add); $data_add = str_replace("{product_number_lbl}", JText::_('COM_REDSHOP_PRODUCT_NUMBER_LBL'), $data_add); $data_add = str_replace("{product_number}", $product_number, $data_add); /** * related Product List in Lightbox * Tag Format = {related_product_lightbox:<related_product_name>[:width][:height]} */ if (strstr($data_add, '{related_product_lightbox:')) { $related_product = $producthelper->getRelatedProduct($this->search[$i]->product_id); $rtlnone = explode("{related_product_lightbox:", $data_add); $rtlntwo = explode("}", $rtlnone[1]); $rtlnthree = explode(":", $rtlntwo[0]); $rtln = $rtlnthree[0]; $rtlnfwidth = isset($rtlnthree[1]) ? $rtlnthree[1] : "900"; $rtlnwidthtag = isset($rtlnthree[1]) ? ":" . $rtlnthree[1] : ""; $rtlnfheight = isset($rtlnthree[2]) ? $rtlnthree[2] : "600"; $rtlnheighttag = isset($rtlnthree[2]) ? ":" . $rtlnthree[2] : ""; $rtlntag = "{related_product_lightbox:{$rtln}{$rtlnwidthtag}{$rtlnheighttag}}"; if (count($related_product) > 0) { $linktortln = JUri::root() . "index.php?option=com_redshop&view=product&pid=" . $this->search[$i]->product_id . "&tmpl=component&template=" . $rtln . "&for=rtln"; $rtlna = '<a class="modal" href="' . $linktortln . '" rel="{handler:\'iframe\',size:{x:' . $rtlnfwidth . ',y:' . $rtlnfheight . '}}" >' . JText::_('COM_REDSHOP_RELATED_PRODUCT_LIST_IN_LIGHTBOX') . '</a>'; } else { $rtlna = ""; } $data_add = str_replace($rtlntag, $rtlna, $data_add); } $data_add = $producthelper->replaceVatinfo($data_add); /************************************ * Conditional tag * if product on discount : Yes * {if product_on_sale} This product is on sale {product_on_sale end if} // OUTPUT : This product is on sale * NO : // OUTPUT : Display blank ************************************/ $data_add = $producthelper->getProductOnSaleComment($this->search[$i], $data_add); $data_add = $stockroomhelper->replaceStockroomAmountDetail($data_add, $this->search[$i]->product_id); if (strstr($data_add, "{product_thumb_image_3}")) { $cimg_tag = '{product_thumb_image_3}'; $ch_thumb = CATEGORY_PRODUCT_THUMB_HEIGHT_3; $cw_thumb = CATEGORY_PRODUCT_THUMB_WIDTH_3; } elseif (strstr($data_add, "{product_thumb_image_2}")) { $cimg_tag = '{product_thumb_image_2}'; $ch_thumb = CATEGORY_PRODUCT_THUMB_HEIGHT_2; $cw_thumb = CATEGORY_PRODUCT_THUMB_WIDTH_2; } elseif (strstr($data_add, "{product_thumb_image_1}")) { $cimg_tag = '{product_thumb_image_1}'; $ch_thumb = CATEGORY_PRODUCT_THUMB_HEIGHT; $cw_thumb = CATEGORY_PRODUCT_THUMB_WIDTH; } else { $cimg_tag = '{product_thumb_image}'; $ch_thumb = CATEGORY_PRODUCT_THUMB_HEIGHT; $cw_thumb = CATEGORY_PRODUCT_THUMB_WIDTH; } $hidden_thumb_image = "<input type='hidden' name='prd_main_imgwidth' id='prd_main_imgwidth' value='" . $cw_thumb . "'><input type='hidden' name='prd_main_imgheight' id='prd_main_imgheight' value='" . $ch_thumb . "'>"; $thum_image = $producthelper->getProductImage($this->search[$i]->product_id, $link, $cw_thumb, $ch_thumb); $data_add = str_replace($cimg_tag, $thum_image . $hidden_thumb_image, $data_add); // More documents if (strstr($data_add, "{more_documents}")) { $media_documents = $producthelper->getAdditionMediaImage($this->search[$i]->product_id, "product", "document"); $more_doc = ''; for ($m = 0; $m < count($media_documents); $m++) { $alttext = $producthelper->getAltText("product", $media_documents[$m]->section_id, "", $media_documents[$m]->media_id, "document"); if (!$alttext) { $alttext = $media_documents[$m]->media_name; } if (is_file(REDSHOP_FRONT_DOCUMENT_RELPATH . "product/" . $media_documents[$m]->media_name)) { $downlink = JUri::root() . 'index.php?tmpl=component&option=com_redshop&view=product&pid=' . $this->search[$i]->product_id . '&task=downloadDocument&fname=' . $media_documents[$m]->media_name . '&Itemid=' . $Itemid; $more_doc .= "<div><a href='" . $downlink . "' title='" . $alttext . "'>"; $more_doc .= $alttext; $more_doc .= "</a></div>"; } } $data_add = str_replace("{more_documents}", "<span id='additional_docs" . $this->search[$i]->product_id . "'>" . $more_doc . "</span>", $data_add); } // More documents end /************************************************ user fields*******************************************************/ $hidden_userfield = ""; $returnArr = $producthelper->getProductUserfieldFromTemplate($data_add); $template_userfield = $returnArr[0]; $userfieldArr = $returnArr[1]; $count_no_user_field = 0; if ($template_userfield != "") { $ufield = ""; for ($ui = 0; $ui < count($userfieldArr); $ui++) { $product_userfileds = $extraField->list_all_user_fields($userfieldArr[$ui], 12, '', '', 0, $this->search[$i]->product_id); $ufield .= $product_userfileds[1]; if ($product_userfileds[1] != "") { $count_no_user_field++; } $data_add = str_replace('{' . $userfieldArr[$ui] . '_lbl}', $product_userfileds[0], $data_add); $data_add = str_replace('{' . $userfieldArr[$ui] . '}', $product_userfileds[1], $data_add); } $product_userfileds_form = "<form method='post' action='' id='user_fields_form_" . $this->search[$i]->product_id . "' name='user_fields_form_" . $this->search[$i]->product_id . "'>"; if ($ufield != "") { $data_add = str_replace("{if product_userfield}", $product_userfileds_form, $data_add); $data_add = str_replace("{product_userfield end if}", "</form>", $data_add); } else { $data_add = str_replace("{if product_userfield}", "", $data_add); $data_add = str_replace("{product_userfield end if}", "", $data_add); } } elseif (AJAX_CART_BOX) { $ajax_detail_template_desc = ""; $ajax_detail_template = $producthelper->getAjaxDetailboxTemplate($this->search[$i]); if (count($ajax_detail_template) > 0) { $ajax_detail_template_desc = $ajax_detail_template->template_desc; } $returnArr = $producthelper->getProductUserfieldFromTemplate($ajax_detail_template_desc); $template_userfield = $returnArr[0]; $userfieldArr = $returnArr[1]; if ($template_userfield != "") { $ufield = ""; for ($ui = 0; $ui < count($userfieldArr); $ui++) { $product_userfileds = $extraField->list_all_user_fields($userfieldArr[$ui], 12, '', '', 0, $this->search[$i]->product_id); $ufield .= $product_userfileds[1]; if ($product_userfileds[1] != "") { $count_no_user_field++; } $template_userfield = str_replace('{' . $userfieldArr[$ui] . '_lbl}', $product_userfileds[0], $template_userfield); $template_userfield = str_replace('{' . $userfieldArr[$ui] . '}', $product_userfileds[1], $template_userfield); } if ($ufield != "") { $hidden_userfield = "<div style='display:none;'><form method='post' action='' id='user_fields_form_" . $this->search[$i]->product_id . "' name='user_fields_form_" . $this->search[$i]->product_id . "'>" . $template_userfield . "</form></div>"; } } } $data_add = $data_add . $hidden_userfield; /*************** end user fields ***************/ // ProductFinderDatepicker Extra Field Start $fieldArray = $extraField->getSectionFieldList(17, 0, 0); $data_add = $producthelper->getProductFinderDatepickerValue($data_add, $this->search[$i]->product_id, $fieldArray); // ProductFinderDatepicker Extra Field End /* * manufacturer data */ $manufacturer_id = $this->search[$i]->manufacturer_id; if ($manufacturer_id != 0) { $manufacturer_data = $producthelper->getSection("manufacturer", $manufacturer_id); $manufacturer_link_href = JRoute::_('index.php?option=com_redshop&view=manufacturers&layout=detail&mid=' . $manufacturer_id . '&Itemid=' . $Itemid); $manufacturer_name = ""; if (count($manufacturer_data) > 0) { $manufacturer_name = $manufacturer_data->manufacturer_name; } $manufacturer_link = '<a href="' . $manufacturer_link_href . '" title="' . $manufacturer_name . '">' . $manufacturer_name . '</a>'; if (strstr($data_add, "{manufacturer_link}")) { $data_add = str_replace("{manufacturer_name}", "", $data_add); } else { $data_add = str_replace("{manufacturer_name}", $manufacturer_name, $data_add); } $data_add = str_replace("{manufacturer_link}", $manufacturer_link, $data_add); } else { $data_add = str_replace("{manufacturer_link}", "", $data_add); $data_add = str_replace("{manufacturer_name}", "", $data_add); } // End // Replace wishlistbutton $data_add = $producthelper->replaceWishlistButton($this->search[$i]->product_id, $data_add); // Replace compare product button $data_add = $producthelper->replaceCompareProductsButton($this->search[$i]->product_id, 0, $data_add); // Checking for child products $childproduct = $producthelper->getChildProduct($this->search[$i]->product_id); if (count($childproduct) > 0) { $isChilds = true; $attributes = array(); } else { $isChilds = false; // Get attributes $attributes_set = array(); if ($this->search[$i]->attribute_set_id > 0) { $attributes_set = $producthelper->getProductAttribute(0, $this->search[$i]->attribute_set_id, 0, 1); } $attributes = $producthelper->getProductAttribute($this->search[$i]->product_id); $attributes = array_merge($attributes, $attributes_set); } // Product attribute Start $totalatt = count($attributes); // Check product for not for sale $data_add = $producthelper->getProductNotForSaleComment($this->search[$i], $data_add, $attributes); $data_add = $producthelper->replaceProductInStock($this->search[$i]->product_id, $data_add, $attributes, $attribute_template); $data_add = $producthelper->replaceAttributeData($this->search[$i]->product_id, 0, 0, $attributes, $data_add, $attribute_template, $isChilds); // Cart Template $data_add = $producthelper->replaceCartTemplate($this->search[$i]->product_id, 0, 0, 0, $data_add, $isChilds, $userfieldArr, $totalatt, 0, $count_no_user_field, ""); $data .= $data_add; } $app = JFactory::getApplication(); $router = $app->getRouter(); $getorderby = JRequest::getVar('order_by', DEFAULT_PRODUCT_ORDERING_METHOD); $vars = array('option' => 'com_redshop', 'view' => 'search', 'layout' => $layout, 'keyword' => $keyword, 'manufacture_id' => $manufacture_id, 'order_by' => $getorderby, 'category_id' => $cid, 'Itemid' => $Itemid, 'limit' => $limit); $router->setVars($vars); unset($vars); if (strstr($template_org, "{pagination}")) { $pagination = new redPagination($total_product, $start, $endlimit); $slidertag = $pagination->getPagesLinks(); if (strstr($template_org, "{product_display_limit}")) { $slidertag = "<form action='' method='post'><input type='hidden' name='keyword' value='{$keyword}'>\n\t\t\t<input type='hidden' name='category_id' value='{$cid}'>\n\t\t\t<input type='hidden' name='manufacture_id' value='{$manufacture_id}'>\n\t\t\t<input type='hidden' name='templateid' value='{$templateid}'> " . $pagination->getListFooter() . "</form>"; $template_org = str_replace("{product_display_limit}", $slidertag, $template_org); $template_org = str_replace("{pagination}", '', $template_org); } $template_org = str_replace("{pagination}", $slidertag, $template_org); } $template_org = str_replace("{product_display_limit}", "", $template_org); if (strstr($template_org, "perpagelimit:")) { $perpage = explode('{perpagelimit:', $template_org); $perpage = explode('}', $perpage[1]); $template_org = str_replace("{perpagelimit:" . intval($perpage[0]) . "}", "", $template_org); } $template_org = str_replace("{order_by}", $orderby_form, $template_org); $template_org = str_replace("{order_by_lbl}", JText::_('COM_REDSHOP_SELECT_ORDER_BY'), $template_org); $template_org = str_replace("{filter_by_lbl}", JText::_('COM_REDSHOP_SELECT_FILTER_BY'), $template_org); $template_org = str_replace("{attribute_price_with_vat}", "", $template_org); $template_org = str_replace("{attribute_price_without_vat}", "", $template_org); $template_org = str_replace("{product_loop_start}", "", $template_org); $template_org = str_replace("{product_loop_end}", "", $template_org); $template_org = str_replace($template_tmp_desc, $data, $template_org); $template_org = str_replace("{with_vat}", "", $template_org); $template_org = str_replace("{without_vat}", "", $template_org); $template_org = $redTemplate->parseredSHOPplugin($template_org); $template_org = $texts->replace_texts($template_org); eval("?>" . $template_org . "<?php "); } else { echo "<br><h3>" . JText::_('COM_REDSHOP_MSG_SORRY_NO_RESULT_FOUND') . "</h3>"; } }
$related_template_data = str_replace("{relproduct_price_saving_lbl}", '', $related_template_data); $related_template_data = str_replace("{relproduct_price_saving}", '', $related_template_data); $related_template_data = str_replace("{relproduct_price}", '', $related_template_data); } // End Show Price $relmorelinkhref = JRoute::_('index.php?option=com_redshop&view=product&pid=' . $related_product[$r]->product_id . '&cid=' . $related_product[$r]->cat_in_sefurl . '&Itemid=' . $this->itemId); $relmorelink = 'javascript:window.parent.SqueezeBox.close();window.parent.location.href="' . $relmorelinkhref . '"'; $rmore = "<a href='" . $relmorelink . "' title='" . $related_product[$r]->product_name . "'>" . JText::_('COM_REDSHOP_READ_MORE') . "</a>"; $related_template_data = str_replace("{read_more}", $rmore, $related_template_data); $related_template_data = str_replace("{read_more_link}", $relmorelink, $related_template_data); /* * related product Required Attribute start * this will parse only Required Attributes */ $relid = $related_product[$r]->product_id; $attributes_set = array(); if ($related_product[$r]->attribute_set_id > 0) { $attributes_set = $producthelper->getProductAttribute(0, $related_product[$r]->attribute_set_id); } $attributes = $producthelper->getProductAttribute($relid); $attributes = array_merge($attributes, $attributes_set); $related_template_data = $producthelper->replaceAttributeData($related_product[$r]->mainproduct_id, 0, $related_product[$r]->product_id, $attributes, $related_template_data, $attribute_template); $related_template_data = $producthelper->replaceCartTemplate($related_product[$r]->mainproduct_id, $this->data->category_id, 0, $related_product[$r]->product_id, $related_template_data, false, 0, count($attributes), 0, 0); $related_template_data = $producthelper->replaceCompareProductsButton($related_product[$r]->product_id, $this->data->category_id, $related_template_data, 1); $related_template_data = $producthelper->replaceProductInStock($related_product[$r]->product_id, $related_template_data); $related_template_data = $producthelper->replaceAttributePriceList($related_product[$r]->product_id, $related_template_data); $related_template_data = $producthelper->getProductFinderDatepickerValue($related_template_data, $related_product[$r]->product_id, $fieldArray); } $reltemplate = $tempdata_div_start . $related_template_data . $tempdata_div_end; } echo eval("?>" . $reltemplate . "<?php ");
$product_price = "<div class='product_price'>" . $producthelper->getProductFormattedPrice($quotationProducts[$i]->product_price) . "</div>"; $product_excl_price = "<div class='product_excl_price'>" . $producthelper->getProductFormattedPrice($quotationProducts[$i]->product_excl_price) . "</div>"; $product_quantity = '<div class="product_quantity">' . $quotationProducts[$i]->product_quantity . '</div>'; $product_total_price = $quotationProducts[$i]->product_quantity * $quotationProducts[$i]->product_price; $product_total_excl_price = $quotationProducts[$i]->product_quantity * $quotationProducts[$i]->product_excl_price; $cart_mdata = str_replace("{product_thumb_image}", $product_image, $cart_mdata); $cart_mdata = str_replace("{product_name}", $product_name, $cart_mdata); $cart_mdata = str_replace("{product_s_desc}", $product->product_s_desc, $cart_mdata); $cart_mdata = str_replace("{product_attribute}", $quotationProducts[$i]->product_attribute, $cart_mdata); $cart_mdata = str_replace("{product_accessory}", $quotationProducts[$i]->product_accessory, $cart_mdata); $cart_mdata = str_replace("{product_number}", $product_number, $cart_mdata); $cart_mdata = str_replace("{product_number_lbl}", JText::_('COM_REDSHOP_PRODUCT_NUMBER_LBL'), $cart_mdata); $cart_mdata = str_replace("{product_userfields}", $product_userfields, $cart_mdata); $cart_mdata = str_replace("{product_wrapper}", $product_note, $cart_mdata); // ProductFinderDatepicker Extra Field Start $cart_mdata = $producthelper->getProductFinderDatepickerValue($cart_mdata, $quotationProducts[$i]->product_id, $fieldArray); // ProductFinderDatepicker Extra Field End if ($quotationDetail->quotation_status == 1) { $cart_mdata = str_replace("{product_price}", "", $cart_mdata); $cart_mdata = str_replace("{product_total_price}", "", $cart_mdata); $cart_mdata = str_replace("{product_price_excl_vat}", "", $cart_mdata); $cart_mdata = str_replace("{product_total_price_excl_vat}", "", $cart_mdata); } else { $cart_mdata = str_replace("{product_price}", $product_price, $cart_mdata); $cart_mdata = str_replace("{product_total_price}", $producthelper->getProductFormattedPrice($product_total_price), $cart_mdata); $cart_mdata = str_replace("{product_price_excl_vat}", $product_excl_price, $cart_mdata); $cart_mdata = str_replace("{product_total_price_excl_vat}", $producthelper->getProductFormattedPrice($product_total_excl_price), $cart_mdata); } $cart_mdata = str_replace("{product_quantity}", $product_quantity, $cart_mdata); } $quotation_template = $template_start . $cart_mdata . $template_end;
public function sendQuotationMail($quotation_id, $status = 0) { $uri = JURI::getInstance(); $url = $uri->root(); $redconfig = new Redconfiguration(); $producthelper = new producthelper(); $extra_field = new extra_field(); $quotationHelper = new quotationHelper(); $config = JFactory::getConfig(); $mailinfo = $this->getMailtemplate(0, "quotation_mail"); $mailbcc = array(); if (count($mailinfo) > 0) { $message = $mailinfo[0]->mail_body; $subject = $mailinfo[0]->mail_subject; if (trim($mailinfo[0]->mail_bcc) != "") { $mailbcc = explode(",", $mailinfo[0]->mail_bcc); } } else { return false; } $template_start = ""; $template_end = ""; $template_middle = ""; $cart = ''; $template_sdata = explode('{product_loop_start}', $message); $extraField = new extraField(); $fieldArray = $extraField->getSectionFieldList(17, 0, 0); if (count($template_sdata) > 0) { $template_start = $template_sdata[0]; if (count($template_sdata) > 1) { $template_edata = explode('{product_loop_end}', $template_sdata[1]); if (count($template_edata) > 1) { $template_end = $template_edata[1]; } if (count($template_edata) > 0) { $template_middle = $template_edata[0]; } } } $row = $quotationHelper->getQuotationDetail($quotation_id); if (count($row) <= 0) { return false; } $rowitem = $quotationHelper->getQuotationProduct($quotation_id); for ($i = 0; $i < count($rowitem); $i++) { $product_id = $rowitem[$i]->product_id; $product = $producthelper->getProductById($product_id); $product_name = "<div class='product_name'>" . $rowitem[$i]->product_name . "</div>"; $product_total_price = "<div class='product_price'>" . $producthelper->getProductFormattedPrice($rowitem[$i]->product_price * $rowitem[$i]->product_quantity) . "</div>"; $product_price = "<div class='product_price'>" . $producthelper->getProductFormattedPrice($rowitem[$i]->product_price) . "</div>"; $product_price_excl_vat = "<div class='product_price'>" . $producthelper->getProductFormattedPrice($rowitem[$i]->product_excl_price) . "</div>"; $product_quantity = '<div class="update_cart">' . $rowitem[$i]->product_quantity . '</div>'; $product_total_price_excl_vat = "<div class='product_price'>" . $producthelper->getProductFormattedPrice($rowitem[$i]->product_excl_price * $rowitem[$i]->product_quantity) . "</div>"; $cart_mdata = $template_middle; $wrapper_name = ""; if ($rowitem[$i]->product_wrapperid) { $wrapper = $producthelper->getWrapper($product_id, $rowitem[$i]->product_wrapperid); if (count($wrapper) > 0) { $wrapper_name = $wrapper[0]->wrapper_name; } $wrapper_name = JText::_('COM_REDSHOP_WRAPPER') . ": " . $wrapper_name; } $product_image_path = ''; if ($product->product_full_image) { if (is_file(REDSHOP_FRONT_IMAGES_RELPATH . "product/" . $product->product_full_image)) { $product_image_path = $product->product_full_image; } else { if (is_file(REDSHOP_FRONT_IMAGES_RELPATH . "product/" . PRODUCT_DEFAULT_IMAGE)) { $product_image_path = PRODUCT_DEFAULT_IMAGE; } } } else { if (is_file(REDSHOP_FRONT_IMAGES_RELPATH . "product/" . PRODUCT_DEFAULT_IMAGE)) { $product_image_path = PRODUCT_DEFAULT_IMAGE; } } if ($product_image_path) { $thumbUrl = RedShopHelperImages::getImagePath($product_image_path, '', 'thumb', 'product', CART_THUMB_WIDTH, CART_THUMB_HEIGHT, USE_IMAGE_SIZE_SWAPPING); $product_image = "<div class='product_image'><img src='" . $thumbUrl . "'></div>"; } else { $product_image = "<div class='product_image'></div>"; } $cart_mdata = str_replace("{product_name}", $product_name, $cart_mdata); $cart_mdata = str_replace("{product_s_desc}", $product->product_s_desc, $cart_mdata); $cart_mdata = str_replace("{product_thumb_image}", $product_image, $cart_mdata); $product_note = "<div class='product_note'>" . $wrapper_name . "</div>"; $cart_mdata = str_replace("{product_wrapper}", $product_note, $cart_mdata); $product_userfields = $quotationHelper->displayQuotationUserfield($rowitem[$i]->quotation_item_id, 12); $cart_mdata = str_replace("{product_userfields}", $product_userfields, $cart_mdata); $cart_mdata = str_replace("{product_number_lbl}", JText::_('COM_REDSHOP_PRODUCT_NUMBER'), $cart_mdata); $cart_mdata = str_replace("{product_number}", $product->product_number, $cart_mdata); $cart_mdata = str_replace("{product_attribute}", $producthelper->makeAttributeQuotation($rowitem[$i]->quotation_item_id, 0, $rowitem[$i]->product_id, $row->quotation_status), $cart_mdata); $cart_mdata = str_replace("{product_accessory}", $producthelper->makeAccessoryQuotation($rowitem[$i]->quotation_item_id, $row->quotation_status), $cart_mdata); // ProductFinderDatepicker Extra Field Start $cart_mdata = $producthelper->getProductFinderDatepickerValue($cart_mdata, $product_id, $fieldArray); // ProductFinderDatepicker Extra Field End if ($row->quotation_status == 1 && !SHOW_QUOTATION_PRICE) { $cart_mdata = str_replace("{product_price_excl_vat}", "", $cart_mdata); $cart_mdata = str_replace("{product_price}", " ", $cart_mdata); $cart_mdata = str_replace("{product_total_price}", " ", $cart_mdata); $cart_mdata = str_replace("{product_subtotal_excl_vat}", " ", $cart_mdata); } else { $cart_mdata = str_replace("{product_price_excl_vat}", $product_price_excl_vat, $cart_mdata); $cart_mdata = str_replace("{product_price}", $product_price, $cart_mdata); $cart_mdata = str_replace("{product_total_price}", $product_total_price, $cart_mdata); $cart_mdata = str_replace("{product_subtotal_excl_vat}", $product_total_price_excl_vat, $cart_mdata); } $cart_mdata = str_replace("{product_quantity}", $product_quantity, $cart_mdata); $cart .= $cart_mdata; } $message = $template_start . $cart . $template_end; $search[] = "{quotation_note}"; $replace[] = $row->quotation_note; $search[] = "{shopname}"; $replace[] = SHOP_NAME; $search[] = "{quotation_id}"; $replace[] = $row->quotation_id; $search[] = "{quotation_number}"; $replace[] = $row->quotation_number; $search[] = "{quotation_date}"; $replace[] = $redconfig->convertDateFormat($row->quotation_cdate); $search[] = "{quotation_status}"; $replace[] = $quotationHelper->getQuotationStatusName($row->quotation_status); $billadd = ''; if ($row->user_id != 0) { $message = $this->_carthelper->replaceBillingAddress($message, $row); } else { if ($row->quotation_email != "") { $billadd .= JText::_("COM_REDSHOP_EMAIL") . ' : ' . $row->quotation_email . '<br />'; } $message = str_replace("{billing_address_information_lbl}", JText::_('COM_REDSHOP_BILLING_ADDRESS_INFORMATION_LBL'), $message); if (strstr($message, "{quotation_custom_field_list}")) { $billadd .= $extra_field->list_all_field_display(16, $row->user_info_id, 1, $row->quotation_email); $message = str_replace("{quotation_custom_field_list}", "", $message); } else { $message = $extra_field->list_all_field_display(16, $row->user_info_id, 1, $row->quotation_email, $message); } } $search[] = "{billing_address}"; $replace[] = $billadd; $total_lbl = ''; $subtotal_lbl = ''; $vat_lbl = ''; if ($row->quotation_status != 1 || $row->quotation_status == 1 && SHOW_QUOTATION_PRICE) { $total_lbl = JText::_('COM_REDSHOP_TOTAL_LBL'); $subtotal_lbl = JText::_('COM_REDSHOP_QUOTATION_SUBTOTAL'); $vat_lbl = JText::_('COM_REDSHOP_QUOTATION_VAT'); } $message = str_replace('{total_lbl}', $total_lbl, $message); $message = str_replace('{quotation_subtotal_lbl}', $subtotal_lbl, $message); $message = str_replace('{quotation_vat_lbl}', $vat_lbl, $message); $message = $this->_carthelper->replaceLabel($message); $search[] = "{quotation_note}"; $replace[] = $row->quotation_note; if ($row->quotation_status == 1 && !SHOW_QUOTATION_PRICE) { $quotation_subtotal = " "; $quotation_total = " "; $quotation_discount = " "; $quotation_vat = " "; $quotation_subtotal_excl_vat = ""; } else { $tax = $row->quotation_tax; if (VAT_RATE_AFTER_DISCOUNT) { $Discountvat = VAT_RATE_AFTER_DISCOUNT * $row->quotation_discount / (1 + VAT_RATE_AFTER_DISCOUNT); $row->quotation_discount = $row->quotation_discount - $Discountvat; $tax = $tax - $Discountvat; } if (VAT_RATE_AFTER_DISCOUNT) { $sp_discount = $row->quotation_special_discount * ($row->quotation_subtotal + $row->quotation_tax) / 100; $Discountspvat = $sp_discount * VAT_RATE_AFTER_DISCOUNT / (1 + VAT_RATE_AFTER_DISCOUNT); $DiscountspWithotVat = $sp_discount - $Discountspvat; $row->quotation_discount = $row->quotation_discount + $DiscountspWithotVat; $tax = $tax - $Discountspvat; } $quotation_subtotal_excl_vat = $producthelper->getProductFormattedPrice($row->quotation_subtotal); $quotation_subtotal_minus_discount = $producthelper->getProductFormattedPrice($row->quotation_subtotal - $row->quotation_discount); $quotation_subtotal = $producthelper->getProductFormattedPrice($row->quotation_subtotal); $quotation_total = $producthelper->getProductFormattedPrice($row->quotation_total); $quotation_discount = $producthelper->getProductFormattedPrice($row->quotation_discount); $quotation_vat = $producthelper->getProductFormattedPrice($row->quotation_tax); } $search[] = "{quotation_subtotal}"; $replace[] = $quotation_subtotal; $search[] = "{quotation_total}"; $replace[] = $quotation_total; $search[] = "{quotation_subtotal_minus_discount}"; $replace[] = $quotation_subtotal_minus_discount; $search[] = "{quotation_subtotal_excl_vat}"; $replace[] = $quotation_subtotal_excl_vat; $search[] = "{quotation_discount}"; $replace[] = $quotation_discount; $search[] = "{quotation_vat}"; $replace[] = $quotation_vat; $quotationdetailurl = JURI::root() . 'index.php?option=com_redshop&view=quotation_detail&quoid=' . $quotation_id . '&encr=' . $row->quotation_encrkey; $search[] = "{quotation_detail_link}"; $replace[] = "<a href='" . $quotationdetailurl . "'>" . JText::_("COM_REDSHOP_QUOTATION_DETAILS") . "</a>"; $message = str_replace($search, $replace, $message); $message = $this->imginmail($message); $email = $row->quotation_email; // Set the e-mail parameters $from = $config->getValue('mailfrom'); $fromname = $config->getValue('fromname'); $body = $message; $subject = str_replace($search, $replace, $subject); // Send the e-mail if ($email != "") { $bcc = null; if (trim(ADMINISTRATOR_EMAIL) != '') { $bcc = explode(",", trim(ADMINISTRATOR_EMAIL)); } $bcc = array_merge($bcc, $mailbcc); if (!JUtility::sendMail($from, $fromname, $email, $subject, $body, 1, null, $bcc)) { $this->setError('ERROR_SENDING_QUOTATION_MAIL'); } } if ($status != 0) { $quotationHelper->updateQuotationStatus($quotation_id, $status); } return true; }
// ToDo: This is wrong way to generate tmpl file. And model function to load $this->product is wrong way also. Fix it. // ToDo: Echo a message when no records is returned by selection of empty category or wrong manufacturer in menu item params. $product = null; if (!empty($this->product)) { $product = $this->product[$i]; } if (!is_object($product)) { break; } $count_no_user_field = 0; // Counting accessory $accessorylist = $producthelper->getProductAccessory(0, $product->product_id); $totacc = count($accessorylist); $data_add = $template_product; // ProductFinderDatepicker Extra Field Start $data_add = $producthelper->getProductFinderDatepickerValue($template_product, $product->product_id, $fieldArray); // ProductFinderDatepicker Extra Field End /* * Process the prepare Product plugins */ $params = array(); $results = $this->dispatcher->trigger('onPrepareProduct', array(&$data_add, &$params, $product)); if (strstr($data_add, "{product_delivery_time}")) { $product_delivery_time = $producthelper->getProductMinDeliveryTime($product->product_id); if ($product_delivery_time != "") { $data_add = str_replace("{delivery_time_lbl}", JText::_('COM_REDSHOP_DELIVERY_TIME'), $data_add); $data_add = str_replace("{product_delivery_time}", $product_delivery_time, $data_add); } else { $data_add = str_replace("{delivery_time_lbl}", "", $data_add); $data_add = str_replace("{product_delivery_time}", "", $data_add); }
} // More documents end $hidden_thumb_image = "<input type='hidden' name='prd_main_imgwidth' id='prd_main_imgwidth' value='" . $pw_thumb . "'>\n\t\t\t\t\t\t<input type='hidden' name='prd_main_imgheight' id='prd_main_imgheight' value='" . $ph_thumb . "'>"; $link = JRoute::_('index.php?option=com_redshop&view=product&pid=' . $this->data->product_id); if (count($preselectedresult) > 0) { $thum_image = "<div class='productImageWrap' id='productImageWrapID_" . $this->data->product_id . "'>" . $producthelper->replaceProductImage($this->data, "", "", "", $pw_thumb, $ph_thumb, PRODUCT_DETAIL_IS_LIGHTBOX, 0, $preselectedresult) . "</div>"; } else { // Product image flying addwishlist time start $thum_image = "<div class='productImageWrap' id='productImageWrapID_" . $this->data->product_id . "'>" . $producthelper->getProductImage($this->data->product_id, $link, $pw_thumb, $ph_thumb, PRODUCT_DETAIL_IS_LIGHTBOX) . "</div>"; } // Product image flying addwishlist time end $template_desc = str_replace($pimg_tag, $thum_image . $hidden_thumb_image, $template_desc); $template_desc = $producthelper->getJcommentEditor($this->data, $template_desc); // ProductFinderDatepicker Extra Field Start $fieldArray = $extraField->getSectionFieldList(17, 0, 0); $template_desc = $producthelper->getProductFinderDatepickerValue($template_desc, $this->data->product_id, $fieldArray); // ProductFinderDatepicker Extra Field End // Product User Field Start $count_no_user_field = 0; $returnArr = $producthelper->getProductUserfieldFromTemplate($template_desc); $template_userfield = $returnArr[0]; $userfieldArr = $returnArr[1]; if (strstr($template_desc, "{if product_userfield}") && strstr($template_desc, "{product_userfield end if}") && $template_userfield != "") { $ufield = ""; $cart = $this->session->get('cart'); if (isset($cart['idx'])) { $idx = (int) $cart['idx']; } $idx = 0; $cart_id = ''; for ($j = 0; $j < $idx; $j++) {