require "libs/ext.lib.php"; # decide what to do if (isset($_POST["key"])) { switch ($_POST["key"]) { case "process": if (isset($_POST["set_date"]) or isset($_POST["set_month"])) { $OUTPUT = details($_POST); } else { $OUTPUT = process($_POST); } break; case "write": $OUTPUT = write($_POST); break; case "update_prices": $OUTPUT = update_prices($_POST); break; default: # decide what to do if (isset($_GET["invids"])) { $OUTPUT = details($_GET); } else { $OUTPUT = "<li class='err'>Invalid use of module.</li>"; } } } else { # decide what to do if (isset($_GET["invids"])) { if (isset($_GET["edit"])) { $OUTPUT = edit_items($_GET); } else {
function automation() { global $tpl, $mysql, $twig; $tpath = locatePluginTemplates(array('config/main', 'config/automation'), 'eshop', 1); if (isset($_REQUEST['yml_url']) && !empty($_REQUEST['yml_url']) && isset($_REQUEST['import'])) { import_yml($_REQUEST['yml_url']); //$import_str = implode('<br/>',$_SESSION['import_yml']); //$info = "Импорт YML успешно завершен<br/><br/>".$import_str; $info = "Импорт YML успешно завершен"; msg(array("type" => "info", "info" => $info)); } if (isset($_REQUEST['currency'])) { $rates_str = update_currency(); $info = "Валюты обновлены<br/><br/>" . $rates_str; msg(array("type" => "info", "info" => $info)); } if (isset($_REQUEST['change_price'])) { $change_price_type = intval($_REQUEST['change_price_type']); $change_price_qnt = intval($_REQUEST['change_price_qnt']); update_prices($change_price_type, $change_price_qnt); $info = "Цены обновлены<br/>"; msg(array("type" => "info", "info" => $info)); } if (isset($_REQUEST['export_csv'])) { $SUPRESS_TEMPLATE_SHOW = 1; $SUPRESS_MAINBLOCK_SHOW = 1; require_once dirname(__FILE__) . '/csv_lib/CsvImportInterface.php'; require_once dirname(__FILE__) . '/csv_lib/CsvImport.php'; require_once dirname(__FILE__) . '/csv_lib/CsvExportInterface.php'; require_once dirname(__FILE__) . '/csv_lib/CsvExport.php'; $export = new CsvExport(); $cat_array = array(); foreach ($mysql->select('SELECT * FROM ' . prefix . '_eshop_categories ORDER BY position ASC') as $cat_row) { $catlink = checkLinkAvailable('eshop', '') ? generateLink('eshop', '', array('cat' => $cat_row['id'])) : generateLink('core', 'plugin', array('plugin' => 'eshop'), array('cat' => $cat_row['id'])); $cat_array[] = array('id' => $cat_row['id'], 'url' => $cat_row['url'], 'image' => $cat_row['image'], 'name' => $cat_row['name'], 'description' => $cat_row['description'], 'parent_id' => $cat_row['parent_id'], 'position' => $cat_row['position'], 'meta_title' => $cat_row['meta_title'], 'meta_keywords' => $cat_row['meta_keywords'], 'meta_description' => $cat_row['meta_description'], 'link' => $catlink); } $conditions = array(); array_push($conditions, "p.active = 1"); //$limitCount = "10000"; $fSort = " GROUP BY p.id ORDER BY p.id DESC "; $sqlQPart = "FROM " . prefix . "_eshop_products p LEFT JOIN " . prefix . "_eshop_products_categories pc ON p.id = pc.product_id LEFT JOIN " . prefix . "_eshop_categories c ON pc.category_id = c.id " . (count($conditions) ? "WHERE " . implode(" AND ", $conditions) : '') . $fSort; $sqlQ = "SELECT p.id AS id, p.url AS url, p.code AS code, p.name AS name, p.annotation AS annotation, p.body AS body, p.active AS active, p.featured AS featured, p.stocked AS stocked, p.position AS position, p.meta_title AS meta_title, p.meta_keywords AS meta_keywords, p.meta_description AS meta_description, p.date AS date, p.editdate AS editdate, p.views AS views, c.id AS cid, c.name AS category " . $sqlQPart; $entries = array(); foreach ($mysql->select($sqlQ) as $row) { $entriesImg = array(); foreach ($mysql->select('SELECT * FROM ' . prefix . '_eshop_images i WHERE i.product_id = ' . $row['id'] . ' ') as $row2) { $entriesImg[] = $row2['filepath']; } $entriesVariants = array(); foreach ($mysql->select('SELECT * FROM ' . prefix . '_eshop_variants v WHERE v.product_id = ' . $row['id'] . ' ') as $vrow) { $entriesVariants[] = $vrow; } $options_array = array(); foreach ($mysql->select("SELECT * FROM " . prefix . "_eshop_options LEFT JOIN " . prefix . "_eshop_features ON " . prefix . "_eshop_features.id=" . prefix . "_eshop_options.feature_id WHERE " . prefix . "_eshop_options.product_id = " . $row['id'] . " ORDER BY position, id") as $orow) { $options_array[$orow['id']] = $orow['value']; } $xf_name_id = array(); $features_array = array(); foreach ($mysql->select("SELECT * FROM " . prefix . "_eshop_features ORDER BY position, id") as $frow) { $frow['value'] = $options_array[$frow['id']]; $frow['foptions'] = json_decode($frow['foptions'], true); foreach ($frow['foptions'] as $key => $value) { $frow['foptions'][$key] = iconv("utf-8", "windows-1251", $value); } $features_array["xfields_" . $frow['name']] = $frow['value']; $xf_name_id[$frow['name']] = $frow['id']; } $images_comma_separated = implode(",", $entriesImg); $entry = array(); $entry = array('id' => $row['id'], 'code' => $row['code'], 'url' => $row['url'], 'name' => $row['name'], 'variants' => $entriesVariants, 'annotation' => $row['annotation'], 'body' => $row['body'], 'active' => $row['active'], 'featured' => $row['featured'], 'stocked' => $row['stocked'], 'meta_title' => $row['meta_title'], 'meta_keywords' => $row['meta_keywords'], 'meta_description' => $row['meta_description'], 'date' => empty($row['date']) ? '' : $row['date'], 'editdate' => empty($row['editdate']) ? '' : $row['editdate'], 'cat_name' => $row['category'], 'cid' => $row['cid'], 'images' => $images_comma_separated); foreach ($features_array as $fk => $fv) { $entry[$fk] = $fv; } $entries[] = $entry; } $count = 0; foreach ($entries as $entry) { foreach ($entry['variants'] as $variant) { $entry_row = array(); $entry_row = $entry; unset($entry_row['variants']); $entry_row['v_id'] = $variant['id']; $entry_row['v_sku'] = $variant['sku']; $entry_row['v_name'] = $variant['name']; $entry_row['v_price'] = $variant['price']; $entry_row['v_compare_price'] = $variant['compare_price']; $entry_row['v_stock'] = $variant['stock']; $entry_row['v_amount'] = $variant['amount']; if ($count == 0) { $export->setHeader(array_keys($entry_row)); } $count += 1; $export->append(array($entry_row)); unset($entry_row); } } $export->export('products.csv', ';'); die; } if (isset($_REQUEST['import_csv'])) { $SUPRESS_TEMPLATE_SHOW = 1; $SUPRESS_MAINBLOCK_SHOW = 1; if (is_uploaded_file($_FILES["filename"]["tmp_name"])) { require_once dirname(__FILE__) . '/csv_lib/CsvImportInterface.php'; require_once dirname(__FILE__) . '/csv_lib/CsvImport.php'; require_once dirname(__FILE__) . '/csv_lib/CsvExportInterface.php'; require_once dirname(__FILE__) . '/csv_lib/CsvExport.php'; $import = new CsvImport(); $filepath = dirname(__FILE__) . "/import/" . $_FILES["filename"]["name"]; move_uploaded_file($_FILES["filename"]["tmp_name"], $filepath); $import->setFile($filepath, 10000, ";"); $items = $import->getRows(); $xf_name_id = array(); foreach ($mysql->select("SELECT * FROM " . prefix . "_eshop_features ORDER BY position, id") as $frow) { $xf_name_id[$frow['name']] = $frow['id']; } foreach ($items as $iv) { $current_time = time(); $id = $iv['id']; $code = empty($iv['code']) ? "" : $iv['code']; $url = empty($iv['url']) ? "" : $iv['url']; $name = empty($iv['name']) ? "" : $iv['name']; $v_id = empty($iv['v_id']) ? "" : $iv['v_id']; $v_sku = empty($iv['v_sku']) ? "" : $iv['v_sku']; $v_name = empty($iv['v_name']) ? "" : $iv['v_name']; $v_price = empty($iv['v_price']) ? "" : $iv['v_price']; $v_compare_price = empty($iv['v_compare_price']) ? "" : $iv['v_compare_price']; $v_stock = empty($iv['v_stock']) ? "" : $iv['v_stock']; $v_amount = empty($iv['v_amount']) ? "" : $iv['v_amount']; if ($v_amount == '') { $v_amount = 'NULL'; } $annotation = empty($iv['annotation']) ? "" : $iv['annotation']; $body = empty($iv['body']) ? "" : $iv['body']; $active = empty($iv['active']) ? "1" : $iv['active']; $featured = empty($iv['featured']) ? "0" : $iv['featured']; $stocked = empty($iv['stocked']) ? "0" : $iv['stocked']; $meta_title = empty($iv['meta_title']) ? "" : $iv['meta_title']; $meta_keywords = empty($iv['meta_keywords']) ? "" : $iv['meta_keywords']; $meta_description = empty($iv['meta_description']) ? "" : $iv['meta_description']; $date = empty($iv['date']) ? $current_time : $iv['date']; $editdate = empty($iv['editdate']) ? $current_time : $iv['editdate']; $cat_name = empty($iv['cat_name']) ? "" : $iv['cat_name']; $cid = empty($iv['cid']) ? "0" : $iv['cid']; //$images = explode(',',$iv['images']); $xfields_items = array(); foreach ($iv as $xfk => $xfv) { preg_match("/xfields_/", $xfk, $find_xf); if (isset($find_xf[0])) { $xf_name = str_replace('xfields_', '', $xfk); $xf_id = $xf_name_id[$xf_name]; $xfields_items[$xf_id] = $xfv; } } if ($iv['id'] != "") { $product_row = $mysql->record("SELECT * FROM " . prefix . "_eshop_products WHERE id=" . db_squote($iv['id']) . " "); if (empty($product_row)) { if ($url != "") { if (!is_array($mysql->record("select id from " . prefix . "_eshop_products where url = " . db_squote($product_row["url"]) . " limit 1"))) { $mysql->query("INSERT INTO " . prefix . "_eshop_products (`id`, `code`, `url`, `name`, `annotation`, `body`, `active`, `featured`, `stocked`, `meta_title`, `meta_keywords`, `meta_description`, `date`, `editdate`) VALUES ('{$id}','{$code}','{$url}','{$name}','{$annotation}','{$body}','{$active}','{$featured}','{$stocked}','{$meta_title}','{$meta_keywords}','{$meta_description}','{$date}','{$editdate}')"); $qid = $mysql->lastid('eshop_products'); import_upload_images($qid); if (!empty($xfields_items)) { foreach ($xfields_items as $f_key => $f_value) { if ($f_value != '') { $mysql->query("INSERT INTO " . prefix . "_eshop_options (`product_id`, `feature_id`, `value`) VALUES ('{$qid}','{$f_key}','{$f_value}')"); } } } $category_id = intval($cid); if ($category_id != 0) { $mysql->query("INSERT INTO " . prefix . "_eshop_products_categories (`product_id`, `category_id`) VALUES ('{$qid}','{$category_id}')"); } $mysql->query("INSERT INTO " . prefix . "_eshop_variants (`product_id`, `sku`, `name`, `price`, `compare_price`, `stock`, `amount`) VALUES ('{$qid}', '{$v_sku}', '{$v_name}', '{$v_price}', '{$v_compare_price}', '{$v_stock}', '{$v_amount}')"); } } } else { if ($product_row["url"]) { if (is_array($mysql->record("select id from " . prefix . "_eshop_products where url = " . db_squote($url) . " limit 1"))) { $mysql->query("REPLACE INTO " . prefix . "_eshop_products (`id`, `code`, `url`, `name`, `annotation`, `body`, `active`, `featured`, `stocked`, `meta_title`, `meta_keywords`, `meta_description`, `date`, `editdate`) VALUES ('{$id}','{$code}','{$url}','{$name}','{$annotation}','{$body}','{$active}','{$featured}','{$stocked}','{$meta_title}','{$meta_keywords}','{$meta_description}','{$date}','{$editdate}')"); $qid = $product_row["id"]; import_upload_images($qid); if (!empty($xfields_items)) { //$mysql->query("DELETE FROM ".prefix."_eshop_options WHERE product_id='$qid'"); foreach ($xfields_items as $f_key => $f_value) { if ($f_value != '') { $mysql->query("REPLACE INTO " . prefix . "_eshop_options (`product_id`, `feature_id`, `value`) VALUES ('{$qid}','{$f_key}','{$f_value}')"); } } } $category_id = intval($cid); if ($category_id != 0) { //$mysql->query("DELETE FROM ".prefix."_eshop_products_categories WHERE product_id='$qid'"); $mysql->query("REPLACE INTO " . prefix . "_eshop_products_categories (`product_id`, `category_id`) VALUES ('{$qid}','{$category_id}')"); } else { $mysql->query("DELETE FROM " . prefix . "_eshop_products_categories WHERE product_id='{$qid}'"); } $SQLv = array(); $SQLv['product_id'] = $qid; $SQLv['sku'] = $v_sku; $SQLv['name'] = $v_name; $SQLv['price'] = $v_price; $SQLv['compare_price'] = $v_compare_price; $SQLv['stock'] = $v_stock; $SQLv['amount'] = $v_amount; foreach ($SQLv as $k => $v) { $vnames[] = $k . ' = ' . db_squote($v); } if ($v_id != "") { $mysql->query('UPDATE ' . prefix . '_eshop_variants SET ' . implode(', ', $vnames) . ' WHERE id = \'' . intval($v_id) . '\' '); } else { $mysql->query("INSERT INTO " . prefix . "_eshop_variants (`product_id`, `sku`, `name`, `price`, `compare_price`, `stock`, `amount`) VALUES ('{$qid}', '{$v_sku}', '{$v_name}', '{$v_price}', '{$v_compare_price}', '{$v_stock}', '{$v_amount}')"); } //$mysql->query("DELETE FROM ".prefix."_eshop_variants WHERE product_id='$qid'"); //$mysql->query("INSERT INTO ".prefix."_eshop_variants (`product_id`, `price`, `compare_price`, `stock`) VALUES ('$qid', '$price', '$compare_price', '$stock')"); } } } } else { $mysql->query("INSERT INTO " . prefix . "_eshop_products (`code`, `url`, `name`, `annotation`, `body`, `active`, `featured`, `stocked`, `meta_title`, `meta_keywords`, `meta_description`, `date`, `editdate`) VALUES ('{$code}','{$url}','{$name}','{$annotation}','{$body}','{$active}','{$featured}','{$stocked}','{$meta_title}','{$meta_keywords}','{$meta_description}','{$date}','{$editdate}')"); $qid = $mysql->lastid('eshop_products'); import_upload_images($qid); if (!empty($xfields_items)) { foreach ($xfields_items as $f_key => $f_value) { if ($f_value != '') { $mysql->query("INSERT INTO " . prefix . "_eshop_options (`product_id`, `feature_id`, `value`) VALUES ('{$qid}','{$f_key}','{$f_value}')"); } } } $category_id = intval($cid); if ($category_id != 0) { $mysql->query("INSERT INTO " . prefix . "_eshop_products_categories (`product_id`, `category_id`) VALUES ('{$qid}','{$category_id}')"); } $mysql->query("INSERT INTO " . prefix . "_eshop_variants (`product_id`, `sku`, `name`, `price`, `compare_price`, `stock`, `amount`) VALUES ('{$qid}', '{$v_sku}', '{$v_name}', '{$v_price}', '{$v_compare_price}', '{$v_stock}', '{$v_amount}')"); } } unlink($filepath); $info = "Импорт CSV завершен<br/>"; msg(array("type" => "info", "info" => $info)); die; } else { $info = "Ошибка загрузки файла<br/>"; msg(array("type" => "info", "info" => $info)); die; } } if (isset($_REQUEST['multiple_upload_images'])) { $images = $_REQUEST['data']['images']; if ($images != NULL) { foreach ($images as $inx_img => $img) { $img_parts = explode(".", $img); $img_s = explode("_", $img_parts[0]); $qid = $img_s[0]; if ($qid != "") { $prd_row = $mysql->record("select * from " . prefix . "_eshop_products where id = " . db_squote($qid) . " limit 1"); if (!is_array($prd_row)) { break; } $positions_img = array(); foreach ($mysql->select("SELECT * FROM " . prefix . "_eshop_images WHERE product_id = '{$qid}' ORDER BY position, id") as $irow) { $positions_img[] = $irow['position']; } if (!empty($positions_img)) { $max_img_pos = max($positions_img) + 1; } else { $max_img_pos = 0; } $inx_img = $max_img_pos; @mkdir($_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/' . $qid . '/', 0777); @mkdir($_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/' . $qid . '/thumb', 0777); $timestamp = time(); $iname = $timestamp . "-" . $img; $temp_name = $_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/temp/' . $img; $current_name = $_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/' . $qid . '/' . $iname; rename($temp_name, $current_name); $temp_name = $_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/temp/thumb/' . $img; $current_name = $_SERVER['DOCUMENT_ROOT'] . '/uploads/eshop/products/' . $qid . '/thumb/' . $iname; rename($temp_name, $current_name); $mysql->query("INSERT INTO " . prefix . "_eshop_images (`filepath`, `product_id`, `position`) VALUES ('{$iname}','{$qid}','{$inx_img}')"); } } } $info = "Изображения загружены<br/>"; msg(array("type" => "info", "info" => $info)); } $xt = $twig->loadTemplate($tpath['config/automation'] . 'config/' . 'automation.tpl'); $yml_export_link = checkLinkAvailable('eshop', 'yml_export') ? generateLink('eshop', 'yml_export', array()) : generateLink('core', 'plugin', array('plugin' => 'eshop', 'handler' => 'yml_export'), array()); $tVars = array('yml_export_link' => $yml_export_link, 'info' => ''); $xg = $twig->loadTemplate($tpath['config/main'] . 'config/' . 'main.tpl'); $tVars = array('entries' => $xt->render($tVars), 'php_self' => $PHP_SELF, 'plugin_url' => admin_url . '/admin.php?mod=extra-config&plugin=eshop', 'skins_url' => skins_url, 'admin_url' => admin_url, 'home' => home, 'current_title' => 'Автоматизация'); print $xg->render($tVars); }