コード例 #1
0
ファイル: Bootstrap.php プロジェクト: nhp/shopware-4
	/**
	 * Event listener method
	 *
	 * @param Enlight_Event_EventArgs $args
	 */
	public static function onRoute(Enlight_Event_EventArgs $args)
	{
		$request = $args->getRequest();
		$url = $request->getPathInfo();
		$url = trim($url, '/');


        if(empty($url)) {
            return;
        }
		
		$query = array();
		if(preg_match('#.*?_(detail)_([0-9]+)(?:_([0-9]+))?_?(?:SESS\-(.*?))?.html#', $url, $match)) {
			$query['sViewport'] = $match[1];
			$query['sArticle'] = $match[2];
			$query['sCategory'] = $match[3];
			$query['sCoreId'] = $match[4];
		} elseif(preg_match('#.*?_(cat)_([0-9]+)(?:_([0-9]+))?_?(?:SESS\-(.*?))?.html#', $url, $match)) {
			$query['sViewport'] = $match[1];
			$query['sCategory'] = $match[2];
			$query['sPage'] = $match[3];
			$query['sCoreId'] = $match[4];
		} elseif(preg_match('#.*?_(campaign)_([0-9]+)_?(?:SESS\-(.*?))?.html#', $url, $match)) {
			$query['sViewport'] = $match[1];
			$query['sCampaign'] = $match[2];
			$query['sCoreId'] = $match[4];
		} elseif(preg_match('#unternehmen/.*?_(custom)_([0-9]+)_?([0-9]+)?_?(?:SESS\-(.*?))?.html#', $url, $match)) {
			$query['sViewport'] = $match[1];
			$query['sCustom'] = $match[2];
			$query['sCoreId'] = $match[4];
			if(!empty($match[3])) {
				$query['sId'] = $match[3];
			}
		} elseif(preg_match('#Artikelindex.*_(.*).html#', $url, $match)) {
			$query['sViewport'] = 'search';
			$query['sSearchMode'] = 'bychar';
			$query['sSearchChar'] = $match[1];
			$query['sSearchText'] = 'Artikelindex-'.$match[1];
		} elseif(preg_match('#Supplier-(.*)_(.*).html#', $url, $match)) {
			$query['sViewport'] = 'search';
			$query['sSearchMode'] = 'supplier';
			$query['sSearch'] = $match[2];
			$query['sSearchText'] = $match[1];
		} else {
			foreach(explode('/', $url) as $part) {
				$part = explode(',', $part);
				if(!empty($part[0]) && !empty($part[1])) {
					$query[$part[0]] = $part[1];
				}
			}
		}

		if(!empty($query) && !empty($query['sViewport'])) {
			$request->setParam('rewriteOld', true);
			return $query;
		} else {
			return;
		}
	}
コード例 #2
0
 /**
  * @param Enlight_Event_EventArgs $arguments
  */
 public function onPostDispatchConfig(Enlight_Event_EventArgs $arguments)
 {
     /* @var Enlight_View_Default $view */
     $view = $arguments->getSubject()->View();
     //if the controller action name equals "load" we have to load all application components.
     if ($arguments->getRequest()->getActionName() === 'load') {
         $view->addTemplateDir($this->Path() . 'Views/');
         $view->extendsTemplate('backend/config/view/form/document_paypal_plus.js');
     }
 }
