示例#1
0
 public function prepareContinueLink()
 {
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryStr = '';
     if ($virtuemart_category_id) {
         $categoryStr = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $ItemidStr = '';
     $Itemid = shopFunctionsF::getLastVisitedItemId();
     if (!empty($Itemid)) {
         $ItemidStr = '&Itemid=' . $Itemid;
     }
     $this->continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryStr . $ItemidStr, FALSE);
     //$this->continue_link_html = '<a class="continue_link" href="' . $continue_link . '" ><span>' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</span></a>';
     $this->continue_link_html = '<a class="continue continue_link" href="' . $this->continue_link . '">' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
     $this->cart_link = JRoute::_('index.php?option=com_virtuemart&view=cart' . $ItemidStr, FALSE);
     return;
 }
示例#2
0
 private function prepareContinueLink()
 {
     // Get a continue link
     $menuid = JRequest::getVar('Itemid', '');
     if (!empty($menuid)) {
         $menuid = '&Itemid=' . $menuid;
     }
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryLink = '';
     if ($virtuemart_category_id) {
         $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . $menuid, FALSE);
     $continue_link_html = '<a class="continue_link" href="' . $continue_link . '" ><span>' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</span></a>';
     $this->assignRef('continue_link_html', $continue_link_html);
     $this->assignRef('continue_link', $continue_link);
     $cart_link = JRoute::_('index.php?option=com_virtuemart&view=cart' . $menuid, FALSE);
     $this->assignRef('cart_link', $cart_link);
 }
示例#3
0
 /**
  * Collect all data to show on the template
  *
  * @author RolandD, Max Milbers
  */
 function display($tpl = null)
 {
     //TODO get plugins running
     //		$dispatcher	= JDispatcher::getInstance();
     //		$limitstart	= JRequest::getVar('limitstart', 0, '', 'int');
     VmConfig::loadJLang('com_virtuemart', true);
     $show_prices = VmConfig::get('show_prices', 1);
     if ($show_prices == '1') {
         if (!class_exists('calculationHelper')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php';
         }
     }
     $this->assignRef('show_prices', $show_prices);
     $document = JFactory::getDocument();
     // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
     vmJsApi::jPrice();
     $mainframe = JFactory::getApplication();
     $pathway = $mainframe->getPathway();
     $task = JRequest::getCmd('task');
     if (!class_exists('VmImage')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php';
     }
     // Load the product
     //$product = $this->get('product');	//Why it is sensefull to use this construction? Imho it makes it just harder
     $product_model = VmModel::getModel('product');
     $this->assignRef('product_model', $product_model);
     $virtuemart_product_idArray = JRequest::getVar('virtuemart_product_id', 0);
     if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) {
         $virtuemart_product_id = (int) $virtuemart_product_idArray[0];
     } else {
         $virtuemart_product_id = (int) $virtuemart_product_idArray;
     }
     $quantityArray = JRequest::getVar('quantity', array());
     //is sanitized then
     JArrayHelper::toInteger($quantityArray);
     $quantity = 1;
     if (!empty($quantityArray[0])) {
         $quantity = $quantityArray[0];
     }
     $product = $product_model->getProduct($virtuemart_product_id, TRUE, TRUE, TRUE, $quantity);
     if (!class_exists('shopFunctionsF')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
     if (empty($product->slug)) {
         //Todo this should be redesigned to fit better for SEO
         $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'));
         $categoryLink = '';
         if (!$last_category_id) {
             $last_category_id = JRequest::getInt('virtuemart_category_id', false);
         }
         if ($last_category_id) {
             $categoryLink = '&virtuemart_category_id=' . $last_category_id;
         }
         if (VmConfig::get('handle_404', 1)) {
             $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE));
         } else {
             JError::raise(E_ERROR, '404', 'Not found');
         }
         return;
     }
     if (!empty($product->customfields)) {
         foreach ($product->customfields as $k => $custom) {
             if (!empty($custom->layout_pos)) {
                 $product->customfieldsSorted[$custom->layout_pos][] = $custom;
                 unset($product->customfields[$k]);
             }
         }
         $product->customfieldsSorted['normal'] = $product->customfields;
         unset($product->customfields);
     }
     $product->event = new stdClass();
     $product->event->afterDisplayTitle = '';
     $product->event->beforeDisplayContent = '';
     $product->event->afterDisplayContent = '';
     if (VmConfig::get('enable_content_plugin', 0)) {
         shopFunctionsF::triggerContentPlugin($product, 'productdetails', 'product_desc');
     }
     $product_model->addImages($product);
     $this->assignRef('product', $product);
     if (isset($product->min_order_level) && (int) $product->min_order_level > 0) {
         $min_order_level = $product->min_order_level;
     } else {
         $min_order_level = 1;
     }
     $this->assignRef('min_order_level', $min_order_level);
     if (isset($product->step_order_level) && (int) $product->step_order_level > 0) {
         $step_order_level = $product->step_order_level;
     } else {
         $step_order_level = 1;
     }
     $this->assignRef('step_order_level', $step_order_level);
     // Load the neighbours
     if (VmConfig::get('product_navigation', 1)) {
         $product->neighbours = $product_model->getNeighborProducts($product);
     }
     // Load the category
     $category_model = VmModel::getModel('category');
     shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id);
     if ($category_model) {
         $category = $category_model->getCategory($product->virtuemart_category_id);
         $category_model->addImages($category, 1);
         $this->assignRef('category', $category);
         //Seems we dont need this anylonger, destroyed the breadcrumb
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 if (is_object($c) and isset($c->category_name)) {
                     $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
                 } else {
                     vmdebug('Error, parent category has no name, breadcrumb maybe broken, category', $c);
                 }
             }
         }
         $category->children = $category_model->getChildCategoryList($product->virtuemart_vendor_id, $product->virtuemart_category_id);
         $category_model->addImages($category->children, 1);
     }
     if (!empty($tpl)) {
         $format = $tpl;
     } else {
         $format = JRequest::getWord('format', 'html');
     }
     if ($format == 'html') {
         // Set Canonic link
         $document->addHeadLink($product->canonical, 'canonical', 'rel', '');
     }
     $pathway->addItem(strip_tags($product->product_name));
     // Set the titles
     // $document->setTitle should be after the additem pathway
     if ($product->customtitle) {
         $document->setTitle(strip_tags($product->customtitle));
     } else {
         $document->setTitle(strip_tags(($category->category_name ? $category->category_name . ' : ' : '') . $product->product_name));
     }
     $ratingModel = VmModel::getModel('ratings');
     $allowReview = $ratingModel->allowReview($product->virtuemart_product_id);
     $this->assignRef('allowReview', $allowReview);
     $showReview = $ratingModel->showReview($product->virtuemart_product_id);
     $this->assignRef('showReview', $showReview);
     if ($showReview) {
         $review = $ratingModel->getReviewByProduct($product->virtuemart_product_id);
         $this->assignRef('review', $review);
         $rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id);
         $this->assignRef('rating_reviews', $rating_reviews);
     }
     $showRating = $ratingModel->showRating($product->virtuemart_product_id);
     $this->assignRef('showRating', $showRating);
     if ($showRating) {
         $vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id);
         $this->assignRef('vote', $vote);
         $rating = $ratingModel->getRatingByProduct($product->virtuemart_product_id);
         $this->assignRef('rating', $rating);
     }
     $allowRating = $ratingModel->allowRating($product->virtuemart_product_id);
     $this->assignRef('allowRating', $allowRating);
     // Check for editing access
     // @todo build edit page
     if (!class_exists('Permissions')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php';
     }
     //if (Permissions::getInstance()->check("admin,storeadmin")) {
     $perm = Permissions::getInstance();
     $admin = $perm->check("admin");
     if (!$admin) {
         vmdebug('No admin');
     }
     $storeadmin = $perm->check("admin,storeadmin");
     if (!$storeadmin) {
         vmdebug('No $storeadmin');
     }
     $superVendor = $perm->isSuperVendor();
     if (!$superVendor) {
         vmdebug('No $superVendor');
     }
     if ($admin or $perm->isSuperVendor() == $product->virtuemart_vendor_id and $storeadmin) {
         $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id;
         $edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false);
     } else {
         $edit_link = "";
     }
     $this->assignRef('edit_link', $edit_link);
     // todo: atm same form for "call for price" and "ask a question". Title of the form should be different
     $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component', FALSE);
     $this->assignRef('askquestion_url', $askquestion_url);
     // Load the user details
     $user = JFactory::getUser();
     $this->assignRef('user', $user);
     // More reviews link
     $uri = JURI::getInstance();
     $uri->setVar('showall', 1);
     $uristring = vmURI::getCleanUrl();
     $this->assignRef('more_reviews', $uristring);
     if ($product->metadesc) {
         $document->setDescription($product->metadesc);
     }
     if ($product->metakey) {
         $document->setMetaData('keywords', $product->metakey);
     }
     if ($product->metarobot) {
         $document->setMetaData('robots', $product->metarobot);
     }
     if ($mainframe->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $product->product_name);
         //Maybe better product_name
     }
     if ($mainframe->getCfg('MetaAuthor') == '1') {
         $document->setMetaData('author', $product->metaauthor);
     }
     $showBasePrice = Permissions::getInstance()->check('admin');
     //todo add config settings
     $this->assignRef('showBasePrice', $showBasePrice);
     $productDisplayShipments = array();
     $productDisplayPayments = array();
     if (!class_exists('vmPSPlugin')) {
         require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
     }
     JPluginHelper::importPlugin('vmshipment');
     JPluginHelper::importPlugin('vmpayment');
     $dispatcher = JDispatcher::getInstance();
     $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments));
     $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments));
     $this->assignRef('productDisplayPayments', $productDisplayPayments);
     $this->assignRef('productDisplayShipments', $productDisplayShipments);
     if (empty($category->category_template)) {
         $category->category_template = VmConfig::get('categorytemplate');
     }
     shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout);
     shopFunctionsF::addProductToRecent($virtuemart_product_id);
     $currency = CurrencyDisplay::getInstance();
     $this->assignRef('currency', $currency);
     if (JRequest::getCmd('layout', 'default') == 'notify') {
         $this->setLayout('notify');
     }
     //Added by Seyi Awofadeju to catch notify layout
     parent::display($tpl);
 }
示例#4
0
 function getContinueLink(&$ref)
 {
     include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
     if (!empty($no_continue_link)) {
         return "";
     }
     $cl = '';
     $reff = @$_SERVER['HTTP_REFERER'];
     if (!empty($reff)) {
         $reff = OPCloader::slash($reff);
         if (stripos($reff, 'script') === false) {
             $cl = $reff;
         }
     }
     if (empty($cl)) {
         $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
         $categoryLink = '';
         if ($virtuemart_category_id) {
             $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id;
         }
         $cl = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink);
     }
     $session = JFactory::getSession();
     if (!empty($cl)) {
         $cl2 = $session->get('lastcontiuelink', '', 'opc');
         if (!empty($cl2)) {
             return $cl2;
         }
         $session->set('lastcontiuelink', $cl, 'opc');
         return $cl;
     }
     $cl = $session->get('lastcontiuelink', '', 'opc');
     return $cl;
 }
