2121
2222namespace Experius \MultipleWebsiteStoreCodeUrl \Helper ;
2323
24+ use Magento \Config \Model \Config \Backend \Admin \Custom ;
2425use Magento \Framework \App \Helper \AbstractHelper ;
2526use Magento \Store \Model \StoreManagerInterface ;
2627
@@ -35,14 +36,22 @@ class Data extends AbstractHelper
3536 */
3637 protected $ storeManager ;
3738
39+ /** @var \Magento\Framework\App\ResourceConnection */
40+ protected $ resource ;
41+
42+ protected $ currentWebsite = null ;
43+
3844 /**
3945 * Data constructor.
4046 * @param StoreManagerInterface $storeManager
47+ * @param \Magento\Framework\App\ResourceConnection $resource
4148 */
4249 public function __construct (
43- StoreManagerInterface $ storeManager
50+ StoreManagerInterface $ storeManager ,
51+ \Magento \Framework \App \ResourceConnection $ resource
4452 ) {
4553 $ this ->storeManager = $ storeManager ;
54+ $ this ->resource = $ resource ;
4655 }
4756
4857 /**
@@ -82,5 +91,37 @@ public function validateStore($storeCode)
8291 return false ;
8392 }
8493
85- }
94+ /**
95+ * @param \Magento\Framework\App\Request\Http $request
96+ * @return int|null
97+ */
98+ public function getRequestToWebsiteId ($ request )
99+ {
100+ $ baseUrl = str_replace ('www. ' , '' , $ request ->getDistroBaseUrl ());
86101
102+ $ connection = $ this ->resource ->getConnection ();
103+ $ table = $ connection ->getTableName ('core_config_data ' );
104+ $ websiteFilter = $ connection ->select ()->from ($ table , ['scope_id ' ])
105+ ->where ('scope = ? ' , 'websites ' )
106+ ->where ('path in (?) ' , [Custom::XML_PATH_SECURE_BASE_URL , Custom::XML_PATH_UNSECURE_BASE_URL ])
107+ ->where ('value = ? ' , $ baseUrl );
108+ $ match = $ connection ->fetchCol ($ websiteFilter );
109+
110+ return count ($ match ) > 0 ? (int )$ match [0 ] : null ;
111+ }
112+
113+ /**
114+ * Warning: Caches result
115+ * @param \Magento\Framework\App\Request\Http $request
116+ * @return \Magento\Store\Api\Data\WebsiteInterface|null
117+ * @throws \Magento\Framework\Exception\LocalizedException
118+ */
119+ public function getRequestToWebsite ($ request )
120+ {
121+ if (!$ this ->currentWebsite ) {
122+ $ websiteId = $ this ->getRequestToWebsiteId ($ request );
123+ $ this ->currentWebsite = $ websiteId ? $ this ->storeManager ->getWebsite ($ websiteId ) : null ;
124+ }
125+ return $ this ->currentWebsite ;
126+ }
127+ }
0 commit comments