コード例 #3
0
 /**
  * Called when the BackendCustomerPostDispatch Event is triggered
  *
  * @param Enlight_Event_EventArgs $args
  */
 public function onBackendCustomerPostDispatch(Enlight_Event_EventArgs $args)
 {
     /**@var $view Enlight_View_Default*/
     $view = $args->getSubject()->View();
     // Add template directory
     $args->getSubject()->View()->addTemplateDir($this->Path() . 'Views/');
     //if the controller action name equals "load" we have to load all application components
     if ($args->getRequest()->getActionName() === 'load') {
         $view->extendsTemplate('backend/customer/model/customer_preferences/attribute.js');
         $view->extendsTemplate('backend/customer/model/customer_preferences/list.js');
         $view->extendsTemplate('backend/customer/view/list/customer_preferences/list.js');
         $view->extendsTemplate('backend/customer/view/detail/customer_preferences/window.js');
         $view->extendsTemplate('backend/boxalino_export/view/main/window.js');
         //if the controller action name equals "index" we have to extend the backend customer application
         if ($args->getRequest()->getActionName() === 'index') {
             $view->extendsTemplate('backend/customer/customer_preferences_app.js');
             $view->extendsTemplate('backend/boxalino_export/boxalino_export_app.js');
         }
     }
 }
コード例 #4
0
ファイル: Bootstrap.php プロジェクト: GerDner/luck-docker
 /**
  * Called when the BackendCustomerPostDispatch Event is triggered
  *
  * @param Enlight_Event_EventArgs $args
  */
 public function onBackendCustomerPostDispatch(Enlight_Event_EventArgs $args)
 {
     /**@var $view Enlight_View_Default */
     $view = $args->getSubject()->View();
     //if the controller action name equals "load" we have to load all application components
     if ($args->getRequest()->getActionName() === 'load') {
         $view->addTemplateDir($this->Path() . 'Views/emotion/');
         $view->extendsTemplate('backend/customer/payment_methods/controller/detail.js');
         $view->extendsTemplate('backend/customer/payment_methods/view/detail/payment_methods.js');
     }
 }
コード例 #5
0
ファイル: Bootstrap.php プロジェクト: nhp/shopware-4
    public static function onPreDispatch(Enlight_Event_EventArgs $args)
    {
        $request = $args->getSubject()->Request();

        if ($request->getModuleName() && $request->getModuleName() != 'frontend') {
            return;
        }

        switch ($request->getControllerName()) {
            case 'shopware.php':
            case 'sViewport,sale':
                $url = $args->getRequest()->getPathInfo();
                $url = trim($url, '/');

                foreach (explode('/', $url) as $part) {
                    $part = explode(',', $part);
                    if (!empty($part[0]) && !empty($part[1])) {
                        $request->setParam($part[0], $part[1]);
                    }
                }

                if ($request->getParam('sAction') && $request->getParam('sAction') == 'doSale') {
                    $request->setControllerName('checkout')->setActionName('finish')->setDispatched(false);
                } else {
                    $request->setControllerName('checkout')->setActionName('confirm')->setDispatched(false);
                }
                break;
            case 'cat':
                $request->setControllerName('listing')->setDispatched(false);
                break;
            case 'captcha':
                $request->setModuleName('widgets')->setControllerName('captcha')->setDispatched(false);
                break;
            case 'password':
            case 'login':
            case 'logout':
                $request->setActionName($request->getParam('sViewport'));
            case 'admin':
                $request->setControllerName('account')->setDispatched(false);
                break;
            case 'registerFC':
            case 'register1':
            case 'register2':
            case 'register2shipping':
            case 'register3':
                $request->setControllerName('register')->setDispatched(false);
                break;
            case 'sale':
                if ($request->getParam('sAction') && $request->getParam('sAction') == 'doSale') {
                    $request->setControllerName('checkout')->setActionName('finish')->setDispatched(false);
                } else {
                    $request->setControllerName('checkout')->setActionName('confirm')->setDispatched(false);
                }
                break;
            case 'sViewport,basket':
            case 'basket':
                $request->setControllerName('checkout')->setActionName('cart')->setDispatched(false);
                break;
            case 'searchFuzzy':
                $request->setControllerName('search')->setActionName('index')->setDispatched(false);
                break;
            case 'newsletterListing':
                $request->setControllerName('newsletter')->setActionName('listing')->setDispatched(false);
                break;
            case 'support':
                $request->setControllerName('forms')->setActionName('index')->setDispatched(false);
                break;
            case 'ticketdirect':
                $request->setControllerName('ticket')->setActionName('direct')->setDispatched(false);
                break;
            default:
                break;
        }
    }
コード例 #6
0
ファイル: Bootstrap.php プロジェクト: maxout/SwagAccessory
 /**
  * This method loads the new backend article-module.
  * This is necessary to extend the default article-module.
  *
  * @param Enlight_Event_EventArgs $args
  * @return bool success
  */
 public function loadArticleBackendModule(Enlight_Event_EventArgs $args)
 {
     $this->Application()->Snippets()->addConfigDir($this->Path() . 'Snippets/');
     $this->registerMyTemplateDir(true);
     if ($args->getRequest()->getActionName() === 'load') {
         $args->getSubject()->View()->extendsTemplate('backend/article/view/accessory/detail/window.js');
     }
     if ($args->getRequest()->getActionName() === 'index') {
         $args->getSubject()->View()->extendsTemplate('backend/article/accessory_app.js');
     }
 }
コード例 #7
0
ファイル: Bootstrap.php プロジェクト: nhp/shopware-4
    /**
     * Reads the route based on the url.
     *
     * @param Enlight_Event_EventArgs $args
     * @return array|null
     */
    public function onRoute(Enlight_Event_EventArgs $args)
    {
        /** @var $request Enlight_Controller_Request_RequestHttp */
        $request = $args->getRequest();
        $url = $request->getPathInfo();
        if (strpos($url, '/backend') === 0 || strpos($url, '/api') === 0) {
            return;
        }
        if (!Shopware()->Bootstrap()->issetResource('Shop')) {
            return;
        }

        $shop = Shopware()->Shop();
        $sql = 'SELECT org_path, main FROM s_core_rewrite_urls WHERE path LIKE ? AND subshopID =?';
        $result = Shopware()->Db()->fetchRow($sql, array(
            ltrim($url, '/'),
            $shop->getId()
        ));
        if (!empty($result)) {
            $alias_list = $this->sGetQueryAliasList();
            foreach ($alias_list as $key => $alias) {
                $value = $request->getQuery($alias);
                if ($value !== null) {
                    $request->setQuery($key, $value);
                    $request->setQuery($alias, null);
                }
            }
            parse_str($result['org_path'], $query);
            if (empty($result['main'])) {
                $request->setParam('rewriteAlias', true);
            } else {
                $request->setParam('rewriteUrl', true);
            }
            return $query;
        }
        return null;
    }
コード例 #8
0
 /**
  * On Route add user-agent and remote-address to log component
  *
  * @param Enlight_Event_EventArgs $args
  */
 public function onStartDispatch(Enlight_Event_EventArgs $args)
 {
     /** @var $request Enlight_Controller_Request_RequestHttp */
     $request = $args->getRequest();
     if (($site = $request->getParam('__site')) !== null) {
         /** @var $siteManager Enlight_Components_Site_Manager */
         $siteManager = $this->Application()->Sites();
         $site = $siteManager->findOneBy('id', $site);
         /** @var $log Enlight_Components_Session_Namespace */
         $session = $this->Application()->Session();
         $session->Site = $session;
     } else {
         /** @var $site Enlight_Components_Site */
         $site = $this->Application()->Site();
     }
     if (($locale = $request->getParam('__locale')) !== null) {
         $site->setLocale($locale);
     }
     if (($currency = $request->getParam('__currency')) !== null) {
         $site->setCurrency($currency);
     }
 }
コード例 #9
0
 /**
  * Routes the path information, if the router symfony match it.
  *
  * @param Enlight_Event_EventArgs $args
  * @return array|null
  */
 public function onRoute(Enlight_Event_EventArgs $args)
 {
     /** @var $request Enlight_Controller_Request_RequestHttp */
     $request = $args->getRequest();
     /** @var $routes Symfony\Component\Routing\RouteCollection */
     $routes = $this->Application()->SymfonyRoutes();
     $context = $this->getRequestContext($request);
     $matcher = new UrlMatcher($routes, $context);
     try {
         return $matcher->match($request->getPathInfo());
     } catch (ResourceNotFoundException $e) {
         return null;
     }
 }