示例#5
0
 /**
  * Add the product to the cart, with JS
  * @access public
  */
 public function addJS()
 {
     $this->json = new stdClass();
     $cart = VirtueMartCart::getCart(false);
     if ($cart) {
         $view = $this->getView('cart', 'json');
         $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
         $categoryLink = '';
         if ($virtuemart_category_id) {
             $categoryLink = '&view=category&virtuemart_category_id=' . $virtuemart_category_id;
         }
         $continue_link = JRoute::_('index.php?option=com_virtuemart' . $categoryLink);
         $virtuemart_product_ids = vRequest::getInt('virtuemart_product_id');
         $view = $this->getView('cart', 'json');
         $errorMsg = 0;
         $products = $cart->add($virtuemart_product_ids, $errorMsg);
         $view->setLayout('padded');
         $this->json->stat = '1';
         if (!$products or count($products) == 0) {
             $view->setLayout('perror');
             $this->json->stat = '2';
         }
         $view->assignRef('products', $products);
         $view->assignRef('errorMsg', $errorMsg);
         ob_start();
         $view->display();
         $this->json->msg = ob_get_clean();
     } else {
         $this->json->msg = '<a href="' . JRoute::_('index.php?option=com_virtuemart', FALSE) . '" >' . vmText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
         $this->json->msg .= '<p>' . vmText::_('COM_VIRTUEMART_MINICART_ERROR') . '</p>';
         $this->json->stat = '0';
     }
     echo json_encode($this->json);
     jExit();
 }
示例#6
0
    public function getProductSingle($virtuemart_product_id = null, $front = true, $withCalc = true, $onlyPublished = true)
    {
        //$this->fillVoidProduct($front);
        if (!empty($virtuemart_product_id)) {
            $virtuemart_product_id = $this->setId($virtuemart_product_id);
        }
        //		if(empty($this->_data)){
        if (!empty($this->_id)) {
            // 			$joinIds = array('virtuemart_product_price_id' =>'#__virtuemart_product_prices','virtuemart_manufacturer_id' =>'#__virtuemart_product_manufacturers','virtuemart_customfield_id' =>'#__virtuemart_product_customfields');
            $joinIds = array('virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields');
            $product = $this->getTable('products');
            $product->load($this->_id, 0, 0, $joinIds);
            $xrefTable = $this->getTable('product_medias');
            $product->virtuemart_media_id = $xrefTable->load((int) $this->_id);
            // Load the shoppers the product is available to for Custom Shopper Visibility
            $product->shoppergroups = $this->getProductShoppergroups($this->_id);
            if (!empty($product->shoppergroups) and $front) {
                if (!class_exists('VirtueMartModelUser')) {
                    require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php';
                }
                $usermodel = VmModel::getModel('user');
                $currentVMuser = $usermodel->getUser();
                $virtuemart_shoppergroup_ids = (array) $currentVMuser->shopper_groups;
                // 				vmdebug('$user->shoppergroups',$virtuemart_shoppergroup_ids);
                $commonShpgrps = array_intersect($virtuemart_shoppergroup_ids, $product->shoppergroups);
                if (empty($commonShpgrps)) {
                    $product = new stdClass();
                    return $this->fillVoidProduct($front);
                }
            }
            $ppTable = $this->getTable('product_prices');
            $ppTable->load($this->_id);
            $product = (object) array_merge((array) $ppTable, (array) $product);
            if (!empty($product->virtuemart_manufacturer_id)) {
                $mfTable = $this->getTable('manufacturers');
                $mfTable->load((int) $product->virtuemart_manufacturer_id);
                $product = (object) array_merge((array) $mfTable, (array) $product);
            } else {
                $product->virtuemart_manufacturer_id = array();
                $product->mf_name = '';
                $product->mf_desc = '';
                $product->mf_url = '';
            }
            // Load the categories the product is in
            $product->categories = $this->getProductCategories($this->_id, $front);
            if (!empty($product->categories) and is_array($product->categories) and !empty($product->categories[0])) {
                $product->virtuemart_category_id = $product->categories[0];
                $q = 'SELECT `ordering`,`id` FROM `#__virtuemart_product_categories`
					WHERE `virtuemart_product_id` = "' . $this->_id . '" and `virtuemart_category_id`= "' . $product->virtuemart_category_id . '" ';
                $this->_db->setQuery($q);
                // change for faster ordering
                $ordering = $this->_db->loadObject();
                if (!empty($ordering)) {
                    $product->ordering = $ordering->ordering;
                    //What is this? notice by Max Milbers
                    $product->id = $ordering->id;
                }
            }
            if (empty($product->virtuemart_category_id)) {
                if (isset($product->categories[0])) {
                    $product->virtuemart_category_id = $product->categories[0];
                } else {
                    $product->virtuemart_category_id = 0;
                }
            }
            if (!empty($product->categories[0])) {
                $virtuemart_category_id = 0;
                if ($front) {
                    if (!class_exists('shopFunctionsF')) {
                        require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
                    }
                    $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                    if (in_array($last_category_id, $product->categories)) {
                        $virtuemart_category_id = $last_category_id;
                    } else {
                        $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', 0);
                    }
                }
                if ($virtuemart_category_id == 0) {
                    if (array_key_exists('0', $product->categories)) {
                        $virtuemart_category_id = $product->categories[0];
                    }
                }
                $catTable = $this->getTable('categories');
                $catTable->load($virtuemart_category_id);
                $product->category_name = $catTable->category_name;
            } else {
                $product->category_name = '';
            }
            // $this->productHasCustoms($this->_id);
            if (!$front) {
                // 				if (!empty($product->virtuemart_customfield_id ) ){
                $customfields = VmModel::getModel('Customfields');
                $product->customfields = $customfields->getproductCustomslist($this->_id);
                if (empty($product->customfields) and !empty($product->product_parent_id)) {
                    //$product->customfields = $this->productCustomsfieldsClone($product->product_parent_id,true) ;
                    $product->customfields = $customfields->getproductCustomslist($product->product_parent_id, $this->_id);
                    $product->customfields_parent_id = $product->product_parent_id;
                }
                // 				vmdebug('$product->customfields',$product->customfields);
            } else {
                // Add the product link  for canonical
                $productCategory = empty($product->categories[0]) ? '' : $product->categories[0];
                $product->canonical = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->_id . '&virtuemart_category_id=' . $productCategory;
                $product->link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->_id . '&virtuemart_category_id=' . $productCategory);
                //only needed in FE productdetails, is now loaded in the view.html.php
                //				/* Load the neighbours */
                //				$product->neighbours = $this->getNeighborProducts($product);
                // Fix the product packaging
                if ($product->product_packaging) {
                    $product->packaging = $product->product_packaging & 0xffff;
                    $product->box = $product->product_packaging >> 16 & 0xffff;
                } else {
                    $product->packaging = '';
                    $product->box = '';
                }
                // Load the vendor details
                //				if(!class_exists('VirtueMartModelVendor')) require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'vendor.php');
                //				$product->vendor_name = VirtueMartModelVendor::getVendorName($product->virtuemart_vendor_id);
                // set the custom variants
                if (!empty($product->virtuemart_customfield_id)) {
                    $customfields = VmModel::getModel('Customfields');
                    // Load the custom product fields
                    $product->customfields = $customfields->getProductCustomsField($product);
                    $product->customfieldsRelatedCategories = $customfields->getProductCustomsFieldRelatedCategories($product);
                    $product->customfieldsRelatedProducts = $customfields->getProductCustomsFieldRelatedProducts($product);
                    //  custom product fields for add to cart
                    $product->customfieldsCart = $customfields->getProductCustomsFieldCart($product);
                    $child = $this->getProductChilds($this->_id);
                    $product->customsChilds = $customfields->getProductCustomsChilds($child, $this->_id);
                }
                // 				vmdebug('my product ',$product);
                // Check the stock level
                if (empty($product->product_in_stock)) {
                    $product->product_in_stock = 0;
                }
                // Get stock indicator
                //				$product->stock = $this->getStockIndicator($product);
            }
        } else {
            $product = new stdClass();
            return $this->fillVoidProduct($front);
        }
        //		}
        $this->product = $product;
        return $product;
    }
