Example #1
0
 public function login($username, $password, $cookie = false)
 {
     $data = Sumo\Database::query("SELECT *\n            FROM PREFIX_user\n            WHERE username = :username\n            AND (\n                password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, :unsalted))))\n                OR password = :hashed\n            ) AND status = 1", array('username' => $username, 'unsalted' => sha1($password), 'hashed' => md5($password)))->fetch();
     if (count($data)) {
         if ($cookie) {
             // some secure way to implement a cookie
         }
         $this->session->data['user_id'] = $data['user_id'];
         $this->session->data['firstname'] = $data['firstname'];
         $this->session->data['lastname'] = $data['lastname'];
         $this->session->data['email'] = $data['email'];
         $this->user_id = $data['user_id'];
         $this->username = $data['username'];
         return true;
     }
     return false;
 }
Example #2
0
                    }
                    if (is_array($body)) {
                        $css .= 'body {';
                        if (isset($body['background-image'])) {
                            $css .= 'background: ' . $body['background-image'] . ' ' . $body['background-repeat'] . ' ' . $body['background-color'] . ';';
                        }
                        if (isset($body['color'])) {
                            $css .= 'color: ' . $body['color'] . ';';
                        }
                        $css .= '}';
                    }
                }
            } else {
                $css .= 'PHP_EOL/= Specific colors could not be found.. =/PHP_EOL';
            }
            $check = Sumo\Database::query("SELECT setting_value FROM PREFIX_settings_stores WHERE setting_name = :template AND store_id = :id", array('id' => $id, 'template' => 'stylesheet_' . $theme['template']))->fetch();
            if (count($check) && !empty($check['setting_value'])) {
                $css .= 'PHP_EOL/= Extra stylesheet, user generated =/PHP_EOL';
                $css .= $check['setting_value'];
            }
        } catch (\Exception $e) {
            $css .= 'PHP_EOL/= Could not load extra CSS =/';
        }
    }
}
$css = preg_replace('#\\s+#', ' ', $css);
$css = preg_replace('#/\\*.*?\\*/#s', '', $css);
$css = preg_replace('#/=(.*?)=/#s', '/* \\1 */', $css);
$css = str_replace('PHP_EOL', "\n", $css);
$css = str_replace('; ', ';', $css);
$css = str_replace(': ', ':', $css);
Example #3
0
 define('ABS_START', microtime(true));
 // Registry
 $registry = new Registry();
 // Loader
 $loader = new Loader($registry);
 $registry->set('load', $loader);
 // Config
 $config = new Config();
 $registry->set('config', $config);
 // Database *legacy*
 //$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
 Sumo\Database::setup(array('hostname' => DB_HOSTNAME, 'username' => DB_USERNAME, 'password' => DB_PASSWORD, 'database' => DB_DATABASE, 'prefix' => DB_PREFIX));
 //$registry->set('db', Sumo);
 Sumo\Cache::disableCache(defined('NO_CACHE') ? true : false);
 $check = Sumo\Database::query("SELECT setting_value FROM PREFIX_settings WHERE setting_name = 'admin_directory'")->fetch();
 $stores = Sumo\Database::fetchAll("SELECT base_http, base_https FROM PREFIX_stores");
 $tmp = $_SERVER['REQUEST_URI'];
 foreach ($stores as $list) {
     foreach ($list as $key => $value) {
         $list[$key] = explode('/', trim($value, '/'));
         $list[$key] = end($list[$key]);
     }
     $tmp = trim(str_replace($list, '', $tmp), '/');
 }
 $tmp = explode('/', $tmp);
 $tmp = $tmp[0];
 if (!empty($_SERVER['HTTP_HOST']) && !empty($tmp) && !empty($check) && !isset($_GET['resource'])) {
     if ($tmp == $check['setting_value']) {
         define('ADMIN_ENABLED', true);
         require 'admin/index.php';
         exit;
Example #4
0
 public function getProducts()
 {
     if (!$this->data) {
         $this->load->model('catalog/product');
         foreach ($this->session->data['cart'] as $key => $quantity) {
             $product = explode(':', $key);
             $product_id = $product[0];
             $stock = true;
             // Options
             if (isset($product[1])) {
                 $options = unserialize(base64_decode($product[1]));
             } else {
                 $options = array();
             }
             // Fetch product, not from cache but realtime
             $product = Sumo\Database::query("SELECT *\n                    FROM PREFIX_product p\n                    LEFT JOIN PREFIX_product_description pd\n                        ON (p.product_id = pd.product_id)\n                    WHERE p.product_id = :pid\n                        AND pd.language_id = :lid\n                        AND p.date_available <= NOW()\n                        AND p.status = 1", array('pid' => $product_id, 'lid' => $this->config->get('language_id')))->fetch();
             if (is_array($product) && count($product)) {
                 $option_price = 0;
                 $option_points = 0;
                 $option_weight = 0;
                 $option_data = array();
                 foreach ($options as $option_id => $value_id) {
                     if (!isset($option_data[$option_id])) {
                         $check = Sumo\Database::query("SELECT name FROM PREFIX_product_option_description WHERE option_id = :id AND language_id = :lid", array('id' => $option_id, 'lid' => $this->config->get('language_id')))->fetch();
                         $option_data[$option_id]['name'] = $check['name'];
                         $option_data[$option_id]['options'] = array();
                     }
                     $option_data_raw = Sumo\Database::query("SELECT name, quantity, subtract, price, price_prefix, weight, weight_prefix, name\n                            FROM PREFIX_product_option_value AS pov\n                            LEFT JOIN PREFIX_product_option_value_description AS povd\n                                ON pov.value_id = povd.value_id\n                            WHERE pov.value_id  = :value_id\n                                AND language_id = :lid", array('value_id' => $value_id, 'lid' => $this->config->get('language_id')))->fetch();
                     $option_data[$option_id]['options'][$value_id] = $option_data_raw;
                 }
                 if ($this->customer->isLogged()) {
                     $customer_group_id = $this->customer->getCustomerGroupId();
                 } else {
                     $customer_group_id = $this->config->get('customer_group_id');
                 }
                 $price = $product['price'];
                 // Product Discounts
                 $discount_quantity = 0;
                 foreach ($this->session->data['cart'] as $key_2 => $quantity_2) {
                     $product_2 = explode(':', $key_2);
                     if ($product_2[0] == $product_id) {
                         $discount_quantity += $quantity_2;
                     }
                 }
                 $product_discount_query = Sumo\Database::query("SELECT price\n                        FROM PREFIX_product_discount\n                        WHERE product_id = :pid\n                            AND customer_group_id = :cgid\n                            AND quantity <= :q\n                            AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW()))\n                        ORDER BY quantity DESC, priority ASC, price ASC\n                        LIMIT 1", array('pid' => $product_id, 'cgid' => $customer_group_id, 'q' => $discount_quantity))->fetch();
                 if (count($product_discount_query) && !empty($product_discount_query['price'])) {
                     $price = $product_discount_query['price'];
                 }
                 // Product Specials
                 $product_special_query = Sumo\Database::query("SELECT price\n                        FROM PREFIX_product_special\n                        WHERE product_id = :pid\n                            AND customer_group_id = :cgid\n                            AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW()))\n                        ORDER BY priority ASC, price ASC\n                        LIMIT 1", array('pid' => $product_id, 'cgid' => $customer_group_id))->fetch();
                 if (count($product_special_query) && !empty($product_special_query['price'])) {
                     $price = $product_special_query['price'];
                 }
                 // Downloads
                 $download_data = array();
                 $download_query = Sumo\Database::fetchAll("SELECT *\n                        FROM PREFIX_product_to_download p2d\n                        LEFT JOIN PREFIX_download d\n                            ON (p2d.download_id = d.download_id)\n                        LEFT JOIN PREFIX_download_description dd\n                            ON (d.download_id = dd.download_id)\n                        WHERE p2d.product_id = :pid\n                            AND dd.language_id = :lid", array('pid' => $product_id, 'lid' => $this->config->get('language_id')));
                 foreach ($download_query as $download) {
                     $download_data[] = $download;
                 }
                 if (count($option_data)) {
                     foreach ($option_data as $data) {
                         foreach ($data['options'] as $option) {
                             if (!$option['quantity'] || $product['quantity'] < $option['quantity']) {
                                 $stock = false;
                             }
                             if (!empty($option['price'])) {
                                 if ($option['price_prefix'] == '-') {
                                     $price -= $option['price'];
                                 } else {
                                     $price += $option['price'];
                                 }
                             }
                         }
                     }
                 } else {
                     // Check if stock is linked
                     if ($product['stock_id'] != $product['product_id']) {
                         $stockData = Sumo\Database::query("SELECT quantity FROM PREFIX_product WHERE product_id = :id", array('id' => $product['stock_id']))->fetch();
                         $product['quantity'] = $stockData['quantity'];
                     }
                     // Stock
                     if (!$product['quantity'] || $product['quantity'] < $quantity) {
                         $stock = false;
                     }
                 }
                 // Image
                 if (empty($product['image'])) {
                     $product['image'] = 'no_image.jpg';
                 }
                 $this->data[$key] = array('key' => $key, 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'shipping' => $product['shipping'], 'image' => $product['image'], 'options' => $options, 'options_data' => $option_data, 'download' => $download_data, 'quantity' => $quantity, 'minimum' => $product['minimum'], 'subtract' => $product['subtract'], 'stock' => $stock, 'stock_id' => $product['stock_id'], 'in_stock' => $product['quantity'], 'price' => $price + $option_price, 'total' => round($price + $option_price, 2) * $quantity, 'points' => $product['points'] ? ($product['points'] + $option_points) * $quantity : 0, 'tax_percentage' => $product['tax_percentage'], 'weight' => ($product['weight'] + $option_weight) * $quantity, 'weight_class_id' => $product['weight_class_id'], 'length' => $product['length'], 'width' => $product['width'], 'height' => $product['height'], 'length_class_id' => $product['length_class_id']);
             } else {
                 $this->remove($key);
             }
         }
     }
     return $this->data;
 }
Example #5
0
 public function getRewardPoints()
 {
     $query = Sumo\Database::query("SELECT SUM(points) AS total FROM PREFIX_customer_reward WHERE customer_id = " . (int) $this->customer_id)->fetch();
     return $query['total'];
 }
Example #6
0
$registry->set('url', $url);
// Request
$request = new Request();
$registry->set('request', $request);
// Response
$response = new Response();
$response->addHeader('Content-Type: text/html; charset=utf-8');
$response->addHeader('X-Powered-By: SumoStore');
$response->addHeader('X-Protected-By: SumoGuard');
$registry->set('response', $response);
// Session
$session = new Session();
$registry->set('session', $session);
// Language
$languages = array();
foreach (Sumo\Database::fetchAll("SELECT * FROM PREFIX_language ORDER BY language_id") as $list) {
    $languages[$list['language_id']] = $list;
}
Sumo\Language::setup($languages[$config->get('language_id')]);
$lang = $languages[$config->get('language_id')];
setlocale(LC_TIME, '');
$locale = setlocale(LC_TIME, $lang['locale']);
$config->set('locale', $lang['locale']);
// Formatter
Sumo\Formatter::setup($config);
Sumo\Mailer::setup($config);
Sumo\Mail::setup($config);
/*
// Language Detection
$languages = Sumo\Cache::find('languages');
if (!is_array($languages) || !count($languages)) {