コード例 #10
0
 /**
  * extends the Orderdetailview
  *
  * @param Enlight_Event_EventArgs $arguments
  */
 public function extendOrderDetailView(Enlight_Event_EventArgs $arguments)
 {
     $arguments->getSubject()->View()->addTemplateDir($this->Path() . 'Views/backend/rpay_ratepay_orderdetail/');
     if ($arguments->getRequest()->getActionName() === 'load') {
         $arguments->getSubject()->View()->extendsTemplate('backend/order/view/detail/ratepaydetailorder.js');
     }
     if ($arguments->getRequest()->getActionName() === 'index') {
         $arguments->getSubject()->View()->extendsTemplate('backend/order/ratepayapp.js');
     }
 }
コード例 #11
0
 /**
  * Cancels payment slip before order is deleted.
  *
  * @param Enlight_Event_EventArgs $args
  */
 public function onGetOrderControllerPreDispatch(Enlight_Event_EventArgs $args)
 {
     if ($args->getRequest()->getActionName() === 'delete') {
         $id = $args->getSubject()->Request()->getParam('id', null);
         $order = Shopware()->Models()->getRepository('Shopware\\Models\\Order\\Order')->find($id);
         if ($order->getPayment()->getName() === 'barzahlen') {
             $transactionId = $order->getTransactionId();
             $cancel = new Barzahlen_Request_Cancel($transactionId);
             $config = $this->Config();
             $shopId = $config->barzahlenShopId;
             $paymentKey = $config->barzahlenPaymentKey;
             $sandbox = $config->barzahlenSandbox;
             $api = new Barzahlen_Api($shopId, $paymentKey, $sandbox);
             $api->setDebug($config->barzahlenDebug, self::LOGFILE);
             try {
                 $api->handleRequest($cancel);
             } catch (Exception $e) {
                 $this->_logError($e);
             }
         }
     }
 }
コード例 #12
0
 /**
  * @param Enlight_Event_EventArgs $args
  */
 public function onPostDispatchPaymentPaypal(Enlight_Event_EventArgs $args)
 {
     /* @var Enlight_View_Default $view */
     $view = $args->getSubject()->View();
     if ($args->getRequest()->getActionName() === 'getList') {
         $orders = $view->getAssign('data');
         $orderNumbers = array_map(function ($order) {
             return $order['orderNumber'];
         }, $orders);
         $payPalPlusPuiOrderNumbers = $this->getPuiOrderNumbers($orderNumbers);
         foreach ($orders as &$order) {
             if (in_array($order['orderNumber'], $payPalPlusPuiOrderNumbers)) {
                 $order['paymentDescription'] = $order['paymentDescription'] . ' Plus (R)';
             }
         }
         $view->assign('data', $orders);
     }
 }
コード例 #13
0
 /**
  * Listener method for the Enlight_Controller_Front_PostDispatch event.
  *
  * @param   Enlight_Event_EventArgs $args
  * @return  void
  */
 public function onPostDispatch(Enlight_Event_EventArgs $args)
 {
     $this->handleError($args->getSubject(), $args->getRequest());
 }
コード例 #14
0
ファイル: Bootstrap.php プロジェクト: Goucher/shopware
 /**
  * Eventhandler for checkout confirmation.
  * Displays any error messages stored in the session
  *
  * @param Enlight_Event_EventArgs $arguments
  */
 public function onCheckoutConfirm(Enlight_Event_EventArgs $arguments)
 {
     $params = $arguments->getRequest()->getParams();
     if ($arguments->getRequest()->getControllerName() !== 'account' || $arguments->getRequest()->getActionName() !== 'payment' || $params["errorMessage"] != 1) {
         return;
     } else {
         $helper = new Shopware_Plugins_Frontend_SofortPayment_Components_Helpers_Helper();
         $view = $arguments->getSubject()->View();
         $helper->event()->displayErrors($view);
     }
 }