示例#7
0
 function prepareContinueLink()
 {
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryStr = '';
     if ($virtuemart_category_id) {
         $categoryStr = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $ItemidStr = '';
     $Itemid = shopFunctionsF::getLastVisitedItemId();
     if (!empty($Itemid)) {
         $ItemidStr = '&Itemid=' . $Itemid;
     }
     $lang = '';
     if (VmConfig::$langCount > 1 and !empty(VmConfig::$vmlangSef)) {
         $lang = '&lang=' . VmConfig::$vmlangSef;
     }
     $this->continue_link = JURI::root() . '/index.php?option=com_virtuemart&view=category' . $categoryStr . $lang . $ItemidStr;
     $this->continue_link_html = '<a class="continue_link" href="' . $this->continue_link . '">' . vmText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
     $this->cart_link = JURI::root() . 'index.php?option=com_virtuemart&view=cart' . $lang;
     return;
 }
示例#8
0
 public function display($tpl = null)
 {
     $show_prices = tsmConfig::get('show_prices', 1);
     if ($show_prices == '1') {
         if (!class_exists('calculationHelper')) {
             require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php';
         }
     }
     $this->assignRef('show_prices', $show_prices);
     if (!class_exists('shopFunctionsF')) {
         require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $pathway = $app->getPathway();
     if (!class_exists('VmImage')) {
         require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php';
     }
     // set search and keyword
     if ($keyword = vRequest::getString('keyword', false)) {
         //uword('keyword', false, ' ,-,+,.,_')) {
         $pathway->addItem($keyword);
         //$title .=' ('.$keyword.')';
     }
     //$search = vRequest::uword('keyword', null);
     $this->searchcustom = '';
     $this->searchCustomValues = '';
     //if (!empty($keyword)) {
     $this->getSearchCustom();
     $search = $keyword;
     /*} else {
     			$keyword ='';
     			$search = NULL;
     		}*/
     $this->assignRef('keyword', $keyword);
     $this->assignRef('search', $search);
     $menus = $app->getMenu();
     $menu = $menus->getActive();
     if (!empty($menu->id)) {
         ShopFunctionsF::setLastVisitedItemId($menu->id);
     } else {
         if ($itemId = vRequest::getInt('Itemid', false)) {
             ShopFunctionsF::setLastVisitedItemId($itemId);
         }
     }
     $virtuemart_manufacturer_id = vRequest::getInt('virtuemart_manufacturer_id', -1);
     if ($virtuemart_manufacturer_id === -1 and !empty($menu->query['virtuemart_manufacturer_id'])) {
         $virtuemart_manufacturer_id = $menu->query['virtuemart_manufacturer_id'];
         vRequest::setVar('virtuemart_manufacturer_id', $virtuemart_manufacturer_id);
     }
     $this->categoryId = vRequest::getInt('virtuemart_category_id', -1);
     if ($this->categoryId === -1 and !empty($menu->query['virtuemart_category_id'])) {
         $this->categoryId = $menu->query['virtuemart_category_id'];
         vRequest::setVar('virtuemart_category_id', $this->categoryId);
     } else {
         if ($this->categoryId === -1 and $virtuemart_manufacturer_id === -1) {
             $this->categoryId = ShopFunctionsF::getLastVisitedCategoryId();
         }
     }
     $this->setCanonicalLink($tpl, $document, $this->categoryId, $virtuemart_manufacturer_id);
     if (($this->categoryId === -1 or $this->categoryId === 0) and $virtuemart_manufacturer_id) {
         $this->categoryId = 0;
         $catType = 'manufacturer';
         $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType);
     }
     $categoryModel = tmsModel::getModel('category');
     $productModel = tmsModel::getModel('product');
     if ($this->categoryId === -1) {
         $this->categoryId = 0;
     }
     $vendorId = 1;
     $category = $categoryModel->getCategory($this->categoryId);
     if (!isset($menu->query['showproducts'])) {
         $menu->query['showproducts'] = 1;
     }
     $this->showproducts = vRequest::getInt('showproducts', $menu->query['showproducts']);
     if (!empty($category)) {
         $vendorId = $category->virtuemart_vendor_id;
         if ($this->showproducts) {
             //if(empty($category->category_layout) or $category->category_layout != 'categories') {
             // Load the products in the given category
             $this->products = $productModel->getItemList();
             //$products = $productModel->getProductsInCategory($this->categoryId);
             $productModel->addImages($this->products, tsmConfig::get('prodimg_browse', 1));
         }
         //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers
         if (!empty($this->categoryId) and $this->categoryId !== -1 and (empty($category->slug) or !$category->published)) {
             if (empty($category->slug)) {
                 vmInfo(tsmText::_('COM_VIRTUEMART_CAT_NOT_FOUND'));
             } else {
                 if ($category->virtuemart_id !== 0 and !$category->published) {
                     vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $this->categoryId);
                 }
             }
             //Fallback
             $categoryLink = '';
             if ($category->category_parent_id) {
                 $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id;
             } else {
                 $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                 if (!$last_category_id or $this->categoryId == $last_category_id) {
                     $last_category_id = vRequest::getInt('virtuemart_category_id', false);
                 }
                 if ($last_category_id and $this->categoryId != $last_category_id) {
                     $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id;
                 }
             }
             if (tsmConfig::get('handle_404', 1)) {
                 $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE));
             } else {
                 JError::raise(E_ERROR, '404', 'Not found');
             }
             return;
         }
         shopFunctionsF::setLastVisitedCategoryId($this->categoryId);
         shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id);
         // Add the category name to the pathway
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 $pathway->addItem(strip_tags(tsmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
             }
         }
         $categoryModel->addImages($category, 1);
         if (!isset($menu->query['showcategory'])) {
             $menu->query['showcategory'] = 1;
         }
         $this->showcategory = vRequest::getInt('showcategory', $menu->query['showcategory']);
         //$this->showcategory = vRequest::getInt('showcategory',true);
         if ($this->showcategory) {
             //if($category->category_layout == 'categories' or ($this->categoryId >0 and $virtuemart_manufacturer_id <1)){
             $category->children = $categoryModel->getChildCategoryList($vendorId, $this->categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir);
             $categoryModel->addImages($category->children, 1);
         } else {
             $category->children = false;
         }
         if (tsmConfig::get('enable_content_plugin', 0)) {
             shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description');
         }
         if ($category->metadesc) {
             $document->setDescription($category->metadesc);
         }
         if ($category->metakey) {
             $document->setMetaData('keywords', $category->metakey);
         }
         if ($category->metarobot) {
             $document->setMetaData('robots', $category->metarobot);
         }
         if ($app->getCfg('MetaAuthor') == '1') {
             $document->setMetaData('author', $category->metaauthor);
         }
         if (empty($category->category_template)) {
             $category->category_template = tsmConfig::get('categorytemplate');
         }
         if (!empty($menu->query['categorylayout'])) {
             //if(!empty($menu->query['categorylayout']) and $menu->query['virtuemart_category_id']==$this->categoryId){
             $category->category_layout = $menu->query['categorylayout'];
         }
         $productsLayout = tsmConfig::get('productsublayout', 'products');
         if (empty($productsLayout)) {
             $productsLayout = 'products';
         }
         $this->productsLayout = empty($menu->query['productsublayout']) ? $productsLayout : $menu->query['productsublayout'];
         shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout);
     } else {
         //Backward compatibility
         if (!isset($category)) {
             $category = new stdClass();
             $category->category_name = '';
             $category->category_description = '';
             $category->haschildren = false;
         }
     }
     $this->assignRef('category', $category);
     // Set the titles
     if (!empty($category->customtitle)) {
         $title = strip_tags($category->customtitle);
     } elseif (!empty($category->category_name)) {
         $title = strip_tags($category->category_name);
     } else {
         $title = $this->setTitleByJMenu($app);
     }
     $title = tsmText::_($title);
     if (vRequest::getInt('error')) {
         $title .= ' ' . tsmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
     }
     if (!empty($keyword)) {
         $title .= ' (' . strip_tags(htmlspecialchars_decode($keyword)) . ')';
     }
     if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0])) {
         $title .= ' ' . $this->products[0]->mf_name;
     }
     $document->setTitle($title);
     // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title.
     if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0]) and isset($category->category_name)) {
         $category->category_name = $this->products[0]->mf_name;
     }
     if ($app->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $title);
     }
     parent::display($tpl);
 }
示例#9
0
 /**
  * Add the product to the cart, with JS
  *
  * @author Max Milbers
  * @access public
  */
 public function addJS()
 {
     //maybe we should use $mainframe->close(); or jexit();instead of die;
     /* Load the cart helper */
     //require_once(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php');
     $this->json = null;
     $cart = VirtueMartCart::getCart(false);
     if ($cart) {
         // Get a continue link */
         $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
         if ($virtuemart_category_id) {
             $categoryLink = '&view=category&virtuemart_category_id=' . $virtuemart_category_id;
         } else {
             $categoryLink = '';
         }
         $continue_link = JRoute::_('index.php?option=com_virtuemart' . $categoryLink);
         $virtuemart_product_ids = JRequest::getVar('virtuemart_product_id', array(), 'default', 'array');
         $errorMsg = JText::_('COM_VIRTUEMART_CART_PRODUCT_ADDED');
         if ($cart->add($virtuemart_product_ids, $errorMsg)) {
             $this->json->msg = '<a class="continue" href="' . $continue_link . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
             $this->json->msg .= '<a class="showcart floatright" href="' . JRoute::_("index.php?option=com_virtuemart&view=cart") . '">' . JText::_('COM_VIRTUEMART_CART_SHOW_MODAL') . '</a>';
             if ($errorMsg) {
                 $this->json->msg .= '<div>' . $errorMsg . '</div>';
             }
             $this->json->stat = '1';
         } else {
             // $this->json->msg = '<p>' . $cart->getError() . '</p>';
             $this->json->msg = '<a class="continue" href="' . $continue_link . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
             $this->json->msg .= '<div>' . $errorMsg . '</div>';
             $this->json->stat = '2';
         }
     } else {
         $this->json->msg = '<a href="' . JRoute::_('index.php?option=com_virtuemart') . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
         $this->json->msg .= '<p>' . JText::_('COM_VIRTUEMART_MINICART_ERROR') . '</p>';
         $this->json->stat = '0';
     }
     echo json_encode($this->json);
     jExit();
 }
