Advertisement
Fadly31337

index.php [OPENCART]

Nov 26th, 2020
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.33 KB | None | 0 0
  1. <?php
  2. // Version
  3. define('VERSION', '2.1.0.1');
  4.  
  5. // Configuration
  6. if (is_file('config.php')) {
  7.     require_once('config.php');
  8. }
  9.  
  10. // Install
  11. if (!defined('DIR_APPLICATION')) {
  12.     header('Location: install/index.php');
  13.     exit;
  14. }
  15.  
  16. // VirtualQMOD
  17. require_once('./vqmod/vqmod.php');
  18. VQMod::bootup();
  19.  
  20. // VQMODDED Startup
  21. require_once(VQMod::modCheck(DIR_SYSTEM . 'startup.php'));
  22.  
  23. // Registry
  24. $registry = new Registry();
  25.  
  26. // Loader
  27. $loader = new Loader($registry);
  28. $registry->set('load', $loader);
  29.  
  30. // Config
  31. $config = new Config();
  32. $registry->set('config', $config);
  33.  
  34. // Database
  35. $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT);
  36. $registry->set('db', $db);
  37.  
  38. // Store
  39. if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
  40.     $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
  41. } else {
  42.     $store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
  43. }
  44.  
  45. if ($store_query->num_rows) {
  46.     $config->set('config_store_id', $store_query->row['store_id']);
  47. } else {
  48.     $config->set('config_store_id', 0);
  49. }
  50.  
  51. // Settings
  52. $query = $db->query("SELECT * FROM `" . DB_PREFIX . "setting` WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");
  53.  
  54. foreach ($query->rows as $result) {
  55.     if (!$result['serialized']) {
  56.         $config->set($result['key'], $result['value']);
  57.     } else {
  58.         $config->set($result['key'], json_decode($result['value'], true));
  59.     }
  60. }
  61.  
  62. if (!$store_query->num_rows) {
  63.     $config->set('config_url', HTTP_SERVER);
  64.     $config->set('config_ssl', HTTPS_SERVER);
  65. }
  66.  
  67. // Url
  68. $url = new Url($config->get('config_url'), $config->get('config_secure') ? $config->get('config_ssl') : $config->get('config_url'));
  69. $registry->set('url', $url);
  70.  
  71. // Log
  72. $log = new Log($config->get('config_error_filename'));
  73. $registry->set('log', $log);
  74.  
  75. function error_handler($code, $message, $file, $line) {
  76.     global $log, $config;
  77.  
  78.     // error suppressed with @
  79.     if (error_reporting() === 0) {
  80.         return false;
  81.     }
  82.  
  83.     switch ($code) {
  84.         case E_NOTICE:
  85.         case E_USER_NOTICE:
  86.             $error = 'Notice';
  87.             break;
  88.         case E_WARNING:
  89.         case E_USER_WARNING:
  90.             $error = 'Warning';
  91.             break;
  92.         case E_ERROR:
  93.         case E_USER_ERROR:
  94.             $error = 'Fatal Error';
  95.             break;
  96.         default:
  97.             $error = 'Unknown';
  98.             break;
  99.     }
  100.  
  101.     if ($config->get('config_error_display')) {
  102.         echo '<b>' . $error . '</b>: ' . $message . ' in <b>' . $file . '</b> on line <b>' . $line . '</b>';
  103.     }
  104.  
  105.     if ($config->get('config_error_log')) {
  106.         $log->write('PHP ' . $error . ':  ' . $message . ' in ' . $file . ' on line ' . $line);
  107.     }
  108.  
  109.     return true;
  110. }
  111.  
  112. // Error Handler
  113. set_error_handler('error_handler');
  114.  
  115. // Request
  116. $request = new Request();
  117. $registry->set('request', $request);
  118.  
  119. // Response
  120. $response = new Response();
  121. $response->addHeader('Content-Type: text/html; charset=utf-8');
  122. $response->setCompression($config->get('config_compression'));
  123. $registry->set('response', $response);
  124.  
  125. // Cache
  126. $cache = new Cache('file');
  127. $registry->set('cache', $cache);
  128.  
  129. // Session
  130. if (isset($request->get['token']) && isset($request->get['route']) && substr($request->get['route'], 0, 4) == 'api/') {
  131.     $db->query("DELETE FROM `" . DB_PREFIX . "api_session` WHERE TIMESTAMPADD(HOUR, 1, date_modified) < NOW()");
  132.  
  133.     $query = $db->query("SELECT DISTINCT * FROM `" . DB_PREFIX . "api` `a` LEFT JOIN `" . DB_PREFIX . "api_session` `as` ON (a.api_id = as.api_id) LEFT JOIN " . DB_PREFIX . "api_ip `ai` ON (as.api_id = ai.api_id) WHERE a.status = '1' AND as.token = '" . $db->escape($request->get['token']) . "' AND ai.ip = '" . $db->escape($request->server['REMOTE_ADDR']) . "'");
  134.  
  135.     if ($query->num_rows) {
  136.         // Does not seem PHP is able to handle sessions as objects properly so so wrote my own class
  137.         $session = new Session($query->row['session_id'], $query->row['session_name']);
  138.         $registry->set('session', $session);
  139.  
  140.         // keep the session alive
  141.         $db->query("UPDATE `" . DB_PREFIX . "api_session` SET date_modified = NOW() WHERE api_session_id = '" . $query->row['api_session_id'] . "'");
  142.     }
  143. } else {
  144.     $session = new Session();
  145.     $registry->set('session', $session);
  146. }
  147.  
  148. // Language Detection
  149. $languages = array();
  150.  
  151. $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language` WHERE status = '1'");
  152.  
  153. foreach ($query->rows as $result) {
  154.     $languages[$result['code']] = $result;
  155. }
  156.  
  157. if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) {
  158.     $code = $session->data['language'];
  159. } elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages)) {
  160.     $code = $request->cookie['language'];
  161. } else {
  162.     $detect = '';
  163.  
  164.     if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && $request->server['HTTP_ACCEPT_LANGUAGE']) {
  165.         $browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);
  166.  
  167.         foreach ($browser_languages as $browser_language) {
  168.             foreach ($languages as $key => $value) {
  169.                 if ($value['status']) {
  170.                     $locale = explode(',', $value['locale']);
  171.  
  172.                     if (in_array($browser_language, $locale)) {
  173.                         $detect = $key;
  174.                         break 2;
  175.                     }
  176.                 }
  177.             }
  178.         }
  179.     }
  180.  
  181.     $code = $detect ? $detect : $config->get('config_language');
  182. }
  183.  
  184. if (!isset($session->data['language']) || $session->data['language'] != $code) {
  185.     $session->data['language'] = $code;
  186. }
  187.  
  188. if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) {
  189.     setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);
  190. }
  191.  
  192. $config->set('config_language_id', $languages[$code]['language_id']);
  193. $config->set('config_language', $languages[$code]['code']);
  194.  
  195. // Language
  196. $language = new Language($languages[$code]['directory']);
  197. $language->load($languages[$code]['directory']);
  198. $registry->set('language', $language);
  199.  
  200. // Document
  201. $registry->set('document', new Document());
  202.  
  203. // Customer
  204. $customer = new Customer($registry);
  205. $registry->set('customer', $customer);
  206.  
  207. // Customer Group
  208. if ($customer->isLogged()) {
  209.     $config->set('config_customer_group_id', $customer->getGroupId());
  210. } elseif (isset($session->data['customer']) && isset($session->data['customer']['customer_group_id'])) {
  211.     // For API calls
  212.     $config->set('config_customer_group_id', $session->data['customer']['customer_group_id']);
  213. } elseif (isset($session->data['guest']) && isset($session->data['guest']['customer_group_id'])) {
  214.     $config->set('config_customer_group_id', $session->data['guest']['customer_group_id']);
  215. }
  216.  
  217. // Tracking Code
  218. if (isset($request->get['tracking'])) {
  219.     setcookie('tracking', $request->get['tracking'], time() + 3600 * 24 * 1000, '/');
  220.  
  221.     $db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $db->escape($request->get['tracking']) . "'");
  222. }
  223.  
  224. // Affiliate
  225. $registry->set('affiliate', new Affiliate($registry));
  226.  
  227. // Currency
  228. $registry->set('currency', new Currency($registry));
  229.  
  230. // Tax
  231. $registry->set('tax', new Tax($registry));
  232.  
  233. // Weight
  234. $registry->set('weight', new Weight($registry));
  235.  
  236. // Length
  237. $registry->set('length', new Length($registry));
  238.  
  239. // Cart
  240. $registry->set('cart', new Cart($registry));
  241.  
  242. // Encryption
  243. $registry->set('encryption', new Encryption($config->get('config_encryption')));
  244.  
  245. // OpenBay Pro
  246. $registry->set('openbay', new Openbay($registry));
  247.  
  248. // Event
  249. $event = new Event($registry);
  250. $registry->set('event', $event);
  251.  
  252. $query = $db->query("SELECT * FROM " . DB_PREFIX . "event");
  253.  
  254. foreach ($query->rows as $result) {
  255.     $event->register($result['trigger'], $result['action']);
  256. }
  257.  
  258. // Front Controller
  259. $controller = new Front($registry);
  260.  
  261. // Maintenance Mode
  262. $controller->addPreAction(new Action('common/maintenance'));
  263.  
  264. // SEO URL's
  265. $controller->addPreAction(new Action('common/seo_url'));
  266.  
  267. // Router
  268. if (isset($request->get['route'])) {
  269.     $action = new Action($request->get['route']);
  270. } else {
  271.     $action = new Action('common/home');
  272. }
  273.  
  274. // Dispatch
  275. $controller->dispatch($action, new Action('error/not_found'));
  276.  
  277. // Output
  278. $response->output();
  279.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement