30 or strpos($_controller,'%')!=false or strpos($_controller,' ')!=false or strpos($_controller,'*')!=false ){ return false; } $task = vRequest::getCmd('task','') ; vmdebug('FE main controller with controller '.$_controller.' and task '. $task); $trigger = 'onVmSiteController'; // $task = vRequest::getCmd('task',vRequest::getCmd('layout',$_controller) ); $this makes trouble! $vmFE = vRequest::getInt('vmFE',0); if($vmFE){ $managing = 0; } else { $managing = vmAccess::isManagingFE($_controller); } $feViews = array('askquestion','cart','invoice','pdf','pluginresponse','productdetails','recommend','vendor','vmplg'); $app = JFactory::getApplication(); if($managing and $task!='feed' and $vmFE == 0 and !in_array($_controller,$feViews)){ vmdebug('I am a FE-Manager'); vRequest::setVar('managing','1'); vRequest::setVar('tmpl','component') ; //vmLanguage::loadJLang('com_virtuemart'); $jlang = vmLanguage::getLanguage(); $tag = $jlang->getTag(); $jlang->load('', JPATH_ADMINISTRATOR,$tag,true); vmLanguage::loadJLang('com_virtuemart'); $basePath = VMPATH_ADMIN; $trigger = 'onVmAdminController'; vmJsApi::jQuery(false); vmJsApi::loadBECSS(); if(JVM_VERSION<4){ $router = $app->getRouter(); $router->setMode(0); } if(empty($_controller)) { //defaults to virtuemart view $_controller = vRequest::getCmd('controller', 'virtuemart'); vRequest::setVar('view', $_controller); } $j = "history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { history.pushState(null, null, document.URL); });"; vmJsApi::addJScript('blockBrowserBack',$j); } else { vmJsApi::jQuery(); vmJsApi::jSite(); vmJsApi::cssSite(); $basePath = VMPATH_SITE; if(empty($_controller)){ //defaults to category view $_controller = vRequest::getCmd('controller', 'category'); vRequest::setVar('view',$_controller); } } // controller alias if ($_controller=='pluginresponse') { $_controller='vmplg'; } /* Create the controller name */ $_class = 'VirtuemartController'.ucfirst($_controller); if (file_exists($basePath.'/controllers/'.$_controller.'.php')) { if (!class_exists($_class)) { require ($basePath.'/controllers/'.$_controller.'.php'); } } else { // try plugins JPluginHelper::importPlugin('vmextended'); $rets = vDispatcher::trigger($trigger, array($_controller)); foreach($rets as $ret){ if($ret) return true; } vmError('Tried to load controller '.$_controller.' on base path '.$basePath.'. No File available '.$_class,'',5); } if (class_exists($_class)) { $controller = new $_class(); $controller->execute($task); if(class_exists('vmrouterHelper') and vmrouterHelper::$updateCache and VmConfig::get('useCacheVmGetCategoryRoute',1)){ vmrouterHelper::updateCache(); } //vmTime($_class.' Finished task '.$task,'Start'); vmRam('End'); vmRamPeak('Peak'); vmTime('"'.$_class.'" Finished task '.$task.' in '.$basePath,'vmStart'); /* Redirect if set by the controller */ $controller->redirect(); } else { vmDebug('VirtueMart controller not found: '. $_class. ' file loaded on '.$basePath.'/controllers/'.$_controller.'.php'); if (VmConfig::get('handle_404',1)) { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); $basePath = VMPATH_SITE; if (file_exists($basePath.'/controllers/category.php')) { if (!class_exists($_class)) { require ($basePath.'/controllers/category.php'); } } $controller = new VirtueMartControllerCategory(); $controller->execute($task); $controller->redirect(); } else { throw new RuntimeException(sprintf('VirtueMart controller not found `%s`.', $_class), 404); } }