示例#10
0
文件: product.php 项目: lenard112/cms
 public function getProductSingle($virtuemart_product_id = NULL, $front = TRUE, $quantity = 1, $withParent = false, $virtuemart_shoppergroup_ids = 0)
 {
     if (!empty($virtuemart_product_id)) {
         $virtuemart_product_id = $this->setId($virtuemart_product_id);
     }
     if ($virtuemart_shoppergroup_ids === 0) {
         $usermodel = VmModel::getModel('user');
         $currentVMuser = $usermodel->getCurrentUser();
         if (!is_array($currentVMuser->shopper_groups)) {
             $virtuemart_shoppergroup_ids = (array) $currentVMuser->shopper_groups;
         } else {
             $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups;
         }
     }
     $virtuemart_shoppergroup_idsString = 0;
     if (!empty($virtuemart_shoppergroup_ids) and is_array($virtuemart_shoppergroup_ids)) {
         $virtuemart_shoppergroup_idsString = implode('', $virtuemart_shoppergroup_ids);
     } else {
         if (!empty($virtuemart_shoppergroup_ids)) {
             $virtuemart_shoppergroup_idsString = $virtuemart_shoppergroup_ids;
         }
     }
     $front = $front ? TRUE : 0;
     $this->withRating = $this->withRating ? TRUE : 0;
     $productKey = $virtuemart_product_id . $virtuemart_shoppergroup_idsString . $quantity . $front . $this->withRating;
     //$productKey = md5($virtuemart_product_id.$front.$quantity.$customfields.$this->withRating.$virtuemart_shoppergroup_idsString);
     static $_productsSingle = array();
     if (array_key_exists($productKey, $_productsSingle)) {
         //vmdebug('getProduct, take from cache '.$productKey);
         return clone $_productsSingle[$productKey];
     } else {
         if (!$this->withRating) {
             $productKey = $virtuemart_product_id . $virtuemart_shoppergroup_idsString . $quantity . $front . TRUE;
             //vmdebug('getProductSingle, recreate $productKey '.$productKey);
             if (array_key_exists($productKey, $_productsSingle)) {
                 //vmdebug('getProductSingle, take from cache recreated key',$_productsSingle[$productKey]);
                 return clone $_productsSingle[$productKey];
             }
         }
     }
     if (!empty($this->_id)) {
         if ($this->withRating) {
             //$joinIds = array('rating' => '#__virtuemart_ratings','virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields');
             $joinIds = array('rating' => '#__virtuemart_ratings');
         } else {
             //$joinIds = array('virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields');
             $joinIds = array();
         }
         $product = $this->getTable('products');
         $product->load($this->_id, 0, 0, $joinIds);
         $product->allIds = array();
         $xrefTable = $this->getTable('product_medias');
         $product->virtuemart_media_id = $xrefTable->load((int) $this->_id);
         // Load the shoppers the product is available to for Custom Shopper Visibility
         $product->shoppergroups = $this->getProductShoppergroups($this->_id);
         $usermodel = VmModel::getModel('user');
         $currentVMuser = $usermodel->getCurrentUser();
         if (!is_array($currentVMuser->shopper_groups)) {
             $virtuemart_shoppergroup_ids = (array) $currentVMuser->shopper_groups;
         } else {
             $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups;
         }
         if (!empty($product->shoppergroups) and $front) {
             if (!class_exists('VirtueMartModelUser')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php';
             }
             $commonShpgrps = array_intersect($virtuemart_shoppergroup_ids, $product->shoppergroups);
             if (empty($commonShpgrps)) {
                 vmdebug('getProductSingle creating void product, shoppergroups does not fit ', $product->shoppergroups);
                 return $this->fillVoidProduct($front);
             }
         }
         $this->getRawProductPrices($product, $quantity, $virtuemart_shoppergroup_ids, $front, $withParent);
         $xrefTable = $this->getTable('product_manufacturers');
         $product->virtuemart_manufacturer_id = $xrefTable->load((int) $this->_id);
         if (!empty($product->virtuemart_manufacturer_id[0])) {
             //This is a fallback
             $mfTable = $this->getTable('manufacturers');
             $mfTable->load((int) $product->virtuemart_manufacturer_id[0]);
             $product = (object) array_merge((array) $mfTable, (array) $product);
         } else {
             $product->virtuemart_manufacturer_id = array();
             $product->mf_name = '';
             $product->mf_desc = '';
             $product->mf_url = '';
         }
         // Load the categories the product is in
         $product->categoryItem = $this->getProductCategories($this->_id, FALSE);
         //We need also the unpublished categories, else the calculation rules do not work
         $product->canonCatId = false;
         if (!empty($product->categoryItem)) {
             //$tmp = array();
             foreach ($product->categoryItem as $category) {
                 if ($category['published'] and !$product->canonCatId) {
                     $product->canonCatId = $category['virtuemart_category_id'];
                 }
                 $tmp[] = $category['virtuemart_category_id'];
             }
             $product->categories = $tmp;
         }
         $product->virtuemart_category_id = 0;
         if (!empty($product->categories) and is_array($product->categories)) {
             if ($front) {
                 if (!class_exists('shopFunctionsF')) {
                     require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
                 }
                 //We must first check if we come from another category, due the canoncial link we would have always the same catgory id for a product
                 //But then we would have wrong neighbored products / category and product layouts
                 $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                 if ($last_category_id !== 0 and in_array($last_category_id, $product->categories)) {
                     $product->virtuemart_category_id = $last_category_id;
                 }
             }
             if (empty($product->virtuemart_category_id)) {
                 $virtuemart_category_id = vRequest::getInt('virtuemart_category_id', 0);
                 if ($virtuemart_category_id !== 0 and in_array($virtuemart_category_id, $product->categories)) {
                     $product->virtuemart_category_id = $virtuemart_category_id;
                 } else {
                     if (!empty($product->canonCatLink)) {
                         $product->virtuemart_category_id = $product->canonCatLink;
                     } else {
                         if (!$front and !empty($product->categories) and is_array($product->categories) and array_key_exists(0, $product->categories)) {
                             $product->virtuemart_category_id = $product->categories[0];
                             //vmdebug('I take for product the main category ',$product->virtuemart_category_id,$product->categories);
                         }
                     }
                 }
             }
         }
         if (!empty($product->virtuemart_category_id)) {
             $found = false;
             foreach ($product->categoryItem as $category) {
                 if ($category['virtuemart_category_id'] == $product->virtuemart_category_id) {
                     $product->ordering = $category['ordering'];
                     //This is the ordering id in the list to store the ordering notice by Max Milbers
                     $product->id = $category['id'];
                     $product->category_name = $category['category_name'];
                     $found = true;
                     break;
                 }
             }
             if (!$found) {
                 $product->ordering = $this->_autoOrder++;
                 $product->id = $this->_autoOrder;
                 vmdebug('$product->virtuemart_category_id no ordering stored for product ' . $this->_id);
             }
         } else {
             $product->category_name = null;
             $product->virtuemart_category_id = null;
             $product->ordering = null;
             $product->id = $this->_autoOrder++;
             //vmdebug('$product->virtuemart_category_id is empty ',$product->virtuemart_product_id);
         }
         // Check the stock level
         if (empty($product->product_in_stock)) {
             $product->product_in_stock = 0;
         }
         //$product->setDboNull();
         $_productsSingle[$productKey] = $product;
     } else {
         $_productsSingle[$productKey] = $this->fillVoidProduct($front);
     }
     return clone $_productsSingle[$productKey];
 }
