Пример #1
0
 public function index($id = 0, $params = array())
 {
     $lang_code = $this->safeGet($params, 'lang_code', DEFAULT_LANGUAGE);
     if (!empty($id)) {
         $data = fn_get_shipping_info($id, $lang_code);
         if (empty($data)) {
             $status = Response::STATUS_NOT_FOUND;
         } else {
             $status = Response::STATUS_OK;
         }
     } else {
         $items_per_page = $this->safeGet($params, 'items_per_page', Registry::get('settings.Appearance.admin_products_per_page'));
         $page = $this->safeGet($params, 'page', 1);
         $data = fn_get_shippings(false, $lang_code);
         if ($items_per_page) {
             $data = array_slice($data, ($page - 1) * $items_per_page, $items_per_page);
         }
         $data = array('shippings' => $data, 'params' => array('items_per_page' => $items_per_page, 'page' => $page, 'total_items' => count($data)));
         $status = Response::STATUS_OK;
     }
     return array('status' => $status, 'data' => $data);
 }
Пример #2
0
    exit;
} elseif ($mode == 'manage') {
    if (!empty($params['status']) && $params['status'] == STATUS_INCOMPLETED_ORDER) {
        $params['include_incompleted'] = true;
    }
    if (fn_allowed_for('MULTIVENDOR')) {
        $params['company_name'] = true;
    }
    list($orders, $search, $totals) = fn_get_orders($params, Registry::get('settings.Appearance.admin_orders_per_page'), true);
    if (!empty($params['include_incompleted']) || !empty($search['include_incompleted'])) {
        Registry::get('view')->assign('incompleted_view', true);
    }
    if (!empty($_REQUEST['redirect_if_one']) && count($orders) == 1) {
        return array(CONTROLLER_STATUS_REDIRECT, 'orders.details?order_id=' . $orders[0]['order_id']);
    }
    $shippings = fn_get_shippings(true, CART_LANGUAGE);
    if (Registry::get('runtime.company_id')) {
        $company_shippings = fn_get_companies_shipping_ids(Registry::get('runtime.company_id'));
        if (fn_allowed_for('ULTIMATE')) {
            $company_shippings = db_get_fields('SELECT shipping_id FROM ?:shippings');
        }
        foreach ($shippings as $shipping_id => $shipping) {
            if (!in_array($shipping_id, $company_shippings)) {
                unset($shippings[$shipping_id]);
            }
        }
    }
    $remove_cc = db_get_field("SELECT COUNT(*) FROM ?:status_data WHERE type = 'O' AND param = 'remove_cc_info' AND value = 'N'");
    $remove_cc = $remove_cc > 0 ? true : false;
    Registry::get('view')->assign('remove_cc', $remove_cc);
    Registry::get('view')->assign('orders', $orders);
Пример #3
0
     }
     $cart['user_data'] = fn_array_merge($cart['user_data'], $user_data);
     !empty($_REQUEST['copy_address']) ? $_REQUEST['ship_to_another'] = '' : ($_REQUEST['ship_to_another'] = 'Y');
     // Fill shipping info with billing if needed
     if (empty($_REQUEST['ship_to_another']) && $_REQUEST['update_step'] == 'step_two') {
         $profile_fields = fn_get_profile_fields('O');
         fn_fill_address($cart['user_data'], $profile_fields);
     }
 }
 if (!empty($_REQUEST['next_step'])) {
     $_suffix .= '?edit_step=' . $_REQUEST['next_step'];
 }
 if (!empty($_REQUEST['shipping_ids'])) {
     fn_checkout_update_shipping($cart, $_REQUEST['shipping_ids']);
     // Add variable to session for self-service shipment, no need to fill shipment data in next steps
     $shippings = fn_get_shippings(false);
     $selected_shipping_id = $_REQUEST['shipping_ids'][0];
     foreach ($shippings as $shipping) {
         if ($shipping['shipping_id'] == $selected_shipping_id) {
             $_SESSION['selfService'] = $shipping['self_service'];
             if ($shipping['min_total_price'] > $cart['subtotal']) {
                 fn_set_notification('W', fn_get_lang_var('total_less_then_min'), fn_get_lang_var('total_less_then_min_detailed') . $shipping['min_total_price']);
                 return array(CONTROLLER_STATUS_DENIED);
             }
         }
     }
 }
 if (!empty($_REQUEST['payment_id'])) {
     $cart['payment_id'] = (int) $_REQUEST['payment_id'];
     if (!empty($_REQUEST['payment_info'])) {
         $cart['extra_payment_info'] = $_REQUEST['payment_info'];
Пример #4
0
 public function import($db_already_cloned)
 {
     General::setProgressTitle(__CLASS__);
     if (!$db_already_cloned) {
         if (!General::cloneImportedDB($this->store_data)) {
             return false;
         }
     } else {
         General::setEmptyProgressBar(__('importing_data'));
         General::setEmptyProgressBar(__('importing_data'));
     }
     General::connectToOriginalDB(array('table_prefix' => General::formatPrefix()));
     General::processAddons($this->store_data, __CLASS__);
     $main_sql = Registry::get('config.dir.addons') . 'store_import/database/' . $this->main_sql_filename;
     General::backupSettings();
     if (is_file($main_sql)) {
         //Process main sql
         if (!db_import_sql_file($main_sql)) {
             return false;
         }
     }
     $seo_status = db_get_field("SELECT status FROM ?:addons WHERE addon = 'seo'");
     if (!empty($seo_status)) {
         $seo_multi_language = db_get_field("SELECT value FROM ?:settings_objects_upg WHERE name = 'multi_language'");
         $seo_multi_language_vendor = db_get_hash_single_array("SELECT company_id, value FROM ?:settings_vendor_values_upg WHERE object_id = (SELECT object_id FROM ?:settings_objects_upg WHERE name = 'multi_language')", array('company_id', 'value'));
         db_query("UPDATE ?:settings_objects_upg SET value = 'category_nohtml' WHERE value = 'category' AND name = 'seo_category_type'");
         db_query("UPDATE ?:settings_vendor_values_upg SET value = 'category_nohtml' WHERE value = 'category' AND object_id = (SELECT object_id FROM ?:settings_objects_upg WHERE name = 'seo_category_type')");
         db_query("UPDATE ?:settings_objects_upg SET value = 'category' WHERE value = 'file' AND name = 'seo_category_type'");
         db_query("UPDATE ?:settings_vendor_values_upg SET value = 'category' WHERE value = 'file' AND object_id = (SELECT object_id FROM ?:settings_objects_upg WHERE name = 'seo_category_type')");
         $categories = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type='c' AND lang_code = (SELECT value FROM ?:settings_objects WHERE name='frontend_default_language')");
         if (!empty($categories)) {
             foreach ($categories as $category_id) {
                 $path = db_get_field("SELECT id_path FROM ?:categories WHERE category_id = ?i", $category_id);
                 $apath = explode('/', $path);
                 array_pop($apath);
                 db_query("UPDATE ?:seo_names SET path = ?s WHERE type='c' AND object_id = ?i", implode('/', $apath), $category_id);
             }
         }
         $products = db_get_fields("SELECT object_id FROM ?:seo_names RIGHT JOIN ?:products ON ?:seo_names.object_id = ?:products.product_id WHERE type='p' AND lang_code = (SELECT value FROM ?:settings_objects WHERE name='frontend_default_language')");
         if (!empty($products)) {
             $condition = '';
             if (fn_allowed_for('ULTIMATE')) {
                 $condition = fn_get_company_condition('c.company_id', false);
                 $condition = !empty($condition) ? " AND ({$condition} OR {$field} = 0)" : '';
             }
             foreach ($products as $product_id) {
                 $path = db_get_hash_single_array("SELECT c.id_path, p.link_type FROM ?:categories as c LEFT JOIN ?:products_categories as p ON p.category_id = c.category_id WHERE p.product_id = ?i ?p", array('link_type', 'id_path'), $product_id, $condition);
                 $_path = !empty($path['M']) ? $path['M'] : $path['A'];
                 db_query("UPDATE ?:seo_names SET path = ?s WHERE type='p' AND object_id = ?i", $_path, $product_id);
             }
         }
         $pages = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type='a' AND lang_code = (SELECT value FROM ?:settings_objects WHERE name='frontend_default_language')");
         if (!empty($pages)) {
             foreach ($pages as $page_id) {
                 $path = db_get_field("SELECT id_path FROM ?:pages WHERE page_id = ?i", $page_id);
                 $apath = explode('/', $path);
                 array_pop($apath);
                 db_query("UPDATE ?:seo_names SET path = ?s WHERE type='a' AND object_id = ?i", implode('/', $apath), $page_id);
             }
         }
     }
     General::restoreSettings();
     if (!empty($seo_status)) {
         db_query("UPDATE ?:settings_objects SET value = ?s WHERE name = 'non_latin_symbols'", $seo_multi_language);
         foreach ($seo_multi_language_vendor as $company_id => $value) {
             db_query("REPLACE INTO ?:settings_vendor_values VALUES ((SELECT object_id FROM ?:settings_objects WHERE name = 'non_latin_symbols'), ?i, ?s)", $company_id, $value);
         }
         $map = array('product_file' => 'file', 'product_category' => 'page');
         $setting = db_get_field("SELECT value FROM ?:settings_objects WHERE name = 'seo_product_type'");
         db_query("UPDATE ?:settings_objects SET value = ?s WHERE name = 'seo_page_type'", $map[$setting]);
         $obj_id = db_get_field("SELECT object_id FROM ?:settings_objects WHERE name = 'seo_page_type'");
         $settings = db_get_array("SELECT * FROM ?:settings_vendor_values WHERE object_id = (SELECT object_id FROM ?:settings_objects WHERE name = 'seo_product_type')");
         if (!empty($settings)) {
             foreach ($settings as $vendor_setting) {
                 db_query("UPDATE ?:settings_vendor_values SET value = ?s WHERE object_id = ?i AND company_id = ?i", $map[$vendor_setting['value']], $obj_id, $vendor_setting['company_id']);
             }
         }
         db_query("UPDATE ?:settings_objects SET value = 'file' WHERE name = 'seo_other_type'");
         db_query("UPDATE ?:settings_vendor_values SET value = 'file' WHERE object_id = (SELECT object_id FROM ?:settings_objects WHERE name = 'seo_other_type')");
         $empty_product_seo_names = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type = 'p' AND object_id NOT IN (SELECT product_id FROM ?:products)");
         if ($empty_product_seo_names) {
             db_query("DELETE FROM ?:seo_names WHERE object_id IN (?n)", $empty_product_seo_names);
         }
         $empty_pages_seo_names = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type = 'a' AND object_id NOT IN (SELECT page_id FROM ?:pages)");
         if ($empty_product_seo_names) {
             db_query("DELETE FROM ?:seo_names WHERE object_id IN (?n)", $empty_product_seo_names);
         }
         $empty_categories_seo_names = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type = 'c' AND object_id NOT IN (SELECT category_id FROM ?:categories)");
         if ($empty_categories_seo_names) {
             db_query("DELETE FROM ?:seo_names WHERE object_id IN (?n)", $empty_categories_seo_names);
         }
         $empty_features_seo_names = db_get_fields("SELECT object_id FROM ?:seo_names WHERE type = 'e' AND object_id NOT IN (SELECT feature_id FROM ?:product_features)");
         if ($empty_features_seo_names) {
             db_query("DELETE FROM ?:seo_names WHERE object_id IN (?n)", $empty_features_seo_names);
         }
         $_empty_product_seo_names = db_get_array("\n                SELECT ?:seo_names.*\n                FROM ?:categories\n                RIGHT JOIN ?:products_categories ON ?:categories.category_id = ?:products_categories.category_id\n                RIGHT JOIN ?:seo_names ON ?:products_categories.product_id = ?:seo_names.object_id AND ?:categories.company_id = ?:seo_names.company_id\n                WHERE ?:categories.category_id IS NULL AND ?:seo_names.type = 'p'");
         foreach ($_empty_product_seo_names as $value) {
             db_query("DELETE FROM ?:seo_names WHERE object_id = ?i AND company_id = ?i AND type = 'p'", $value['object_id'], $value['company_id']);
         }
     }
     if (db_get_field("SELECT status FROM ?:addons WHERE addon = 'suppliers'")) {
         $query_parts = array();
         $shippings = fn_get_shippings(true);
         foreach ($shippings as $shipping_id => $shipping_name) {
             $query_parts[] = db_quote('(?i, ?i, ?s)', 0, $shipping_id, 'S');
         }
         if (!empty($query_parts)) {
             db_query('REPLACE INTO ?:supplier_links VALUES ' . implode(', ', $query_parts));
         }
     }
     $products_with_empty_categories = db_get_array("SELECT category_id, product_id FROM ?:products_categories WHERE category_id NOT IN (SELECT category_id FROM ?:categories)");
     db_query("DELETE FROM ?:products_categories WHERE category_id NOT IN (SELECT category_id FROM ?:categories)");
     foreach ($products_with_empty_categories as $k => $data) {
         $product_to_delete = db_get_field("SELECT product_id FROM ?:products_categories WHERE product_id = ?i", $data['product_id']);
         if (!$product_to_delete) {
             fn_delete_product($data['product_id']);
         } else {
             $product_category = db_get_field("SELECT category_id FROM ?:products_categories WHERE product_id = ?i", $product_to_delete);
             $company_id = db_get_field("SELECT company_id FROM ?:categories WHERE category_id = ?i", $product_category);
             db_query("UPDATE ?:products_categories SET link_type = 'A' WHERE product_id = ?i", $product_to_delete);
             db_query("UPDATE ?:products_categories SET link_type = 'M' WHERE product_id = ?i AND category_id = ?i", $product_to_delete, $product_category);
             db_query("UPDATE ?:products SET company_id = ?i WHERE product_id = ?i", $company_id, $product_to_delete);
         }
     }
     $products_with_category = db_get_hash_array("SELECT ?:products_categories.product_id, ?:categories.company_id  FROM ?:products_categories LEFT JOIN ?:categories ON ?:categories.category_id = ?:products_categories.category_id LEFT JOIN ?:products ON ?:products.product_id = ?:products_categories.product_id WHERE ?:products.company_id = ?:categories.company_id", 'product_id');
     $products_with_foreign_category = db_get_array("SELECT ?:products_categories.product_id, ?:categories.company_id, ?:products.company_id as old_company_id  FROM ?:products_categories LEFT JOIN ?:categories ON ?:categories.category_id = ?:products_categories.category_id LEFT JOIN ?:products ON ?:products.product_id = ?:products_categories.product_id WHERE ?:products.company_id != ?:categories.company_id AND ?:products_categories.product_id NOT IN (?n)", array_keys($products_with_category));
     if (!empty($products_with_foreign_category)) {
         foreach ($products_with_foreign_category as $key => $data) {
             db_query("UPDATE ?:products SET company_id = ?i WHERE product_id = ?i", $data['company_id'], $data['product_id']);
             if (!empty($seo_status)) {
                 db_query("DELETE FROM ?:seo_names WHERE type = 'p' AND object_id = ?i AND company_id = ?i", $data['product_id'], $data['old_company_id']);
             }
         }
     }
     General::setEmptyProgressBar();
     General::setEmptyProgressBar();
     General::setEmptyProgressBar();
     General::setEmptyProgressBar();
     return true;
 }
Пример #5
0
/**
 * Executes actions when installing add-on
 */
function fn_suppliers_install()
{
    // Activate "None" supplier for all shippings
    $query_parts = array();
    $shippings = fn_get_shippings(true);
    foreach ($shippings as $shipping_id => $shipping_name) {
        $query_parts[] = db_quote('(?i, ?i, ?s)', 0, $shipping_id, 'S');
    }
    if (!empty($query_parts)) {
        db_query('INSERT INTO ?:supplier_links VALUES ' . implode(', ', $query_parts));
    }
}
Пример #6
0
    if (!empty($params['status']) && $params['status'] == STATUS_INCOMPLETED_ORDER) {
        $params['include_incompleted'] = true;
        $view->assign('incompleted_view', true);
    }
    list($orders, $search, $totals) = fn_get_orders($params, Registry::get('settings.Appearance.admin_orders_per_page'), true, CART_LANGUAGE, 1);
    $orders = fn_UserFieldToArray(44, $orders, 'metro');
    $orders = fn_UserFieldToArray(65, $orders, 'firma');
    //var_dump($orders);
    if (!empty($_REQUEST['redirect_if_one']) && count($orders) == 1) {
        return array(CONTROLLER_STATUS_REDIRECT, "orders.details?order_id={$orders[0]['order_id']}");
    }
    $view->assign('orders', $orders);
    $view->assign('search', $search);
    $view->assign('totals', $totals);
    $view->assign('display_totals', fn_display_order_totals($orders));
    $view->assign('shippings', fn_get_shippings(true, CART_LANGUAGE));
} elseif ($mode == 'google') {
    // In this action we loop the script until google data is changed
    if ($action == 'wait_response') {
        $current_time = TIME;
        echo "Waiting for a Google response. Please be patient.";
        fn_flush();
        do {
            echo ' .';
            $google_info_new = db_get_field("SELECT data FROM ?:order_data WHERE order_id = ?i AND type = ?s", $_REQUEST['order_id'], GOOGLE_ORDER_DATA);
            if ($google_info_new != $_SESSION['google_info']) {
                unset($_SESSION['google_info']);
                return array(CONTROLLER_STATUS_REDIRECT, "orders.details?order_id={$_REQUEST['order_id']}");
            }
            sleep(1);
        } while (time() - TIME < 59);