Buongiorno a tutti,
pubblico per chi ne avesse bisogno il file router.php da inserire nella cartella di vituemart per il corretto funzionamento delle SEF dello stesso componente. Visto che molti componenti che aiutano ad ottimizzare le sef di virtuemart sono a pagamento, dopo qualche ricerca sono arrivato ad utilizzare e modificare questo file per i miei scopi. spero possa essere utile
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
define('PAGE_SHOP_BROWSE','category');
define('PAGE_SHOP_FEED','feed');
define('PAGE_PRODUCT_DETAILS','details');
define('PAGE_PRODUCT_ENQUIRY','enquiry');
define('PAGE_CHECKOUT_INDEX','checkout');
define('PAGE_ADVANCE_SEARCH','search');
//define('VMSEFDEBUG',true);
function virtuemartBuildRoute(&$query)
{
global $VM_SEF_LANG;
$page = '';
$segments = array();
/*
$myFile = "./debug_virtuemartBuildRoute.txt";
$fh = fopen($myFile, 'w') ;
$stringData = "Qui\n";
fwrite($fh, $stringData);
fclose($fh);
*/
if(isset($query['page'])){
$page = $query['page'];
unset($query['page']);
}
if(isset($query['flypage'])){
unset($query['flypage']);
}
if(isset($query['product_id']))
{
if(isset($query['category_id'])==false)
$query['category_id']=get_category_id_by_product_id($query['product_id']);
}
switch ($page) {
/* Case for shop browse/catgory page */
case 'shop.browse';
$allProductsList=true;
if(isset($query['manufacturer_id']))
{
if($query['manufacturer_id'])
{
$manufacturer_id=$query['manufacturer_id'];
$manufacturer_alias = getmanufacturerTitle($manufacturer_id);
$segments[] = $manufacturer_alias;
unset($query['manufacturer_id']);
$allProductsList=false;
}
}
elseif(isset($query['category_id']))
{
if($query['category_id'])
{
$category_id=$query['category_id'];
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
unset($query['category_id']);
$allProductsList=false;
}
}
if($allProductsList==true)
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_BROWSE_ALL_PRODUCTS_IN_SHOP'));//"products";
if(isset($query['category']))
unset($query['category']);
if(isset($query['category_id']))
unset($query['category_id']);
break;
/*End shop browse/catgory page*/
/* Case for product details page */
case 'shop.product_details':
$product_id_exists = false;
$product_id = $query['product_id'];
if(isset($query['category_id']))
$category_id=$query['category_id'];
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
$segments[]=getProductTitle($product_id,$category_id);
if(isset($query['manufacturer_id']))
unset($query['manufacturer_id']);
if(isset($query['category_id']))
unset($query['category_id']);
if(isset($query['product_id']))
unset($query['product_id']);
if(isset($query['pop']))
unset($query['pop']);
break;
/*-------End manufacture/category/productname---------*/
case 'shop.registration';
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CREATE_AN_ACCOUNT'));//"user-registration";
break;
case 'shop.cart';
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CART'));//"cart";
if(isset($query['product_id']))
unset($query['product_id']);
if(isset($query['category_id']))
unset($query['category_id']);
break;
case 'store.index';
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_SHOP_ADMINISTRATION')); // 'administration';
if(isset($query['pshop_mode']))
unset($query['pshop_mode']);
break;
case 'shop.search';
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ADVANCED_SEARCH')); // 'PAGE_ADVANCE_SEARCH';
break;
/*Case for ASK A QUESTION ABOUT THIS PRODUCT PAGE*/
case 'shop.ask';
$segments[] =convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ASK_QUESTION_ABOUT_THIS_PRODUCT'));
$product_id = $query['product_id'];
if(isset($query['category_id']))
$category_id=$query['category_id'];
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
$segments[] = getProductTitle($product_id,$category_id);
if(isset($query['category_id']))
unset($query['category_id']);
if(isset($query['product_id']))
unset($query['product_id']);
break;
/*End*/
/*
Checkout Index page
*/
case 'checkout.index';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT'));
if(isset($query['ssl_redirect']))
{
$segments[] = "ssl_redirect";
unset($query['ssl_redirect']);
}
if(isset($query['redirected']))
{
$segments[] = "redirected";
unset($query['redirected']);
}
break;
/** End of checkout index page */
case 'account.billing';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT_BILLING_INFORMATION'));
if(isset($query['next_page']) ) {
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT'));
unset($query['next_page']);
}
break;
case 'account.shipto';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT_SHIPPING_INFORMATION'));
if(isset($query['next_page']) ) {
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT'));
unset($query['next_page']);
}
if(isset($query['user_info_id']) ) {
$segments[] =$query['user_info_id'];
unset($query['user_info_id']);
}
break;
case 'shop.tos';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_TERMS_OF_SERVICE'));
break;
case 'account.index':
case 'account.all':
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ACCOUNT_MAINTENANCE'));
if(isset($query['show_page']))
{
if($query['show_page']=='account.order_details')
{
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ACCOUNT_MAINTENANCE_ORDER_DETAILS'));
if(isset($query['order_id']))
$segments[] =$query['order_id'];
unset($query['order_id']);
}
unset($query['show_page']);
}
break;
/* Case for shop rss feed page */
case 'shop.feed';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_FEED'));
if(isset($query['category_id'])){
$category_alias = getCategoryTitle($query['category_id']);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
unset($query['category_id']);
}
break;
/*End shop browse/catgory page*/
case 'account.shipping';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_ACCOUNT_SHIPPING'));
if(isset($query['next_page']) ) {
$segments[] = "checkout";
unset($query['next_page']);
}
break;
case 'shop.recommend';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_RECOMMEND'));
if(isset($query['product_id']) ){
$product_id = $query['product_id'];
if(isset($query['category_id']))
$category_id=$query['category_id'];
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
$segments[] = getProductTitle($product_id,$category_id);
unset($query['product_id']);
}
if(isset($query['tmpl']) )
unset($query['tmpl']);
if(isset($query['pop']) )
unset($query['pop']);
if(isset($query['category_id']) )
unset($query['category_id']);
break;
case 'account.order_details';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_ORDER_DETAILS'));
if(isset($query['order_id'])) {
$segments[] = $query['order_id'];
unset($query['order_id']);
}
break;
case 'shop.waiting_list';
$segments[] = convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_NOTIFY'));
if(isset($query['product_id']) ){
$product_id = $query['product_id'];
if(isset($query['category_id']))
$category_id=$query['category_id'];
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
$segments[] = getProductTitle($product_id,$category_id);
unset($query['product_id']);
}
if(isset($query['category_id']))
unset($query['category_id']);
break;
case 'shop.manufacturer_page':
$segments[]=convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_MANUFACTURER'));
if(isset($query['manufacturer_id']))
{
$manufacturer_id = $query['manufacturer_id'];
$manufacturer_alias = getmanufacturerTitle($manufacturer_id);
$segments[] = $manufacturer_alias;
unset($query['manufacturer_id']);
}
if(isset($query['output']))
unset($query['output']);
break;
case 'shop.infopage':
$segments[]=convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VENDOR'));
if(isset($query['vendor_id']))
{
$segments[] =getVendorTitle($query['vendor_id']);
unset($query['vendor_id']);
}
if(isset($query['output']))
unset($query['output']);
break;
case 'shop.pdf_output':
$segments[]=convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_PDF'));
$product_id = 0;
if(isset($query['product_id']) )
$product_id = $query['product_id'];
if(isset($query['category_id']))
$category_id=$query['category_id'];
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
if($product_id)
$segments[] = getProductTitle($product_id,$category_id);
if(isset($query['category_id']))
unset($query['category_id']);
if(isset($query['product_id']))
unset($query['product_id']);
if(isset($query['output']))
unset($query['output']);
if(isset($query['pop']))
unset($query['pop']);
if(isset($query['showpage']))
unset($query['showpage']);
break;
case '':
if(isset($query['pop']) AND isset($query['tmpl']))
{
$segments[]=convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_PRINT'));
$product_id = JRequest::getInt('product_id');
$category_id=JRequest::getInt('category_id');
if(!$category_id)
$category_id=get_category_id_by_product_id($product_id);
$category_alias = getCategoryTitle($category_id);
for($i=0;$i<count($category_alias);$i++)
$segments[] = $category_alias[$i];
if($product_id)
$segments[] = getProductTitle($product_id,$category_id);
unset($query['pop']);
unset($query['tmpl']);
}
break;
}
if(isset($query['limit']))
{
$segments[] = 'limit,' . $query['limit'];
unset($query['limit']);
}
if(isset($query['start']) OR isset($query['limitstart']))
{
$segments[] ='limitstart,'.(isset($query['start'])?$query['start']:(isset($query['limitstart'])?$query['limitstart']:0));
if(isset($query['start']))
unset($query['start']);
if(isset($query['limitstart']))
unset($query['limitstart']);
}
$newSegments=array();
foreach($segments as $segment)
{
$newSegments[]=urlencode($segment);
}
return $newSegments;
}
/*End of the function*/
function virtuemartParseRoute($segments)
{
global $VM_SEF_LANG;
/*
$myFile = "./debug_virtuemartParseRoute.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Qui\n";
fwrite($fh, $stringData);
fclose($fh);
*/
$vars = array();
$firstSegment = convert_title_to_alias($segments[0]);
$manufacture_id=0;
$category_id=0;
$product_id=0;
$new_segments=array();
foreach($segments as $segment)
{
$bUnset=false;
$search='limit,';
if(substr($segment,0,strlen($search))==$search)
{
$vars['limit'] = str_replace($search,'',$segment);
$bUnset=true;
}
$search='limitstart,';
if(substr($segment,0,strlen($search))==$search)
{
$vars['limitstart'] = str_replace($search,'',$segment);
$bUnset=true;
}
if($bUnset==false)
$new_segments[]=$segment;
}
$segments = $new_segments;
$count_segment=count($segments);
if($count_segment==1) // Check if it manufacturer or first level category
{
$manufacturer_id=get_manufacturer_id_by_alias($firstSegment);
if($manufacturer_id==0)
$category_id=get_category_id_by_alias($firstSegment );
}
elseif($count_segment>=2) // Can be multiple level category or product details page
{
$category_id=get_category_id_by_alias($segments);
$product_id=get_product_id_by_alias($segments);
$manufacturer_id=get_mf_id_by_product_id($product_id);
}
if(defined('VMSEFDEBUG'))
{
echo '<br>$manufacture_id : ' . $manufacturer_id;
echo '<br>$category_id : ' . $category_id;
echo '<br>$product_id : ' . $product_id;
}
if($manufacturer_id>0)
{
$vars['page'] = "shop.browse";
$vars['manufacturer_id']=$manufacturer_id;
}
if($category_id>0)
{
$vars['page'] = "shop.browse";
$vars['category_id']=$category_id;
}
if($product_id>0)
{
$vars['page'] = "shop.product_details";
$vars['product_id']=$product_id;
}
switch($firstSegment){
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CREATE_AN_ACCOUNT'));
$vars['page'] = "shop.registration";
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CART')):
$vars['page'] = "shop.cart";
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ACCOUNT_MAINTENANCE')):
$vars['page'] = "account.index";
if(isset($segments[1])==true)
if(convert_title_to_alias($segments[1])==convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ACCOUNT_MAINTENANCE_ORDER_DETAILS')))
{
$vars['show_page']='account.order_details';
$_POST['show_page']=$vars['show_page'];
$_GET['show_page']=$vars['show_page'];
$_REQUEST['show_page']=$vars['show_page'];
}
if(isset($segments[2])==true)
{
$vars['order_id']=$segments[2];
$_POST['order_id']=$vars['order_id'];
$_GET['order_id']=$vars['order_id'];
$_REQUEST['order_id']=$vars['order_id'];
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_SHOP_ADMINISTRATION')):
$vars['page'] = "store.index";
$vars['pshop_mode'] = "admin";
break;
/*This is for all products page*/
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_BROWSE_ALL_PRODUCTS_IN_SHOP')):
$vars['page'] = "shop.browse";
$vars['category'] = "";
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ADVANCED_SEARCH')):
$vars['page'] = "shop.search";
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_ASK_QUESTION_ABOUT_THIS_PRODUCT')): //PAGE_PRODUCT_ENQUIRY:
$vars['page'] = "shop.ask";
unset($segments[0]);
$vars['category_id'] = get_category_id_by_alias($segments);
$vars['product_id'] = get_product_id_by_alias($segments);
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT')):
$vars['page'] = "checkout.index";
if(isset($segments[1]) && ($segments[1]=="ssl_redirect")){
$vars['ssl_redirect'] = 1;
$vars['redirected'] = 1;
}
if(isset($segments[2]) && ($segments[2]=="redirected")){
$vars['redirected'] = 1;
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT_BILLING_INFORMATION')):
$vars['page'] = "account.billing";
if(isset($segments[1])){
$vars['next_page'] = "checkout.index";
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_CHECKOUT_SHIPPING_INFORMATION')):
$vars['page'] = "account.shipto";
if($segments[1]){
$vars['next_page'] = "checkout.index";
}
if($segments[2]){
$vars['user_info_id'] =$segments[2];
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_TERMS_OF_SERVICE')):
$vars['page'] = "shop.tos";
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VM_FEED')):
$vars['page'] = "shop.feed";
unset($segments[0]);
$vars['category_id'] = get_category_id_by_alias($segments);
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_ACCOUNT_SHIPPING')):
$vars['page'] = "account.shipping";
if($segments[1]){
$vars['next_page'] = "checkout.index";
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_RECOMMEND')):
$vars['page'] = "shop.recommend";
$vars['pop'] = 1;
$vars['tmpl']= "component";
unset($segments[0]);
$category_id=get_category_id_by_alias($segments);
$product_id=get_product_id_by_alias($segments);
$vars['category_id']=$category_id;
$vars['product_id']=$product_id;
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_ORDER_DETAILS')):
$vars['page'] = "account.order_details";
$vars['order_id'] = $segments[1];
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_NOTIFY')):
$vars['page'] = "shop.waiting_list";
if(count($segments)==2)
{
$vars['product_id'] =get_product_id_by_alias($segments[1]);
}
else
{
unset($segments[0]);
$vars['category_id'] = get_category_id_by_alias($segments);
$vars['product_id'] = get_product_id_by_alias($segments);
}
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_PRINT')):
$vars['pop']=1;
$vars['tmpl']='component';
unset($segments[0]);
$vars['category_id'] = get_category_id_by_alias($segments);
$vars['product_id'] = get_product_id_by_alias($segments);
$vars['page']='shop.browse';
if($vars['product_id'])
$vars['page']='shop.product_details';
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_MANUFACTURER')):
$vars['page']='shop.manufacturer_page';
$vars['manufacturer_id']=get_manufacturer_id_by_alias($segments[1]);
$vars['output']='lite';
$vars['tmpl']='component';
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_VENDOR')):
$vars['page']='shop.infopage';
$vars['vendor_id']=get_vendor_id_by_alias($segments[1]);
$vars['output']='lite';
$vars['tmpl']='component';
break;
case convert_title_to_alias($VM_SEF_LANG->_('VM_SEF_PDF')):
$vars['page']='shop.pdf_output';
$vars['pop']=1;
$vars['output']='pdf';
unset($segments[0]);
$vars['category_id'] = get_category_id_by_alias($segments);
$vars['product_id'] = get_product_id_by_alias($segments);
$vars['showpage']='shop.browse';
if($vars['product_id'])
$vars['showpage']='shop.product_details';
break;
}
return $vars;
}
function convert_title_to_alias($title)
{
$alias = JFilterOutput::stringURLSafe(str_replace(':','-',$title));
return $alias;
}
/*
This function returns category/subcatgory alias string
*/
function getCategoryTitle($id) // Mutiple level category ->Build
{
$db = & JFactory::getDBO();
$category=array();
$category[]=$id;
$category_id=$id;
while(true)
{
$query="SELECT * FROM `#__vm_category_xref` WHERE `category_child_id`={$category_id}";
$db->setQuery($query);
$row=$db->loadObject();
if($row->category_parent_id==0)
break;
else
{
$category[]=$row->category_parent_id;
$category_id=$row->category_parent_id;
}
}
$category=array_reverse($category);
$category_alias=array();
for($i=0;$i<count($category);$i++)
{
$category_id=$category[$i];
$query = "SELECT category_name,category_id
FROM #__vm_category
WHERE category_id={$category_id}";
$db->setQuery($query);
$category_name=$db->loadResult();
if(check_category_by_categorty($category_id,$category_name))
$category_alias[] = convert_title_to_alias($category_id .'-'.$category_name);
else
$category_alias[] = convert_title_to_alias($category_name);
}
return $category_alias;
}
function getProductTitle($id,$category_id=null){
$db = & JFactory::getDBO();
$query = 'SELECT product_name ,product_id,product_sku
FROM #__vm_product
WHERE product_id = ' . (int) $id;
$db->setQuery($query);
$row = $db->loadObject();
// gets category name of item
$product_name = $row->product_name;
$product_sku = $row->product_sku;
if (check_product_by_category($category_id,$product_name))
$product_name = convert_title_to_alias($product_sku .'-'.$product_name);
else
$product_name = convert_title_to_alias($product_name);
return $product_name;
}
function getVendorTitle($id)
{
$db = & JFactory::getDBO();
$query = 'SELECT vendor_store_name ,vendor_id
FROM #__vm_vendor
WHERE vendor_id = ' . (int) $id;
$db->setQuery($query);
return convert_title_to_alias($db->loadResult());
}
function get_Vendor_id_by_alias($alias) // MF name will be prefix with 'm-' in case of MF name and Category name is the same
{
$db=JFactory::getDBO();
$query="SELECT vendor_store_name,vendor_id
FROM #__vm_vendor";
$db->setQuery($query);
$rows=$db->loadObjectList();
foreach($rows as $row)
{
if(convert_title_to_alias($row->vendor_store_name)==convert_title_to_alias($alias))
return $row->vendor_id;
}
return 0;
}
function getmanufacturerTitle($id){
$db = & JFactory::getDBO();
$query = 'SELECT mf_name ,manufacturer_id
FROM #__vm_manufacturer
WHERE manufacturer_id = ' . (int) $id;
$db->setQuery($query);
$row=$db->loadObject();
if(!$row)
return '';
$mf_name = $row->mf_name;
if(check_category_by_mf($mf_name))
$mf_name = convert_title_to_alias($row->manufacturer_id.'-'.$mf_name);
else
$mf_name = convert_title_to_alias($mf_name);
return $mf_name;
}
function get_manufacturer_id_by_alias($alias) // MF name will be prefix with 'm-' in case of MF name and Category name is the same
{
$db=JFactory::getDBO();
$query="SELECT manufacturer_id,mf_name
FROM #__vm_manufacturer";
$db->setQuery($query);
$rows=$db->loadObjectList();
foreach($rows as $row)
{
if(convert_title_to_alias($row->mf_name)==convert_title_to_alias($alias) OR convert_title_to_alias($row->manufacturer_id.'-'.$row->mf_name)==convert_title_to_alias($alias))
{
if(check_category_by_mf($row->mf_name))
{
if($row->manufacturer_id . '-'.convert_title_to_alias($row->mf_name)==convert_title_to_alias($alias))
return $row->manufacturer_id;
}
else
{
return $row->manufacturer_id;
}
}
}
return 0;
}
function get_category_id_by_alias($alias) // Mutiple level category ->Parse
{
$db=JFactory::getDBO();
$query="SELECT category_id,category_name FROM #__vm_category";
$db->setQuery($query);
$rows=$db->loadObjectList();
$segments=array();
if(is_array($alias))
$segments = $alias;
else
$segments[] = $alias;
$existing_alias=$segments;
$category_parent_id=0;
//for($i=0;$i<count($segments);$i++)
foreach($segments as $i=>$value)
{
$query="SELECT `#__vm_category`.category_id,`#__vm_category`.category_name ,`#__vm_category_xref`.category_parent_id
FROM `#__vm_category` , `#__vm_category_xref`
WHERE `#__vm_category`.`category_id` = `#__vm_category_xref`.`category_child_id`
AND `#__vm_category`.`category_publish`='Y'
AND `#__vm_category_xref`.`category_parent_id`={$category_parent_id}";
$db->setQuery($query);
if(defined('VMSEFDEBUG'))
echo $db->_sql . '<br />';
$rows=$db->loadObjectList();
if(!$rows)
{
$alias = $existing_alias;
return $category_parent_id;
}
foreach($rows as $row)
{
if(defined('VMSEFDEBUG'))
echo convert_title_to_alias($row->category_name) .'=='.$segments[$i] .'<br />';
if(convert_title_to_alias($row->category_name)==convert_title_to_alias($segments[$i])
OR $row->category_id.'-'.convert_title_to_alias($row->category_name)==convert_title_to_alias($segments[$i]))
{
$category_parent_id=$row->category_id;
unset($existing_alias[$i]);
break;
}
}
}
$alias = $existing_alias;
return $category_parent_id;
}
function get_category_id_by_alias_remove_segments(&$alias) // Mutiple level category ->Parse
{
$db=JFactory::getDBO();
$query="SELECT category_id,category_name FROM #__vm_category";
$db->setQuery($query);
$rows=$db->loadObjectList();
$segments=array();
if(is_array($alias))
$segments = $alias;
else
$segments[] = $alias;
$existing_alias=$segments;
$category_parent_id=0;
//for($i=0;$i<count($segments);$i++)
foreach($segments as $i=>$value)
{
$query="SELECT `#__vm_category`.category_id,`#__vm_category`.category_name ,`#__vm_category_xref`.category_parent_id
FROM `#__vm_category` , `#__vm_category_xref`
WHERE `#__vm_category`.`category_id` = `#__vm_category_xref`.`category_child_id`
AND `#__vm_category`.`category_publish`='Y'
AND `#__vm_category_xref`.`category_parent_id`={$category_parent_id}";
$db->setQuery($query);
if(defined('VMSEFDEBUG'))
echo $db->_sql . '<br />';
$rows=$db->loadObjectList();
if(!$rows)
{
$alias = $existing_alias;
return $category_parent_id;
}
foreach($rows as $row)
{
if(defined('VMSEFDEBUG'))
echo convert_title_to_alias($row->category_name) .'=='.$segments[$i] .'<br />';
if(convert_title_to_alias($row->category_name)==convert_title_to_alias($segments[$i])
OR $row->category_id.'-'.convert_title_to_alias($row->category_name)==convert_title_to_alias($segments[$i]))
{
$category_parent_id=$row->category_id;
unset($existing_alias[$i]);
break;
}
}
}
$alias = $existing_alias;
return $category_parent_id;
}
function get_product_id_by_alias($alias)
{
if(is_array($alias))
$segments = $alias;
else
$segments[] = $alias;
$db=JFactory::getDBO();
$query="SELECT `#__vm_product`.`product_id`,`#__vm_product`.`product_name`,`#__vm_product`.`product_sku`
FROM `#__vm_product` , `#__vm_product_category_xref`
WHERE `#__vm_product`.`product_id` =`#__vm_product_category_xref`.`product_id`";
$category_id=get_category_id_by_alias_remove_segments($segments);
if(count($segments)==0)
return 0;
foreach($segments as $segment)
{
$product_alias = $segment;
break;
}
if($category_id)
$query .=" AND `#__vm_product_category_xref`.`category_id`={$category_id}";
$db->setQuery($query);
$rows=$db->loadObjectList();
foreach($rows as $row)
{
if(defined('VMSEFDEBUG'))
{
echo convert_title_to_alias($row->product_name) .'=='.convert_title_to_alias($product_alias) . '<br />';
echo convert_title_to_alias($row->product_sku.'-'.$row->product_name).'=='.convert_title_to_alias($product_alias).'<br />';
}
if(convert_title_to_alias($row->product_name)==convert_title_to_alias($product_alias)
OR convert_title_to_alias($row->product_sku.'-'.$row->product_name)==convert_title_to_alias($product_alias))
return $row->product_id;
}
return 0;
}
function get_product_sef_url($product_id)
{
$segments=array();
$db=JFactory::getDBO();
$query="SELECT #__vm_manufacturer.manufacturer_id , #__vm_manufacturer.mf_name
FROM #__vm_product_mf_xref,#__vm_manufacturer
WHERE #__vm_product_mf_xref.manufacturer_id=#__vm_manufacturer.manufacturer_id AND
#__vm_product_mf_xref.product_id={$product_id}";
$db->setQuery($query);
$row=$db->loadObject();
if($row!=null)
$segments[]=convert_title_to_alias($row->mf_name);
else
$segments[]='-';
$query="SELECT #__vm_product.product_id,#__vm_product.product_name
FROM #__vm_product
WHERE product_id={$product_id}";
$db->setQuery($query);
$row=$db->loadObject();
if($row!=null)
$segments[]=convert_title_to_alias($row->product_name);
return $segments;
}
function get_mf_id_by_product_id($product_id)
{
$db=JFactory::getDBO();
$query="SELECT #__vm_manufacturer.manufacturer_id
FROM #__vm_manufacturer,#__vm_product_mf_xref
WHERE #__vm_manufacturer.manufacturer_id=#__vm_product_mf_xref.manufacturer_id
AND #__vm_product_mf_xref.product_id={$product_id}";
$db->setQuery($query);
return intval($db->loadResult());
}
function get_category_id_by_product_id($product_id)
{
$db=JFactory::getDBO();
$query="SELECT #__vm_category.category_id
FROM #__vm_category,#__vm_product_category_xref
WHERE #__vm_category.category_id=#__vm_product_category_xref.category_id
AND #__vm_product_category_xref.product_id={$product_id}";
$db->setQuery($query);
return intval($db->loadResult());
}
function check_category_by_mf($mf_name)
{
$db = & JFactory::getDBO();
$query="SELECT COUNT(*)
FROM `#__vm_category`, `#__vm_category_xref`
WHERE `#__vm_category`.`category_id` = `#__vm_category_xref`.`category_child_id`
AND `#__vm_category_xref`.`category_parent_id`=0
AND `#__vm_category`.`category_publish` ='Y'
AND `#__vm_category`.`category_name`=" .$db->Quote($mf_name);
$db->setQuery($query);
return ($db->loadResult()>0);
}
function check_category_by_categorty($category_id,$category_name)
{
$db = & JFactory::getDBO();
$query ="SELECT `category_parent_id`
FROM `#__vm_category_xref`
WHERE `category_child_id`={$category_id}";
$db->setQuery($query);
$category_parent_id = intval($db->loadResult());
$query="SELECT COUNT(*)
FROM `#__vm_category`,`#__vm_category_xref`
WHERE `#__vm_category`.`category_id` = `#__vm_category_xref`.`category_child_id`
AND `#__vm_category_xref`.`category_parent_id`={$category_parent_id}
AND `#__vm_category`.`category_id`!={$category_id}
AND `#__vm_category`.`category_publish` ='Y'
AND `#__vm_category`.`category_name`=" .$db->Quote($category_name);
$db->setQuery($query);
return ($db->loadResult()>0);
}
function check_product_by_category($category_id,$product_name)
{
$db = JFactory::getDBO();
$query="SELECT COUNT(*)
FROM #__vm_product, #__vm_product_category_xref
WHERE #__vm_product.product_id = #__vm_product_category_xref.product_id
AND #__vm_product_category_xref.category_id={$category_id}
AND #__vm_product.product_name=" . $db->Quote($product_name);
$db->setQuery($query);
if($db->loadResult()>1)
return true;
$query="SELECT COUNT(*)
FROM #__vm_category, #__vm_category_xref
WHERE #__vm_category.category_id = #__vm_category_xref.category_child_id
AND #__vm_category_xref.category_parent_id={$category_id}
AND #__vm_category.category_name=" . $db->Quote($product_name);
$db->setQuery($query);
if($db->loadResult()>0)
return true;
return false;
}
class vm_sef_language
{
function vm_sef_language()
{
$db=JFactory::getDBO();
$query="CREATE TABLE IF NOT EXISTS `#__vm_sef_language` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`lang_key` VARCHAR( 255 ) NULL ,
`lang` VARCHAR( 255 ) NULL
) ;";
$db->setQuery($query);
$db->query();
$langvars = array (
'VM_SEF_VM_CREATE_AN_ACCOUNT' => 'Create an account',
'VM_SEF_VM_CART' => 'View Your Cart Contents',
'VM_SEF_VM_ACCOUNT_MAINTENANCE' => 'View your account details',
'VM_SEF_VM_ACCOUNT_MAINTENANCE_ORDER_DETAILS' => 'Order Details',
'VM_SEF_VM_SHOP_ADMINISTRATION' => 'Shop Administration',
'VM_SEF_VM_BROWSE_ALL_PRODUCTS_IN_SHOP' => 'View All Products in Shop',
'VM_SEF_VM_ADVANCED_SEARCH' => 'Advanced search',
'VM_SEF_VM_ASK_QUESTION_ABOUT_THIS_PRODUCT' => 'Ask Question About This Product',
'VM_SEF_VM_CHECKOUT' => 'Check out',
'VM_SEF_VM_CHECKOUT_BILLING_INFORMATION' => 'Billing Information',
'VM_SEF_VM_CHECKOUT_SHIPPING_INFORMATION' => 'Shipping Information',
'VM_SEF_VM_TERMS_OF_SERVICE' => 'Terms of Service',
'VM_SEF_VM_FEED' => 'Feed',
'VM_SEF_ACCOUNT_SHIPPING'=>'Account Shipping',
'VM_SEF_RECOMMEND'=>'Recommend',
'VM_SEF_ORDER_DETAILS'=>'Order Details',
'VM_SEF_NOTIFY'=>'Notify',
'VM_SEF_PRINT'=>'Print',
'VM_SEF_PDF'=>'Pdf',
'VM_SEF_MANUFACTURER'=>'Manufacturer',
'VM_SEF_VENDOR'=>'Vendor',
);
foreach($langvars as $key=>$value)
{
$query="SELECT count(*) FROM #__vm_sef_language WHERE `lang_key`=" . $db->Quote($key);
$db->setQuery($query);
if($db->loadResult()==0)
{
$query='INSERT INTO #__vm_sef_language SET '
. ' `lang_key`=' .$db->Quote($key)
. ', `lang`=' .$db->Quote($value);
$db->setQuery($query);
$db->query();
}
}
}
function _($key)
{
$db=JFactory::getDBO();
$query="SELECT id ,`lang` FROM #__vm_sef_language WHERE `lang_key`=" . $db->Quote($key);
$db->setQuery($query);
$row=$db->loadObject();
return $row->lang;
}
}
global $VM_SEF_LANG;
$VM_SEF_LANG=new vm_sef_language;
?>