示例#11
0
    /**
     * This function retrieves the "neighbor" products of a product specified by $virtuemart_product_id
     * Neighbors are the previous and next product in the current list
     *
     * @author RolandD, Max Milbers
     * @param object $product The product to find the neighours of
     * @return array
     */
    public function getNeighborProducts($product, $onlyPublished = TRUE, $max = 1)
    {
        $db = JFactory::getDBO();
        $neighbors = array('previous' => '', 'next' => '');
        $direction = 'DESC';
        $op = '<';
        $app = JFactory::getApplication();
        if ($app->isSite()) {
            $usermodel = VmModel::getModel('user');
            $currentVMuser = $usermodel->getUser();
            $virtuemart_shoppergroup_ids = (array) $currentVMuser->shopper_groups;
        }
        foreach ($neighbors as &$neighbor) {
            $q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`
				FROM `#__virtuemart_products` as `p`
				JOIN `#__virtuemart_products_' . VMLANG . '` as `l` using (`virtuemart_product_id`)
				JOIN `#__virtuemart_product_categories` as `pc` using (`virtuemart_product_id`)';
            if ($app->isSite()) {
                $q .= '	LEFT JOIN `#__virtuemart_product_shoppergroups` as `psgr` on (`psgr`.`virtuemart_product_id`=`l`.`virtuemart_product_id`)';
            }
            if ($app->isSite()) {
                if (!class_exists('shopFunctionsF')) {
                    require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopFunctionsF.php';
                }
                $lastId = shopFunctionsF::getLastVisitedCategoryId();
                if (empty($lastId)) {
                    $lastId = (int) $product->virtuemart_category_id;
                }
                $q .= '	WHERE `virtuemart_category_id` = ' . $lastId;
            } else {
                $q .= '	WHERE `virtuemart_category_id` = ' . (int) $product->virtuemart_category_id;
            }
            $q .= ' and `slug` ' . $op . ' "' . $product->slug . '" ';
            if ($app->isSite()) {
                if (is_array($virtuemart_shoppergroup_ids)) {
                    $sgrgroups = array();
                    foreach ($virtuemart_shoppergroup_ids as $key => $virtuemart_shoppergroup_id) {
                        $sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id`= "' . (int) $virtuemart_shoppergroup_id . '" ';
                    }
                    $sgrgroups[] = 'psgr.`virtuemart_shoppergroup_id` IS NULL ';
                    $q .= " AND ( " . implode(' OR ', $sgrgroups) . " ) ";
                }
            }
            //	$q .= ' AND (`psgr`.`virtuemart_shoppergroup_id` IS NULL OR `psgr`.`virtuemart_shoppergroup_id`= "'..'"  ';
            if ($onlyPublished) {
                $q .= ' AND p.`published`= 1';
            }
            $q .= ' ORDER BY `slug` ' . $direction . ' LIMIT 0,' . (int) $max;
            $db->setQuery($q);
            if ($result = $db->loadAssocList()) {
                $neighbor = $result;
            }
            $direction = 'ASC';
            $op = '>';
            //vmdebug('getNeighborProducts '.$db->getQuery());
            //vmdebug('getNeighborProducts '.$db->getErrorMsg());
        }
        return $neighbors;
    }
示例#12
0
 public function display($tpl = null)
 {
     $show_prices = VmConfig::get('show_prices', 1);
     if ($show_prices == '1') {
         if (!class_exists('calculationHelper')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php';
         }
     }
     $this->assignRef('show_prices', $show_prices);
     // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
     vmJsApi::jPrice();
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $pathway = $app->getPathway();
     if (!class_exists('VmImage')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php';
     }
     $categoryModel = VmModel::getModel('category');
     $productModel = VmModel::getModel('product');
     // set search and keyword
     if ($keyword = vmRequest::uword('keyword', false, ' ,-,+,.,_')) {
         $pathway->addItem($keyword);
         //$title .=' ('.$keyword.')';
     }
     //$search = VmRequest::uword('keyword', null);
     $this->searchcustom = '';
     $this->searchcustomvalues = '';
     if (!empty($keyword)) {
         $this->searchcustom = $this->getSearchCustom();
         $search = $keyword;
     } else {
         $keyword = '';
         $search = NULL;
     }
     $this->assignRef('search', $search);
     $this->assignRef('keyword', $keyword);
     $categoryId = JRequest::getInt('virtuemart_category_id', false);
     $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', false);
     if ($categoryId === false and $virtuemart_manufacturer_id === false) {
         $categoryId = ShopFunctionsF::getLastVisitedCategoryId();
         $catType = 'category';
         $this->setCanonicalLink($tpl, $document, $categoryId, $catType);
     } else {
         if ($categoryId === false and $virtuemart_manufacturer_id) {
             $catType = 'manufacturer';
             $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType);
         } else {
             $catType = 'category';
             $this->setCanonicalLink($tpl, $document, $categoryId, $catType);
         }
     }
     if ($categoryId !== -1) {
         $vendorId = 1;
         $category = $categoryModel->getCategory($categoryId);
     }
     if (!empty($category)) {
         if (empty($category->category_layout) or $category->category_layout != 'category') {
             // Load the products in the given category
             $ids = $productModel->sortSearchListQuery(TRUE, $categoryId);
             $perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row;
             $this->assignRef('perRow', $perRow);
             $pagination = $productModel->getPagination($perRow);
             $this->assignRef('vmPagination', $pagination);
             $products = $productModel->getProducts($ids);
             //$products = $productModel->getProductsInCategory($categoryId);
             $productModel->addImages($products, 1);
             $this->assignRef('products', $products);
             if ($products) {
                 $currency = CurrencyDisplay::getInstance();
                 $this->assignRef('currency', $currency);
                 foreach ($products as $product) {
                     $product->stock = $productModel->getStockIndicator($product);
                 }
             }
             $ratingModel = VmModel::getModel('ratings');
             $showRating = $ratingModel->showRating();
             $this->assignRef('showRating', $showRating);
             $orderByList = $productModel->getOrderByList($categoryId);
             $this->assignRef('orderByList', $orderByList);
             // Add feed links
             if ($products && VmConfig::get('feed_cat_published', 0) == 1) {
                 $link = '&format=feed&limitstart=';
                 $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
                 $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs);
                 $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
                 $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs);
             }
             if (!class_exists('Permissions')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php';
             }
             $showBasePrice = Permissions::getInstance()->check('admin');
             //todo add config settings
             $this->assignRef('showBasePrice', $showBasePrice);
         }
         //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers
         if (!empty($categoryId) and $categoryId !== -1 and (empty($category->slug) or !$category->published)) {
             if (empty($category->slug)) {
                 vmInfo(JText::_('COM_VIRTUEMART_CAT_NOT_FOUND'));
             } else {
                 if ($category->virtuemart_id !== 0 and !$category->published) {
                     vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $categoryId);
                 }
             }
             //Fallback
             $categoryLink = '';
             if ($category->category_parent_id) {
                 $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id;
             } else {
                 $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                 if (!$last_category_id or $categoryId == $last_category_id) {
                     $last_category_id = JRequest::getInt('virtuemart_category_id', false);
                 }
                 if ($last_category_id and $categoryId != $last_category_id) {
                     $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id;
                 }
             }
             $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE));
             return;
         }
         shopFunctionsF::setLastVisitedCategoryId($categoryId);
         shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id);
         // Add the category name to the pathway
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
             }
         }
         $categoryModel->addImages($category, 1);
         $cache = JFactory::getCache('com_virtuemart', 'callback');
         $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir);
         $categoryModel->addImages($category->children, 1);
         if (VmConfig::get('enable_content_plugin', 0)) {
             shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description');
         }
         if ($category->metadesc) {
             $document->setDescription($category->metadesc);
         }
         if ($category->metakey) {
             $document->setMetaData('keywords', $category->metakey);
         }
         if ($category->metarobot) {
             $document->setMetaData('robots', $category->metarobot);
         }
         if ($app->getCfg('MetaAuthor') == '1') {
             $document->setMetaData('author', $category->metaauthor);
         }
         if (empty($category->category_template)) {
             $category->category_template = VmConfig::get('categorytemplate');
         }
         shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout);
     } else {
         //Backward compatibility
         if (!isset($category)) {
             $category = new stdClass();
             $category->category_name = '';
             $category->category_description = '';
             $category->haschildren = false;
         }
     }
     $this->assignRef('category', $category);
     // Set the titles
     if (!empty($category->customtitle)) {
         $title = strip_tags($category->customtitle);
     } elseif (!empty($category->category_name)) {
         $title = strip_tags($category->category_name);
     } else {
         $title = $this->setTitleByJMenu($app);
     }
     if (JRequest::getInt('error')) {
         $title .= ' ' . JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
     }
     if (!empty($keyword)) {
         $title .= ' (' . $keyword . ')';
     }
     if ($virtuemart_manufacturer_id and !empty($products[0])) {
         $title .= ' ' . $products[0]->mf_name;
     }
     $document->setTitle($title);
     // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title.
     if (JRequest::getInt('virtuemart_manufacturer_id') and !empty($products[0]) and isset($category->category_name)) {
         $category->category_name = $products[0]->mf_name;
     }
     if ($app->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $title);
     }
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $show_prices = VmConfig::get('show_prices', 1);
     if ($show_prices == '1') {
         JLoader::register('calculationHelper', JPATH_VM_ADMINISTRATOR . '/helpers/calculationh.php');
     }
     $this->assignRef('show_prices', $show_prices);
     // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
     vmJsApi::jPrice();
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $pathway = $app->getPathway();
     JLoader::register('VmImage', JPATH_VM_ADMINISTRATOR . '/helpers/image.php');
     $categoryModel = VmModel::getModel('category');
     $productModel = VmModel::getModel('product');
     $search = JRequest::getvar('keyword', null);
     if ($search !== null) {
         $searchcustom = $this->getSearchCustom();
     }
     $this->assignRef('keyword', $keyword);
     $this->assignRef('search', $search);
     $categoryId = JRequest::getInt('virtuemart_category_id', ShopFunctionsF::getLastVisitedCategoryId());
     $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', 0);
     $this->setCanonicalLink($tpl, $document, $categoryId);
     // $vendorId = JRequest::getInt('virtuemart_vendor_id', 1);
     $vendorId = JRequest::getInt('virtuemart_vendor_id', null);
     // Load the products in the given category
     $products = $productModel->getProductsInCategory($categoryId, $vendorId);
     $productModel->addImages($products, 1);
     $this->assignRef('products', $products);
     if ($products) {
         $currency = CurrencyDisplay::getInstance();
         $this->assignRef('currency', $currency);
         foreach ($products as $product) {
             $product->stock = $productModel->getStockIndicator($product);
         }
     }
     $ratingModel = VmModel::getModel('ratings');
     $showRating = $ratingModel->showRating();
     $this->assignRef('showRating', $showRating);
     $orderByList = $productModel->getOrderByList($categoryId);
     $this->assignRef('orderByList', $orderByList);
     // Add feed links
     if ($products && VmConfig::get('feed_cat_published', 0) == 1) {
         $link = '&format=feed&limitstart=';
         $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
         $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs);
         $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
         $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs);
     }
     JLoader::register('Permissions', JPATH_VM_ADMINISTRATOR . '/helpers/permissions.php');
     $showBasePrice = Permissions::getInstance()->check('admin');
     //todo add config settings
     $this->assignRef('showBasePrice', $showBasePrice);
     //set this after the $categoryId definition
     $paginationAction = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $categoryId, FALSE);
     $this->assignRef('paginationAction', $paginationAction);
     shopFunctionsF::setLastVisitedCategoryId($categoryId);
     shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id);
     if ($categoryId !== -1) {
         $vendorId = JRequest::getInt('virtuemart_vendor_id', 1);
         $category = $categoryModel->getCategory($categoryId);
     }
     $perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row;
     $this->assignRef('perRow', $perRow);
     $pagination = $productModel->getPagination($perRow);
     $this->assignRef('vmPagination', $pagination);
     if (!empty($category)) {
         if (!empty($categoryId) and $categoryId !== -1 and (empty($category->slug) or !$category->published)) {
             if (empty($category->slug)) {
                 vmInfo(JText::_('COM_VIRTUEMART_CAT_NOT_FOUND'));
             } else {
                 if ($category->virtuemart_id !== 0 and !$category->published) {
                     vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $categoryId);
                     //return false;
                 }
             }
             $categoryLink = '';
             if ($category->category_parent_id) {
                 $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id;
             } else {
                 $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                 if (!$last_category_id or $categoryId == $last_category_id) {
                     $last_category_id = JRequest::getInt('virtuemart_category_id', false);
                 }
                 if ($last_category_id and $categoryId != $last_category_id) {
                     $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id;
                 }
             }
             $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE));
             return;
         }
         //No redirect here, category id = 0 means show ALL categories! note by Max Milbers
         /*		if(empty($category->virtuemart_vendor_id) && $search == null ) {
         					$app -> enqueueMessage(JText::_('COM_VIRTUEMART_CATEGORY_NOT_FOUND'));
         					$app -> redirect( 'index.php');
         				}*/
         // Add the category name to the pathway
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
             }
         }
         $categoryModel->addImages($category, 1);
         $cache = JFactory::getCache('com_virtuemart', 'callback');
         $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId);
         $categoryModel->addImages($category->children, 1);
         if (VmConfig::get('enable_content_plugin', 0)) {
             // add content plugin //
             $dispatcher = JDispatcher::getInstance();
             JPluginHelper::importPlugin('content');
             $params = new JRegistry();
             $category->event = new stdClass();
             $category->catid = $category->virtuemart_category_id;
             $category->id = null;
             $category->title = $category->category_name;
             $category->text = $category->category_description;
             $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.category', &$category, &$params, 0));
             // More events for 3rd party content plugins
             // This do not disturb actual plugins, because we don't modify $product->text
             $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.category', &$category, &$params, 0));
             $category->event->afterDisplayTitle = trim(implode("\n", $res));
             $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.category', &$category, &$params, 0));
             $category->event->beforeDisplayContent = trim(implode("\n", $res));
             $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.category', &$category, &$params, 0));
             $category->event->afterDisplayContent = trim(implode("\n", $res));
             $category->category_description = $category->text;
             $category->category_name = $category->title;
         }
         if ($category->metadesc) {
             $document->setDescription($category->metadesc);
         }
         if ($category->metakey) {
             $document->setMetaData('keywords', $category->metakey);
         }
         if ($category->metarobot) {
             $document->setMetaData('robots', $category->metarobot);
         }
         if ($app->getCfg('MetaAuthor') == '1') {
             $document->setMetaData('author', $category->metaauthor);
         }
         if (empty($category->category_template)) {
             $category->category_template = VmConfig::get('categorytemplate');
         }
         shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout);
     } else {
         //Backward compatibility
         if (!isset($category)) {
             $category = new stdClass();
             $category->category_name = '';
             $category->category_description = '';
             $category->haschildren = false;
         }
     }
     $this->assignRef('category', $category);
     // Set the titles
     if (!empty($category->customtitle)) {
         $title = strip_tags($category->customtitle);
     } elseif (!empty($category->category_name)) {
         $title = strip_tags($category->category_name);
     } else {
         $title = $this->setTitleByJMenu($app);
     }
     if (JRequest::getInt('error')) {
         $title .= ' ' . JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
     }
     if (!empty($keyword)) {
         $title .= ' (' . $keyword . ')';
     }
     if ($virtuemart_manufacturer_id and !empty($products[0])) {
         $title .= ' ' . $products[0]->mf_name;
     }
     $document->setTitle($title);
     // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title.
     if (JRequest::getInt('virtuemart_manufacturer_id') and !empty($products[0]) and isset($category->category_name)) {
         $category->category_name = $products[0]->mf_name;
     }
     if ($app->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $title);
     }
     // set search and keyword
     if ($keyword = vmRequest::uword('keyword', '0', ' ,-,+,.,_')) {
         $pathway->addItem($keyword);
         //$title .=' ('.$keyword.')';
     }
     parent::display($tpl);
 }
示例#14
0
 function prepareContinueLink()
 {
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryStr = '';
     if ($virtuemart_category_id) {
         $categoryStr = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $ItemidStr = '';
     $Itemid = shopFunctionsF::getLastVisitedItemId();
     if (!empty($Itemid)) {
         $ItemidStr = '&Itemid=' . $Itemid;
     }
     $lang = '';
     if (VmConfig::$jLangCount > 1 and !empty(VmConfig::$vmlangSef)) {
         $lang = '&lang=' . VmConfig::$vmlangSef;
     }
     $this->continue_link = JURI::root() . 'index.php?option=com_virtuemart&view=category' . $categoryStr . $lang . $ItemidStr;
     $this->continue_link_html = '<a class="continue_link" href="' . $this->continue_link . '">' . vmText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
     $juri = JUri::getInstance()->toString(array('host', 'port'));
     $scheme = 'http';
     if (VmConfig::get('useSSL', false)) {
         $scheme .= 's';
     }
     $this->cart_link = $scheme . '://' . $juri . JURI::root(true) . '/index.php?option=com_virtuemart&view=cart' . $lang;
     return;
 }
示例#15
0
    public function getProductSingle($virtuemart_product_id = NULL, $front = TRUE, $quantity = 1, $customfields = TRUE, $virtuemart_shoppergroup_ids = 0)
    {
        //$this->fillVoidProduct($front);
        if (!empty($virtuemart_product_id)) {
            $virtuemart_product_id = $this->setId($virtuemart_product_id);
        }
        if ($virtuemart_shoppergroup_ids === 0) {
            $usermodel = VmModel::getModel('user');
            $currentVMuser = $usermodel->getCurrentUser();
            if (!is_array($currentVMuser->shopper_groups)) {
                $virtuemart_shoppergroup_ids = (array) $currentVMuser->shopper_groups;
            } else {
                $virtuemart_shoppergroup_ids = $currentVMuser->shopper_groups;
            }
        }
        $virtuemart_shoppergroup_idsString = 0;
        if (!empty($virtuemart_shoppergroup_ids) and is_array($virtuemart_shoppergroup_ids)) {
            $virtuemart_shoppergroup_idsString = implode('', $virtuemart_shoppergroup_ids);
        } else {
            if (!empty($virtuemart_shoppergroup_ids)) {
                $virtuemart_shoppergroup_idsString = $virtuemart_shoppergroup_ids;
            }
        }
        $front = $front ? TRUE : 0;
        $customfields = $customfields ? TRUE : 0;
        $this->withRating = $this->withRating ? TRUE : 0;
        $productKey = $virtuemart_product_id . ':' . $virtuemart_shoppergroup_idsString . ':' . $quantity . ':' . $front . ':' . $customfields . $this->withRating;
        //$productKey = md5($virtuemart_product_id.$front.$quantity.$customfields.$this->withRating.$virtuemart_shoppergroup_idsString);
        static $_productsSingle = array();
        if (array_key_exists($productKey, $_productsSingle)) {
            //vmdebug('getProduct, take from cache '.$productKey);
            return $_productsSingle[$productKey];
        } else {
            if (!$customfields or !$this->withRating) {
                $productKey = $virtuemart_product_id . ':' . $virtuemart_shoppergroup_idsString . ':' . $quantity . ':' . $front . ':' . TRUE . TRUE;
                //vmdebug('getProductSingle, recreate $productKey '.$productKey);
                if (array_key_exists($productKey, $_productsSingle)) {
                    //vmdebug('getProductSingle, take from cache recreated key',$_productsSingle[$productKey]);
                    return $_productsSingle[$productKey];
                }
            }
        }
        if (!empty($this->_id)) {
            // 			$joinIds = array('virtuemart_product_price_id' =>'#__virtuemart_product_prices','virtuemart_manufacturer_id' =>'#__virtuemart_product_manufacturers','virtuemart_customfield_id' =>'#__virtuemart_product_customfields');
            if ($this->withRating) {
                $joinIds = array('rating' => '#__virtuemart_ratings', 'virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields');
            } else {
                $joinIds = array('virtuemart_manufacturer_id' => '#__virtuemart_product_manufacturers', 'virtuemart_customfield_id' => '#__virtuemart_product_customfields');
            }
            $product = $this->getTable('products');
            $product->load($this->_id, 0, 0, $joinIds);
            $xrefTable = $this->getTable('product_medias');
            $product->virtuemart_media_id = $xrefTable->load((int) $this->_id);
            // Load the shoppers the product is available to for Custom Shopper Visibility
            $product->shoppergroups = $this->getProductShoppergroups($this->_id);
            if (!empty($product->shoppergroups) and $front) {
                if (!class_exists('VirtueMartModelUser')) {
                    require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php';
                }
                $commonShpgrps = array_intersect($virtuemart_shoppergroup_ids, $product->shoppergroups);
                if (empty($commonShpgrps)) {
                    vmdebug('getProductSingle creating void product, usergroup does not fit ', $product->shoppergroups);
                    return $this->fillVoidProduct($front);
                }
            }
            $this->getProductPrices($product, $quantity, $virtuemart_shoppergroup_ids, $front);
            if (!empty($product->virtuemart_manufacturer_id)) {
                $mfTable = $this->getTable('manufacturers');
                $mfTable->load((int) $product->virtuemart_manufacturer_id);
                $product = (object) array_merge((array) $mfTable, (array) $product);
            } else {
                $product->virtuemart_manufacturer_id = array();
                $product->mf_name = '';
                $product->mf_desc = '';
                $product->mf_url = '';
            }
            // Load the categories the product is in
            //$product->categories = $this->getProductCategories ($this->_id, $front);
            $product->categories = $this->getProductCategories($this->_id, FALSE);
            //We need also the unpublished categories, else the calculation rules do not work
            if (!empty($product->product_url)) {
                $product->canonCatLink = $product->product_url;
            } else {
                if (!empty($product->categories)) {
                    $categories = $this->getProductCategories($this->_id, TRUE);
                    //only published
                    if ($categories) {
                        if (!is_array($categories)) {
                            $categories = (array) $categories;
                        }
                        $product->canonCatLink = $categories[0];
                    }
                }
            }
            $product->virtuemart_category_id = 0;
            if ($front) {
                if (!empty($product->categories) and is_array($product->categories) and count($product->categories) > 1) {
                    if (!class_exists('shopFunctionsF')) {
                        require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
                    }
                    //We must first check if we come from another category, due the canoncial link we would have always the same catgory id for a product
                    //But then we would have wrong neighbored products / category and product layouts
                    $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                    if ($last_category_id !== 0 and in_array($last_category_id, $product->categories)) {
                        $product->virtuemart_category_id = $last_category_id;
                        //vmdebug('I take for product the last category ',$last_category_id,$product->categories);
                    } else {
                        $virtuemart_category_id = vRequest::getInt('virtuemart_category_id', 0);
                        if ($virtuemart_category_id !== 0 and in_array($virtuemart_category_id, $product->categories)) {
                            $product->virtuemart_category_id = $virtuemart_category_id;
                            //vmdebug('I take for product the requested category ',$virtuemart_category_id,$product->categories);
                        } else {
                            if (!empty($product->categories) and is_array($product->categories) and array_key_exists(0, $product->categories)) {
                                $product->virtuemart_category_id = $product->categories[0];
                                //vmdebug('I take for product the main category ',$product->virtuemart_category_id,$product->categories);
                            }
                        }
                    }
                } else {
                    if (!empty($product->canonCatLink)) {
                        $product->virtuemart_category_id = $product->canonCatLink;
                    }
                }
            } else {
                //This construction should allow us to see category depended prices in the BE
                $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', 0);
                if ($virtuemart_category_id !== 0 and !empty($product->categories)) {
                    if (is_array($product->categories) and in_array($virtuemart_category_id, $product->categories)) {
                        $product->virtuemart_category_id = $virtuemart_category_id;
                    } else {
                        if ($product->categories == $virtuemart_category_id) {
                            $product->virtuemart_category_id = $virtuemart_category_id;
                        }
                    }
                }
                if (empty($product->virtuemart_category_id)) {
                    if (!empty($product->categories) and is_array($product->categories) and !empty($product->categories[0])) {
                        $product->virtuemart_category_id = $product->categories[0];
                    } else {
                        $product->virtuemart_category_id = null;
                    }
                }
                //				vmdebug('getProductSingle BE request $virtuemart_category_id',$virtuemart_category_id,$product->virtuemart_category_id);
            }
            if (!empty($product->virtuemart_category_id)) {
                $q = 'SELECT `ordering`,`id` FROM `#__virtuemart_product_categories`
					WHERE `virtuemart_product_id` = "' . $this->_id . '" and `virtuemart_category_id`= "' . $product->virtuemart_category_id . '" ';
                $this->_db->setQuery($q);
                // change for faster ordering
                $ordering = $this->_db->loadObject();
                if (!empty($ordering)) {
                    $product->ordering = $ordering->ordering;
                    //This is the ordering id in the list to store the ordering notice by Max Milbers
                    $product->id = $ordering->id;
                } else {
                    $product->ordering = $this->_autoOrder++;
                    $product->id = $this->_autoOrder;
                    vmdebug('$product->virtuemart_category_id no ordering stored for ' . $ordering->id);
                }
                $catTable = $this->getTable('categories');
                $catTable->load($product->virtuemart_category_id);
                $product->category_name = $catTable->category_name;
            } else {
                $product->category_name = null;
                $product->virtuemart_category_id = null;
                $product->ordering = null;
                $product->id = $this->_autoOrder++;
                vmdebug('$product->virtuemart_category_id is empty');
            }
            if (!$front and $customfields) {
                if (!$this->listing) {
                    $customfieldModel = VmModel::getModel('Customfields');
                    $product->customfields = $customfieldModel->getproductCustomslist($this->_id);
                    if (empty($product->customfields) and !empty($product->product_parent_id)) {
                        //$product->customfields = $this->productCustomsfieldsClone($product->product_parent_id,true) ;
                        $product->customfields = $customfieldModel->getproductCustomslist($product->product_parent_id, $this->_id);
                        $product->customfields_fromParent = TRUE;
                    }
                }
            } else {
                if ($customfields) {
                    //only needed in FE productdetails, is now loaded in the view.html.php
                    //				/* Load the neighbours */
                    //				$product->neighbours = $this->getNeighborProducts($product);
                    // Fix the product packaging
                    if ($product->product_packaging) {
                        $product->packaging = $product->product_packaging & 0xffff;
                        $product->box = $product->product_packaging >> 16 & 0xffff;
                    } else {
                        $product->packaging = '';
                        $product->box = '';
                    }
                    // set the custom variants
                    //vmdebug('getProductSingle id '.$product->virtuemart_product_id.' $product->virtuemart_customfield_id '.$product->virtuemart_customfield_id);
                    if (!empty($product->virtuemart_customfield_id)) {
                        $customfieldModel = VmModel::getModel('Customfields');
                        // Load the custom product fields
                        $product->customfields = $customfieldModel->getProductCustomsField($product);
                        $product->customfieldsRelatedCategories = $customfieldModel->getProductCustomsFieldRelatedCategories($product);
                        $product->customfieldsRelatedProducts = $customfieldModel->getProductCustomsFieldRelatedProducts($product);
                        //  custom product fields for add to cart
                        $product->customfieldsCart = $customfieldModel->getProductCustomsFieldCart($product);
                        $child = $this->getProductChilds($this->_id);
                        $product->customsChilds = $customfieldModel->getProductCustomsChilds($child, $this->_id);
                    }
                    // Check the stock level
                    if (empty($product->product_in_stock)) {
                        $product->product_in_stock = 0;
                    }
                }
            }
            $_productsSingle[$productKey] = $product;
        } else {
            $_productsSingle[$productKey] = $this->fillVoidProduct($front);
        }
        $this->product = $_productsSingle[$productKey];
        return $_productsSingle[$productKey];
    }
示例#16
0
<?php

/**
 * @version		1.0.2
 * @package		Hipster template for Joomla! 3.x
 * @author		JoomlaXTC http://www.joomlaxtc.com
 * @copyright	Copyright (C) 2014 Monev Software LLC. All rights reserved.
 * @license		http://opensource.org/licenses/GPL-2.0 GNU Public License, version 2.0
 */
defined('_JEXEC') or die;
$Itemid = '&Itemid=' . vRequest::getInt('Itemid', 0);
$virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
$categoryLink = '';
if ($virtuemart_category_id) {
    $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id;
}
$continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . $Itemid, FALSE);
echo '<p>' . $this->cart->getError() . '</p>';
echo '<a class="continue" href="' . $this->continue_link . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
echo '<div>' . $this->errorMsg . '</div>';
?>
<br style="clear:both">
示例#17
0
 public function display($tpl = null)
 {
     $show_prices = VmConfig::get('show_prices', 1);
     if ($show_prices == '1') {
         if (!class_exists('calculationHelper')) {
             require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php';
         }
     }
     $this->assignRef('show_prices', $show_prices);
     if (!class_exists('shopFunctionsF')) {
         require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $pathway = $app->getPathway();
     if (!class_exists('VmImage')) {
         require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php';
     }
     // set search and keyword
     if ($keyword = vRequest::getString('keyword', false)) {
         //uword('keyword', false, ' ,-,+,.,_')) {
         $pathway->addItem($keyword);
         //$title .=' ('.$keyword.')';
     }
     //$search = vRequest::uword('keyword', null);
     $this->searchcustom = '';
     $this->searchCustomValues = '';
     //if (!empty($keyword)) {
     $this->getSearchCustom();
     $search = $keyword;
     /*} else {
     			$keyword ='';
     			$search = NULL;
     		}*/
     $this->assignRef('keyword', $keyword);
     $this->assignRef('search', $search);
     $menus = $app->getMenu();
     $menu = $menus->getActive();
     if (!empty($menu->id)) {
         ShopFunctionsF::setLastVisitedItemId($menu->id);
     } else {
         if ($itemId = vRequest::getInt('Itemid', false)) {
             ShopFunctionsF::setLastVisitedItemId($itemId);
         }
     }
     $virtuemart_manufacturer_id = vRequest::getInt('virtuemart_manufacturer_id', -1);
     if ($virtuemart_manufacturer_id === -1 and !empty($menu->query['virtuemart_manufacturer_id'])) {
         $virtuemart_manufacturer_id = $menu->query['virtuemart_manufacturer_id'];
         vRequest::setVar('virtuemart_manufacturer_id', $virtuemart_manufacturer_id);
     }
     $this->categoryId = vRequest::getInt('virtuemart_category_id', -1);
     if ($this->categoryId === -1 and !empty($menu->query['virtuemart_category_id'])) {
         $this->categoryId = $menu->query['virtuemart_category_id'];
         vRequest::setVar('virtuemart_category_id', $this->categoryId);
     } else {
         if ($this->categoryId === -1 and $virtuemart_manufacturer_id === -1) {
             $this->categoryId = ShopFunctionsF::getLastVisitedCategoryId();
         }
     }
     $this->setCanonicalLink($tpl, $document, $this->categoryId, $virtuemart_manufacturer_id);
     if (($this->categoryId === -1 or $this->categoryId === 0) and $virtuemart_manufacturer_id) {
         $this->categoryId = 0;
         $catType = 'manufacturer';
         $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType);
     }
     $categoryModel = VmModel::getModel('category');
     $productModel = VmModel::getModel('product');
     if ($this->categoryId === -1) {
         $this->categoryId = 0;
     }
     $vendorId = 1;
     $category = $categoryModel->getCategory($this->categoryId);
     if (!isset($menu->query['showproducts'])) {
         $menu->query['showproducts'] = 1;
     }
     $this->showproducts = vRequest::getInt('showproducts', $menu->query['showproducts']);
     if (!empty($category)) {
         $vendorId = $category->virtuemart_vendor_id;
         if ($this->showproducts) {
             //if(empty($category->category_layout) or $category->category_layout != 'categories') {
             // Load the products in the given category
             $ids = $productModel->sortSearchListQuery(TRUE, $this->categoryId);
             $this->perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row;
             $this->vmPagination = $productModel->getPagination($this->perRow);
             $ratingModel = VmModel::getModel('ratings');
             $this->showRating = $ratingModel->showRating();
             $productModel->withRating = $this->showRating;
             $this->orderByList = $productModel->getOrderByList($this->categoryId);
             $this->products = $productModel->getProducts($ids);
             //$products = $productModel->getProductsInCategory($this->categoryId);
             $imgAmount = VmConfig::get('prodimg_browse', 1);
             $productModel->addImages($this->products, $imgAmount);
             if ($this->products) {
                 $currency = CurrencyDisplay::getInstance();
                 $this->assignRef('currency', $currency);
                 $display_stock = VmConfig::get('display_stock', 1);
                 $showCustoms = VmConfig::get('show_pcustoms', 1);
                 if ($display_stock or $showCustoms) {
                     if (!$showCustoms) {
                         foreach ($this->products as $i => $productItem) {
                             $productItem->stock = $productModel->getStockIndicator($productItem);
                         }
                     } else {
                         shopFunctionsF::sortLoadProductCustomsStockInd($this->products, $productModel);
                     }
                 }
                 // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
                 vmJsApi::jPrice();
             }
             // Add feed links
             if ($this->showproducts and $this->products && VmConfig::get('feed_cat_published', 0) == 1) {
                 $link = '&format=feed&limitstart=';
                 $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
                 $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs);
                 $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
                 $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs);
             }
             $user = JFactory::getUser();
             $this->showBasePrice = (vmAccess::manager() or vmAccess::isSuperVendor());
         }
         //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers
         if (!empty($this->categoryId) and $this->categoryId !== -1 and (empty($category->slug) or !$category->published)) {
             if (empty($category->slug)) {
                 vmInfo(vmText::_('COM_VIRTUEMART_CAT_NOT_FOUND'));
             } else {
                 if ($category->virtuemart_id !== 0 and !$category->published) {
                     vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $this->categoryId);
                 }
             }
             //Fallback
             $categoryLink = '';
             if ($category->category_parent_id) {
                 $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id;
             } else {
                 $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
                 if (!$last_category_id or $this->categoryId == $last_category_id) {
                     $last_category_id = vRequest::getInt('virtuemart_category_id', false);
                 }
                 if ($last_category_id and $this->categoryId != $last_category_id) {
                     $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id;
                 }
             }
             if (VmConfig::get('handle_404', 1)) {
                 $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE));
             } else {
                 JError::raise(E_ERROR, '404', 'Not found');
             }
             return;
         }
         shopFunctionsF::setLastVisitedCategoryId($this->categoryId);
         shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id);
         // Add the category name to the pathway
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 $pathway->addItem(strip_tags(vmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
             }
         }
         $catImgAmount = VmConfig::get('catimg_browse', 1);
         $categoryModel->addImages($category, $catImgAmount);
         if (!isset($menu->query['showcategory'])) {
             $menu->query['showcategory'] = 1;
         }
         $this->showcategory = vRequest::getInt('showcategory', $menu->query['showcategory']);
         //$this->showcategory = vRequest::getInt('showcategory',true);
         if ($this->showcategory) {
             //if($category->category_layout == 'categories' or ($this->categoryId >0 and $virtuemart_manufacturer_id <1)){
             $category->children = $categoryModel->getChildCategoryList($vendorId, $this->categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir);
             $categoryModel->addImages($category->children, $catImgAmount);
         } else {
             $category->children = false;
         }
         if (VmConfig::get('enable_content_plugin', 0)) {
             shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description');
         }
         $metadesc = '';
         $metakey = '';
         $metarobot = '';
         if (isset($menu->params)) {
             $metadesc = $menu->params->get('menu-meta_description');
             $metakey = $menu->params->get('menu-meta_keywords');
             $metarobot = $menu->params->get('robots');
         }
         if ($category->metadesc) {
             $metadesc = $category->metadesc;
         }
         if ($category->metakey) {
             $metakey = $category->metakey;
         }
         if ($category->metarobot) {
             $metarobot = $category->metarobot;
         }
         $document->setDescription($metadesc);
         $document->setMetaData('keywords', $metakey);
         $document->setMetaData('robots', $metarobot);
         if ($app->getCfg('MetaAuthor') == '1' and !empty($category->metaauthor)) {
             $document->setMetaData('author', $category->metaauthor);
         }
         if (empty($category->category_template)) {
             $category->category_template = VmConfig::get('categorytemplate');
         }
         if (!empty($menu->query['categorylayout'])) {
             //if(!empty($menu->query['categorylayout']) and $menu->query['virtuemart_category_id']==$this->categoryId){
             $category->category_layout = $menu->query['categorylayout'];
         }
         $productsLayout = VmConfig::get('productsublayout', 'products');
         if (empty($productsLayout)) {
             $productsLayout = 'products';
         }
         $this->productsLayout = empty($menu->query['productsublayout']) ? $productsLayout : $menu->query['productsublayout'];
         shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout);
     } else {
         //Backward compatibility
         if (!isset($category)) {
             $category = new stdClass();
             $category->category_name = '';
             $category->category_description = '';
             $category->haschildren = false;
         }
     }
     $this->assignRef('category', $category);
     // Set the titles
     if (!empty($category->customtitle)) {
         $title = strip_tags($category->customtitle);
     } elseif (!empty($category->category_name)) {
         $title = strip_tags($category->category_name);
     } else {
         $title = $this->setTitleByJMenu($app);
     }
     $title = vmText::_($title);
     if (vRequest::getInt('error')) {
         $title .= ' ' . vmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
     }
     if (!empty($keyword)) {
         $title .= ' (' . strip_tags(htmlspecialchars_decode($keyword)) . ')';
     }
     if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0])) {
         $title .= ' ' . $this->products[0]->mf_name;
     }
     $document->setTitle($title);
     // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title.
     if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0]) and isset($category->category_name)) {
         $category->category_name = $this->products[0]->mf_name;
     }
     if ($app->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $title);
     }
     parent::display($tpl);
 }
示例#18
0
 /**
  * Collect all data to show on the template
  *
  * @author RolandD, Max Milbers
  */
 function display($tpl = null)
 {
     $show_prices = VmConfig::get('show_prices', 1);
     $this->assignRef('show_prices', $show_prices);
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $menus = $app->getMenu();
     $menu = $menus->getActive();
     if (!empty($menu->id)) {
         ShopFunctionsF::setLastVisitedItemId($menu->id);
     } else {
         if ($itemId = vRequest::getInt('Itemid', false)) {
             ShopFunctionsF::setLastVisitedItemId($itemId);
         }
     }
     $pathway = $app->getPathway();
     $task = vRequest::getCmd('task');
     if (!class_exists('VmImage')) {
         require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php';
     }
     // Load the product
     //$product = $this->get('product');	//Why it is sensefull to use this construction? Imho it makes it just harder
     $product_model = VmModel::getModel('product');
     $this->assignRef('product_model', $product_model);
     $virtuemart_product_idArray = vRequest::getInt('virtuemart_product_id', 0);
     if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) {
         $virtuemart_product_id = (int) $virtuemart_product_idArray[0];
     } else {
         $virtuemart_product_id = (int) $virtuemart_product_idArray;
     }
     $quantityArray = vRequest::getInt('quantity', array());
     //is sanitized then
     $quantity = 1;
     if (!empty($quantityArray[0])) {
         $quantity = $quantityArray[0];
     }
     $ratingModel = VmModel::getModel('ratings');
     $product_model->withRating = $this->showRating = $ratingModel->showRating($virtuemart_product_id);
     $product = $product_model->getProduct($virtuemart_product_id, TRUE, TRUE, TRUE, $quantity);
     if (!class_exists('shopFunctionsF')) {
         require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     $last_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $customfieldsModel = VmModel::getModel('Customfields');
     if ($product->customfields) {
         if (!class_exists('vmCustomPlugin')) {
             require JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php';
         }
         $customfieldsModel->displayProductCustomfieldFE($product, $product->customfields);
     }
     if (empty($product->slug)) {
         //Todo this should be redesigned to fit better for SEO
         $app->enqueueMessage(vmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'));
         $categoryLink = '';
         if (!$last_category_id) {
             $last_category_id = vRequest::getInt('virtuemart_category_id', false);
         }
         if ($last_category_id) {
             $categoryLink = '&virtuemart_category_id=' . $last_category_id;
         }
         if (VmConfig::get('handle_404', 1)) {
             $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE));
         } else {
             JError::raise(E_ERROR, '404', 'Not found');
         }
         return;
     }
     $isCustomVariant = false;
     if (!empty($product->customfields)) {
         foreach ($product->customfields as $k => $custom) {
             if ($custom->field_type == 'C' and $custom->virtuemart_product_id != $virtuemart_product_id) {
                 $isCustomVariant = $custom;
             }
             if (!empty($custom->layout_pos)) {
                 $product->customfieldsSorted[$custom->layout_pos][] = $custom;
             } else {
                 $product->customfieldsSorted['normal'][] = $custom;
             }
             unset($product->customfields);
         }
     }
     $product->event = new stdClass();
     $product->event->afterDisplayTitle = '';
     $product->event->beforeDisplayContent = '';
     $product->event->afterDisplayContent = '';
     if (VmConfig::get('enable_content_plugin', 0)) {
         shopFunctionsF::triggerContentPlugin($product, 'productdetails', 'product_desc');
     }
     $product_model->addImages($product);
     if (isset($product->min_order_level) && (int) $product->min_order_level > 0) {
         $this->min_order_level = $product->min_order_level;
     } else {
         $this->min_order_level = 1;
     }
     if (isset($product->step_order_level) && (int) $product->step_order_level > 0) {
         $this->step_order_level = $product->step_order_level;
     } else {
         $this->step_order_level = 1;
     }
     // Load the neighbours
     if (VmConfig::get('product_navigation', 1)) {
         $product->neighbours = $product_model->getNeighborProducts($product);
     }
     $this->assignRef('product', $product);
     if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) {
         $manModel = VmModel::getModel('manufacturer');
         $mans = array();
         // Gebe die Hersteller aus
         foreach ($this->product->virtuemart_manufacturer_id as $manufacturer_id) {
             $manufacturer = $manModel->getManufacturer($manufacturer_id);
             $manModel->addImages($manufacturer, 1);
             $mans[] = $manufacturer;
         }
         $this->product->manufacturers = $mans;
     }
     // Load the category
     $category_model = VmModel::getModel('category');
     shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id);
     if ($category_model) {
         $category = $category_model->getCategory($product->virtuemart_category_id);
         $category_model->addImages($category, 1);
         $this->assignRef('category', $category);
         //Seems we dont need this anylonger, destroyed the breadcrumb
         if ($category->parents) {
             foreach ($category->parents as $c) {
                 if (is_object($c) and isset($c->category_name)) {
                     $pathway->addItem(strip_tags(vmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE));
                 } else {
                     vmdebug('Error, parent category has no name, breadcrumb maybe broken, category', $c);
                 }
             }
         }
         $category->children = $category_model->getChildCategoryList($product->virtuemart_vendor_id, $product->virtuemart_category_id);
         $category_model->addImages($category->children, 1);
     }
     $pathway->addItem(strip_tags(html_entity_decode($product->product_name, ENT_QUOTES)));
     if (!empty($tpl)) {
         $format = $tpl;
     } else {
         $format = vRequest::getCmd('format', 'html');
     }
     if ($format == 'html') {
         // remove joomla canonical before adding it
         foreach ($document->_links as $k => $array) {
             if ($array['relation'] == 'canonical') {
                 unset($document->_links[$k]);
                 break;
             }
         }
         // Set Canonic link
         if ($isCustomVariant !== false and !empty($isCustomVariant->usecanonical) and !empty($product->product_parent_id)) {
             $parent = $product_model->getProduct($product->product_parent_id);
             $document->addHeadLink($parent->canonical, 'canonical', 'rel', '');
         } else {
             $document->addHeadLink($product->canonical, 'canonical', 'rel', '');
         }
     } else {
         if ($format == 'pdf') {
             defined('K_PATH_IMAGES') or define('K_PATH_IMAGES', VMPATH_ROOT);
         }
     }
     // Set the titles
     // $document->setTitle should be after the additem pathway
     if ($product->customtitle) {
         $document->setTitle(strip_tags(html_entity_decode($product->customtitle, ENT_QUOTES)));
     } else {
         $document->setTitle(strip_tags(html_entity_decode(($category->category_name ? vmText::_($category->category_name) . ' : ' : '') . $product->product_name, ENT_QUOTES)));
     }
     $this->allowReview = $ratingModel->allowReview($product->virtuemart_product_id);
     $this->showReview = $ratingModel->showReview($product->virtuemart_product_id);
     $this->rating_reviews = '';
     if ($this->showReview) {
         $this->review = $ratingModel->getReviewByProduct($product->virtuemart_product_id);
         $this->rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id);
     }
     if ($this->showRating) {
         $this->vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id);
     }
     $this->allowRating = $ratingModel->allowRating($product->virtuemart_product_id);
     $superVendor = vmAccess::isSuperVendor();
     if ($superVendor == 1 or $superVendor == $product->virtuemart_vendor_id or $superVendor) {
         $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&manage=1&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id;
         $this->edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false);
     } else {
         $this->edit_link = "";
     }
     // Load the user details
     $this->user = JFactory::getUser();
     // More reviews link
     $uri = JURI::getInstance();
     $uri->setVar('showall', 1);
     $uristring = vmURI::getCleanUrl();
     $this->assignRef('more_reviews', $uristring);
     if ($product->metadesc) {
         $document->setDescription(strip_tags(html_entity_decode($product->metadesc, ENT_QUOTES)));
     } else {
         $document->setDescription(strip_tags(html_entity_decode($product->product_name, ENT_QUOTES)) . " " . $category->category_name . " " . strip_tags(html_entity_decode($product->product_s_desc, ENT_QUOTES)));
     }
     if ($product->metakey) {
         $document->setMetaData('keywords', $product->metakey);
     }
     if ($product->metarobot) {
         $document->setMetaData('robots', $product->metarobot);
     }
     if ($app->getCfg('MetaTitle') == '1') {
         $document->setMetaData('title', $product->product_name);
         //Maybe better product_name
     }
     if ($app->getCfg('MetaAuthor') == '1') {
         $document->setMetaData('author', $product->metaauthor);
     }
     $user = JFactory::getUser();
     $showBasePrice = (vmAccess::manager() or vmAccess::isSuperVendor());
     $this->assignRef('showBasePrice', $showBasePrice);
     $productDisplayShipments = array();
     $productDisplayPayments = array();
     if (!class_exists('vmPSPlugin')) {
         require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
     }
     JPluginHelper::importPlugin('vmshipment');
     JPluginHelper::importPlugin('vmpayment');
     $dispatcher = JDispatcher::getInstance();
     $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments));
     $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments));
     $this->assignRef('productDisplayPayments', $productDisplayPayments);
     $this->assignRef('productDisplayShipments', $productDisplayShipments);
     if (empty($category->category_template)) {
         $category->category_template = VmConfig::get('categorytemplate');
     }
     shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout);
     shopFunctionsF::addProductToRecent($virtuemart_product_id);
     $currency = CurrencyDisplay::getInstance();
     $this->assignRef('currency', $currency);
     if (vRequest::getCmd('layout', 'default') == 'notify') {
         $this->setLayout('notify');
     }
     //Added by Seyi Awofadeju to catch notify layout
     VmConfig::loadJLang('com_virtuemart');
     vmJsApi::chosenDropDowns();
     //This must be loaded after the customfields are rendered (they may need to overwrite the handlers)
     if (VmConfig::get('jdynupdate', TRUE) or $app->isAdmin()) {
         vmJsApi::jDynUpdate();
     }
     if ($show_prices == '1') {
         if (!class_exists('calculationHelper')) {
             require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php';
         }
         vmJsApi::jPrice();
     }
     parent::display($tpl);
 }
示例#19
0
 private function showLastCategory($tpl)
 {
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryLink = '';
     if ($virtuemart_category_id) {
         $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink, FALSE);
     $continue_link_html = '<a href="' . $continue_link . '" />' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
     $this->assignRef('continue_link_html', $continue_link_html);
     // Display it all
     parent::display($tpl);
 }
示例#20
0
 private function prepareContinueLink()
 {
     // Get a continue link */
     $virtuemart_category_id = shopFunctionsF::getLastVisitedCategoryId();
     $categoryLink = '';
     if ($virtuemart_category_id) {
         $categoryLink = '&virtuemart_category_id=' . $virtuemart_category_id;
     }
     $continue_link = JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink);
     $continue_link_html = '<a class="continue_link" href="' . $continue_link . '" >' . JText::_('COM_VIRTUEMART_CONTINUE_SHOPPING') . '</a>';
     $this->assignRef('continue_link_html', $continue_link_html);
     $this->assignRef('continue_link', $continue_link);
 }