bridg.php - 1989shack/sentry-netlify-build-plugin GitHub Wiki
`<?php /------------------------------------------------------------------------------+ | MagneticOne | | Copyright (c) 2023 MagneticOne.com [email protected] | | All rights reserved | +-------------------------------------------------------------------------------+ | PLEASE READ THE FULL TEXT OF SOFTWARE LICENSE AGREEMENT IN THE "license.txt" | | FILE PROVIDED WITH THIS DISTRIBUTION. THE AGREEMENT TEXT IS ALSO AVAILABLE AT | | THE FOLLOWING URL: https://www.shopping-cart-migration.com/license-agreement | | | | THIS AGREEMENT EXPRESSES THE TERMS AND CONDITIONS ON WHICH YOU MAY USE | | THIS SOFTWARE PROGRAM AND ASSOCIATED DOCUMENTATION THAT MAGNETICONE | | (hereinafter referred to as "THE AUTHOR") IS FURNISHING OR MAKING AVAILABLE | | AVAILABLE TO YOU WITH THIS AGREEMENT (COLLECTIVELY, THE "SOFTWARE"). | | PLEASE REVIEW THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT | | CAREFULLY BEFORE INSTALLING OR USING THE SOFTWARE. BY INSTALLING, | | COPYING OR OTHERWISE USING THE SOFTWARE, YOU AND YOUR COMPANY | | (COLLECTIVELY, "YOU") ARE ACCEPTING AND AGREEING TO THE TERMS OF THIS | | LICENSE AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY THIS | | AGREEMENT, DO NOT INSTALL OR USE THE SOFTWARE. VARIOUS COPYRIGHTS AND | | OTHER INTELLECTUAL PROPERTY RIGHTS PROTECT THE SOFTWARE. THIS | | AGREEMENT IS A LICENSE AGREEMENT THAT GIVES YOU LIMITED RIGHTS TO USE | | THE SOFTWARE AND NOT AN AGREEMENT FOR SALE OR FOR TRANSFER OF TITLE. | | THE AUTHOR RETAINS ALL RIGHTS NOT EXPRESSLY GRANTED BY THIS AGREEMENT. | | | | The Developer of the Code is MagneticOne, | | Copyright (C) 2006 - 2023 All Rights Reserved. | +-------------------------------------------------------------------------------+ | | | ATTENTION! | +-------------------------------------------------------------------------------+ | By our Terms of Use you agreed not to change, modify, add, or remove portions | | of Bridge Script source code as it is owned by MagneticOne company. | | You agreed not to use, reproduce, modify, adapt, publish, translate | | the Bridge Script source code into any form, medium, or technology | | now known or later developed throughout the universe. | | | | Full text of our TOS located at | | https://www.shopping-cart-migration.com/terms-of-service | +------------------------------------------------------------------------------/
/**
- Class M1_Setting */ class M1_Setting { public $cartType = ''; public $allowedUpdate = true;
public $setCustomAccess = false; public $host = ''; public $port = ''; public $socket = ''; public $username = ''; public $password = '12345'; public $dbName = ''; public $tablePrefix = ''; }
/**
- Class M1_Bridge_Action_Savefile */ class M1_Bridge_Action_Savefile { public $imageType = null;
protected $_mageLoaded = false;
protected $_notAllowedFileTypes = array( 'php', 'html', 'htm', 'aspx', 'xml', 'phar', 'js', 'txt', );
/**
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $source = $_REQUEST['src']; $destination = $_REQUEST['dst']; $width = (int)$_REQUEST['width']; $height = (int)$_REQUEST['height']; $local = $_REQUEST['local_source'];
echo $this->_saveFile($source, $destination, $width, $height, $local);
}
/**
- @param string $source source path
- @param string $destination target path
- @param int $width width
- @param int $height height
- @param string $local is local
- @return string|true */ protected function _saveFile($source, $destination, $width, $height, $local = '') { if (!strstr($source, 'http://') && !strstr($source, 'https://')) { $source = 'http://' . $source; }
if (filter_var($destination, FILTER_VALIDATE_URL)) {
return '[BRIDGE ERROR] Destination is an URL!';
}
$exts = $this->_prepareExtensions();
$pathInfoSource = @pathinfo(str_replace('../', '', $source));
$pathInfoTarget = @pathinfo(str_replace('../', '', $destination));
if (isset($pathInfoSource['extension'])) {
str_replace(
$exts,
'',
str_replace('https://images.shopping-cart-migration.com/', '', $source),
$sourceCount
);
if ($sourceCount) {
$allowed = array(
'product_image.php?imageid=',
'icon.php?categoryid=',
'mlogo.php?manufacturerid=',
'image.php?id='
);
str_replace($allowed, '', $source, $sourceCount);
$sourceCount AND $sourceCount = false;
}
}
if (isset($pathInfoTarget['extension'])) {
str_replace($exts, '', $destination, $destinationCount);
}
if ((isset($sourceCount) && $sourceCount) || (isset($destinationCount) && $destinationCount)) {
return '[ERROR] Bad file extension!';
}
if (trim($local) != '') {
//try to download additional image on prestashop from base local image
$newLocal = preg_replace('/(\.[A-z]{3,4})$/', '.jpg', $local);
$newDestination = preg_replace('/(\.[A-z]{3,4})$/', '.jpg', $destination);
if ($this->_copyLocal($newLocal, $newDestination, $width, $height) == 'OK') {
return 'OK';
} elseif ($this->_copyLocal($local, $destination, $width, $height) == 'OK') {
return 'OK';
}
}
if ($this->_isSameHost($source)) {
$result = $this->_saveFileLocal($source, $destination);
} else {
$result = $this->_saveFileCurl($source, $destination);
}
if ($result != 'OK') {
$errMsg = '[TRYING FILEGETCONTENTS]' . $result . PHP_EOL;
set_error_handler(array($this, 'handleError'));
try {
$result = $this->_saveFileGetContents($source, $destination);
} catch (Exception $e) {
restore_error_handler();
return $errMsg . '[BRIDGE ERROR]' . $e->getMessage();
}
restore_error_handler();
}
if ($this->cartType == 'Zoey') {
if(substr($destination, 0, 6) === 'media/') {
if(!$this->_mageLoaded) {
include_once M1_STORE_BASE_DIR . 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);
$this->_mageLoaded = true;
}
if(Mage::helper('pixcore')->s3Activated()) {
$filePath = $destination;
$filePath = substr($filePath, 6);
$filePath = str_replace('//', '/', $filePath);
Mage::getModel('arkade_s3/core_file_storage_s3')->saveFile($filePath);
}
}
}
if ($result != 'OK') {
return $result;
}
$destination = M1_STORE_BASE_DIR . $destination;
if ($width != 0 && $height != 0) {
if (($result = $this->_scaled($destination, $width, $height)) != 'OK') {
return $result;
}
}
if ($this->cartType == 'PrestaShop'
&& (pathinfo($destination, PATHINFO_EXTENSION)) !== 'jpg'
&& $local != 'file'
) {
if (($imageGd = $this->_loadImage($destination)) === false) {
return '[BRIDGE ERROR] Failed load the image!';
}
$result = $this->_convert($imageGd, $destination, IMAGETYPE_JPEG, 'jpg');
if ($result != 'OK') {
return $result;
}
unlink($destination);
}
return $result;
}
/**
- @param string $source source path
- @param string $destination target path
- @param int $width width
- @param int $height height
- @return string */ protected function _copyLocal($source, $destination, $width, $height) { $result = 'OK'; $source = M1_STORE_BASE_DIR . $source; $destination = M1_STORE_BASE_DIR . $destination;
if (!@copy($source, $destination)) {
return '[BRIDGE ERROR] Failed to copy the image!';
}
if ($width != 0 && $height != 0) {
$result = $this->_scaled($destination, $width, $height);
}
return $result;
}
/**
- @param string $filename file name
- @return bool|resource */ protected function _loadImage($filename) { $imageInfo = @getimagesize($filename);
if ($imageInfo === false) {
return false;
}
$this->imageType = $imageInfo[2];
switch ($this->imageType) {
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($filename);
break;
case IMAGETYPE_GIF:
$image = imagecreatefromgif($filename);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($filename);
break;
default:
return false;
}
if ($image === false) {
return false;
}
return $image;
}
/**
- @param resource $image image file
- @param string $filename file name
- @param int $imageType type
- @param int $compression compression
- @param null $permissions permissions
- @return string */ protected function _saveImage($image, $filename, $imageType = IMAGETYPE_JPEG, $compression = 85, $permissions = null) { $result = true; if ($imageType == IMAGETYPE_JPEG) { $result = imagejpeg($image, $filename, $compression); } elseif ($imageType == IMAGETYPE_GIF) { $result = imagegif($image, $filename); } elseif ($imageType == IMAGETYPE_PNG) { $result = imagepng($image, $filename); }
if (!$result) {
return '[BRIDGE ERROR] Can\'t not save image ' . $filename . '!';
}
if ($permissions != null) {
@chmod($filename, $permissions);
}
imagedestroy($image);
return 'OK';
}
/**
- @param string $source path to file
- @param string $destination path to file
- @return string */ protected function _saveFileLocal($source, $destination) { $srcInfo = parse_url($source); $src = rtrim($_SERVER['DOCUMENT_ROOT'], '/') . $srcInfo['path'];
if ($this->_create_dir(dirname($destination)) !== false) {
$dst = M1_STORE_BASE_DIR . $destination;
if (!@copy($src, $dst)) {
return $this->_saveFileCurl($source, $destination);
}
} else {
return '[BRIDGE ERROR] Directory creation failed!';
}
return 'OK';
}
/**
-
@param string $source path to file
-
@param string $destination path to file
-
@return string */ protected function _saveFileCurl($source, $destination) { $source = $this->_escapeSource($source); if ($this->_create_dir(dirname($destination)) !== false) { $destination = M1_STORE_BASE_DIR . $destination;
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $source); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/apng,/;q=0.8', 'accept-encoding: deflate', 'accept-language: en-US,en;q=0.8,uk;q=0.6', 'user-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201' )); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_NOBODY, true);
if (!ini_get('open_basedir') && ini_get('safe_mode') != 'On') { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); }
curl_exec($ch); $httpResponseCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpResponseCode != 200) { curl_close($ch); return '[BRIDGE_ERROR_HTTP][' . $httpResponseCode . ']'; }
$dst = @fopen($destination, 'wb'); if ($dst === false) { return '[BRIDGE ERROR] Can't create ' . $destination . '!'; }
curl_setopt($ch, CURLOPT_NOBODY, false); curl_setopt($ch, CURLOPT_FILE, $dst); curl_setopt($ch, CURLOPT_HTTPGET, true); curl_exec($ch);
if (($errorNo = curl_errno($ch)) != CURLE_OK) { return '[BRIDGE ERROR] ' . $errorNo . ': ' . curl_error($ch); }
curl_close($ch); @chmod($destination, 0777);
return 'OK'; } else { return '[BRIDGE ERROR] Directory creation failed!'; } }
/**
- @param string $source path to file
- @param string $destination path to file
- @return string */ protected function _saveFileGetContents($source, $destination) { $destination = M1_STORE_BASE_DIR . $destination;
$ssl = array('verify_peer' => false);
if (version_compare(phpversion(), '5.6.0', '>=')) {
$ssl['verify_peer_name'] = false;
}
$context = stream_context_create(
array(
'http' => array(
'timeout' => 60,
'header' => "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/apng,*/*;q=0.8\r\n"
. "accept-encoding: deflate\r\n"
. "accept-language: en-US,en;q=0.8,uk;q=0.6\r\n"
. "user-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201\r\n"
),
'ssl' => $ssl
)
);
$file = @file_get_contents($source, false, $context);
if (!$file) {
return '[BRIDGE ERROR] Failed to get contents';
}
if (!@file_put_contents($destination, $file)) {
return '[BRIDGE ERROR] Can\'t create ' . $destination . '!';
}
return 'OK';
}
/**
- @param string $source file path
- @return mixed */ protected function _escapeSource($source) { return str_replace(' ', '%20', $source); }
/**
-
@param string $dir path
-
@return bool */ protected function _create_dir($dir) { $dirParts = explode('/', $dir); $path = M1_STORE_BASE_DIR; foreach ($dirParts as $item) { if ($item == '') { continue; }
$path .= $item . DIRECTORY_SEPARATOR; if (!is_dir($path)) { $res = @mkdir($path); if (!$res) { return false; } }
@chmod($path, 0777); }
return true;
}
/**
- @param string $source path
- @return bool */ protected function _isSameHost($source) { $srcInfo = parse_url($source);
if (isset($srcInfo['path']) && preg_match('/\.php$/', $srcInfo['path'])) {
return false;
}
$hostInfo = parse_url('http://' . $_SERVER['HTTP_HOST']);
if (@$srcInfo['host'] == $hostInfo['host']) {
return true;
}
return false;
}
/**
- @param string $destination path
- @param int $destinationWidth Width
- @param int $destinationHeight Height
- @return string */ protected function _scaled($destination, $destinationWidth, $destinationHeight) { @ini_set('memory_limit', '256M');
$method = 0;
$sourceImage = $this->_loadImage($destination);
if ($sourceImage === false) {
return '[BRIDGE ERROR] Image not supported or failed to upload the image';
}
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);
$widthDiff = $destinationWidth / $sourceWidth;
$heightDiff = $destinationHeight / $sourceHeight;
if ($widthDiff > 1 && $heightDiff > 1) {
$nextWidth = $sourceWidth;
$nextHeight = $sourceHeight;
} else {
if (intval($method) == 2 || (intval($method) == 0 AND $widthDiff > $heightDiff)) {
$nextHeight = $destinationHeight;
$nextWidth = intval(($sourceWidth * $nextHeight) / $sourceHeight);
$destinationWidth = ((intval($method) == 0) ? $destinationWidth : $nextWidth);
} else {
$nextWidth = $destinationWidth;
$nextHeight = intval($sourceHeight * $destinationWidth / $sourceWidth);
$destinationHeight = (intval($method) == 0 ? $destinationHeight : $nextHeight);
}
}
$borderWidth = intval(($destinationWidth - $nextWidth) / 2);
$borderHeight = intval(($destinationHeight - $nextHeight) / 2);
$destinationImage = imagecreatetruecolor($destinationWidth, $destinationHeight);
$white = imagecolorallocate($destinationImage, 255, 255, 255);
imagefill($destinationImage, 0, 0, $white);
imagecopyresampled($destinationImage, $sourceImage, $borderWidth, $borderHeight, 0, 0,
$nextWidth, $nextHeight, $sourceWidth, $sourceHeight);
imagecolortransparent($destinationImage, $white);
return $this->_saveImage($destinationImage, $destination, $this->imageType, 100);
}
/**
- @param resource $image GD image object
- @param string $filename store source path file ex. M1_STORE_BASE_DIR . '/img/c/2.gif';
- @param int $type IMAGETYPE_JPEG, IMAGETYPE_GIF or IMAGETYPE_PNG
- @param string $extension file extension, this use for jpg or jpeg extension in prestashop
- @return true if success or false if no */ protected function _convert($image, $filename, $type = IMAGETYPE_JPEG, $extension = '') { $end = pathinfo($filename, PATHINFO_EXTENSION);
if ($extension == '') {
$extension = image_type_to_extension($type, false);
}
if ($end == $extension) {
return 'OK';
}
$width = imagesx($image);
$height = imagesy($image);
$newImage = imagecreatetruecolor($width, $height);
/* Allow to keep nice look even if resize */
$white = imagecolorallocate($newImage, 255, 255, 255);
imagefill($newImage, 0, 0, $white);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $width, $height, $width, $height);
imagecolortransparent($newImage, $white);
$pathSave = rtrim($filename, $end);
$pathSave .= $extension;
return $this->_saveImage($newImage, $pathSave, $type);
}
/**
- @param $severity
- @param $message
- @param $file
- @param $line
- @throws ErrorException */ public function handleError($severity, $message, $file, $line) { throw new ErrorException($message, $severity, $severity, $file, $line); }
/**
- @return array */ protected function _prepareExtensions() { $extensions = array();
foreach ($this->_notAllowedFileTypes as $value) {
$extensions[] = '.' . $value;
}
return $extensions;
} }
/**
- Class M1_Config_Adapter */ class M1_Config_Adapter { public $host = 'localhost'; public $port = '3306'; public $socket = ''; public $userName = 'root'; public $password = '12345'; public $dbName = ''; public $tablePrefix = '';
public $cartType = 'PrestaShop'; public $imagesDir = ''; public $categoriesImagesDir = ''; public $productsImagesDir = ''; public $manufacturersImagesDir = ''; public $categoriesImagesDirs = ''; public $productsImagesDirs = ''; public $manufacturersImagesDirs = ''; public $passModuleVersion = '0'; public $moduleNames = array();
public $languages = array(); public $languageIso2 = ''; public $connectionType = false; public $cartVars = array('dbCharSet' => 'utf8');
/**
- @return mixed */ public function create() { $settings = new M1_Setting();
if ($settings->cartType == '') {
$cartType = M1_Config_Adapter::detectCartType();
} else {
$cartType = $settings->cartType;
}
$className = 'M1_Config_Adapter_' . $cartType;
$obj = new $className();
if ($cartType == 'PrestaShop') {
return $obj;
}
$obj->cartType = $cartType;
return $obj;
}
/**
- @return string */ public function detectCartType() { //Shopware if ((@file_exists(M1_STORE_BASE_DIR . '.env') || @file_exists(M1_STORE_BASE_DIR . '../.env')) || (@file_exists(M1_STORE_BASE_DIR . 'config.php') && @file_exists(M1_STORE_BASE_DIR . 'engine/Shopware/')) ) { return 'Shopware'; }
//PrestaShop
if (@file_exists(M1_STORE_BASE_DIR . 'config/config.inc.php')) {
return 'PrestaShop';
}
//Magento
if (@file_exists(M1_STORE_BASE_DIR . 'lib/Zoey/Redis/Overlord.php')) {
return 'Zoey';
}
//Magento
if (((@file_exists(M1_STORE_BASE_DIR . 'app/etc/local.xml')) || (@file_exists(M1_STORE_BASE_DIR . 'app/etc/env.php')))
|| (!(@file_exists(M1_STORE_BASE_DIR . 'app/etc/env.php')) && @file_exists(M1_STORE_BASE_DIR . '/../app/etc/env.php'))) {
return 'Magento';
}
//Zencart137
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php')
&& @file_exists(M1_STORE_BASE_DIR . 'ipn_main_handler.php')
) {
return 'Zencart137';
}
//Gambio
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php')
&& @file_exists(M1_STORE_BASE_DIR . 'gm' . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'GMCat.php')
) {
return 'Gambio';
}
//osCommerce
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php')
&& !@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'toc_constants.php')/* is if not tomatocart */
) {
if (@file_exists(M1_STORE_BASE_DIR . 'loadedpayments.php')) {
return 'LoadedCommerce';
}
return 'Oscommerce22ms2';
}
//JooCart
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_opencart/opencart.php')) {
return 'JooCart';
}
//ACEShop
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_aceshop/aceshop.php')) {
return 'AceShop';
}
//MijoShop
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_mijoshop/mijoshop.php')) {
return 'MijoShop';
}
//HikaShop
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_hikashop/hikashop.php')) {
return 'HikaShop';
}
//JoomShopping
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_jshopping/jshopping.php')) {
return 'JoomShopping';
}
//Virtuemart
if ((@file_exists(M1_STORE_BASE_DIR . 'configuration.php'))
&& (!@file_exists(M1_STORE_BASE_DIR . '/components/com_mijoshop/mijoshop.php'))
&& (!@file_exists(M1_STORE_BASE_DIR . '/components/com_hikashop/hikashop.php'))
&& (!@file_exists(M1_STORE_BASE_DIR . '/components/com_jshopping/jshopping.php'))
) {
return 'Virtuemart';
}
//Pinnacle
if (@file_exists(M1_STORE_BASE_DIR . 'content/engine/engine_config.php')) {
return 'Pinnacle';
}
//Cubecart
if (@file_exists(M1_STORE_BASE_DIR . 'includes/global.inc.php')) {
return 'Cubecart';
}
//Xcart
if (((@file_exists(M1_STORE_BASE_DIR . 'include/classes/class.DataStorage.php') || @file_exists(M1_STORE_BASE_DIR . 'change_password.php')) && @file_exists(M1_STORE_BASE_DIR . 'config.php')) || @file_exists(M1_STORE_BASE_DIR . '/etc/config.php')) {
return 'Xcart';
}
//Cscart
if ((@file_exists(M1_STORE_BASE_DIR . 'core/fn_catalog.php') && @file_exists(M1_STORE_BASE_DIR . 'core/include_addons.php'))
|| @file_exists(M1_STORE_BASE_DIR . 'config.local.php') || @file_exists(M1_STORE_BASE_DIR . 'partner.php') //version 2.0
) {
return 'Cscart';
}
//Merchium
if (@getenv('SAAS_UID')) {
return 'Merchium';
}
//Arastta
if (@file_exists(M1_STORE_BASE_DIR . 'arastta')) {
return 'Arastta';
}
//Opencart
if ((@file_exists(M1_STORE_BASE_DIR . 'system/startup.php')
|| (@file_exists(M1_STORE_BASE_DIR . 'common.php'))
|| (@file_exists(M1_STORE_BASE_DIR . 'library/locator.php')))
&& @file_exists(M1_STORE_BASE_DIR . 'config.php')
) {
return 'Opencart';
}
//LemonStand
if (@file_exists(M1_STORE_BASE_DIR . 'boot.php')) {
return 'LemonStand';
}
//Interspire
if (@file_exists(M1_STORE_BASE_DIR . 'config/config.php')) {
return 'Interspire';
}
//Squirrelcart
if (@file_exists(M1_STORE_BASE_DIR . 'squirrelcart/config.php')) {
return 'Squirrelcart';
}
//Shopscript
if (@file_exists(M1_STORE_BASE_DIR . 'kernel/wbs.xml')
|| @file_exists(M1_STORE_BASE_DIR . 'cfg/connect.inc.php')
|| @file_exists(M1_STORE_BASE_DIR . 'wa-config/db.php')
) {
return 'Shopscript';
}
//Summercart
if (@file_exists(M1_STORE_BASE_DIR . 'sclic.lic')
&& @file_exists(M1_STORE_BASE_DIR . 'include/miphpf/Config.php')
) {
return 'Summercart';
}
//Xtcommerce
if (@file_exists(M1_STORE_BASE_DIR . 'conf/config.php')) {
return 'Xtcommerce';
}
//Ubercart
if (@file_exists(M1_STORE_BASE_DIR . 'sites/default/settings.php')) {
if (@file_exists(M1_STORE_BASE_DIR . 'sites/all/modules/ubercart/uc_store/includes/coder_review_uc3x.inc')
|| @file_exists(M1_STORE_BASE_DIR . 'modules/ubercart/uc_store/includes/coder_review_uc3x.inc')
|| @file_exists(M1_STORE_BASE_DIR . 'modules/ubercart/uc_store/uc_store.info')
) {
return 'Ubercart';
} elseif (@file_exists(M1_STORE_BASE_DIR . 'profiles/commerce_kickstart/commerce_kickstart.info')) {
return 'Kickstart';
} elseif (@file_exists(M1_STORE_BASE_DIR . 'sites/all/modules/commerce/includes/commerce.controller.inc')) {
return 'DrupalCommerce';
}
return 'Ubercart';
}
// DrupalCommerce
if (@file_exists(M1_STORE_BASE_DIR . 'modules/contrib/commerce/commerce.module')
|| @file_exists(M1_STORE_BASE_DIR . 'web/modules/contrib/commerce/commerce.module')
&& (@file_exists(M1_STORE_BASE_DIR . "sites/default/settings.php")
|| @file_exists(M1_STORE_BASE_DIR . "web/sites/default/settings.php")
|| @file_exists(M1_STORE_BASE_DIR . "sites/default/settings.php")
)
) {
return 'DrupalCommerce';
}
//Word Press
if (@file_exists(M1_STORE_BASE_DIR . 'wp-config.php')) {
$wooCommerceDir = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*woocommerce*', GLOB_ONLYDIR);
if (is_array($wooCommerceDir) && count($wooCommerceDir) > 0) {
return 'Woocommerce';
}
$jigoshopDir = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*jigoshop*', GLOB_ONLYDIR);
if (is_array($jigoshopDir) && count($jigoshopDir) > 0) {
return 'Jigoshop';
}
$miwoShopDir = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*miwoshop*', GLOB_ONLYDIR);
if (is_array($miwoShopDir) && count($miwoShopDir) > 0) {
return 'MiwoShop';
}
$edd = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*easy-digital*', GLOB_ONLYDIR);
if (is_array($edd) && count($edd) > 0) {
return 'EasyDigitalDownloads';
}
$wpecommerce = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*wp-e-commerce*', GLOB_ONLYDIR);
$shopp = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*shopp*', GLOB_ONLYDIR);
if (!empty($wpecommerce) || !empty($shopp)) {
return 'WPecommerce';
}
$cart66 = glob(M1_STORE_BASE_DIR . 'wp-content/plugins/*cart66*', GLOB_ONLYDIR);
if (is_array($cart66) && count($cart66) > 0) {
return 'Woocommerce';
}
$wpcontent = glob(M1_STORE_BASE_DIR . 'wp-content', GLOB_ONLYDIR);
$wpadmin = glob(M1_STORE_BASE_DIR . 'wp-admin', GLOB_ONLYDIR);
$wpincludes = glob(M1_STORE_BASE_DIR . 'wp-includes', GLOB_ONLYDIR);
if (
is_array($wpcontent) && count($wpcontent) > 0
&& is_array($wpadmin) && count($wpadmin) > 0
&& is_array($wpincludes) && count($wpincludes) > 0
) {
return 'WordPress';
}
die('NO_WP_CART_DETECTED');
}
//OXID e-shop
if (@file_exists(M1_STORE_BASE_DIR . 'oxid.php')
|| @file_exists(M1_STORE_BASE_DIR . '/core/oxid.php')
|| @file_exists(M1_STORE_BASE_DIR . '/admin/oxajax.php')
) {
return 'Oxid';
}
//HHGMultistore
if (@file_exists(M1_STORE_BASE_DIR . 'core/config/configure.php')) {
return 'Hhgmultistore';
}
//SunShop
if (@file_exists(M1_STORE_BASE_DIR . 'include' . DIRECTORY_SEPARATOR . 'config.php')
|| @file_exists(M1_STORE_BASE_DIR . 'include' . DIRECTORY_SEPARATOR . 'db_mysql.php')
) {
return 'Sunshop';
}
//Tomatocart
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php')
&& @file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'toc_constants.php')
) {
return 'Tomatocart';
}
//Loaded7
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'config.php')) {
return 'Loaded7';
}
//LiteCart|Xcart5
if (@file_exists(M1_STORE_BASE_DIR . '/includes/config.inc.php')) {
if (@file_exists(M1_STORE_BASE_DIR . '/XLite.php')) {
return 'Xcart'; //from 5.0.0
}
return 'LiteCart';
}
die('BRIDGE_ERROR_CONFIGURATION_NOT_FOUND');
}
/**
- @param string $cartType cart type
- @return string */ public function getAdapterPath($cartType) { return M1_STORE_BASE_DIR . M1_BRIDGE_DIRECTORY_NAME . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'config_adapter' . DIRECTORY_SEPARATOR . $cartType . '.php'; }
/**
- @param string $source source
- @return void */ public function setHostPort($source) { $source = trim($source);
if ($source == '') {
$this->host = 'localhost';
return;
}
$conf = explode(':', $source);
if (isset($conf[0]) && isset($conf[1]) && isset($conf[2])) {
$this->host = $conf[0];
if (is_numeric($conf[1])) {
$this->port = $conf[1];
} else{
$this->socket = $conf[1];
}
if (is_numeric($conf[2])) {
$this->port = $conf[2];
} else{
$this->socket = $conf[2];
}
} elseif (isset($conf[0]) && isset($conf[1])) {
$this->host = $conf[0];
if (is_numeric($conf[1])) {
$this->port = $conf[1];
} else{
$this->socket = $conf[1];
}
} elseif ($source[0] == '/') {
$this->host = 'localhost';
$this->port = $source;
} else {
$this->host = $source;
}
}
/**
- @return M1_Mysql|M1_Pdo */ public function connect() { $settings = new M1_Setting();
if ($settings->setCustomAccess) {
$this->host = $settings->host;
$this->port = $settings->port;
$this->socket = $settings->socket;
$this->userName = $settings->username;
$this->password = $settings->password;
$this->dbName = $settings->dbName;
$this->tablePrefix = $settings->tablePrefix;
}
if (function_exists('mysql_connect')) {
$link = new M1_Mysql($this);
} elseif (class_exists('PDO')) {
$link = new M1_Pdo($this);
} else {
$link = new M1_Mysqli($this);
}
return $link;
}
/**
- @param string $field field
- @param string $tableName tableName
- @param string $where where
- @return string */ public function getCartVersionFromDb($field, $tableName, $where) { $version = '';
$link = $this->connect();
if (!$link) {
return '[ERROR] MySQL Query Error: Can not connect to DB';
}
$tableExist = $link->localQuery("SHOW TABLES like '" . $this->tablePrefix . $tableName . "'");
if (isset($tableExist[0]) && !empty($tableExist[0])) {
$sql = 'SELECT ' . $field . ' AS version FROM ' . $this->tablePrefix . $tableName . ' WHERE ' . $where;
$result = $link->localQuery($sql);
if (is_array($result) && isset($result[0]['version'])) {
$version = $result[0]['version'];
}
}
return $version;
}
/**
- @return string */ public function getCharsetFromDb() { $link = $this->connect(); if (!$link) { return '[ERROR] MySQL Query Error: Can not connect to DB'; }
return $link->getCharset();
}
public static function detectRootFolder() { $ds = DIRECTORY_SEPARATOR; $defaultRoot = dirname(FILE) . $ds . '..' . $ds; $isOpencartPlugin = stripos($_SERVER['REQUEST_URI'], 'controller/extension/module') !== false; $isOpencart4xPlugin = (bool)preg_match('#extension/cart2cart\S+to_opencart_migration#i', $_SERVER['REQUEST_URI']); $isWoocommercePlugin = stripos($_SERVER['REQUEST_URI'], 'cart2cart-magento-to-woocommerce-migration') !== false; $isPrestaShopPlugin = stripos($_SERVER['REQUEST_URI'], 'cart2cart_prestashop_migration') !== false; define('IS_PLUGIN_REQUEST', $isWoocommercePlugin || $isOpencartPlugin || $isPrestaShopPlugin);
switch (true) {
case $isWoocommercePlugin:
define('M1_STORE_BASE_DIR', (realpath(__DIR__ . $ds . '..' . $ds . '..' . $ds . '..' . $ds . '..' . $ds) . '/'));
break;
case $isOpencartPlugin:
define('M1_STORE_BASE_DIR', (realpath(__DIR__ . $ds . '..' . $ds . '..' . $ds . '..' . $ds . '..' . $ds . '..') . '/'));
break;
case $isOpencart4xPlugin:
define('M1_STORE_BASE_DIR', (realpath(__DIR__ . $ds . '..' . $ds . '..' . $ds . '..') . '/'));
break;
case $isPrestaShopPlugin:
define('M1_STORE_BASE_DIR', (realpath(__DIR__ . $ds . '..' . $ds . '..' . $ds . '..') . '/'));
break;
default:
define('M1_STORE_BASE_DIR', $defaultRoot);
}
}
public function getToken() { if (file_exists('bridge_config.php')) { @require_once 'bridge_config.php'; } else { @require_once 'config.php'; }
return defined('M1_TOKEN') ? M1_TOKEN : false;
} }
/**
- Class M1_Mysql */ class M1_Mysql {
public $config = null; // config adapter public $result = array(); public $dataBaseHandle = null;
/**
- mysql constructor
- @param M1_Config_Adapter $config configuration
- @return M1_Mysql */ public function __construct($config) { $this->config = $config; }
/**
- @return bool|null|resource */ public function getDataBaseHandle() { if ($this->dataBaseHandle) { return $this->dataBaseHandle; }
$this->dataBaseHandle = $this->connect();
if (!$this->dataBaseHandle) {
exit('[ERROR] MySQL Query Error: Can not connect to DB');
}
return $this->dataBaseHandle;
}
/**
- @return bool|null|resource */ public function connect() { $triesCount = 5; $fixPortOnTry = 3;
$link = null;
$host = $this->config->host
. ($this->config->port ? ':' . $this->config->port : '')
. ($this->config->socket ? ':' . $this->config->socket : '');
$passVariations = array(stripslashes($this->config->password));
if (strpos($this->config->password, '\\') !== false) {
array_push($passVariations, $this->config->password, addslashes($this->config->password));
--$fixPortOnTry;
}
$password = array_shift($passVariations);
while (!$link) {
if (!$triesCount--) {
break;
}
$link = @mysql_connect($host, $this->config->userName, $password);
if (!$link) {
sleep(5);
if (($errorCode = @mysql_errno($link)) && ($errorCode == 1045) && !empty($passVariations)) {
$password = array_shift($passVariations);
continue;
}
}
if ($triesCount == $fixPortOnTry) {
// fix invalid port and socket
$host = $this->config->host;
} elseif ($triesCount == 1) {
$password = sprintf($password);
}
}
if (!$link) {
return false;
}
if ($link) {
mysql_select_db($this->config->dbName, $link);
}
return $link;
}
/**
- @param string $sql sql query
- @return array */ public function localQuery($sql) { $result = array(); $dataBaseHandle = $this->getDataBaseHandle();
$sth = mysql_query($sql, $dataBaseHandle);
if (is_bool($sth)) {
return $sth;
}
while (($row = mysql_fetch_assoc($sth)) != false) {
$result[] = $row;
}
return $result;
}
/**
- @param string $sql sql query
- @param int $fetchType fetch Type
- @return array */ public function query($sql, $fetchType) { $result = array( 'result' => null, 'message' => '', );
$dataBaseHandle = $this->getDataBaseHandle();
if (!$dataBaseHandle) {
$result['message'] = '[ERROR] MySQL Query Error: Can not connect to DB';
return $result;
}
if (!empty($_REQUEST['set_names'])) {
mysql_set_charset($_REQUEST['set_names'], $dataBaseHandle);
}
if (!empty($_GET['disable_checks'])) {
$this->localQuery('SET SESSION FOREIGN_KEY_CHECKS=0');
}
$this->localQuery("SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
$fetchMode = MYSQL_ASSOC;
switch ($fetchType) {
case 3:
$fetchMode = MYSQL_BOTH;
break;
case 2:
$fetchMode = MYSQL_NUM;
break;
case 1:
$fetchMode = MYSQL_ASSOC;
break;
default:
break;
}
$res = mysql_query($sql, $dataBaseHandle);
$triesCount = 10;
while (mysql_errno($dataBaseHandle) == 2013) {
if (!$triesCount--) {
break;
}
// reconnect
$dataBaseHandle = $this->getDataBaseHandle();
if ($dataBaseHandle) {
// execute query once again
$res = mysql_query($sql, $dataBaseHandle);
}
}
if (($errno = mysql_errno($dataBaseHandle)) != 0) {
$result['mysql_error_num'] = $errno;
$result['message'] = '[ERROR] Mysql Query Error: ' . $errno . ', ' . mysql_error($dataBaseHandle) . ' The query was: ' . $sql;
return $result;
}
if (!is_resource($res)) {
$result['result'] = $res;
return $result;
}
$fetchedFields = array();
while (($field = mysql_fetch_field($res)) !== false) {
$fetchedFields[] = $field;
}
$rows = array();
while (($row = mysql_fetch_array($res, $fetchMode)) !== false) {
$rows[] = gzdeflate(serialize($row));
}
$result['result'] = $rows;
$result['fetchedFields'] = $fetchedFields;
mysql_free_result($res);
return $result;
}
/**
-
get dbCharset from database
-
@param string $default default charset
-
@return string */ public function getCharset($default = 'utf8') { if ($this->getDataBaseHandle()) { $charsetByDatabaseNameCondition = !empty($this->config->dbName) ? (' AND TABLE_SCHEMA = '' . $this->config->dbName .''') : '';
$res = mysql_query(" SELECT CHARACTER_SET_NAME as cs, count(CHARACTER_SET_NAME) as count FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME <> '' $charsetByDatabaseNameCondition GROUP BY CHARACTER_SET_NAME ORDER BY count DESC LIMIT 1 ", $this->getDataBaseHandle() );
if (!is_resource($res)) { return $default; }
if ($row = mysql_fetch_assoc($res)) { return $row['cs']; }
return $default; }
return $default;
}
/**
- @return string */ public function getServerInfo() { if ($this->getDataBaseHandle()) { return mysql_get_server_info($this->getDataBaseHandle()); }
return '0.0.0';
}
/**
- @return int */ public function getLastInsertId() { return mysql_insert_id($this->dataBaseHandle); }
/**
- @return int */ public function getAffectedRows() { return mysql_affected_rows($this->dataBaseHandle); }
/**
- @return void */ public function __destruct() { if ($this->dataBaseHandle) { mysql_close($this->dataBaseHandle); }
$this->dataBaseHandle = null;
} }
/**
- Class M1_Bridge */ class M1_Bridge { public $link = null; // connection link public $res = null; // query result public $tablePrefix = ''; // table prefix public $config = null; // config adapter public $token = null; // security token
const QUERY_ERROR_GONE_AWAY = 2006; const QUERY_LOCK_WAIT_TIMEOUT_EXCEEDED = 1205; const QUERY_ERROR_DEADLOCK = 1213;
/**
- M1_Bridge constructor.
- @param M1_Config_Adapter|array $config configuration */ public function __construct($config) { $this->config = $config; }
/**
- @return string */ public function getTablesPrefix() { return $this->tablePrefix; }
/**
- @return M1_Mysql|M1_Pdo|null */ public function getLink() { return $this->link; }
/**
- @param string $sql query
- @param int $fetchMode fetch Mode
- @return array */ public function query($sql, $fetchMode) { $count = 2; $additionalText = '';
while ($count--) {
$res = $this->link->query($sql, $fetchMode);
if (isset($res['mysql_error_num']) && in_array($res['mysql_error_num'], array(
self::QUERY_ERROR_GONE_AWAY,
self::QUERY_ERROR_DEADLOCK,
self::QUERY_LOCK_WAIT_TIMEOUT_EXCEEDED,
))
) {
sleep(4);
$additionalText = ', tried to run query again;';
continue;
} else {
break;
}
}
$res['message'] .= $additionalText;
return $res;
}
/**
- @return mixed|string */ public function getAction() { if (isset($_GET['action'])) { return str_replace('.', '', $_GET['action']); } else { return ''; } }
/**
- @return array */ public function getParams() { $responce = array(); $responce['funcname'] = isset($_GET['funcname']) ? $_GET['funcname'] : '';
$iteration = 1;
while (isset($_GET['param' . $iteration])) {
$value = $_GET['param' . $iteration];
if(preg_match('/^\\[.*\\]$/', $value)) {
$value = preg_replace('/[\\[\\]]/', '', $value);
$value = explode(',', $value);
$responce['param' . $iteration] = $value;
} else {
$responce['param' . $iteration] = $_GET['param' . $iteration];
}
$iteration++;
}
return $responce;
}
/**
- @return void */ public function run() { $actionIgnoreSelfTest = array('update' => true, 'move' => true, 'getserverip' => true, 'query' => true, 'querymultiple' => true, 'loadfromfile' => true, 'getfile' => true); $checkDbConnectionActions = array('carttype' => true, 'clearcache' => true, 'mysqlver' => true, 'phpinfo' => true, 'query' => true, 'querymultiple' => true, 'loadfromfile' => true);
$action = $this->getAction();
if (isset($checkDbConnectionActions[$action])) {
$this->link = $this->config->connect();
if (!$this->link && !$this->getLink()->connect()) {
die('ERROR_BRIDGE_CANT_CONNECT_DB');
}
}
if (!isset($_GET['ver']) && !isset($_GET['token'])) {
die($this->_getBridgeInstalledMessage());
}
if (!isset($_GET['ver']) || (isset($_GET['ver']) && $_GET['ver'] != M1_BRIDGE_VERSION)) {
die('ERROR_BRIDGE_VERSION_NOT_SUPPORTED');
}
if (!isset($_GET['token']) || $_GET['token'] !== ($this->token = $this->config->getToken())) {
die('ERROR_INVALID_TOKEN');
}
if (!isset($actionIgnoreSelfTest[$action])) {
$this->_selfTest();
}
if ($action == 'checkbridge') {
echo 'BRIDGE_OK';
return;
}
$className = 'M1_Bridge_Action_' . ucfirst($action);
if (!class_exists($className)) {
echo 'ACTION_DOES_NOT_EXIST' . PHP_EOL;
die();
}
$actionObj = new $className();
@$actionObj->cartType = @$this->config->cartType;
$actionObj->perform($this);
$this->destroy();
}
/**
- @param string $dir directory name
- @return bool */ public function isWritable($dir) { return is_dir($dir) && is_writable($dir); }
/**
- destructor
- @return void */ public function destroy() { $this->link and $this->link->__destruct(); }
/**
- @return void */ public function _checkPossibilityUpdate() { if (!is_writable(M1_STORE_BASE_DIR . '/' . M1_BRIDGE_DIRECTORY_NAME . '/')) { die('ERROR_TRIED_TO_PERMISSION_CART2CART' . M1_STORE_BASE_DIR . '/' . M1_BRIDGE_DIRECTORY_NAME . '/'); }
if (!is_writable(M1_STORE_BASE_DIR . '/' . M1_BRIDGE_DIRECTORY_NAME . '/bridge.php')) {
die('ERROR_TRIED_TO_PERMISSION_BRIDGE_FILE' . M1_STORE_BASE_DIR . '/' . M1_BRIDGE_DIRECTORY_NAME . '/bridge.php');
}
}
/**
-
@return void */ public function _selfTest() { if ((!isset($_GET['storetype']) || $_GET['storetype'] == 'target') && $this->getAction() == 'checkbridge') {
if (trim($this->config->imagesDir) != '') { if (!@file_exists(M1_STORE_BASE_DIR . $this->config->imagesDir) && is_writable(M1_STORE_BASE_DIR)) { if (!@mkdir(M1_STORE_BASE_DIR . $this->config->imagesDir, 0777, true)) { die('ERROR_TRIED_TO_CREATE_IMAGE_DIR' . M1_STORE_BASE_DIR . $this->config->imagesDir); } }
if (!$this->isWritable(M1_STORE_BASE_DIR . $this->config->imagesDir)) { die('ERROR_NO_IMAGES_DIR ' . M1_STORE_BASE_DIR . $this->config->imagesDir); } }
if (trim($this->config->categoriesImagesDir) != '') { if (!@file_exists(M1_STORE_BASE_DIR . $this->config->categoriesImagesDir) && is_writable(M1_STORE_BASE_DIR)) { if (!@mkdir(M1_STORE_BASE_DIR . $this->config->categoriesImagesDir, 0777, true)) { die('ERROR_TRIED_TO_CREATE_IMAGE_DIR' . M1_STORE_BASE_DIR . $this->config->categoriesImagesDir); } }
if (!$this->isWritable(M1_STORE_BASE_DIR . $this->config->categoriesImagesDir)) { die('ERROR_NO_IMAGES_DIR ' . M1_STORE_BASE_DIR . $this->config->categoriesImagesDir); } }
if (trim($this->config->productsImagesDir) != '') { if (!@file_exists(M1_STORE_BASE_DIR . $this->config->productsImagesDir) && is_writable(M1_STORE_BASE_DIR)) { if (!@mkdir(M1_STORE_BASE_DIR . $this->config->productsImagesDir, 0777, true)) { die('ERROR_TRIED_TO_CREATE_IMAGE_DIR' . M1_STORE_BASE_DIR . $this->config->productsImagesDir); } }
if (!$this->isWritable(M1_STORE_BASE_DIR . $this->config->productsImagesDir)) { die('ERROR_NO_IMAGES_DIR ' . M1_STORE_BASE_DIR . $this->config->productsImagesDir); } }
if (trim($this->config->manufacturersImagesDir) != '') { if (!@file_exists(M1_STORE_BASE_DIR . $this->config->manufacturersImagesDir) && is_writable(M1_STORE_BASE_DIR)) { if (!@mkdir(M1_STORE_BASE_DIR . $this->config->manufacturersImagesDir, 0777, true)) { die('ERROR_TRIED_TO_CREATE_IMAGE_DIR' . M1_STORE_BASE_DIR . $this->config->manufacturersImagesDir); } }
if (!$this->isWritable(M1_STORE_BASE_DIR . $this->config->manufacturersImagesDir)) { die('ERROR_NO_IMAGES_DIR ' . M1_STORE_BASE_DIR . $this->config->manufacturersImagesDir); } } } }
/**
- @return string */ private function _getBridgeInstalledMessage() { return ' <title>Bridge is successfully Installed!</title> <style>.standart{font-family:"Open Sans";font-weight:400;text-align:center;margin:0}#stroke{stroke-dasharray:300;stroke-dashoffset:-300;-webkit-animation:.23s drawStroke ease-in forwards;-webkit-animation-delay: .25s;animation:.23s drawStroke ease-in forwards; animation-delay: .25s}#shadow{-webkit-animation:.23s drawShadow ease-in forwards;-webkit-animation-delay: .25s;animation:.23s drawShadow ease-in forwards;animation-delay: .25s;opacity:0}@keyframes drawStroke{0%{stroke-dasharray:300;stroke-dashoffset:-300}100%{stroke-dasharray:300;stroke-dashoffset:-600}}@keyframes drawShadow{50%{opacity:0}100%{opacity:1}}</style> '; } }
/**
-
Class M1_Config_Adapter_Kickstart */ class M1_Config_Adapter_Kickstart extends M1_Config_Adapter { public function __construct() { @include_once M1_STORE_BASE_DIR . "sites/default/settings.php";
$url = $databases['default']['default'];
$url['username'] = urldecode($url['username']); $url['password'] = isset($url['password']) ? urldecode($url['password']) : ''; $url['host'] = urldecode($url['host']); $url['database'] = urldecode($url['database']); if (isset($url['port'])) { $url['host'] = $url['host'] .':'. $url['port']; }
$this->setHostPort($url['host']); $this->dbName = ltrim($url['database'], '/'); $this->userName = $url['username']; $this->password = $url['password'];
$this->imagesDir = '/sites/default/files/'; if (!@file_exists(M1_STORE_BASE_DIR . $this->imagesDir)) { $this->imagesDir = '/files'; }
$fileInfo = M1_STORE_BASE_DIR . '/sites/all/modules/commerce/commerce.info'; if (@file_exists($fileInfo)) { $str = file_get_contents($fileInfo); if (preg_match('/version\s+=\s+".+-(.+)"/', $str, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Squirrelcart */ class M1_Config_Adapter_Squirrelcart extends M1_Config_Adapter { public function __construct() { include_once(M1_STORE_BASE_DIR . 'squirrelcart/config.php');
$this->setHostPort($sql_host); $this->dbName = $db; $this->userName = $sql_username; $this->password = $sql_password;
$this->imagesDir = $img_path; $this->categoriesImagesDir = $img_path . '/categories'; $this->productsImagesDir = $img_path . '/products'; $this->manufacturersImagesDir = $img_path;
$version = $this->getCartVersionFromDb('DB_Version', 'Store_Information', 'record_number = 1'); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
-
Class M1_Config_Adapter_WPecommerce */ class M1_Config_Adapter_WPecommerce extends M1_Config_Adapter { public function __construct() { //@include_once M1_STORE_BASE_DIR . "wp-config.php"; $config = file_get_contents(M1_STORE_BASE_DIR . 'wp-config.php');
preg_match('/^\sdefine\s(\s*'DB_NAME',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->dbName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_USER',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->userName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_PASSWORD',\s*('|")(.)('|")\s)\s*;/m', $config, $match); $this->password = stripslashes($match[2]); preg_match('/^\sdefine\s(\s*'DB_HOST',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->setHostPort($match[2]); preg_match('/^\s*$table_prefix\s*=\s*('|")(.)('|")\s;/m', $config, $match); $this->tablePrefix = $match[2]; preg_match('/^\sdefine\s(\s*'WPLANG',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->languageIso2 = isset($match[2]) ? $match[2] : 'EN';
preg_match('/define\s*(\s*'DB_CHARSET',\s*'(.+)'\s*)\s*;/', $config, $match); if (isset($match[1])) { $this->cartVars['dbCharSet'] = $match[1]; }
$version = $this->getCartVersionFromDb('option_value', 'options', "option_name = 'wpsc_version'"); if ($version != '') { $this->cartVars['dbVersion'] = $version; } else { if (@file_exists(M1_STORE_BASE_DIR . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wp-shopping-cart' . DIRECTORY_SEPARATOR . 'wp-shopping-cart.php')) { $conf = file_get_contents(M1_STORE_BASE_DIR . 'wp-content' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wp-shopping-cart' . DIRECTORY_SEPARATOR . 'wp-shopping-cart.php'); preg_match("/define('WPSC_VERSION./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','_',"'",');',')',';'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } } }
if (@file_exists(M1_STORE_BASE_DIR . 'wp-content/plugins/shopp/Shopp.php')) { $shoppFile = file_get_contents(M1_STORE_BASE_DIR . 'wp-content/plugins/shopp/Shopp.php'); if (!preg_match("/define( *'SHOPP_VERSION' *, '([0-9.]{3})/", $shoppFile, $cartVersion)) { preg_match("/.Version:\s([0-9.]{3})/", $shoppFile, $cartVersion); }
$this->cartVars['cartVersion'] = @$cartVersion[1]; $this->imagesDir = 'wp-content/uploads/wpsc/'; $this->categoriesImagesDir = $this->imagesDir . 'category_images/'; $this->productsImagesDir = $this->imagesDir . 'product_images/'; $this->manufacturersImagesDir = $this->imagesDir; } elseif (@file_exists(M1_STORE_BASE_DIR . 'wp-content/plugins/wp-e-commerce/editor.php')) { $this->imagesDir = 'wp-content/uploads/wpsc/'; $this->categoriesImagesDir = $this->imagesDir . 'category_images/'; $this->productsImagesDir = $this->imagesDir . 'product_images/'; $this->manufacturersImagesDir = $this->imagesDir; } elseif (@file_exists(M1_STORE_BASE_DIR . 'wp-content/plugins/wp-e-commerce/wp-shopping-cart.php')) { $this->imagesDir = 'wp-content/uploads/'; $this->categoriesImagesDir = $this->imagesDir . 'wpsc/category_images/'; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } elseif (@file_exists(M1_STORE_BASE_DIR . 'wp-content/plugins/wp-cart-for-digital-products/eStore_classes.php')) { $this->imagesDir = 'wp-content/uploads/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } else { $this->imagesDir = 'images/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } } }
/**
-
Class M1_Config_Adapter_Magento */ class M1_Config_Adapter_Magento extends M1_Config_Adapter { public function __construct() { $allowedCartIdsForWizardModule = array( '3DCart', 'BigCartel', 'Bigcommerce', 'CSCart', 'Interspire', 'Magento', 'NopCommerce', 'Opencart', 'osCommerce', 'PrestaShop', 'Shopify', 'Squarespace', 'Virtuemart', 'Volusion', 'Wix', 'WooCommerce', 'XCart', 'ZenCart', );
// MAGENTO 2.X $baseDir = M1_STORE_BASE_DIR; $check = true; $imagesDir = 'pub/media/';
if (!file_exists($baseDir . 'app/etc/env.php') && file_exists($baseDir . '/../app/etc/env.php')) { $baseDir = M1_STORE_BASE_DIR . '/../'; $check = false; $imagesDir = 'media/'; }
if (!$check || file_exists($baseDir . 'app/etc/env.php')) { /** * @var array */ $config = @include($baseDir . 'app/etc/env.php');
$this->cartVars['AdminUrl'] = (string)$config['backend']['frontName'];
$db = array(); foreach ($config['db']['connection'] as $connection) { if ($connection['active'] == 1) { $db = $connection; break; } }
$this->setHostPort((string)$db['host']); $this->userName = (string)$db['username']; $this->dbName = (string)$db['dbname']; $this->password = (string)$db['password'];
if (@file_exists($baseDir . 'composer.json')) { $ver = file_get_contents($baseDir . 'composer.json'); if (preg_match("/"version":[ ]?"([0-9.]).*?",/", $ver, $match) == 1) { $mageVersion = $match[1]; $this->cartVars['dbVersion'] = $mageVersion; unset($match); } }
if (@file_exists($baseDir . 'app/code/Cart2Cart/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents($baseDir . 'app/code/Cart2Cart/c2c-pass-module-ver.txt'); }
if (isset($db['initStatements']) && $db['initStatements'] != '') { $this->cartVars['dbCharSet'] = $db['initStatements']; }
$this->imagesDir = $imagesDir; $this->categoriesImagesDir = $this->imagesDir . 'catalog/category/'; $this->productsImagesDir = $this->imagesDir . 'catalog/product/'; $this->manufacturersImagesDir = $this->imagesDir;
$modulesPath = $baseDir . 'app/code/Cart2Cart/'; $vendorModulesPath = $baseDir . 'vendor/magneticone/'; $passwordModuleCheckPath = '/Plugin/AccountManagement.php';
$wizardModuleName = 'MigrationToMagento'; $customVendorNames = array('module-migration-to-magento', 'module-cart2cart-wizard');
if (!$this->cartVars['isPasswordsPluginInstalled'] = ( ($isOnlyPasswordModule = @file_exists($modulesPath . 'Login' . $passwordModuleCheckPath)) || @file_exists($modulesPath . $wizardModuleName . $passwordModuleCheckPath)) ) { foreach ($allowedCartIdsForWizardModule as $cartId) { $modulePath = $modulesPath . $wizardModuleName = 'MigrationFrom' . $cartId; $moduleVendorPath = $vendorModulesPath . $wizardVendorModuleName = 'cart2cart-migration-from-' . strtolower($cartId);
if (!$moduleExists = @file_exists($modulePath . $passwordModuleCheckPath)) { $wizardModuleName = $wizardVendorModuleName; $moduleExists = @file_exists($moduleVendorPath . $passwordModuleCheckPath) && $modulesPath = $vendorModulesPath; } if ($moduleExists) { $this->cartVars['isPasswordsPluginInstalled'] = true; break; } } if (!$this->cartVars['isPasswordsPluginInstalled']) { foreach ($customVendorNames as $customVendorName) { if (@file_exists($vendorModulesPath . $customVendorName . $passwordModuleCheckPath)) { $this->cartVars['isPasswordsPluginInstalled'] = true; $modulesPath = $vendorModulesPath; $wizardModuleName = $customVendorName; break; } } }
}
if (!$isOnlyPasswordModule && @file_exists($modulesPath . $wizardModuleName . '/composer.json')) { $ver = file_get_contents($modulesPath . $wizardModuleName . '/composer.json'); if (preg_match("/"version":[ ]?"([0-9.]).*?",/", $ver, $match) == 1) { $passModuleVersion = $match[1]; $this->passModuleVersion = $passModuleVersion; unset($match); } }
return; }
// MAGENTO 1.X /**
- @var SimpleXMLElement */ $config = simplexml_load_file(M1_STORE_BASE_DIR . 'app/etc/local.xml'); $statuses = simplexml_load_file(M1_STORE_BASE_DIR . 'app/code/core/Mage/Sales/etc/config.xml');
$version = $statuses->modules->Mage_Sales->version;
$result = array();
if (version_compare($version, '1.4.0.25') < 0) { $statuses = $statuses->global->sales->order->statuses; foreach ($statuses->children() as $status) { $result[$status->getName()] = (string)$status->label; } }
if (@file_exists(M1_STORE_BASE_DIR . 'app/Mage.php')) { $ver = file_get_contents(M1_STORE_BASE_DIR . 'app/Mage.php'); if (preg_match("/getVersionInfo[^}]+'major' *=> *'(\d+)'[^}]+'minor' *=> *'(\d+)'[^}]+'revision' *=> *'(\d+)'[^}]+'patch' *=> *'(\d+)'[^}]+}/s", $ver, $match) == 1) { $mageVersion = $match[1] . '.' . $match[2] . '.' . $match[3] . '.' . $match[4]; $this->cartVars['dbVersion'] = $mageVersion; unset($match); } }
$this->cartVars['orderStatus'] = $result; $this->cartVars['AdminUrl'] = (string)$config->admin->routers->adminhtml->args->frontName;
$this->setHostPort((string)$config->global->resources->default_setup->connection->host); $this->userName = (string)$config->global->resources->default_setup->connection->username; $this->dbName = (string)$config->global->resources->default_setup->connection->dbname; $this->password = (string)$config->global->resources->default_setup->connection->password;
if (!$this->cartVars['dbCharSet'] && ($charSet = (string)$config->global->resources->default_setup->connection->initStatements) != '' ) { $this->cartVars['dbCharSet'] = str_replace('SET NAMES ', '', $charSet); }
if (@file_exists($baseDir . 'app/code/local/Cart2Cart/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents($baseDir . 'app/code/local/Cart2Cart/c2c-pass-module-ver.txt'); }
$this->imagesDir = 'media/'; $this->categoriesImagesDir = $this->imagesDir . 'catalog/category/'; $this->productsImagesDir = $this->imagesDir . 'catalog/product/'; $this->manufacturersImagesDir = $this->imagesDir; @unlink(M1_STORE_BASE_DIR . 'app/etc/use_cache.ser');
$this->cartVars['isPasswordsPluginInstalled'] = @file_exists($baseDir . 'app/code/local/Cart2cart/Login/Auth.php'); } }
/**
-
Class M1_Config_Adapter_JooCart */ class M1_Config_Adapter_JooCart extends M1_Config_Adapter { public function __construct() { @require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jConfig = new JConfig();
$this->setHostPort($jConfig->host); $this->dbName = $jConfig->db; $this->userName = $jConfig->user; $this->password = $jConfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password; }
if (@file_exists(M1_STORE_BASE_DIR . '/components/com_opencart/index.php')) { $content = file_get_contents(M1_STORE_BASE_DIR . '/components/com_opencart/index.php');
if (preg_match("/define('\VERSION', '(.+)')/", $content, $match)) { $this->cartVars['dbVersion'] = $match[1]; } }
$this->imagesDir = 'components/com_opencart/image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_MijoShop */ class M1_Config_Adapter_MijoShop extends M1_Config_Adapter { public function __construct() { @require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jConfig = new JConfig();
$this->setHostPort($jConfig->host); $this->dbName = $jConfig->db; $this->userName = $jConfig->user; $this->password = $jConfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password; }
if (@file_exists(M1_STORE_BASE_DIR . 'administrator/components/com_mijoshop/mijoshop.xml')) { $config = @simplexml_load_file(M1_STORE_BASE_DIR . 'administrator/components/com_mijoshop/mijoshop.xml'); if (isset($config->version)) { $this->cartVars['dbVersion'] = (string)$config->version; } }
$this->imagesDir = 'components/com_mijoshop/opencart/image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Cscart */ class M1_Config_Adapter_Cscart extends M1_Config_Adapter { public function __construct() { defined('IN_CSCART') || define('IN_CSCART', 1); defined('CSCART_DIR') || define('CSCART_DIR', M1_STORE_BASE_DIR); defined('AREA') || define('AREA', 1); defined('BOOTSTRAP') || define('BOOTSTRAP', 1); defined('DIR_ROOT') || define('DIR_ROOT', M1_STORE_BASE_DIR); defined('DIR_CSCART') || define('DIR_CSCART', M1_STORE_BASE_DIR); defined('DS') || define('DS', DIRECTORY_SEPARATOR);
!isset($cscart_dir) && $cscart_dir = rtrim(M1_STORE_BASE_DIR, '/');
if (@file_exists(M1_STORE_BASE_DIR . 'config.php')) { require M1_STORE_BASE_DIR . 'config.php'; } else { require M1_STORE_BASE_DIR . 'config.local.php'; }
//For CS CART 1.3.x if (isset($db_host, $db_name, $db_user, $db_password)) { $this->setHostPort($db_host); $this->dbName = $db_name; $this->userName = $db_user; $this->password = $db_password; } else { $this->setHostPort($config['db_host']); $this->dbName = $config['db_name']; $this->userName = $config['db_user']; $this->password = $config['db_password']; isset($config['table_prefix']) && $this->tablePrefix = $config['table_prefix']; }
if (isset($images_storage_dir)) { $imagesDir = $images_storage_dir; } elseif (defined('DIR_IMAGES')) { $imagesDir = DIR_IMAGES; } else { $imagesDir = $config['storage']['images']['dir'] . '/' . $config['storage']['images']['prefix']; }
$this->imagesDir = str_replace(M1_STORE_BASE_DIR, '', $imagesDir);
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (defined('MAX_FILES_IN_DIR')) { $this->cartVars['cs_max_files_in_dir'] = MAX_FILES_IN_DIR; }
if (defined('PRODUCT_VERSION')) { $this->cartVars['dbVersion'] = PRODUCT_VERSION; } } }
/**
-
Class M1_Config_Adapter_Jigoshop */ class M1_Config_Adapter_Jigoshop extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'wp-config.php');
preg_match('/^\sdefine\s(\s*'DB_NAME',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->dbName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_USER',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->userName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_PASSWORD',\s*('|")(.)('|")\s)\s*;/m', $config, $match); $this->password = stripslashes($match[2]); preg_match('/^\sdefine\s(\s*'DB_HOST',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->setHostPort($match[2]); preg_match('/^\s*$table_prefix\s*=\s*('|")(.)('|")\s;/m', $config, $match); $this->tablePrefix = $match[2]; preg_match('/^\sdefine\s(\s*'WPLANG',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->languageIso2 = isset($match[2]) ? $match[2] : 'EN';
$this->imagesDir = 'wp-content/uploads/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
$this->cartVars['categoriesImagesDirRelative'] = 'images/categories/'; $this->cartVars['productsImagesDirRelative'] = 'images/products/'; } }
/**
-
Class M1_Config_Adapter_Gambio */ class M1_Config_Adapter_Gambio extends M1_Config_Adapter { public function __construct() { include(M1_STORE_BASE_DIR . '/includes/configure.php');
$this->setHostPort(DB_SERVER); $this->dbName = DB_DATABASE; $this->userName = DB_SERVER_USERNAME; $this->password = DB_SERVER_PASSWORD;
$this->imagesDir = DIR_WS_IMAGES; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = DIR_WS_POPUP_IMAGES; $this->manufacturersImagesDir = $this->imagesDir; } }
class M1_Config_Adapter_WordPress extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'wp-config.php');
preg_match('/^\s*define\s*\(\s*\'DB_NAME\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->dbName = $match[2];
preg_match('/^\s*define\s*\(\s*\'DB_USER\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->userName = $match[2];
preg_match('/^\s*define\s*\(\s*\'DB_PASSWORD\',\s*(\'|\")(.*)(\'|\")\s*\)\s*;/m', $config, $match);
$this->password = stripslashes($match[2]);
preg_match('/^\s*define\s*\(\s*\'DB_HOST\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->setHostPort($match[2]);
preg_match('/^\s*\$table_prefix\s*=\s*(\'|\")(.*)(\'|\")\s*;/m', $config, $match);
$this->tablePrefix = $match[2];
preg_match('/^\s*define\s*\(\s*\'WPLANG\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->languageIso2 = isset($match[2]) ? $match[2] : 'EN';
preg_match('/^\s*define\s*\(\s*\'DB_CHARSET\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
if (isset($match[1])) {
$this->cartVars['dbCharSet'] = $match[2];
}
$version = '';
$fileContent = file_get_contents(M1_STORE_BASE_DIR . '/wp-includes/version.php');
preg_match('/\$wp_version.*\'(?<ver>.*?)\';/gm', $fileContent, $match);
if (!empty($match['ver'])) {
$version = $match['ver'];
}
if ($version != '') {
$this->cartVars['dbVersion'] = $version;
}
$this->imagesDir = 'wp-content/uploads/';
$this->categoriesImagesDir = $this->imagesDir;
$this->productsImagesDir = $this->imagesDir;
$this->manufacturersImagesDir = $this->imagesDir;
$this->cartVars['categoriesImagesDirRelative'] = 'images/categories/';
$this->cartVars['productsImagesDirRelative'] = 'images/products/';
}
public function getToken() { if (!IS_PLUGIN_REQUEST) { return parent::getToken(); }
$db = $this->connect();
$a = 'select * from ' . $this->dbName . '.' . $this->tablePrefix . 'c2c_config where `key` = "c2cMigrationToken"';
$res = $db->localQuery($a);
return !empty($res[0]['value']) ? $res[0]['value'] : false;
} }
/**
-
Class M1_Config_Adapter_LemonStand */ class M1_Config_Adapter_LemonStand extends M1_Config_Adapter { public function __construct() { include (M1_STORE_BASE_DIR . 'phproad/system/phpr.php'); include (M1_STORE_BASE_DIR . 'phproad/modules/phpr/classes/phpr_securityframework.php');
defined('PATH_APP') || define('PATH_APP', '');
if (phpversion() > 5) { eval('Phpr::$config = new MockConfig(); Phpr::$config->set("SECURE_CONFIG_PATH", M1_STORE_BASE_DIR . "config/config.dat"); $framework = Phpr_SecurityFramework::create();'); }
$configContent = $framework->get_config_content();
$this->setHostPort($configContent['mysql_params']['host']); $this->dbName = $configContent['mysql_params']['database']; $this->userName = $configContent['mysql_params']['user']; $this->password = $configContent['mysql_params']['password'];
$this->categoriesImagesDir = '/uploaded/thumbnails/'; $this->productsImagesDir = '/uploaded/'; $this->manufacturersImagesDir = '/uploaded/thumbnails/';
$version = $this->getCartVersionFromDb('version_str', 'core_versions', "moduleId = 'shop'"); $this->cartVars['dbVersion'] = $version; } }
/**
- Class MockConfig */ class MockConfig { protected $_data = array();
/**
- @param mixed $key key
- @param mixed $value value
- @return void */ public function set($key, $value) { $this->_data[$key] = $value; }
/**
- @param mixed $key key
- @param string $default default value
- @return string */ public function get($key, $default = 'default') { return isset($this->_data[$key]) ? $this->_data[$key] : $default; } }
/**
-
Class M1_Config_Adapter_PrestaShop */ class M1_Config_Adapter_PrestaShop extends M1_Config_Adapter { public function __construct() { $prestaShopOnePointSeven = false;
//for version 1.7.0.0 beta 1 if (file_exists(M1_STORE_BASE_DIR . '/app/config/config.yml') || file_exists(M1_STORE_BASE_DIR . '/app/config/parameters.yml')) { $prestaShopOnePointSeven = true;
if (file_exists(M1_STORE_BASE_DIR . 'app/cache/prod/appParameters.php')) { $config = @require M1_STORE_BASE_DIR . 'app/cache/prod/appParameters.php'; } else if (file_exists(M1_STORE_BASE_DIR . 'var/cache/prod/appParameters.php')) { $config = @require M1_STORE_BASE_DIR . 'var/cache/prod/appParameters.php'; } else { $config = @require M1_STORE_BASE_DIR . 'app/config/parameters.php'; }
$port = isset($config['parameters']['database_port']) ? ':' . $config['parameters']['database_port'] : ''; defined('DB_SERVER') || define('DB_SERVER', $config['parameters']['database_host'] . $port); defined('DB_NAME') || define('DB_NAME', $config['parameters']['database_name']); defined('DB_USER') || define('DB_USER', $config['parameters']['database_user']); defined('DB_PASSWD') || define('DB_PASSWD', $config['parameters']['database_password']); defined('DB_PREFIX') || define('DB_PREFIX', $config['parameters']['database_prefix']);
defined('MYSQL_ENGINE') || define('MYSQL_ENGINE', $config['parameters']['database_engine']); defined('PS_CACHING_SYSTEM') || define('PS_CACHING_SYSTEM', $config['parameters']['ps_caching']); defined('PS_CACHE_ENABLED') || define('PS_CACHE_ENABLED', $config['parameters']['ps_cache_enable']); defined('COOKIE_KEY') || define('COOKIE_KEY', $config['parameters']['cookie_key']); defined('COOKIE_IV') || define('COOKIE_IV', $config['parameters']['cookie_iv']); defined('PS_CREATION_DATE') || define('PS_CREATION_DATE', $config['parameters']['ps_creation_date']); }
$confFileOne = file_get_contents(M1_STORE_BASE_DIR . '/config/settings.inc.php'); $confFileTwo = file_get_contents(M1_STORE_BASE_DIR . '/config/config.inc.php');
$filesLines = array_merge(explode("\n", $confFileOne), explode("\n", $confFileTwo));
$execute = '$currentDir = '';'; defined('PS_ROOT_DIR') || define('PS_ROOT_DIR', M1_STORE_BASE_DIR); eval($execute);
foreach ($filesLines as $line) { if (preg_match("/^(\s*)define(/i", $line)) { if ((strpos($line, 'DB') !== false) && !defined('DB') && !$prestaShopOnePointSeven) { eval($line); } elseif ((strpos($line, 'PS_IMG_DIR') !== false) && !defined('PS_IMG_DIR')) { eval($line); } elseif ((strpos($line, 'PS_VERSION') !== false) && !defined('PS_VERSION')) { eval($line); } elseif ((strpos($line, 'COOKIE_KEY') !== false) && !defined('COOKIE_KEY')) { eval($line); } } }
if (@file_exists(M1_STORE_BASE_DIR . '/modules/cart2cartpasswords/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/modules/cart2cartpasswords/c2c-pass-module-ver.txt'); } elseif (@file_exists(M1_STORE_BASE_DIR . '/modules/cart2cart_prestashop_migration/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/modules/cart2cart_prestashop_migration/c2c-pass-module-ver.txt'); } elseif (@file_exists(M1_STORE_BASE_DIR . '/modules/cart2cart/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/modules/cart2cart/c2c-pass-module-ver.txt'); }
$this->setHostPort(DB_SERVER); $this->dbName = DB_NAME; $this->userName = DB_USER; $this->password = DB_PASSWD; $this->tablePrefix = DB_PREFIX;
if (defined('PS_IMG_DIR') && defined('PS_ROOT_DIR')) { preg_match("/(/\w+/)$/i", PS_IMG_DIR, $m); $this->imagesDir = $m[1]; } else { $this->imagesDir = 'img/'; }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (defined('PS_VERSION')) { $this->cartVars['dbVersion'] = PS_VERSION; } else { $this->cartVars['dbVersion'] = $this->getCartVersionFromDb('value', 'configuration', 'name="PS_VERSION_DB"'); }
if (defined('COOKIE_KEY')) { $this->cartVars['COOKIE_KEY'] = COOKIE_KEY; }
if (@$_GET['action'] == 'getconfig' && file_exists(M1_STORE_BASE_DIR . '/classes/Dispatcher.php')) { $dispatcherClass = file_get_contents(M1_STORE_BASE_DIR . '/classes/Dispatcher.php');
preg_match_all("/(')([a-z_]+?_rule)('.+?)('rule'.+?')(.+?)(')/s", $dispatcherClass, $matches);
$defaultConfig = array();
foreach ($matches[2] as $index => $rulename) { $defaultConfig[$rulename] = $matches[5][$index]; }
$this->cartVars['defaultRoutes'] = $defaultConfig; } }
public function getToken() { if (!IS_PLUGIN_REQUEST) { return parent::getToken(); }
$result = $error = false;
try {
$db = $this->connect();
$a = 'select `value` from ' . $this->dbName . '.' . $this->tablePrefix . 'c2c_config where `config_key` = "CART2CART_TOKEN"';
$res = $db->localQuery($a);
$result = !empty($res[0]['value']) ? $res[0]['value'] : false;
} catch (Exception $e) {
$error = $e->getMessage();
} catch (Throwable $e) {
$error = $e->getMessage();
}
if ($error) {
file_put_contents(
'error.txt',
'PrestaShop getToken error: ' . var_export($error, true)
);
}
return $result;
} }
/**
- Class M1_Config_Adapter_Woocommerce */ class M1_Config_Adapter_Woocommerce extends M1_Config_Adapter { protected $modulesNames = array( 'cart2cart-password-migration', 'cart2cart-yahoo-store-to-woocommerce-migration', 'cart2cart-xtcommerce-to-woocommerce-migration', 'cart2cart-x-cart-to-woocommerce-migration', 'cart2cart-wp-estore-to-woocommerce-migration', 'cart2cart-ubercart-to-woocommerce-migration', 'cart2cart-tomatocart-to-woocommerce-migration', 'cart2cart-shopp-to-woocommerce-migration', 'cart2cart-pinnacle-cart-to-woocommerce-migration', 'cart2cart-oxid-eshop-to-woocommerce-migration', 'cart2cart-oscommerce-to-woocommerce-migration', 'cart2cart-oscmax-to-woocommerce-migration', 'cart2cart-nopcommerce-to-woocommerce-migration', 'cart2cart-modified-ecommerce-shopsoftware-to-woocommerce-migration', 'cart2cart-miwoshop-to-woocommerce-migration', 'cart2cart-mijoshop-to-woocommerce-migration', 'cart2cart-joocart-to-woocommerce-migration', 'cart2cart-interspire-to-woocommerce-migration', 'cart2cart-gambio-to-woocommerce-migration', 'cart2cart-epages-to-woocommerce-migration', 'cart2cart-cubecart-to-woocommerce-migration', 'cart2cart-cs-cart-to-woocommerce-migration', 'cart2cart-cre-loaded-to-woocommerce-migration', 'cart2cart-actinic-to-woocommerce-migration', 'cart2cart-ablecommerce-to-woocommerce', 'cart2cart-magento-to-woocommerce-migration', 'cart2cart-opencart-to-woocommerce-migration', 'cart2cart-virtuemart-to-woocommerce-migration', 'cart2cart-wp-e-commerce-to-woocommerce-migration', 'cart2cart-zen-cart-to-woocommerce-migration', 'cart2cart-woocommerce-to-woocommerce-migration', 'cart2cart-universal-store-migration-app', );
public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'wp-config.php');
preg_match('/^\s*define\s*\(\s*\'DB_NAME\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->dbName = $match[2];
preg_match('/^\s*define\s*\(\s*\'DB_USER\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->userName = $match[2];
preg_match('/^\s*define\s*\(\s*\'DB_PASSWORD\',\s*(\'|\")(.*)(\'|\")\s*\)\s*;/m', $config, $match);
$this->password = stripslashes($match[2]);
preg_match('/^\s*define\s*\(\s*\'DB_HOST\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->setHostPort($match[2]);
preg_match('/^\s*\$table_prefix\s*=\s*(\'|\")(.*)(\'|\")\s*;/m', $config, $match);
$this->tablePrefix = $match[2];
preg_match('/^\s*define\s*\(\s*\'WPLANG\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
$this->languageIso2 = isset($match[2]) ? $match[2] : 'EN';
preg_match('/^\s*define\s*\(\s*\'DB_CHARSET\',\s*(\'|\")(.+)(\'|\")\s*\)\s*;/m', $config, $match);
if (isset($match[1])) {
$this->cartVars['dbCharSet'] = $match[2];
}
$version = $this->getCartVersionFromDb('option_value', 'options', "option_name = 'woocommerce_version'");
if ($version != '') {
$this->cartVars['dbVersion'] = $version;
}
foreach ($this->modulesNames as $pluginName) {
if (@file_exists(M1_STORE_BASE_DIR . '/wp-content/plugins/' . $pluginName . '/c2c-pass-module-ver.txt')) {
$this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/wp-content/plugins/' . $pluginName . '/c2c-pass-module-ver.txt');
$this->moduleNames = $this->modulesNames;
break;
}
}
$this->imagesDir = 'wp-content/uploads/';
$this->categoriesImagesDir = $this->imagesDir;
$this->productsImagesDir = $this->imagesDir;
$this->manufacturersImagesDir = $this->imagesDir;
$this->cartVars['categoriesImagesDirRelative'] = 'images/categories/';
$this->cartVars['productsImagesDirRelative'] = 'images/products/';
}
public function getToken() { if (!IS_PLUGIN_REQUEST) { return parent::getToken(); }
$db = $this->connect();
$a = 'select * from ' . $this->dbName . '.' . $this->tablePrefix . 'c2c_config where `key` = "c2cMigrationToken"';
$res = $db->localQuery($a);
return !empty($res[0]['value']) ? $res[0]['value'] : false;
} }
/**
-
Class M1_Config_Adapter_EasyDigitalDownloads / class M1_Config_Adapter_EasyDigitalDownloads extends M1_Config_Adapter_Woocommerce { /*
- M1_Config_Adapter_EasyDigitalDownloads constructor. */ public function __construct() { parent::__construct();
$version = $this->getCartVersionFromDb('option_value', 'options', "option_name = 'edd_version'"); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
-
Class M1_Config_Adapter_DrupalCommerce */ class M1_Config_Adapter_DrupalCommerce extends M1_Config_Adapter { public function __construct() { if (@file_exists(M1_STORE_BASE_DIR . "sites/default/settings.php")) { @include_once M1_STORE_BASE_DIR . "sites/default/settings.php"; } elseif (@file_exists(M1_STORE_BASE_DIR . "web/sites/default/settings.php")) { @include_once M1_STORE_BASE_DIR . "web/sites/default/settings.php"; } else { @include_once M1_STORE_BASE_DIR . "sites/default/settings.php"; }
$url = $databases['default']['default'];
$url['username'] = urldecode($url['username']); $url['password'] = isset($url['password']) ? urldecode($url['password']) : ''; $url['host'] = urldecode($url['host']); $url['database'] = urldecode($url['database']); if (isset($url['port'])) { $url['host'] = $url['host'] .':'. $url['port']; }
$this->setHostPort($url['host']); $this->dbName = ltrim($url['database'], '/'); $this->userName = $url['username']; $this->password = $url['password'];
$this->imagesDir = '/sites/default/files/'; if (!@file_exists(M1_STORE_BASE_DIR . $this->imagesDir)) { $this->imagesDir = '/files'; }
$fileInfo = M1_STORE_BASE_DIR . '/sites/all/modules/commerce/commerce.info'; if (@file_exists($fileInfo)) { $str = file_get_contents($fileInfo); if (preg_match('/version\s+=\s+".+-(.+)"/', $str, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } } elseif (@file_exists(M1_STORE_BASE_DIR . 'composer.lock')) { $str = @file_get_contents(M1_STORE_BASE_DIR . 'composer.lock');
if (preg_match('/"name": "drupal/core",\s*"version": "([0-9 .]+?)"/', $str, $match)) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_MiwoShop */ class M1_Config_Adapter_MiwoShop extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'wp-config.php');
preg_match('/^\sdefine\s(\s*'DB_NAME',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->dbName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_USER',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->userName = $match[2]; preg_match('/^\sdefine\s(\s*'DB_PASSWORD',\s*('|")(.)('|")\s)\s*;/m', $config, $match); $this->password = stripslashes($match[2]); preg_match('/^\sdefine\s(\s*'DB_HOST',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->setHostPort($match[2]); preg_match('/^\s*$table_prefix\s*=\s*('|")(.)('|")\s;/m', $config, $match); $this->tablePrefix = $match[2]; preg_match('/^\sdefine\s(\s*'WPLANG',\s*('|")(.+)('|")\s*)\s*;/m', $config, $match); $this->languageIso2 = isset($match[2]) ? $match[2] : 'EN';
preg_match('/define\s*(\s*'DB_CHARSET',\s*'(.+)'\s*)\s*;/', $config, $match); if (isset($match[1])) { $this->cartVars['dbCharSet'] = $match[1]; }
$moduleFile = file_get_contents(M1_STORE_BASE_DIR . 'wp-content/plugins/miwoshop/miwoshop.php'); if (preg_match('/Version:\s?([\d.]+)/', $moduleFile, $match)) { $this->cartVars['dbVersion'] = $match[1]; }
$this->imagesDir = 'wp-content/plugins/miwoshop/site/opencart/image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
$this->cartVars['categoriesImagesDirRelative'] = 'images/categories/'; $this->cartVars['productsImagesDirRelative'] = 'images/products/'; } }
/**
-
Class M1_Config_Adapter_Zencart137 */ class M1_Config_Adapter_Zencart137 extends M1_Config_Adapter { public function __construct() { $currentDir = getcwd();
chdir(M1_STORE_BASE_DIR);
@require M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php';
chdir($currentDir);
$this->imagesDir = defined('DIR_WS_IMAGES') ? DIR_WS_IMAGES : '/images';
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir;
if (defined('DIR_WS_PRODUCT_IMAGES')) { $this->productsImagesDir = DIR_WS_PRODUCT_IMAGES; }
if (defined('DIR_WS_ORIGINAL_IMAGES')) { $this->productsImagesDir = DIR_WS_ORIGINAL_IMAGES; }
$this->manufacturersImagesDir = $this->imagesDir;
$this->setHostPort(DB_SERVER); $this->userName = DB_SERVER_USERNAME; $this->password = DB_SERVER_PASSWORD; $this->dbName = DB_DATABASE;
if (defined('DB_CHARSET')) { $this->cartVars['dbCharSet'] = DB_CHARSET; }
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php')) { @require M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php'; $major = PROJECT_VERSION_MAJOR; $minor = PROJECT_VERSION_MINOR; if (defined('EXPECTED_DATABASE_VERSION_MAJOR') && EXPECTED_DATABASE_VERSION_MAJOR != '') { $major = EXPECTED_DATABASE_VERSION_MAJOR; }
if (defined('EXPECTED_DATABASE_VERSION_MINOR') && EXPECTED_DATABASE_VERSION_MINOR != '') { $minor = EXPECTED_DATABASE_VERSION_MINOR; }
if ($major != '' && $minor != '') { $this->cartVars['dbVersion'] = $major . '.' . $minor; } } } }
/**
-
Class M1_Config_Adapter_LiteCart / class M1_Config_Adapter_LiteCart extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . '/includes/config.inc.php'); preg_match("/define('DB_DATABASE', '(.+)');/", $config, $match); $this->dbName = $match[1]; preg_match("/define('DB_USERNAME', '(.+)');/", $config, $match); $this->userName = $match[1]; preg_match("/define('DB_PASSWORD', '(.)');/", $config, $match); $this->password = $match[1]; preg_match("/define('DB_SERVER', '(.+)');/", $config, $match); $this->setHostPort( $match[1] );
preg_match("/define('WS_DIR_IMAGES',\s+WS_DIR_HTTP_HOME . '(.+)');/", $config, $match); $this->imagesDir = $match[1];
if (!$this->imagesDir) { $this->imagesDir = '/images'; }
$this->categoriesImagesDir = $this->imagesDir . 'categories/'; $this->productsImagesDir = $this->imagesDir . 'products/'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturers/'; } }
/**
-
Class M1_Config_Adapter_Xtcommerce */ class M1_Config_Adapter_Xtcommerce extends M1_Config_Adapter { public function __construct() { defined('_VALID_CALL') || define('_VALID_CALL', 'TRUE'); defined('_SRV_WEBROOT') || define('_SRV_WEBROOT', 'TRUE'); require M1_STORE_BASE_DIR . 'conf' . DIRECTORY_SEPARATOR . 'config.php'; require M1_STORE_BASE_DIR . 'conf' . DIRECTORY_SEPARATOR . 'paths.php';
$this->setHostPort(_SYSTEM_DATABASE_HOST); $this->dbName = _SYSTEM_DATABASE_DATABASE; $this->userName = _SYSTEM_DATABASE_USER; $this->password = _SYSTEM_DATABASE_PWD; $this->imagesDir = SRV_WEB_IMAGES; $this->tablePrefix = DB_PREFIX . '';
if (!$version = $this->getCartVersionFromDb('config_value', 'config', "config_key = '_SYSTEM_VERSION'")) { if (@file_exists(M1_STORE_BASE_DIR . DIRECTORY_SEPARATOR . 'versioninfo.php')) { require M1_STORE_BASE_DIR . DIRECTORY_SEPARATOR . 'versioninfo.php';
$version = defined('_SYSTEM_VERSION') ? _SYSTEM_VERSION : '';
} else {
if (@file_exists(M1_STORE_BASE_DIR . DIRECTORY_SEPARATOR . 'index.php')) { $data = @file_get_contents(M1_STORE_BASE_DIR . DIRECTORY_SEPARATOR . 'index.php'); if (preg_match('/File is part of xt:Commerce\s+(.+)\s+/', $data, $match) != 0) { $version = rtrim($match[1], " \t\n\r\0\x0B;,"); unset($match); } }
} }
if ($version != '') { $this->cartVars['dbVersion'] = $version; }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Opencart */ class M1_Config_Adapter_Opencart extends M1_Config_Adapter { public function __construct() { include_once(M1_STORE_BASE_DIR . '/config.php');
if (defined('DB_HOST')) { $this->setHostPort(DB_HOST); } else { $this->setHostPort(DB_HOSTNAME); }
if (defined('DB_USER')) { $this->userName = DB_USER; } else { $this->userName = DB_USERNAME; }
$this->password = DB_PASSWORD;
if (defined('DB_NAME')) { $this->dbName = DB_NAME; } else { $this->dbName = DB_DATABASE; }
if (defined('DB_PREFIX')) { $this->tablePrefix = DB_PREFIX; }
$indexFileContent = ''; $startupFileContent = '';
if (@file_exists(M1_STORE_BASE_DIR . '/index.php')) { $indexFileContent = file_get_contents(M1_STORE_BASE_DIR . '/index.php'); }
if (@file_exists(M1_STORE_BASE_DIR . '/system/startup.php')) { $startupFileContent = file_get_contents(M1_STORE_BASE_DIR . '/system/startup.php'); }
if (preg_match("/define('\VERSION', '(.+)')/", $indexFileContent, $match) == 0) { preg_match("/define('\VERSION', '(.+)')/", $startupFileContent, $match); }
if (count($match) > 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); }
if (@file_exists(M1_STORE_BASE_DIR . '/admin/controller/extension/module/c2c-pass-module-ver.txt')) { $this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/admin/controller/extension/module/c2c-pass-module-ver.txt'); } else if (@file_exists(M1_STORE_BASE_DIR . '/admin/controller/extension/module/c2c-module-ver.txt')) { $this->passModuleVersion = file_get_contents(M1_STORE_BASE_DIR . '/admin/controller/extension/module/c2c-module-ver.txt'); }
if (!$this->passModuleVersion) { $possiblePassModulePaths = array( '3dcart', 'ablecommerce', 'aceshop', 'actinic', 'cre_loaded', 'cs_cart', 'cubecart', 'epages', 'gambio', 'hhgmultistore', 'interspire', 'jigoshop', 'joocart', 'lemonstand', 'magento', 'mijoshop', 'miva', 'miwoshop', 'modified_ecommerce_shopsoftware', 'nopcommerce', 'opencart', 'oscmax', 'oscommerce', 'oxid_eshop', 'pinnacle_cart', 'prestashop', 'shopify', 'shopp', 'squirrelcart', 'summercart', 'sunshop', 'tomatocart', 'ubercart', 'virtuemart', 'volusion', 'wix', 'woocommerce', 'wp_e_commerce', 'wp_estore', 'x_cart', 'xtcommerce', 'yahoo_store', 'zen_cart', '', );
foreach ($possiblePassModulePaths as $passModulePath) { $checkPath = M1_STORE_BASE_DIR . str_replace( '__', '', '/extension/cart2cart' . $passModulePath . '_to_opencart_migration/admin/controller/module/c2c-module-ver.txt' );
if (@file_exists($checkPath)) { $this->passModuleVersion = file_get_contents($checkPath); break; }
} }
$this->imagesDir = 'image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
$this->cartVars['downloadDir'] = DIR_DOWNLOAD; $this->cartVars['uploadDir'] = DIR_UPLOAD; $this->cartVars['dirSeparator'] = DIRECTORY_SEPARATOR; }
public function getToken() { if (!IS_PLUGIN_REQUEST) { return parent::getToken(); }
$db = $this->connect();
$a = 'select * from ' . $this->dbName . '.' . (defined('DB_PREFIX') ? DB_PREFIX : '') . 'c2c_config where `key` = "c2cMigrationToken"';
$res = $db->localQuery($a);
return !empty($res[0]['value']) ? $res[0]['value'] : false;
} }
/**
-
Class M1_Config_Adapter_Sunshop */ class M1_Config_Adapter_Sunshop extends M1_Config_Adapter { public function __construct() { @require M1_STORE_BASE_DIR . 'include' . DIRECTORY_SEPARATOR . 'config.php';
$this->imagesDir = 'images/products/';
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (defined('ADMIN_DIR')) { $this->cartVars['AdminUrl'] = ADMIN_DIR; }
$this->setHostPort($servername); $this->userName = $dbusername; $this->password = $dbpassword; $this->dbName = $dbname;
if (isset($dbprefix)) { $this->tablePrefix = $dbprefix; }
$version = $this->getCartVersionFromDb('value', 'settings', "name = 'version'"); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
- Class M1_Config_Adapter_LoadedCommerce */ class M1_Config_Adapter_LoadedCommerce extends M1_Config_Adapter_Oscommerce22ms2 { }
/**
-
Class M1_Config_Adapter_AceShop */ class M1_Config_Adapter_AceShop extends M1_Config_Adapter { public function __construct() { @require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jConfig = new JConfig();
$this->setHostPort($jConfig->host); $this->dbName = $jConfig->db; $this->userName = $jConfig->user; $this->password = $jConfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password;
}
if (@file_exists(M1_STORE_BASE_DIR . 'administrator/components/com_aceshop/aceshop.xml')) { $config = @simplexml_load_file(M1_STORE_BASE_DIR . 'administrator/components/com_aceshop/aceshop.xml'); if (isset($config->version)) { $this->cartVars['dbVersion'] = (string)$config->version; } }
$this->imagesDir = 'components/com_aceshop/opencart/image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_JoomShopping */ class M1_Config_Adapter_JoomShopping extends M1_Config_Adapter { public function __construct() { require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jconfig = new JConfig();
$this->setHostPort($jconfig->host); $this->dbName = $jconfig->db; $this->userName = $jconfig->user; $this->password = $jconfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password; }
if (@file_exists(M1_STORE_BASE_DIR . 'components/com_jshopping/lib/functions.php')) { $data = file_get_contents(M1_STORE_BASE_DIR . 'components/com_jshopping/lib/functions.php'); if (preg_match('/@version\s+(.+)\s+.+/', $data, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } }
$this->imagesDir = 'components/com_jshopping/files'; $this->categoriesImagesDir = $this->imagesDir . '/img_categories/'; $this->productsImagesDir = $this->imagesDir . '/img_products/'; $this->manufacturersImagesDir = $this->imagesDir . '/img_manufs/'; }
}
/**
-
Class M1_Config_Adapter_Shopscript */ class M1_Config_Adapter_Shopscript extends M1_Config_Adapter { public function __construct() { if (@file_exists(M1_STORE_BASE_DIR . 'kernel/wbs.xml')) {
$config = simplexml_load_file(M1_STORE_BASE_DIR . 'kernel/wbs.xml');
$dbKey = (string)$config->FRONTEND['dbkey'];
$config = simplexml_load_file(M1_STORE_BASE_DIR . 'dblist' . '/' . strtoupper($dbKey) . '.xml');
$host = (string)$config->DBSETTINGS['SQLSERVER'];
$this->setHostPort($host); $this->dbName = (string)$config->DBSETTINGS['DB_NAME']; $this->userName = (string)$config->DBSETTINGS['DB_USER']; $this->password = (string)$config->DBSETTINGS['DB_PASSWORD'];
$this->imagesDir = 'published/publicdata/' . strtoupper($dbKey) . '/attachments/SC/products_pictures'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (isset($config->VERSIONS['SYSTEM'])) { $this->cartVars['dbVersion'] = (string)$config->VERSIONS['SYSTEM']; }
if ($charSet = $this->getCharsetFromDb()) { $this->cartVars['dbCharSet'] = $charSet; } } elseif (@file_exists(M1_STORE_BASE_DIR . 'cfg/connect.inc.php')) {
$config = file_get_contents(M1_STORE_BASE_DIR . 'cfg/connect.inc.php');
preg_match("/define('DB_NAME', '(.+)');/", $config, $match); $this->dbName = $match[1]; preg_match("/define('DB_USER', '(.+)');/", $config, $match); $this->userName = $match[1]; preg_match("/define('DB_PASS', '(.*)');/", $config, $match); $this->password = $match[1]; preg_match("/define('DB_HOST', '(.+)');/", $config, $match); $this->setHostPort( $match[1] );
$this->imagesDir = 'products_pictures/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
$generalInc = file_get_contents(M1_STORE_BASE_DIR . 'cfg/general.inc.php');
preg_match("/define('CONF_CURRENCY_ISO3', '(.+)');/", $generalInc, $match); if (count($match) != 0) { $this->cartVars['iso3Currency'] = $match[1]; }
preg_match("/define('CONF_CURRENCY_ID_LEFT', '(.+)');/", $generalInc, $match); if (count($match) != 0) { $this->cartVars['currencySymbolLeft'] = $match[1]; }
preg_match("/define('CONF_CURRENCY_ID_RIGHT', '(.+)');/", $generalInc, $match); if (count($match) != 0) { $this->cartVars['currencySymbolRight'] = $match[1]; } } elseif (@file_exists(M1_STORE_BASE_DIR . 'wa-config/db.php')) { $config = @include_once M1_STORE_BASE_DIR . 'wa-config/db.php';
$host = (string)$config['default']['host'];
$this->setHostPort($host); $this->dbName = (string)$config['default']['database']; $this->userName = (string)$config['default']['user']; $this->password = (string)$config['default']['password'];
$this->imagesDir = '/wa-content/img/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } } }
/**
-
Class M1_Config_Adapter_Hhgmultistore */ class M1_Config_Adapter_Hhgmultistore extends M1_Config_Adapter { public function __construct() { defined('SITE_PATH') || define('SITE_PATH', ''); defined('WEB_PATH') || define('WEB_PATH', ''); defined('DS') || define('DS', DIRECTORY_SEPARATOR); require M1_STORE_BASE_DIR . 'core/config/configure.php'; require M1_STORE_BASE_DIR . 'core/config/paths.php';
$baseDir = '/store_files/1/'; $this->imagesDir = $baseDir . DIR_WS_IMAGES;
$this->categoriesImagesDir = $baseDir . DIR_WS_CATEGORIE_IMAGES;
$this->productsImagesDirs = array( 'info' => $baseDir . DIR_WS_PRODUCT_INFO_IMAGES, 'org' => $baseDir . DIR_WS_PRODUCT_ORG_IMAGES, 'thumb' => $baseDir . DIR_WS_PRODUCT_THUMBNAIL_IMAGES, 'popup' => $baseDir . DIR_WS_PRODUCT_POPUP_IMAGES, );
$this->manufacturersImagesDirs = array( 'img' => $baseDir . DIR_WS_MANUFACTURERS_IMAGES, 'org' => $baseDir . DIR_WS_MANUFACTURERS_ORG_IMAGES, );
$this->host = DB_SERVER; $this->userName = DB_SERVER_USERNAME; $this->password = DB_SERVER_PASSWORD; $this->dbName = DB_DATABASE;
if (@file_exists(M1_STORE_BASE_DIR . '/core/config/conf.hhg_startup.php')) { $ver = file_get_contents(M1_STORE_BASE_DIR . '/core/config/conf.hhg_startup.php'); if (preg_match('/PROJECT_VERSION.+((.+))')/', $ver, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } } } }
/**
-
Class M1_Config_Adapter_Merchium */ class M1_Config_Adapter_Merchium extends M1_Config_Adapter { public function __construct() { global $config;
$this->setHostPort($config['db_host']); $this->dbName = $config['db_name']; $this->userName = $config['db_user']; $this->password = $config['db_password'];
$imagesDir = $config['storage']['images']['dir'] . $config['storage']['images']['prefix'];
$this->imagesDir = str_replace(M1_STORE_BASE_DIR, '', $imagesDir);
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (defined('MAX_FILES_IN_DIR')) { $this->cartVars['cs_max_files_in_dir'] = MAX_FILES_IN_DIR; }
if (defined('PRODUCT_VERSION')) { $this->cartVars['dbVersion'] = PRODUCT_VERSION; } } }
/**
-
Class M1_Config_Adapter_Tomatocart / class M1_Config_Adapter_Tomatocart extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'includes/configure.php'); preg_match("/define('DB_DATABASE', '(.+)');/", $config, $match); $this->dbName = $match[1]; preg_match("/define('DB_SERVER_USERNAME', '(.+)');/", $config, $match); $this->userName = $match[1]; preg_match("/define('DB_SERVER_PASSWORD', '(.)');/", $config, $match); $this->password = $match[1]; preg_match("/define('DB_SERVER', '(.+)');/", $config, $match); $this->setHostPort( $match[1] );
preg_match("/define('DIR_WS_IMAGES', '(.+)');/", $config, $match); $this->imagesDir = $match[1];
$this->categoriesImagesDir = $this->imagesDir . 'categories/'; $this->productsImagesDir = $this->imagesDir . 'products/'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturers/'; if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'application_top.php')) { $conf = file_get_contents(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'application_top.php'); preg_match("/define('PROJECT_VERSION.*/", $conf, $match);
if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','_',"'",');'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } else { //if another version if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php')) { @require M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php'; if (defined('PROJECT_VERSION') && PROJECT_VERSION != '') { $version = PROJECT_VERSION; preg_match("/\d./", $version, $vers); if (isset($vers[0]) && !empty($vers[0])) { $version = $vers[0]; $version = str_replace(array(' ','-','_'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } } } } } }
/**
-
Class M1_Config_Adapter_Cubecart */ class M1_Config_Adapter_Cubecart extends M1_Config_Adapter { public function __construct() { include_once(M1_STORE_BASE_DIR . 'includes/global.inc.php');
$this->setHostPort($glob['dbhost']); $this->dbName = $glob['dbdatabase']; $this->userName = $glob['dbusername']; $this->password = $glob['dbpassword'];
if (isset($glob['charset']) && $glob['charset'] != '') { $this->cartVars['dbCharSet'] = $glob['charset']; }
$this->imagesDir = 'images'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; $dirHandle = opendir(M1_STORE_BASE_DIR . 'language/');
//settings for cube 5 $languages = array(); while ($dirEntry = readdir($dirHandle)) { $info = pathinfo($dirEntry); $xmlflag = false;
if (isset($info['extension'])) { $xmlflag = strtoupper($info['extension']) != 'XML' ? true : false; }
if (is_dir(M1_STORE_BASE_DIR . 'language/' . $dirEntry) || $dirEntry == '.' || $dirEntry == '..' || strpos($dirEntry, '_') !== false || $xmlflag ) { continue; }
$configXml = simplexml_load_file(M1_STORE_BASE_DIR . 'language/' . $dirEntry); if ($configXml->info->title) { $lang['name'] = (string)$configXml->info->title; $lang['code'] = substr((string)$configXml->info->code, 0, 2); $lang['locale'] = substr((string)$configXml->info->code, 0, 2); $lang['currency'] = (string)$configXml->info->default_currency; $lang['fileName'] = str_replace('.xml', '', $dirEntry); $languages[] = $lang; } }
if (!empty($languages)) { $this->cartVars['languages'] = $languages; }
if (@file_exists(M1_STORE_BASE_DIR . 'ini.inc.php')) { $conf = file_get_contents (M1_STORE_BASE_DIR . 'ini.inc.php'); preg_match("/ini['ver']./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','',"'",');',';',')'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } else { preg_match("/define('CC_VERSION./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','',"'",');',';',')'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } } } elseif (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'ini.inc.php')) { $conf = file_get_contents (M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'ini.inc.php'); preg_match("/ini['ver']./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','',"'",');',';',')'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } else { preg_match("/define('CC_VERSION./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','',"'",');',';',')'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } } } } }
/**
-
Class M1_Config_Adapter_HikaShop */ class M1_Config_Adapter_HikaShop extends M1_Config_Adapter { public function __construct() { @require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jConfig = new JConfig();
$this->setHostPort($jConfig->host); $this->dbName = $jConfig->db; $this->userName = $jConfig->user; $this->password = $jConfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password; }
if (@file_exists(M1_STORE_BASE_DIR . 'administrator/components/com_hikashop/hikashop_j3.xml')) { $config = @simplexml_load_file(M1_STORE_BASE_DIR . 'administrator/components/com_hikashop/hikashop_j3.xml'); if (isset($config->version)) { $this->cartVars['dbVersion'] = (string)$config->version; } }
$this->imagesDir = 'images/com_hikashop/upload/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Ubercart */ class M1_Config_Adapter_Ubercart extends M1_Config_Adapter { public function __construct() { @include_once M1_STORE_BASE_DIR . 'sites/default/settings.php';
if (@file_exists(M1_STORE_BASE_DIR . 'sites/all/modules/ubercart/uc_store/includes/coder_review_uc3x.inc') || @file_exists(M1_STORE_BASE_DIR . 'modules/ubercart/uc_store/includes/coder_review_uc3x.inc') || @file_exists(M1_STORE_BASE_DIR . 'modules/ubercart/uc_store/uc_store.info') ) {
/** @var array $databases */ $url = $databases['default']['default'];
$url['username'] = urldecode($url['username']); $url['password'] = isset($url['password']) ? urldecode($url['password']) : ''; $url['host'] = urldecode($url['host']); $url['database'] = urldecode($url['database']); if (isset($url['port'])) { $url['host'] = $url['host'] . ':' . $url['port']; }
$this->setHostPort($url['host']); $this->dbName = ltrim($url['database'], '/'); $this->userName = $url['username']; $this->password = $url['password'];
$fileInfo = M1_STORE_BASE_DIR . '/sites/all/modules/ubercart/uc_cart/uc_cart.info'; if (@file_exists($fileInfo)) { $str = file_get_contents($fileInfo); if (preg_match('/version\s+=\s+".+-(.+)"/', $str, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } }
} elseif (@file_exists(M1_STORE_BASE_DIR . '/modules/ubercart/uc_cart/uc_cart.info')) {
$url = parse_url($db_url);
$url['user'] = urldecode($url['user']); $url['pass'] = isset($url['pass']) ? urldecode($url['pass']) : ''; $url['host'] = urldecode($url['host']); $url['path'] = urldecode($url['path']); // Allow for non-standard MySQL port. if (isset($url['port'])) { $url['host'] = $url['host'] . ':' . $url['port']; }
$this->setHostPort($url['host']); $this->dbName = ltrim($url['path'], '/'); $this->userName = $url['user']; $this->password = $url['pass'];
$this->cartVars['dbVersion'] = 1;
}
$this->imagesDir = '/sites/default/files/'; if (!@file_exists(M1_STORE_BASE_DIR . $this->imagesDir)) { $this->imagesDir = '/files'; }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Xcart / class M1_Config_Adapter_Xcart extends M1_Config_Adapter { public function __construct() { if ((@file_exists(M1_STORE_BASE_DIR . '/includes/config.inc.php'))) { $config = file_get_contents(M1_STORE_BASE_DIR . '/includes/config.inc.php'); preg_match("/define('DB_DATABASE', '(.+)');/", $config, $match); $this->dbName = $match[1]; preg_match("/define('DB_USERNAME', '(.+)');/", $config, $match); $this->userName = $match[1]; preg_match("/define('DB_PASSWORD', '(.)');/", $config, $match); $this->password = $match[1]; preg_match("/define('DB_SERVER', '(.+)');/", $config, $match); $this->setHostPort( $match[1] );
preg_match("/define('WS_DIR_IMAGES',\s+WS_DIR_HTTP_HOME . '(.+)');/", $config, $match); $this->imagesDir = $match[1];
$this->categoriesImagesDir = $this->imagesDir . 'categories/'; $this->productsImagesDir = $this->imagesDir . 'products/'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturers/'; } elseif ((@file_exists(M1_STORE_BASE_DIR . '/etc/config.php'))) {
$config = parse_ini_file(M1_STORE_BASE_DIR . '/etc/config.php');
$this->host = $config['hostspec']; $this->setHostPort($config['hostspec']); $this->userName = $config['username']; $this->password = $config['password']; $this->dbName = $config['database']; $this->tablePrefix = $config['table_prefix'];
if (($version = $this->getCartVersionFromDb('value', 'config', "name = 'version'")) != '') { $this->cartVars['dbVersion'] = $version; }
$this->imagesDir = '/images'; $this->categoriesImagesDir = $this->imagesDir . '/category'; $this->productsImagesDir = $this->imagesDir . '/product'; $this->manufacturersImagesDir = $this->imagesDir . '/brand';
} else {
defined('XCART_START') || define('XCART_START', 1);
$config = file_get_contents(M1_STORE_BASE_DIR . 'config.php');
preg_match('/$sql_host.+'(.+)';/', $config, $match); $this->setHostPort($match[1]); preg_match('/$sql_user.+'(.+)';/', $config, $match); $this->userName = $match[1]; preg_match('/$sql_db.+'(.+)';/', $config, $match); $this->dbName = $match[1]; preg_match('/$sql_password.+'(.*)';/', $config, $match); $this->password = $match[1];
preg_match('/$sql_charset.+'(.*)';/', $config, $match); if (isset($match[1]) && $match[1] != '') { $this->cartVars['dbCharSet'] = $match[1]; }
$this->imagesDir = 'images/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (@file_exists(M1_STORE_BASE_DIR . 'VERSION')) { $version = file_get_contents(M1_STORE_BASE_DIR . 'VERSION'); $this->cartVars['dbVersion'] = preg_replace('/(Version| |\n)/', '', $version); } }
if (@file_exists(M1_STORE_BASE_DIR . 'classes/XLite.php')) { $xlite = file_get_contents(M1_STORE_BASE_DIR . 'classes/XLite.php'); preg_match('/XC_VERSION[ ]=[ ]('|")([0-9.]+)('|")/', $xlite, $matches); if (isset($matches[2])) { $this->cartVars['dbVersion'] = $matches[2]; } } } }
/**
-
Class M1_Config_Adapter_Arastta */ class M1_Config_Adapter_Arastta extends M1_Config_Adapter { public function __construct() { include_once(M1_STORE_BASE_DIR . '/config.php');
if (defined('DB_HOST')) { $this->setHostPort(DB_HOST); } else { $this->setHostPort(DB_HOSTNAME); }
if (defined('DB_USER')) { $this->userName = DB_USER; } else { $this->userName = DB_USERNAME; }
$this->password = DB_PASSWORD;
if (defined('DB_NAME')) { $this->dbName = DB_NAME; } else { $this->dbName = DB_DATABASE; }
$indexFileContent = ''; $startupFileContent = '';
if (@file_exists(M1_STORE_BASE_DIR . '/index.php')) { $indexFileContent = file_get_contents(M1_STORE_BASE_DIR . '/index.php'); }
if (@file_exists(M1_STORE_BASE_DIR . '/system/startup.php')) { $startupFileContent = file_get_contents(M1_STORE_BASE_DIR . '/system/startup.php'); }
if (preg_match("/define('\VERSION', '(.+)')/", $indexFileContent, $match) == 0) { preg_match("/define('\VERSION', '(.+)')/", $startupFileContent, $match); }
if (count($match) > 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); }
$this->imagesDir = 'image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (is_dir(M1_STORE_BASE_DIR . '/download')) { $this->cartVars['downloadDir'] = M1_STORE_BASE_DIR . '/download'; } } }
/**
-
Class M1_Config_Adapter_Zoey / class M1_Config_Adapter_Zoey extends M1_Config_Adapter { public function __construct() { // Zoey 1.X /*
- @var SimpleXMLElement */ $config = simplexml_load_file(M1_STORE_BASE_DIR . 'app/etc/local.xml'); $statuses = simplexml_load_file(M1_STORE_BASE_DIR . 'app/code/core/Mage/Sales/etc/config.xml');
$version = $statuses->modules->Mage_Sales->version;
$result = array();
if (version_compare($version, '1.4.0.25') < 0) { $statuses = $statuses->global->sales->order->statuses; foreach ($statuses->children() as $status) { $result[$status->getName()] = (string)$status->label; } }
if (@file_exists(M1_STORE_BASE_DIR . 'app/Mage.php')) { $ver = file_get_contents(M1_STORE_BASE_DIR . 'app/Mage.php'); if (preg_match("/getVersionInfo[^}]+'major' *=> *'(\d+)'[^}]+'minor' *=> *'(\d+)'[^}]+'revision' *=> *'(\d+)'[^}]+'patch' *=> *'(\d+)'[^}]+}/s", $ver, $match) == 1) { $mageVersion = $match[1] . '.' . $match[2] . '.' . $match[3] . '.' . $match[4]; $this->cartVars['dbVersion'] = $mageVersion; unset($match); } }
$this->cartVars['orderStatus'] = $result; $this->cartVars['AdminUrl'] = (string)$config->admin->routers->adminhtml->args->frontName; if (!$this->cartVars['dbCharSet'] && ($charSet = (string)$config->global->resources->default_setup->connection->initStatements) != '' ) { $this->cartVars['dbCharSet'] = str_replace('SET NAMES ', '', $charSet); }
// Flag to check if credentials should be loaded from local.xml $useZoeyLookup = false; if(file_exists(M1_STORE_BASE_DIR . 'lib/Zoey/Redis/Overlord.php')) { include_once M1_STORE_BASE_DIR . 'app/Mage.php'; $useZoeyLookup = true; Mage::app('default'); $config = Mage::getConfig()->getResourceConnectionConfig('default_setup')->asArray();
$this->setHostPort((string)$config['host']); $this->password = (string)$config['password']; $this->userName = (string)$config['username']; $this->dbName = (string)$config['dbname']; }
// Only check local.xml for config values if flag is false. if(!$useZoeyLookup) { $this->setHostPort((string)$config->global->resources->default_setup->connection->host); $this->userName = (string)$config->global->resources->default_setup->connection->username; $this->dbName = (string)$config->global->resources->default_setup->connection->dbname; $this->password = (string)$config->global->resources->default_setup->connection->password; }
$this->imagesDir = 'media/'; $this->categoriesImagesDir = $this->imagesDir . 'catalog/category/'; $this->productsImagesDir = $this->imagesDir . 'catalog/product/'; $this->manufacturersImagesDir = $this->imagesDir; @unlink(M1_STORE_BASE_DIR . 'app/etc/use_cache.ser'); } }
/**
-
Class M1_Config_Adapter_Shopware */ class M1_Config_Adapter_Shopware extends M1_Config_Adapter { public function __construct() { $envs = [ '.env', '../.env', '.env.local', '../.env.local', ];
$hasDbAccess = false;
foreach ($envs as $env) {
if (@file_exists(M1_STORE_BASE_DIR . $env)) {
$this->imagesDir = 'public/media/'; if (in_array($env, ['.env','.env.local',])) { $config = @file_get_contents(M1_STORE_BASE_DIR . $env); } elseif (in_array($env, ['../.env','../.env.local',])) { $config = @file_get_contents(M1_STORE_BASE_DIR . $env); $this->imagesDir = 'media/'; } preg_match('/DATABASE_URL\=mysql\:\/\/.*?\n/', $config, $configMatch); if(empty($configMatch)){ preg_match('/DATABASE_URL\="mysql\:\/\/(.*?)"/', $config, $configMatch); $configLine = $configMatch[1]; } else { $configLine = str_replace('DATABASE_URL=mysql://', '', trim($configMatch[0])); } preg_match("/\/(.*)$/", $configLine, $match); $this->dbName = $match[1]; preg_match("/^(.*?)\:/", $configLine, $match); $this->userName = $match[1]; preg_match("/\:(.*?)\@/", $configLine, $match); $this->password = (string)@$match[1]; preg_match("/\@(.*?)\:(.*?)\//", $configLine, $match); $host = $match[1]; $this->setHostPort($host . ':' . @$match[2]); if (($link = $this->connect()) && $link->connect()) { $hasDbAccess = true; break; }
} }
if (file_exists(M1_STORE_BASE_DIR . 'public/recovery/install/data/version')) { $version = @file_get_contents(M1_STORE_BASE_DIR . 'public/recovery/install/data/version'); $this->cartVars['dbVersion'] = trim($version); } elseif (file_exists(M1_STORE_BASE_DIR . 'recovery/install/data/version')) { $version = @file_get_contents(M1_STORE_BASE_DIR . 'recovery/install/data/version'); $this->cartVars['dbVersion'] = trim($version); } elseif (file_exists(M1_STORE_BASE_DIR . 'composer.lock')) { $version = @file_get_contents(M1_STORE_BASE_DIR . 'composer.lock');
if (preg_match('/"name":\s*"shopware/administration",\s*"version":\s*"([0-9 .]+?)",/si', $version, $match)) { $this->cartVars['dbVersion'] = $match[1]; } elseif (preg_match('/"name":\s*"shopware/administration",\s*"version":\s*"v([0-9 .]+?)",/si', $version, $match)) { $this->cartVars['dbVersion'] = $match[1]; } } elseif (file_exists(M1_STORE_BASE_DIR . '../composer.lock')) { $version = @file_get_contents(M1_STORE_BASE_DIR . '../composer.lock');
if (preg_match('/"name":\s*"shopware/administration",\s*"version":\s*"([0-9 .]+?)",/si', $version, $match)) { $this->cartVars['dbVersion'] = $match[1]; } elseif (preg_match('/"name":\s*"shopware/administration",\s*"version":\s*"v([0-9 .]+?)",/si', $version, $match)) { $this->cartVars['dbVersion'] = $match[1]; } } elseif (file_exists(M1_STORE_BASE_DIR . 'vendor/shopware/recovery/vendor/composer/installed.php')) { $version = include_once M1_STORE_BASE_DIR . 'vendor/shopware/recovery/vendor/composer/installed.php';
if (!empty($version['root']['version'])) { $this->cartVars['dbVersion'] = $version['root']['version']; } }
if ($hasDbAccess === false && @file_exists(M1_STORE_BASE_DIR . 'config.php')) { $config = @file_get_contents(M1_STORE_BASE_DIR . 'config.php'); preg_match("/(dbname'[ ]=>[ ]')(.+?)(',)/", $config, $match); $this->dbName = $match[2]; preg_match("/(username'[ ]=>[ ]')(.+?)(',)/", $config, $match); $this->userName = $match[2]; preg_match("/(password'[ ]=>[ ]')(.+?)(',)/", $config, $match); $this->password = (string)@$match[2]; preg_match("/(host'[ ]=>[ ]')(.+?)(',)/", $config, $match); $hostPort = $match[2]; preg_match("/(port'[ ]=>[ ]')(.+?)(',)/", $config, $match); $this->setHostPort($hostPort . ':' . @$match[2]);
if ($applicationphp = @file_get_contents(M1_STORE_BASE_DIR . 'engine/Shopware/Application.php')) { preg_match("/(const VERSION\s+= ')(.+)(';)/", $applicationphp, $match); $version = $match[2]; if ($version != '') { $this->cartVars['dbVersion'] = $version; } }
$this->imagesDir = 'media/image/'; }
if ($charSet = $this->getCharsetFromDb()) { $this->cartVars['dbCharSet'] = $charSet; }
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir; } }
/**
-
Class M1_Config_Adapter_Oscommerce22ms2 */ class M1_Config_Adapter_Oscommerce22ms2 extends M1_Config_Adapter { public function __construct() { $currentDir = getcwd();
chdir(M1_STORE_BASE_DIR);
@require M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'configure.php';
chdir($currentDir);
$this->imagesDir = DIR_WS_IMAGES;
$this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir;
if (defined('DIR_WS_PRODUCT_IMAGES')) { $this->productsImagesDir = DIR_WS_PRODUCT_IMAGES; }
if (defined('DIR_WS_ORIGINAL_IMAGES')) { $this->productsImagesDir = DIR_WS_ORIGINAL_IMAGES; }
$this->manufacturersImagesDir = $this->imagesDir;
$this->setHostPort(DB_SERVER); $this->userName = DB_SERVER_USERNAME; $this->password = DB_SERVER_PASSWORD; $this->dbName = DB_DATABASE; chdir(M1_STORE_BASE_DIR);
if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'application_top.php')) { $conf = file_get_contents(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'application_top.php'); preg_match("/define('PROJECT_VERSION./", $conf, $match); if (isset($match[0]) && !empty($match[0])) { preg_match("/\d./", $match[0], $project); if (isset($project[0]) && !empty($project[0])) { $version = $project[0]; $version = str_replace(array(' ','-','',"'",');'), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } } else { //if another oscommerce based cart if (@file_exists(M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php')) { @require M1_STORE_BASE_DIR . 'includes' . DIRECTORY_SEPARATOR . 'version.php'; if (defined('PROJECT_VERSION') && PROJECT_VERSION != '') { $version = PROJECT_VERSION; preg_match("/\d.*/", $version, $vers); if (isset($vers[0]) && !empty($vers[0])) { $version = $vers[0]; $version = str_replace(array(' ','-',''), '', $version); if ($version != '') { $this->cartVars['dbVersion'] = strtolower($version); } } //if zen_cart } else { if (defined('PROJECT_VERSION_MAJOR') && PROJECT_VERSION_MAJOR != '') { $this->cartVars['dbVersion'] = PROJECT_VERSION_MAJOR; }
if (defined('PROJECT_VERSION_MINOR') && PROJECT_VERSION_MINOR != '') { $this->cartVars['dbVersion'] .= '.' . PROJECT_VERSION_MINOR; } } }
} }
chdir($currentDir); } }
/**
- Class miSettings */ class miSettings { public $arr;
/**
- @return miSettings|null */ public function singleton() { static $instance = null; if ($instance == null) { $instance = new miSettings(); }
return $instance;
}
/**
- @param array $arr array
- @return void */ public function setArray($arr) { $this->arr[] = $arr; }
/**
- @return mixed */ public function getArray() { return $this->arr; } }
/**
-
Class M1_Config_Adapter_Summercart */ class M1_Config_Adapter_Summercart extends M1_Config_Adapter { public function __construct() { @include_once M1_STORE_BASE_DIR . 'include/miphpf/Config.php';
$instance = miSettings::singleton();
$data = $instance->getArray();
$this->setHostPort($data[0]['MI_DEFAULT_DB_HOST']); $this->dbName = $data[0]['MI_DEFAULT_DB_NAME']; $this->userName = $data[0]['MI_DEFAULT_DB_USER']; $this->password = $data[0]['MI_DEFAULT_DB_PASS']; $this->imagesDir = '/userfiles/';
$this->categoriesImagesDir = $this->imagesDir . 'categoryimages'; $this->productsImagesDir = $this->imagesDir . 'productimages'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturer';
if (@file_exists(M1_STORE_BASE_DIR . '/include/VERSION')) { $indexFileContent = file_get_contents(M1_STORE_BASE_DIR . '/include/VERSION'); $this->cartVars['dbVersion'] = trim($indexFileContent); } } }
/**
-
Class M1_Config_Adapter_Prostores */ class M1_Config_Adapter_Prostores extends M1_Config_Adapter { public function __construct() { $config = file_get_contents(M1_STORE_BASE_DIR . 'ps_config.php');
preg_match('/$db_host.+'(.+)';/', $config, $matches); $this->setHostPort($matches[1]);
preg_match('/$db_user.+'(.+)';/', $config, $matches); $this->userName = $matches[1];
preg_match('/$db_name.+'(.+)';/', $config, $matches); $this->dbName = $matches[1];
preg_match('/$db_password.+'(.*)';/', $config, $matches); $this->password = $matches[1];
unset($matches);
$this->imagesDir = 'catalog/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (($version = $this->getCartVersionFromDb('SchemaVersion', 'DatabaseShard', 'Status = 1')) != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
-
Class M1_Config_Adapter_Virtuemart */ class M1_Config_Adapter_Virtuemart extends M1_Config_Adapter { public function __construct() { require M1_STORE_BASE_DIR . '/configuration.php';
if (class_exists('JConfig')) {
$jconfig = new JConfig();
$this->setHostPort($jconfig->host); $this->dbName = $jconfig->db; $this->userName = $jconfig->user; $this->password = $jconfig->password;
} else {
$this->setHostPort($mosConfig_host); $this->dbName = $mosConfig_db; $this->userName = $mosConfig_user; $this->password = $mosConfig_password; }
if (@file_exists(M1_STORE_BASE_DIR . '/administrator/components/com_virtuemart/version.php')) { $ver = file_get_contents(M1_STORE_BASE_DIR . '/administrator/components/com_virtuemart/version.php'); if (preg_match('/$RELEASE.+'(.+)'/', $ver, $match) != 0) { $this->cartVars['dbVersion'] = $match[1]; unset($match); } }
$this->imagesDir = 'components/com_virtuemart/shop_image/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
if (!is_dir( M1_STORE_BASE_DIR . $this->imagesDir)) { $this->imagesDir = 'images/stories/virtuemart/'; $this->productsImagesDir = $this->imagesDir . 'product/'; $this->categoriesImagesDir = $this->imagesDir . 'category/'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturer/'; } } }
/**
-
Class M1_Config_Adapter_Oxid / class M1_Config_Adapter_Oxid extends M1_Config_Adapter { public function __construct() { //@include_once M1_STORE_BASE_DIR . "config.inc.php"; $config = file_get_contents(M1_STORE_BASE_DIR . 'config.inc.php'); preg_match("/dbName(.+)?=(.+)?'(.+)';/", $config, $match); $this->dbName = $match[3]; preg_match("/dbUser(.+)?=(.+)?'(.+)';/", $config, $match); $this->userName = $match[3]; preg_match("/dbPwd(.+)?=(.+)?'(.+)';/", $config, $match); $this->password = isset($match[3]) ? $match[3] : ''; preg_match("/dbHost(.+)?=(.+)?'(.)';/", $config, $match); $this->setHostPort($match[3]);
//check about last slash $this->imagesDir = 'out/pictures/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
//add key for decoding config values in oxid db //check slash $sConfigKey = null; $match = null;
if (@file_exists(M1_STORE_BASE_DIR . '/core/oxconfk.php')) { $keyConfigFile = file_get_contents(M1_STORE_BASE_DIR . '/core/oxconfk.php'); preg_match("/sConfigKey(.+)?=(.+)?"(.+)?";/", $keyConfigFile, $match); } else { preg_match("/this->sConfigKey(.+)?=(.+)?"'?["']\S*;/", $config, $match); }
if (empty($match) && @file_exists(M1_STORE_BASE_DIR . '/../vendor/oxid-esales/oxideshop-ce/source/Core/Config.php')) { $keyConfigFile = file_get_contents(M1_STORE_BASE_DIR . '/../vendor/oxid-esales/oxideshop-ce/source/Core/Config.php'); preg_match("/DEFAULT_CONFIG_KEY(.+)?=(.+)?"'?["']\S*;/", $keyConfigFile, $match); }
isset($match[3]) && $sConfigKey = $match[3]; $this->cartVars['sConfigKey'] = $sConfigKey; $version = $this->getCartVersionFromDb('OXVERSION', 'oxshops', 'OXACTIVE=1 LIMIT 1'); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
-
Class M1_Config_Adapter_Loaded7 */ class M1_Config_Adapter_Loaded7 extends M1_Config_Adapter { public function __construct() { include_once( M1_STORE_BASE_DIR . '/includes/config.php');
$this->setHostPort(DB_SERVER); $this->userName = DB_SERVER_USERNAME; $this->password = DB_SERVER_PASSWORD; $this->dbName = DB_DATABASE;
$this->imagesDir = '/' . DIR_WS_IMAGES; $this->categoriesImagesDir = $this->imagesDir . 'categories/'; $this->productsImagesDir = $this->imagesDir . 'products/'; $this->manufacturersImagesDir = $this->imagesDir . 'manufacturers/'; } }
/**
-
Class M1_Config_Adapter_Pinnacle */ class M1_Config_Adapter_Pinnacle extends M1_Config_Adapter { public function __construct() { include_once M1_STORE_BASE_DIR . 'content/engine/engine_config.php';
$this->imagesDir = 'images/'; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
//$this->Host = DB_HOST; $this->setHostPort(DB_HOST); $this->dbName = DB_NAME; $this->userName = DB_USER; $this->password = DB_PASSWORD;
$version = $this->getCartVersionFromDb('value', (defined('DB_PREFIX') ? DB_PREFIX : '') . 'settings', "name = 'AppVer'"); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
-
Class M1_Config_Adapter_Interspire */ class M1_Config_Adapter_Interspire extends M1_Config_Adapter { public function __construct() { require M1_STORE_BASE_DIR . 'config/config.php';
$this->setHostPort($GLOBALS['ISC_CFG']['dbServer']); $this->userName = $GLOBALS['ISC_CFG']['dbUser']; $this->password = $GLOBALS['ISC_CFG']['dbPass']; $this->dbName = $GLOBALS['ISC_CFG']['dbDatabase'];
if (isset($GLOBALS['ISC_CFG']['CharacterSet']) && $GLOBALS['ISC_CFG']['CharacterSet'] != '' ) { $this->cartVars['dbCharSet'] = $GLOBALS['ISC_CFG']['CharacterSet']; }
$this->imagesDir = $GLOBALS['ISC_CFG']['ImageDirectory']; $this->categoriesImagesDir = $this->imagesDir; $this->productsImagesDir = $this->imagesDir; $this->manufacturersImagesDir = $this->imagesDir;
defined('DEFAULT_LANGUAGE_ISO2') || define('DEFAULT_LANGUAGE_ISO2', $GLOBALS['ISC_CFG']['Language']);
$version = $this->getCartVersionFromDb('database_version', $GLOBALS['ISC_CFG']['tablePrefix'] . 'config', '1'); if ($version != '') { $this->cartVars['dbVersion'] = $version; } } }
/**
- Class M1_Pdo / class M1_Pdo { public $config = null; // config adapter public $result = array(); public $noResult = array('delete', 'update', 'move', 'truncate', 'insert', 'set', 'create', 'drop', 'replace', 'alter', '/', 'commit', 'start', 'load');
/** @var PDO $dataBaseHandle */ public $dataBaseHandle = null;
public $insertedId = 0; public $affectedRows = 0;
/**
- M1_Pdo constructor.
- @param M1_Config_Adapter $config configuration
- @return M1_Pdo */ public function __construct($config) { $this->config = $config; }
/**
- @return bool|null|PDO */ public function getDataBaseHandle() { if ($this->dataBaseHandle) { return $this->dataBaseHandle; }
$this->dataBaseHandle = $this->connect();
if (!$this->dataBaseHandle) {
exit('[ERROR] MySQL Query Error: Can not connect to DB');
}
return $this->dataBaseHandle;
}
/**
- @return bool|PDO */ public function connect() { $triesCount = 3; $host = $this->config->host; $port = ($this->config->port ? ('port=' . $this->config->port . ';') : ''); $socket = ($this->config->socket ? ('unix_socket=' . $this->config->socket . ';') : ''); $userName = $this->config->userName; $dbName = $this->config->dbName; $dsn = "mysql:host=$host;$port$socket dbname=$dbName";
$passVariations = array(stripslashes($this->config->password));
if (strpos($this->config->password, '\\') !== false) {
array_push($passVariations, $this->config->password, addslashes($this->config->password));
}
$password = array_shift($passVariations);
if (!empty($_REQUEST['set_names'])) {
$dsn .= ";charset=" . $_REQUEST['set_names'];
} else {
$dsn .= ";charset=utf8";
}
$forceExec = true;
$options = 'SET SESSION SQL_MODE="NO_AUTO_VALUE_ON_ZERO"';
if(defined('PDO::MYSQL_ATTR_INIT_COMMAND')){
if (!empty($_REQUEST['disable_checks'])) {
$forceExec = false;
$options .= ', SESSION FOREIGN_KEY_CHECKS=0';
}
}
while ($triesCount) {
try {
$link = new PDO(
$dsn,
$userName,
$password,
!$forceExec ? array (PDO::MYSQL_ATTR_INIT_COMMAND => $options) : null
);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($forceExec && !empty($_REQUEST['disable_checks'])) {
$link->exec('SET SESSION FOREIGN_KEY_CHECKS=0, SESSION SQL_MODE="NO_AUTO_VALUE_ON_ZERO"');
}
if (!empty($_REQUEST['set_names'])) {
$link->exec('SET NAMES ' . $_REQUEST['set_names']);
}
return $link;
} catch (PDOException $e) {
$triesCount--;
if ($e->getCode() == 1045 && !empty($passVariations)) {
$password = array_shift($passVariations);
continue;
}
if ($host === 'localhost') {
$host = '127.0.0.1';
$dsn = "mysql:host=$host;$port$socket dbname=$dbName";
if (!empty($_REQUEST['set_names'])) {
$dsn .= ";charset=" . $_REQUEST['set_names'];
} else {
$dsn .= ";charset=utf8";
}
}
if ($triesCount == 1) {
$password = sprintf(urldecode($password));
}
}
}
return false;
}
/**
- @param string $sql sql query
- @return array|bool */ public function localQuery($sql) { $result = array(); $dataBaseHandle = $this->getDataBaseHandle();
$sth = $dataBaseHandle->query($sql);
if (!$sth) {
return true;
}
$sql = trim($sql);
foreach ($this->noResult as $statement) {
if (stripos($sql, $statement) === 0) {
return true;
}
}
while (($row = $sth->fetch(PDO::FETCH_ASSOC)) != false) {
$result[] = $row;
}
return $result;
}
/**
-
@param string $sql sql query
-
@param int $fetchType fetch Type
-
@return array */ public function query($sql, $fetchType) { $result = array( 'result' => null, 'message' => '', 'fetchedFields' => array(), ); $dataBaseHandle = $this->getDataBaseHandle(); try { switch ($fetchType) { case 3: $dataBaseHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_BOTH); break; case 2: $dataBaseHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM); break; case 1: default: $dataBaseHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); break; }
$res = $dataBaseHandle->query($sql); $this->affectedRows = $res->rowCount(); $this->insertedId = $dataBaseHandle->lastInsertId(); } catch (PDOException $e) { if (stripos($e->getMessage(), 'foreign key constraint') !== false) { $this->localQuery('SET FOREIGN_KEY_CHECKS = 0'); $res = $this->query($sql, $fetchType); $this->localQuery('SET FOREIGN_KEY_CHECKS = 1'); return $res; } $errorinfo = $e->errorInfo; $result['mysql_error_num'] = @$errorinfo[1]; $result['message'] = '[ERROR] Mysql Query Error: ' . $e->getCode() . ', ' . $e->getMessage() . ' The query was: ' . $sql; return $result; }
if (!$res) {
$result['result'] = true;
return $result;
}
$sql = trim($sql);
foreach ($this->noResult as $statement) {
if (stripos($sql, $statement) === 0) {
$result['result'] = true;
return $result;
}
}
$rows = array();
while (($row = $res->fetch()) !== false) {
$rows[] = gzdeflate(serialize($row));
}
$result['result'] = $rows;
unset($res);
return $result;
}
/**
-
get dbCharset from database
-
@param string $default default charset
-
@return string */ public function getCharset($default = 'utf8') { if ($this->getDataBaseHandle()) { $charsetByDatabaseNameCondition = !empty($this->config->dbName) ? (' AND TABLE_SCHEMA = '' . $this->config->dbName .''') : '';
$res = $this->getDataBaseHandle()->query(" SELECT CHARACTER_SET_NAME as cs, count(CHARACTER_SET_NAME) as count FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME <> '' $charsetByDatabaseNameCondition GROUP BY CHARACTER_SET_NAME ORDER BY count DESC LIMIT 1 ", PDO::FETCH_ASSOC );
if ($row = $res->fetch()) { return $row['cs']; }
return $default; }
return $default;
}
/**
- @return mixed|string */ public function getServerInfo() { if ($this->getDataBaseHandle() instanceof PDO) { return $this->getDataBaseHandle()->getAttribute(PDO::ATTR_SERVER_VERSION); }
return '0.0.0';
}
/**
- @return string|int */ public function getLastInsertId() { return $this->insertedId; }
/**
- @return int */ public function getAffectedRows() { return $this->affectedRows; }
/**
- @return void */ public function __destruct() { $this->dataBaseHandle = null; } }
/**
-
Class M1_Bridge_Utils / class M1_Bridge_Utils { /*
- @param M1_Bridge $bridge
- @param $query
- @param $message
- @return bool|int|mixed */ public static function checkDuplicateKey(M1_Bridge $bridge, $query, $message) { if (stripos($message, 'Duplicate entry') === false) { return false; }
if (substr($message, -18) == " for key 'PRIMARY'") { return self::_getPrimaryKeyLastInsertId($message); }
return self::_getUniqueKeyLastInsertId($bridge, $query, $message); }
/**
- @param $message
- @return int|mixed / private static function _getPrimaryKeyLastInsertId($message) { preg_match('#Duplicate entry '(.)'#U', $message, $matches);
return (!isset($matches[1]) || strpos($matches[1], '-')) ? 0 : $matches[1];
}
/**
- @param M1_Bridge $bridge
- @param $query
- @param $message
- @return bool|int / private static function _getUniqueKeyLastInsertId(M1_Bridge $bridge, $query, $message) { preg_match('#Duplicate entry '(.)'.'(.)'#U', $message, $matches);
$tableName = null;
if (preg_match('#INTO\s+`(.*)`#U', $query, $table)) {
$tableName = $table[1];
unset($table);
}
if (!$tableName) {
return false;
}
$pattern = "#INTO\\s+.*\\s+\\((.*?)\\)\\s+VALUES\\s+\\((.*?)\\)#U";
if (!preg_match($pattern, $query, $fieldsMatches)) {
return false;
}
unset($fieldsMatches[0]);
$fields = explode('`, `', $fieldsMatches[1]);
$fields[0] = str_replace('`', '', $fields[0]);
$fields[count($fields) - 1] = str_replace('`', '', $fields[count($fields) - 1]);
$values = str_getcsv($fieldsMatches[2]);
if (!($combined = @array_combine($fields, $values))) {
return false;
}
$keys = array();
$primaryKey = false;
$res = $bridge->getLink()->localQuery('SHOW KEYS FROM ' . $tableName. " WHERE Key_name = '{$matches[2]}' OR Key_name = 'PRIMARY'");
if (empty($res)) {
return false;
}
foreach ($res as $row) {
if ($row['Key_name'] == 'PRIMARY') {
if (!$primaryKey) {
$primaryKey = $row['Column_name'];
} else {
return false;
}
} else {
in_array($row['Column_name'], $fields) and $keys[] = $row['Column_name'];
}
}
if (!$keys || !$primaryKey) {
return 0;
}
$conditions = array();
foreach ($keys as $key) {
$conditions[] = '`' . $key . '` = ' . $combined[$key];
}
$res = $bridge->getLink()->localQuery(
sprintf(
'SELECT `%s` FROM `%s` WHERE %s',
$primaryKey,
$tableName,
implode(' AND ', $conditions)
)
);
return isset($res[0][$primaryKey]) ? $res[0][$primaryKey] : false;
} }
/**
- Class M1_Mysqli */ class M1_Mysqli {
public $config = null; // config adapter public $result = array(); public $dataBaseHandle = null;
/**
- mysql constructor
- @param M1_Config_Adapter $config configuration
- @return M1_Mysqli */ public function __construct($config) { $this->config = $config; }
/**
- @return bool|null|mysqli */ public function getDataBaseHandle() { if ($this->dataBaseHandle) { return $this->dataBaseHandle; }
$this->dataBaseHandle = $this->connect();
if (!$this->dataBaseHandle) {
exit('[ERROR] MySQL Query Error: Can not connect to DB');
}
return $this->dataBaseHandle;
}
/**
- @return bool|null|resource */ public function connect() { $triesCount = 5; $fixPortOnTry = 3;
$link = null;
$host = $this->config->host;
$port = $this->config->port;
$socket = $this->config->socket;
$passVariations = array(stripslashes($this->config->password));
if (strpos($this->config->password, '\\') !== false) {
array_push($passVariations, $this->config->password, addslashes($this->config->password));
--$fixPortOnTry;
}
$password = array_shift($passVariations);
while (!$link) {
if (!$triesCount--) {
break;
}
$link = @mysqli_connect($host, $this->config->userName, $password, '', $port, $socket);
if (!$link) {
sleep(5);
if ((@mysqli_connect_errno() == 1045) && !empty($passVariations)) {
$password = array_shift($passVariations);
continue;
}
}
if ($triesCount == $fixPortOnTry) {
// fix invalid port and socket
$port = '';
$socket = '';
} elseif ($triesCount == 1) {
$password = sprintf($password);
}
}
if (!$link) {
return false;
} else {
mysqli_select_db($link, $this->config->dbName);
return $link;
}
}
/**
- @param string $sql sql query
- @return array */ public function localQuery($sql) { $result = array(); $dataBaseHandle = $this->getDataBaseHandle();
$sth = mysqli_query($dataBaseHandle, $sql);
if (is_bool($sth)) {
return $sth;
}
while (($row = mysqli_fetch_assoc($sth)) != false) {
$result[] = $row;
}
return $result;
}
/**
- @param string $sql sql query
- @param int $fetchType fetch Type
- @return array */ public function query($sql, $fetchType) { $result = array( 'result' => null, 'message' => '', );
$dataBaseHandle = $this->getDataBaseHandle();
if (!$dataBaseHandle) {
$result['message'] = '[ERROR] MySQL Query Error: Can not connect to DB';
return $result;
}
if (!empty($_REQUEST['set_names'])) {
mysqli_set_charset($dataBaseHandle, $_REQUEST['set_names']);
}
if (!empty($_GET['disable_checks'])) {
$this->localQuery('SET SESSION FOREIGN_KEY_CHECKS=0');
}
$this->localQuery("SET SESSION SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
switch ($fetchType) {
case 3:
$fetchMode = MYSQLI_BOTH;
break;
case 2:
$fetchMode = MYSQLI_NUM;
break;
case 1:
$fetchMode = MYSQLI_ASSOC;
break;
default:
$fetchMode = MYSQLI_ASSOC;
break;
}
$res = mysqli_query($dataBaseHandle, $sql);
$triesCount = 10;
if (($errno = mysqli_errno($dataBaseHandle)) == 1701) {
$this->localQuery('SET SESSION FOREIGN_KEY_CHECKS=0');
$res = mysqli_query($dataBaseHandle, $sql);
}
while (mysqli_errno($dataBaseHandle) == 2013) {
if (!$triesCount--) {
break;
}
// reconnect
$dataBaseHandle = $this->getDataBaseHandle();
if ($dataBaseHandle) {
if (isset($_REQUEST['set_names'])) {
@mysqli_query($dataBaseHandle, "SET NAMES " . @mysqli_real_escape_string($dataBaseHandle, $_REQUEST['set_names']));
}
// execute query once again
$res = mysqli_query($dataBaseHandle, $sql);
}
}
if (($errno = mysqli_errno($dataBaseHandle)) != 0) {
$result['mysqli_error_num'] = $errno;
$result['message'] = '[ERROR] Mysql Query Error: ' . $errno . ', ' . mysqli_error($dataBaseHandle) . ' The query was: ' . $sql;
return $result;
}
if (!$res instanceof mysqli_result) {
$result['result'] = $res;
return $result;
}
$fetchedFields = array();
while (($field = mysqli_fetch_field($res)) !== false) {
$fetchedFields[] = $field;
}
$rows = array();
while (($row = mysqli_fetch_array($res, $fetchMode)) !== null) {
$rows[] = gzdeflate(serialize($row));
}
$result['result'] = $rows;
$result['fetchedFields'] = $fetchedFields;
mysqli_free_result($res);
return $result;
}
/**
-
get dbCharset from database
-
@param string $default default charset
-
@return string */ public function getCharset($default = 'utf8') { if ($this->getDataBaseHandle()) { $charsetByDatabaseNameCondition = !empty($this->config->dbName) ? (' AND TABLE_SCHEMA = '' . $this->config->dbName .''') : '';
$res = mysqli_query($this->getDataBaseHandle(), " SELECT CHARACTER_SET_NAME as cs, count(CHARACTER_SET_NAME) as count FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME <> '' $charsetByDatabaseNameCondition GROUP BY CHARACTER_SET_NAME ORDER BY count DESC LIMIT 1 " );
if (!is_resource($res)) { return $default; }
if ($row = mysqli_fetch_assoc($res)) { return $row['cs']; }
return $default; }
return $default;
}
/**
- @return string */ public function getServerInfo() { if ($this->getDataBaseHandle()) { return mysqli_get_server_info($this->getDataBaseHandle()); }
return '0.0.0';
}
/**
- @return int */ public function getLastInsertId() { return mysqli_insert_id($this->dataBaseHandle); }
/**
- @return int */ public function getAffectedRows() { return mysqli_affected_rows($this->dataBaseHandle); }
/**
- @return void */ public function __destruct() { if ($this->dataBaseHandle) { mysqli_close($this->dataBaseHandle); }
$this->dataBaseHandle = null;
} }
/**
- Class M1_Bridge_WebSocketClient / class M1_Bridge_WebSocketClient { /* @var self[] $instance */ private static $instance = array();
/**
- Masks for data decode */ const MASK_125 = 125; const MASK_126 = 126; const MASK_127 = 127; const MASK_128 = 128; const MASK_254 = 254; const MASK_255 = 255;
/**
- Frame types for system coordination */ const FRAME_TYPE_TEXT = 'text'; const FRAME_TYPE_CLOSE = 'close'; const FRAME_TYPE_PING = 'ping'; const FRAME_TYPE_BRIDGE_ERROR = 'bridgeError'; const FRAME_TYPE_BRIDGE_ACTION = 'bridgeAction';
/**
- Connection type */ const TYPE = 'bridge';
/**
- @var string */ private $_head; private $_key; private $_server; private $_serverAddress; private $_serverPort; private $_hugePayload;
/**
- @param string $server
- @param string $port
- @param int $storeId
- @param int $migrationId
- @param string $process
- @return M1_Bridge_WebSocketClient
- @throws Exception */ public static function getInstance($server, $port, $storeId, $migrationId, $process) { $key = $storeId . $migrationId . $process;
if (!isset(self::$instance[$key])) {
$client = new self($server, $port, $storeId, $migrationId, $process);
self::$instance[$key] = $client;
$client->connect();
}
return self::$instance[$key];
}
/**
- M1_Bridge_WebSocketClient constructor.
- @param string $server
- @param string $port
- @param int $storeId
- @param int $migrationId
- @param string $process
- @throws Exception */ protected function __construct($server, $port, $storeId, $migrationId, $process) { $bytes = \function_exists('random_bytes') ? \random_bytes(16) : \uniqid() . \uniqid(); $this->_key = \base64_encode($bytes); $this->_serverAddress = $server; $this->_serverPort = $port;
$getParams = 'type=' . self::TYPE;
$getParams .= '&process=' . $process;
$storeId AND $getParams .= '&storeId=' . $storeId;
$migrationId AND $getParams .= '&mId=' . $migrationId;
$this->_head = "GET /?$getParams HTTP/1.1\r\n" .
"Upgrade: websocket\r\n" .
"Connection: Upgrade\r\n" .
"Host: $server\r\n" .
"Origin: $storeId\r\n" .
"Sec-WebSocket-Key: " . $this->_key . "\r\n" .
"Sec-WebSocket-Version: 13\r\n\r\n";
}
/** * */ protected function __clone() {}
/**
- @return bool|string
- @throws Exception */ public function connect() { $sock = @\fsockopen($this->_serverAddress, $this->_serverPort, $errno, $errstr, 10);
if (!$sock) {
throw new \Exception($errstr, $errno);
}
$this->_server = $sock;
$this->write($this->_head);
return $this->read();
}
/** * */ public function close() { if ($this->_server) { //\stream_socket_shutdown($this->socket, STREAM_SHUT_RDWR); $this->write($this->_hybi10Encode('close', self::FRAME_TYPE_CLOSE)); @\fclose($this->_server); $this->_server = null; } }
/**
- @param array $data
- @param string $type
- @return bool|int */ public function sendMessage(array $data, $type = self::FRAME_TYPE_TEXT) { if (!$this->_server) { return false; }
return $this->write($this->_hybi10Encode(\json_encode($data), $type));
}
/**
- @param array $data
- @return bool|int */ public function sendError(array $data) { if (!$this->_server) { return false; }
return $this->write($this->_hybi10Encode(\json_encode($data), self::FRAME_TYPE_BRIDGE_ERROR));
}
/**
- @param $message
- @return bool|int */ public function write($message) { $writed = @fwrite($this->_server, $message);
if ($writed === false) {
$code = socket_last_error();
echo PHP_EOL, 'ERROR!!! CODE: ', $code, ' Message: ', socket_strerror($code);
} elseif ($writed !== strlen($message)) {
echo PHP_EOL, 'ERROR!!! Message: ';
}
return $writed;
}
/**
- @param null $length
- @return bool|string */ public function read($length = null) { if (!$this->_server) { return ''; }
if ($length === null) {
return @\fread($this->_server, 8192);
}
$data = '';
while (($dataLen = strlen($data)) < $length) {
$buff = @\fread($this->_server, $length - $dataLen);
$data .= $buff;
}
return $data;
}
/**
- @return string|null */ public function receive() { $this->_hugePayload = '';
$response = null;
while (null === $response) {
$response = $this->_receiveFragment();
}
return $response;
}
/**
- @return string|null */ protected function _receiveFragment() { $payload = null;
if ($data = $this->read(2)) {
$final = (bool)(ord($data[0]) & 1 << 7);
$payloadLength = $this->_getPayloadLength($data);
$payload = $this->_getPayloadData($data, $payloadLength);
if (!$final) {
$this->_hugePayload .= $payload;
return null;
}
}
if ($this->_hugePayload) {
$payload = $this->_hugePayload .= $payload;
$this->_hugePayload = null;
}
return $payload;
}
/**
- @param string $data
- @return float|int */ private function _getPayloadLength($data) { $payloadLength = (int)ord($data[1]) & self::MASK_127; // Bits 1-7 in byte 1
if ($payloadLength > self::MASK_125) {
if ($payloadLength === self::MASK_126) {
$data = $this->read(2); // 126: Payload is a 16-bit unsigned int
} else {
$data = $this->read(8); // 127: Payload is a 64-bit unsigned int
}
$len = '';
$strLen = strlen($data);
for ($i = 0; $i < $strLen; $i++) {
$len .= sprintf('%08b', ord($data[$i]));
}
$payloadLength = \bindec($len);
}
return $payloadLength;
}
/**
- @param string $data
- @param int $payloadLength
- @return string */ private function _getPayloadData($data, $payloadLength) { // Masking? $mask = (bool)(ord($data[1]) >> 7); // Bit 0 in byte 1 $payload = ''; $maskingKey = ''; // Get masking key. if ($mask) { $maskingKey = $this->read(4); } // Get the actual payload, if any (might not be for e.g. close frames. if ($payloadLength > 0) { $data = $this->read($payloadLength); if ($mask) { // Unmask payload. for ($i = 0; $i < $payloadLength; $i++) { $payload .= ($data[$i] ^ $maskingKey[$i % 4]); } } else { $payload = $data; } }
return $payload;
}
/**
- @param $payload
- @param string $type
- @param bool $masked
- @return string */ protected function _hybi10Encode($payload, $type = self::FRAME_TYPE_TEXT, $masked = true) { $frameHead = array(); $payloadLength = strlen($payload);
if ($head = $this->_getFrameType($type)) {
$frameHead[0] = $head;
}
// set mask and payload length (using 1, 3 or 9 bytes)
if ($payloadLength > 65535) {
$payloadLengthBin = \str_split(\sprintf('%064b', $payloadLength), 8);
$frameHead[1] = ($masked === true) ? 255 : 127;
for ($i = 0; $i < 8; $i++) {
$frameHead[$i + 2] = \bindec($payloadLengthBin[$i]);
}
// most significant bit MUST be 0 (close connection if frame too big)
if ($frameHead[2] > 127) {
$this->close();
return false;
}
} elseif ($payloadLength > 125) {
$payloadLengthBin = \str_split(\sprintf('%016b', $payloadLength), 8);
$frameHead[1] = ($masked === true) ? 254 : 126;
$frameHead[2] = \bindec($payloadLengthBin[0]);
$frameHead[3] = \bindec($payloadLengthBin[1]);
} else {
$frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength;
}
// convert frame-head to string:
foreach (\array_keys($frameHead) as $i) {
$frameHead[$i] = \chr($frameHead[$i]);
}
if ($masked === true) {
// generate a random mask:
$mask = array();
for ($i = 0; $i < 4; $i++) {
$mask[$i] = \chr(\rand(0, 255));
}
$frameHead = \array_merge($frameHead, $mask);
}
$frame = \implode('', $frameHead);
// append payload to frame:
for ($i = 0; $i < $payloadLength; $i++) {
$frame .= ($masked === true) ? $payload[$i] ^ $mask[$i % 4] : $payload[$i];
}
return $frame;
}
/**
- @param $type
- @return bool|int */ protected function _getFrameType($type) { switch ($type) { case self::FRAME_TYPE_TEXT : // first byte indicates FIN, Text-Frame (10000001): $frameHead = 129; break; case self::FRAME_TYPE_CLOSE : // first byte indicates FIN, Close Frame (10001000): $frameHead = 136; break; case self::FRAME_TYPE_PING : // first byte indicates FIN, Ping frame (10001001): $frameHead = 137; break; case self::FRAME_TYPE_BRIDGE_ACTION : // first byte indicates FIN, Ping frame (10001001): $frameHead = 139; break; case self::FRAME_TYPE_BRIDGE_ERROR : // first byte indicates FIN, Pong frame (10001010): $frameHead = 140; break; default: $frameHead = false; break; }
return $frameHead;
}
/** * */ public function __destruct() { $this->close(); } }
/**
-
Class M1_Bridge_Action_Deleteimages / class M1_Bridge_Action_Deleteimages { /*
- @param M1_Bridge $bridge bridge class
- @return string */ public function perform($bridge) { $result = array(); foreach ($_REQUEST['files'] as $fileInfo) { $result[$fileInfo['id']] = $this->_deleteFile($fileInfo['path']); }
echo serialize($result); }
/**
-
@param string $path
-
@return string */ protected function _deleteFile($path) { try { if ($this->cartType == 'PrestaShop' && (pathinfo($path, PATHINFO_EXTENSION)) !== 'jpg' ) { $path = str_replace(pathinfo($path, PATHINFO_EXTENSION), 'jpg', $path); }
$status = unlink(M1_STORE_BASE_DIR . $path); } catch (Exception $e) { $status = false; } catch (Throwable $e) { $status = false; }
if ($status) {
return 'OK';
} else {
return 'ERROR';
}
} }
/**
- Class M1_Bridge_Action_Phpinfo
/
class M1_Bridge_Action_Phpinfo
{
/*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { phpinfo(); } }
/**
- Class M1_Bridge_Action_Loadfromfile
/
class M1_Bridge_Action_Loadfromfile
{
/*
-
@param M1_Bridge $bridge bridge class
-
@return bool */ public function perform($bridge) { $errorMessage = false; if (isset($_REQUEST['tableName']) && isset($_REQUEST['data'])) {
$file = sys_get_temp_dir() . '/queryFile.txt';
$result = file_put_contents($file, gzinflate(base64_decode($_REQUEST['data']))); if ($result) { chmod($file, 0777);
try { $bridge->query("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); if (!empty($_GET['disable_checks'])) { $bridge->query('SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0'); } $bridge->query('SET character_set_database=utf8', (int)$_REQUEST['fetchMode']); $res = $bridge->query('LOAD DATA LOCAL INFILE "' . $file . '" IGNORE INTO TABLE ' . $_REQUEST['tableName'] . ' FIELDS TERMINATED BY ',' ENCLOSED BY "'"', (int)$_REQUEST['fetchMode']); if (!empty($_GET['disable_checks'])) { $bridge->query('SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS,0)'); } $bridge->query("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')"); } catch (Exception $e) { $errorMessage = $e->getMessage(); }
$res['message'] and $errorMessage = $res['message']; unlink($file); } else { $errorMessage = 'Cannot save file with inserts'; }
if (!$errorMessage) {
$result = serialize( array( 'res' => $res['result'], 'affectedRows' => $bridge->getLink()->getAffectedRows(), ) );
echo base64_encode(gzdeflate($result)); } else { echo $errorMessage; } } else { return false; } } }
-
/**
-
Class M1_Bridge_Action_CubecartLanguages / class M1_Bridge_Action_CubecartLanguages { /*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $dirHandle = opendir(M1_STORE_BASE_DIR . 'language/');
$languages = array();
while ($dirEntry = readdir($dirHandle)) { if (!is_dir(M1_STORE_BASE_DIR . 'language/' . $dirEntry) || $dirEntry == '.' || $dirEntry == '..' || strpos($dirEntry, '_') !== false ) { continue; }
$lang['id'] = $dirEntry; $lang['iso2'] = $dirEntry;
$configurationFile = 'config.inc.php';
if (!@file_exists(M1_STORE_BASE_DIR . 'language/' . $dirEntry . '/'. $configurationFile)) { $configurationFile = 'config.php'; }
if (!@file_exists( M1_STORE_BASE_DIR . 'language/' . $dirEntry . '/'. $configurationFile)) { continue; }
$str = file_get_contents(M1_STORE_BASE_DIR . 'language/' . $dirEntry . '/' . $configurationFile); preg_match('/' . preg_quote('$langName') . "[\s]=[\s]"'["'];/", $str, $match);
if (isset($match[1])) { $lang['name'] = $match[1]; $languages[] = $lang; } }
echo serialize($languages); } }
/**
- Class M1_Bridge_Action_Getfile */ class M1_Bridge_Action_Getfile { protected $_notAllowedFileTypes = array( 'php', 'html', 'htm', 'aspx', 'xml', 'phar', 'js', );
/**
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $filePath = $_GET['filePath']; $this->_getFile($filePath); }
/**
- @param string $filePath */ protected function _getFile($filePath = '') { $exts = $this->prepareExtensions();
if ($filePath) {
$pathInfo = @pathinfo(str_replace('../', '', $filePath));
str_replace($exts, '', $filePath, $count);
if (!$count && ((!empty($pathInfo['extension']) && !isset($this->_notAllowedFileTypes[$pathInfo['extension']]))
|| !isset($pathInfo['extension']))
) {
$fileLocation = M1_STORE_BASE_DIR . $filePath;
if (file_exists($fileLocation)) {
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
header('Cache-Control: public');
header('Content-Type: ' . mime_content_type($fileLocation));
header('Content-Transfer-Encoding: Binary');
header('Content-Length:' . filesize($fileLocation));
header('Content-Disposition: attachment; filename=' . $pathInfo['filename']);
readfile($fileLocation);
die();
}
}
}
header($_SERVER['SERVER_PROTOCOL'] . ' 404 OK');
echo 'Error: File not found.';
}
/**
- @return array */ protected function prepareExtensions() { $extensions = array();
foreach ($this->_notAllowedFileTypes as $value) {
$extensions[] = '.' . $value;
}
return $extensions;
} }
/**
-
Class M1_Bridge_Action_Getfsfile / class M1_Bridge_Action_Getfsfile { /*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $productsImage = (string)$_REQUEST['product_image'];
$imagesArray = array();
if ($productsImage != '') {
$productsImageExtension = substr($productsImage, strrpos($productsImage, '.')); $productsImageBase = str_replace($productsImageExtension, '', $productsImage);
if (strrpos($productsImage, '/')) { $productsImageMatch = substr($productsImage, strrpos($productsImage, '/') + 1); $productsImageMatch = str_replace($productsImageExtension, '', $productsImageMatch) . '_'; $productsImageBase = $productsImageMatch; }
$productsImageDirectory = str_replace($productsImage, '', substr($productsImage, strrpos($productsImage, '/')));
if ($productsImageDirectory != '') { $productsImageDirectory = DIR_WS_IMAGES . str_replace($productsImageDirectory, '', $productsImage) . '/'; } else { $productsImageDirectory = DIR_WS_IMAGES; }
$fileExtension = $productsImageExtension;
if ($dir = dir(M1_STORE_BASE_DIR . $productsImageDirectory)) { while ($file = $dir->read()) { if (!is_dir($productsImageDirectory . $file)) { if (substr($file, strrpos($file, '.')) == $fileExtension) { if (preg_match('/' . $productsImageBase . '/i', $file) == '1') { if ($file != $productsImage) { if ($productsImageBase . str_replace($productsImageBase, '', $file) == $file) { $imagesArray[] = $productsImageDirectory . $file; } } } } } }
if (count($imagesArray)) { sort($imagesArray); } $dir->close();
} }
echo serialize($imagesArray); } }
/**
- Class M1_Bridge_Action_Getmagentolog */ class M1_Bridge_Action_Getmagentolog { const DIR = 'var/log'; var $files = array( 'exception.log', 'system.log' ); const MAX_READ_LINE = 200;
/**
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { if (!@file_exists(M1_STORE_BASE_DIR . self::DIR)) { die('ERROR_LOG_DIR_NOT_EXIST'); }
foreach ($this->files as $file) {
$filename = M1_STORE_BASE_DIR . self::DIR . '/' . $file;
echo '<h2>Read file "' . $filename . '": </h2>';
if (!is_file($filename)) {
echo 'ERROR_FILE_NOT_EXISTS<br />';
continue;
}
if (filesize($filename) == 0) {
echo 'ERROR_FILE_IS_EMPTY<br />';
continue;
}
$lines = file($filename);
if (count($lines) > self::MAX_READ_LINE) {
$lines = array_slice($lines, count($lines) - self::MAX_READ_LINE, self::MAX_READ_LINE);
}
echo nl2br(implode('', $lines));
}
} }
/**
- Class M1_Bridge_Action_SocketConnection */ class M1_Bridge_Action_SocketConnection { const RESPONSE_BRIDGE_ERROR = 'BRIDGE_ERROR';
/**
- @param $bridge */ public function perform($bridge) { $error = false;
try {
$server = 'socket.shopping-cart-migration.com';
$port = isset($_GET['port']) ? $_GET['port'] : '';
$storeId = isset($_GET['storeId']) ? $_GET['storeId'] : '';
$migrationId = isset($_GET['migrationId']) ? $_GET['migrationId'] : '';
$process = isset($_GET['process']) ? $_GET['process'] : '';
if ($server && $port && $storeId && $migrationId && $process) {
$client = M1_Bridge_WebSocketClient::getInstance($server, $port, $storeId, $migrationId, $process);
while (true) {
if ($message = $client->receive()) {
$message = json_decode($message, true);
if ($message['type'] === $client::FRAME_TYPE_CLOSE) {
$client->close();
break;
} else {
$this->_processBridge($client, $message);
}
}
}
} else {
throw new Exception('Error! Socket server connection data is not valid!');
}
} catch (Exception $e) {
$error = $e->getMessage();
} catch (Throwable $e) {
$error = $e->getMessage();
}
if ($error) {
file_put_contents('error.txt', 'message: ' . var_export($error, true));
die(self::RESPONSE_BRIDGE_ERROR);
}
}
/**
-
@param M1_Bridge_WebSocketClient $client
-
@param array $message */ protected function _processBridge($client, $message) { try { $message = isset($message['message']) ? $message['message'] : array();
if ((isset($message['query']) && $message['query']) || (isset($message['form_params']) && $message['form_params'])) { $this->_prepareRequestParams($message);
if ($result = $this->_runAction()) { $client->sendMessage( array('message' => $result), $client::FRAME_TYPE_BRIDGE_ACTION ); } else { throw new Exception('Bridge action result is blank.'); } } else { throw new Exception('Request data is not valid!'); } } catch (Exception $exception) { $client->sendError(array( 'message' => self::RESPONSE_BRIDGE_ERROR, ));
throw $exception; } catch (Throwable $exception) { $client->sendError(array( 'message' => self::RESPONSE_BRIDGE_ERROR, ));
throw $exception; } }
/**
- @param array $message */ protected function _prepareRequestParams($message) { $_GET = isset($message['query']) ? $message['query'] : array(); $_POST = isset($message['form_params']) ? $message['form_params'] : array();
$_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
if (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) {
$_COOKIE = stripSlashesArray($_COOKIE);
$_FILES = stripSlashesArray($_FILES);
$_GET = stripSlashesArray($_GET);
$_POST = stripSlashesArray($_POST);
$_REQUEST = stripSlashesArray($_REQUEST);
}
}
/**
- @return false|string */ protected function _runAction() { ob_start();
if (!isset($_GET['action']) || $_GET['action'] != 'move') {
$adapter = new M1_Config_Adapter();
$bridge = new M1_Bridge($adapter->create());
} else {
$bridge = new M1_Bridge(array());
}
$bridge->run();
return ob_get_clean();
} }
/**
- Class M1_Bridge_Action_Carttype
/
class M1_Bridge_Action_Carttype
{
/*
- return cart type
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { echo $bridge->config->cartType; } }
/**
- Class M1_Bridge_Action_Getserverip
/
class M1_Bridge_Action_Getserverip
{
/*
- @param $bridge */ public function perform($bridge) { echo serialize(!empty($_SERVER['SERVER_ADDR']) ? array('ip' => $_SERVER['SERVER_ADDR']) : array()); } }
/**
-
Class M1_Bridge_Action_Testsavefile / class M1_Bridge_Action_Testsavefile { /*
- @param $bridge */ public function perform($bridge) { $file = sys_get_temp_dir() . '/queryFile.txt';
echo (int)(@file_put_contents($file, 'test-content')); } }
/**
- Class M1_Bridge_Action_Update */ class M1_Bridge_Action_Update { public $uri = M1_BRIDGE_DOWNLOAD_LINK; public $pathToFile = FILE;
/**
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $response = new stdClass();
$settings = new M1_Setting();
if (!$settings->allowedUpdate || $settings->setCustomAccess) {
$response->isError = false;
$response->message = "Bridge is custom, update skip.";
$this->_viewResponse($response);
}
if (!($this->_checkBridgeDirPermission() && $this->_checkBridgeFilePermission())) {
$response->isError = false;
$response->message = "Bridge Update couldn't be performed. Please change permission for bridge folder to 777 "
. "and bridge.php file inside it to 666";
$this->_viewResponse($response);
}
if (($bridgeData = $this->_downloadFile()) === false) {
$response->isError = false;
$response->message = "Bridge Version is outdated. Files couldn't be updated automatically. Please set write permission "
. "or re-upload files manually.";
$this->_viewResponse($response);
}
$this->_viewResponse($this->_saveBridge($bridgeData));
}
/**
- @param string $bridgeData
- @return stdClass */ protected function _saveBridge ($bridgeData) { $response = new stdClass();
if (!$this->_writeToFile($bridgeData, str_replace('bridge.php', 'tmp_bridge.php', $this->pathToFile))) {
$response->isError = false;
$response->message = "Couln't create temporary file in bridge folder or file is write protected.";
return $response;
}
$checkBridge = @file_get_contents($_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT']
. str_replace('bridge.php', 'tmp_bridge.php', $_SERVER['SCRIPT_NAME'])
. '?action=checkbridge&ver=' . M1_BRIDGE_VERSION . '&token=' . M1_TOKEN);
switch ($checkBridge) {
case false:
$response->isError = false;
$response->message = 'Not connect to tmp bridge file';
unlink('./tmp_bridge.php');
return $response;
break;
case 'BRIDGE_OK':
if ($this->_writeToFile($bridgeData, $this->pathToFile)) {
$response->isError = false;
$response->message = 'Bridge successfully updated to latest version.';
unlink('./tmp_bridge.php');
return $response;
} else {
$response->isError = false;
$response->message = "Couln't write file in bridge folder or file is write protected.";
return $response;
}
break;
default:
$response->isError = false;
$response->message = $checkBridge;
unlink('./tmp_bridge.php');
return $response;
break;
}
}
/**
- @param stdClass $response response
- @return void */ protected function _viewResponse($response) { echo serialize($response); die; }
/**
- @param string $uri path
- @return stdClass */ protected function _fetch($uri) { $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = new stdClass();
$response->error = true;
$response->body = '';
if ($data = @json_decode(curl_exec($ch))) {
$response->error = $data->error ? $data->error : $data->md5 != md5($data->body);
$response->body = $data->body;
}
$response->httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$response->contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$response->contentLength = strlen($response->body);
curl_close($ch);
return $response;
}
/**
- @return bool */ protected function _checkBridgeDirPermission() { if (!is_writeable(dirname(FILE))) { @chmod(dirname(FILE), 0777); }
return is_writeable(dirname(__FILE__));
}
/**
- @return bool */ protected function _checkBridgeFilePermission() { $pathToFile = dirname(FILE) . DIRECTORY_SEPARATOR . 'bridge.php'; if (!is_writeable($pathToFile)) { @chmod($pathToFile, 0666); }
return is_writeable($pathToFile);
}
/**
- @return bool */ protected function _createTempDir() { @mkdir($this->pathToTmpDir, 0777); return @file_exists($this->pathToTmpDir); }
/**
- @return bool */ protected function _removeTempDir() { @unlink($this->pathToTmpDir . DIRECTORY_SEPARATOR . 'bridge.php_c2c'); @rmdir($this->pathToTmpDir); return !@file_exists($this->pathToTmpDir); }
/**
- @return bool|stdClass */ protected function _downloadFile() { $file = $this->_fetch($this->uri); if (!$file->error) { return $file; } return false; }
/**
- @param stdClass $data data
- @param string $file path
- @return int */ protected function _writeToFile($data, $file) { if (function_exists('file_put_contents')) { return file_put_contents($file, $data->body); }
$handle = @fopen($file, 'w+');
$bytes = fwrite($handle, $data->body);
@fclose($handle);
return $bytes;
} }
/**
-
Class M1_Bridge_Action_Getconfig / class M1_Bridge_Action_Getconfig { /*
- @param int $val memory limit value
- @return int */ public function parseMemoryLimit($val) { $last = strtolower($val[strlen($val) - 1]); $val = substr($val, 0, strlen($val) - 1); switch ($last) { case 'g': $val *= 1024; break; case 'm': $val *= 1024; break; case 'k': $val *= 1024; break; }
return $val; }
/**
- @return mixed */ public function getMemoryLimit() { $memoryLimit = trim(@ini_get('memory_limit')); if (strlen($memoryLimit) === 0) { $memoryLimit = '0'; }
$memoryLimit = $this->parseMemoryLimit($memoryLimit);
$maxPostSize = trim(@ini_get('post_max_size'));
if (strlen($maxPostSize) === 0) {
$maxPostSize = '0';
}
$maxPostSize = $this->parseMemoryLimit($maxPostSize);
$suhosinMaxPostSize = trim(@ini_get('suhosin.post.max_value_length'));
if (strlen($suhosinMaxPostSize) === 0) {
$suhosinMaxPostSize = '0';
}
$suhosinMaxPostSize = $this->parseMemoryLimit($suhosinMaxPostSize);
if ($suhosinMaxPostSize == 0) {
$suhosinMaxPostSize = $maxPostSize;
}
if ($maxPostSize == 0) {
$suhosinMaxPostSize = $maxPostSize = $memoryLimit;
}
return min($suhosinMaxPostSize, $maxPostSize, $memoryLimit);
}
/**
- @return bool */ public function isZlibSupported() { return function_exists('gzdecode'); }
/**
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { if (!defined('DEFAULT_LANGUAGE_ISO2')) { define('DEFAULT_LANGUAGE_ISO2', ''); //variable for Interspire cart }
if (!$bridge->config->cartVars['dbCharSet']) {
$bridge->config->cartVars['dbCharSet'] = $bridge->config->getCharsetFromDb();
}
$result = array(
'images' => array(
'imagesPath' => $bridge->config->imagesDir, // path to images folder - relative to store root
'categoriesImagesPath' => $bridge->config->categoriesImagesDir,
'categoriesImagesPaths' => $bridge->config->categoriesImagesDirs,
'productsImagesPath' => $bridge->config->productsImagesDir,
'productsImagesPaths' => $bridge->config->productsImagesDirs,
'manufacturersImagesPath' => $bridge->config->manufacturersImagesDir,
'manufacturersImagesPaths' => $bridge->config->manufacturersImagesDirs,
),
'languages' => $bridge->config->languages,
'baseDirFs' => M1_STORE_BASE_DIR, // filesystem path to store root
'defaultLanguageIso2' => $bridge->config->languageIso2 ? $bridge->config->languageIso2 : DEFAULT_LANGUAGE_ISO2,
'databaseName' => $bridge->config->dbName,
'memoryLimit' => $this->getMemoryLimit(),
'zlibSupported' => $this->isZlibSupported(),
//'orderStatus' => $bridge->config->orderStatus,
'cartVars' => $bridge->config->cartVars,
'timeZone' => date('P'),
'passModuleVersion' => $bridge->config->passModuleVersion,
'moduleNames' => $bridge->config->moduleNames,
);
echo serialize($result);
} }
/**
- Class M1_Bridge_Action_Querymultiple
/
class M1_Bridge_Action_Querymultiple
{
/*
-
@param M1_Bridge $bridge bridge class
-
@return bool */ public function perform($bridge) { if (isset($_REQUEST['query']) && isset($_REQUEST['fetchMode'])) {
$result = false;
$queries = unserialize(gzinflate(base64_decode($_REQUEST['query']))); $query = array_shift($queries); $queryRes = $this->processQuery($bridge, $query); if ($queryRes !== false) { $result[md5(str_replace(array("\n", "\t", "\r", ' '), '', $query))] = $queryRes; } else { return false; }
$lastInsert = $queryRes['insertId'];
foreach ($queries as $query) { $query = str_replace('C2C_LAST_INSERT_ID', $lastInsert, $query); $queryRes = $this->processQuery($bridge, $query); if ($queryRes !== false) { $result[md5(str_replace(array("\n", "\t", "\r", ' '), '', $query))] = $queryRes; } else { return false; } }
echo base64_encode(gzdeflate(serialize($result))); } else { return false; } }
-
/**
- @param M1_Bridge $bridge
- @param string $query
- @return array|false */ public function processQuery($bridge, $query) { $res = $bridge->query($query, (int)$_REQUEST['fetchMode']);
if (is_array($res['result']) || is_bool($res['result'])) {
return array(
'res' => $res['result'],
'fetchedFields' => @$res['fetchedFields'],
'insertId' => $bridge->getLink()->getLastInsertId(),
'affectedRows' => $bridge->getLink()->getAffectedRows(),
'query' => $query,
);
} elseif (strstr($query, '__REPLACE__')) {
preg_match('/\/\*(.*)\*\/(.*)/s', $query, $matches);
if (isset($matches[1]) && isset($matches[2])) {
$query = trim($matches[2]);
$replaces = explode('__END_REPLACE__', $matches[1]);
foreach ($replaces as $replace) {
if (!$replace) {
continue;
}
if (strstr($replace, '__REPLACE__')) {
list($from, $to) = explode('__REPLACE__', $replace);
$query = str_replace($from, $to, $query);
}
}
return $this->processQuery($bridge, $query);
}
}
echo base64_encode(gzdeflate($res['message']));
return false;
} }
/**
- Class M1_Bridge_Action_Clearcache
/
class M1_Bridge_Action_Clearcache
{
/*
- clear cart cache
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { switch ($bridge->config->cartType) { case 'PrestaShop': $this->prestashopClearCache(); return; case 'Opencart': $this->opencartClearCache(); break; case 'Magento': $this->magentoClearCache(); return; case 'Woocommerce': $this->woocommerceClearCache($bridge); break; case 'Zoey': $this->zoeyClearCache(); break; case 'Shopware': $this->shopwareClearCache(); break; case 'Cubecart': $this->cubecartClearCache(); break; case 'Interspire': $this->interspireClearCache(); break; case 'Xtcommerce': $this->xtcommerceClearCache(); break; case 'Ubercart': $this->ubercartClearCache(); break; case 'Tomatocart': $this->tomatocartClearCache(); break; case 'Virtuemart': $this->virtuemartClearCache(); break; case 'Oxid': $this->oxidClearCache(); break; case 'Xcart': $this->xcartClearCache(); return; case 'Cscart': $this->cscartClearCache(); break; case 'Merchium': $this->merchiumClearCache(); break; case 'Kickstart': $this->kickstartClearCache($bridge->link); break; } echo 'OK!'; }
/**
- @param array $dirs dirs
- @param string $fileExclude file
- @return bool */ public function removeGarbage($dirs = array(), $fileExclude = '') { $result = true;
foreach ($dirs as $dir) {
if (!$this->_removeDirRec($dir, false, $fileExclude)) {
$result = false;
}
}
return $result;
}
/**
- clear Magento cache
- @return void */ public function magentoClearCache() { if (!function_exists('exec') ) { echo 'ERROR: function exec is disabled or does not exist'; }
chdir('../');
$phpExecutable = getPHPExecutable();
$execStatus = false;
if ($phpExecutable) {
$memoryLimit = '-d memory_limit=1024M';
$maxExecutionTime = '-d max_execution_time=1800'; //30m
// MAGENTO 2.X
$magentoConfig2x = 'app/etc/env.php';
if (!$isMagento2x = file_exists(M1_STORE_BASE_DIR . $magentoConfig2x)) {
if ($isMagento2x = file_exists(M1_STORE_BASE_DIR . '/../' . $magentoConfig2x)) {
chdir('../');
}
}
if ($isMagento2x) {
$indexer = "nohup $phpExecutable $memoryLimit $maxExecutionTime bin/magento indexer:reindex;";
$imagesResize = "nohup $phpExecutable $memoryLimit $maxExecutionTime bin/magento catalog:images:resize;";
$clearCache = "nohup $phpExecutable $memoryLimit $maxExecutionTime bin/magento cache:flush;";
$rmCache = '';
if (@is_dir('var/cache')) {
$rmCache = "nohup rm -rf var/cache;";
}
$execStatus = @exec("($indexer $imagesResize $clearCache $rmCache) &>/dev/null &");
} else {
$execStatus = @exec("nohup $phpExecutable shell/indexer.php --reindexall > /dev/null 2>/dev/null & echo $!");
}
} else {
echo 'Error: can not find PHP executable file.';
}
if ($execStatus !== false) {
echo 'OK!';
} else {
echo 'ERROR';
}
}
/**
- @param $outPut
- @return bool */ public function checkMagentoOutPut($outPut) { $statusOkTexts = array( 'been rebuilt successfully', 'index was rebuilt successfully', 'cache types', 'config', 'layout', 'block_html', 'collections', 'reflection', 'db_ddl', 'eav', 'customer_notification', 'full_page', 'config_integration', 'config_integration_api', 'translate', 'config_webservice', 'images resized successfully', ); $result = true;
foreach ($outPut as $key => $row) {
$rowCheck = false;
foreach ($statusOkTexts as $statusOkText) {
if (strpos($row, $statusOkText) !== false) {
$rowCheck = true;
break;
}
}
if (!$rowCheck) {
$result = false;
}
}
return $result;
}
/**
- clear Interspire cache
- @return void */ public function interspireClearCache() { $res = true; $file = M1_STORE_BASE_DIR . 'cache' . DIRECTORY_SEPARATOR . 'datastore' . DIRECTORY_SEPARATOR . 'RootCategories.php'; if (@file_exists($file)) { if (!unlink($file)) { $res = false; } }
if ($res === true) {
echo 'OK';
} else {
echo 'ERROR';
}
}
/**
- clear CubeCart cache
- @return void */ public function cubecartClearCache() { $ok = true;
if (@file_exists(M1_STORE_BASE_DIR . 'cache')) {
$dirHandle = opendir(M1_STORE_BASE_DIR . 'cache/');
while (false !== ($file = readdir($dirHandle))) {
if ($file != '.' && $file != '..' && !preg_match("/^index\.html?$/", $file) && !preg_match("/^\.htaccess?$/", $file) ) {
if (is_file(M1_STORE_BASE_DIR . 'cache/' . $file)) {
if (!unlink(M1_STORE_BASE_DIR . 'cache/' . $file)) {
$ok = false;
}
}
}
}
closedir($dirHandle);
}
if (@file_exists(M1_STORE_BASE_DIR . 'includes/extra/admin_cat_cache.txt')) {
unlink(M1_STORE_BASE_DIR . 'includes/extra/admin_cat_cache.txt');
}
if ($ok) {
echo 'OK';
} else {
echo 'ERROR';
}
}
/**
- clear Prestashop cache
- @return void */ public function prestashopClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'tools/smarty/compile/', M1_STORE_BASE_DIR . 'tools/smarty/cache/', M1_STORE_BASE_DIR . 'img/tmp/', M1_STORE_BASE_DIR . 'cache/smarty/compile/', M1_STORE_BASE_DIR . 'cache/smarty/cache/', );
if ($this->removeGarbage($dirs, 'index.php')) {
echo 'OK!';
} else {
echo 'ERROR';
}
}
/**
- clear OpenCart cache
- @return void */ public function opencartClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'system/cache/', );
$this->removeGarbage($dirs, 'index.html');
}
/**
- clear Xtcommerce cache
- @return void */ public function xtcommerceClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'cache/', );
if (!$this->removeGarbage($dirs, 'index.html')) {
echo PHP_EOL, 'Warning! Cache was not completely cleared!', PHP_EOL;
}
}
/**
- clear UberCart cache
- @return void */ public function ubercartClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'sites/default/files/imagecache/product/', M1_STORE_BASE_DIR . 'sites/default/files/imagecache/product_full/', M1_STORE_BASE_DIR . 'sites/default/files/imagecache/product_list/', M1_STORE_BASE_DIR . 'sites/default/files/imagecache/uc_category/', M1_STORE_BASE_DIR . 'sites/default/files/imagecache/uc_thumbnail/', );
$this->removeGarbage($dirs);
}
/**
- clear TomatoCart cache
- @return void */ public function tomatocartClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'includes/work/', );
$this->removeGarbage($dirs, '.htaccess');
}
/**
- Try to change permissions actually :)
- @return void */ public function virtuemartClearCache() { $pathToImages = 'components/com_virtuemart/shop_image';
$dirParts = explode('/', $pathToImages);
$path = M1_STORE_BASE_DIR;
foreach ($dirParts as $item) {
if ($item == '') {
continue;
}
$path .= $item . DIRECTORY_SEPARATOR;
@chmod($path, 0755);
}
}
/**
- clear Oxid cache
- @return void */ public function oxidClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'tmp/', );
$this->removeGarbage($dirs, '.htaccess');
}
/**
- clear XCart cache
- @return void */ public function xcartClearCache() { $dirs = array( M1_STORE_BASE_DIR . 'var/cache/', M1_STORE_BASE_DIR . 'var/datacache/', M1_STORE_BASE_DIR . 'var/log/', M1_STORE_BASE_DIR . 'var/resources/css/http/all', );
$status = $this->removeGarbage($dirs, '.htaccess');
@unlink(M1_STORE_BASE_DIR . 'var/.decorator.dbSchema.php');
if ($status) {
echo "OK!";
} else {
echo "ERROR";
}
}
/**
- clear CSCart cache
- @return void */ public function cscartClearCache() { $dir = M1_STORE_BASE_DIR . 'var/cache/'; $res = $this->_removeDirRec($dir, false);
if ($res) {
echo "OK", PHP_EOL;
} else {
echo "ERROR", PHP_EOL;
}
}
/**
- clear Merchium cache
- @return void */ public function merchiumClearCache() { fn_clear_cache(); echo 'OK'; }
/**
- @param string $dir directory
- @param bool $removeDir need to be removed
- @param string $fileExclude file exclude
- @return bool */ protected function _removeDirRec($dir, $removeDir = true, $fileExclude = '') { if (!@file_exists($dir)) { return true; }
$result = true;
if ($objs = glob($dir . '/*')) {
foreach ($objs as $obj) {
if ((trim($fileExclude) != '') && strpos($obj, $fileExclude) !== false) {
continue;
}
if (is_dir($obj)) {
$this->_removeDirRec($obj, true, $fileExclude);
} else {
if (!@unlink($obj)) {
$result = false;
}
}
}
}
if ($removeDir && !@rmdir($dir)) {
$result = false;
}
return $result;
}
/**
- clear KickStart cache
- @param M1_Mysql|M1_Pdo $link db handle
- @return void */ public function kickstartClearCache($link) { $res = $link->localQuery("SHOW TABLES LIKE 'cache%'"); foreach ($res as $row) { foreach ($row as $value) { $link->localQuery("TRUNCATE TABLE " . $value); } }
$link->localQuery("TRUNCATE TABLE watchdog");
}
/**
- clear WooCommerce cache
- @param M1_Bridge $bridge bridge class
- @return void */ public function woocommerceClearCache($bridge) { $link = $bridge->link; $tablePrefix = trim($bridge->config->tablePrefix);
// clear product attributes cache
$link->localQuery("
DELETE
FROM
" . $tablePrefix . "options
WHERE
option_name = '_transient_wc_attribute_taxonomies'"
);
// update TermsTaxonomy Count
$link->localQuery("
UPDATE
" . $tablePrefix . "term_taxonomy tt
SET
tt.count =
(
SELECT
COUNT(*) as total
FROM
" . $tablePrefix . "term_relationships r
JOIN
" . $tablePrefix . "posts p
ON r.object_id = p.ID
WHERE
r.term_taxonomy_id = tt.term_taxonomy_id
AND p.post_type = 'product'
AND p.post_parent = ''
)
WHERE
tt.taxonomy IN ('product_cat', 'product_type', 'product_tag', 'product_brand')"
);
}
/**
- clear Zoey Commerce cache
- @return void */ public function zoeyClearCache() { chdir('../');
$phpExecutable = getPHPExecutable();
if ($phpExecutable) {
@exec($phpExecutable . " shell/indexer.php --reindexall > /dev/null &");
} else {
echo 'Error: can not find PHP executable file.';
}
}
/**
- clear Shopware cache
- @return void */ public function shopwareClearCache() { $dir = M1_STORE_BASE_DIR . 'var/cache/'; $res = $this->_removeDirRec($dir, false);
if ($res) {
echo 'OK', PHP_EOL;
} else {
echo 'ERROR', PHP_EOL;
}
} }
/**
-
Class M1_Bridge_Action_Batchsavefile / class M1_Bridge_Action_Batchsavefile extends M1_Bridge_Action_Savefile { /*
- save file to server
- @param M1_Bridge $bridge bridge class
- @return string */ public function perform($bridge) { $result = array(); foreach ($_REQUEST['files'] as $fileInfo) { $result[$fileInfo['id']] = $this->_saveFile($fileInfo['source'], $fileInfo['target'], (int)$fileInfo['width'], (int)$fileInfo['height'], $fileInfo['local_source']); }
echo serialize($result); } }
/**
- Class M1_Bridge_Action_Selfdelete
/
class M1_Bridge_Action_Selfdelete
{
/*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $cache = new M1_Bridge_Action_Clearcache(); if ($cache->removeGarbage(array(DIR)) && @rmdir(DIR)) { die('Deleted successfully'); } die('Error occurred'); } }
/**
-
Class M1_Bridge_Action_Move / class M1_Bridge_Action_Move { /*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $filesToMove = array( 'bridge.php', 'config.php', ); $response = array( 'isError' => false, 'message' => 'OK', );
if (isset($_REQUEST['path'])) { if (!file_exists(dirname(FILE) . DIRECTORY_SEPARATOR . $_REQUEST['path'] . DIRECTORY_SEPARATOR . 'bridge2cart')) { mkdir(dirname(FILE) . DIRECTORY_SEPARATOR . $_REQUEST['path'] . DIRECTORY_SEPARATOR . 'bridge2cart'); }
foreach ($filesToMove as $fileToMove) { if (file_exists(dirname(FILE) . DIRECTORY_SEPARATOR . $fileToMove)) { $res = @rename( dirname(FILE) . DIRECTORY_SEPARATOR . $fileToMove, dirname(FILE) . DIRECTORY_SEPARATOR . $_REQUEST['path'] . DIRECTORY_SEPARATOR . 'bridge2cart' . DIRECTORY_SEPARATOR . $fileToMove );
if (!$res) { $response['isError'] = true; $response['message'] = 'Failed moving ' . $fileToMove; break; } } else { $response['isError'] = true; $response['message'] = 'Cannot find file ' . $fileToMove . ' to move'; break; }
}
if (!$response['isError']) { $files = glob('*'); foreach ($files as $file) { unlink($file); } $dir = dirname(FILE); @rmdir($dir); $dir = explode(DIRECTORY_SEPARATOR, $dir); array_pop($dir); $dir = DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $dir); @unlink($dir . DIRECTORY_SEPARATOR . 'readme.html'); @rmdir($dir); } }
$this->_viewResponse($response); }
/**
- @param array $response response data
- @return void */ protected function _viewResponse($response) { echo json_encode($response); die(); } }
/**
- Class M1_Bridge_Action_Query
/
class M1_Bridge_Action_Query
{
/*
-
@param M1_Bridge $bridge bridge class
-
@return bool */ public function perform($bridge) { if (isset($_REQUEST['query']) && isset($_REQUEST['fetchMode'])) {
$query = gzinflate(base64_decode($_REQUEST['query']));
$res = $bridge->query($query, (int)$_REQUEST['fetchMode']);
if (is_array($res['result']) || is_bool($res['result'])) {
$result = serialize( array( 'res' => $res['result'], 'fetchedFields' => @$res['fetchedFields'], 'insertId' => $bridge->getLink()->getLastInsertId(), 'affectedRows' => $bridge->getLink()->getAffectedRows(), ) );
echo base64_encode(gzdeflate($result)); } elseif(strstr($query, 'REPLACE')) { preg_match('//*(.)*/(.)/s', $query, $matches); if (isset($matches[1]) && isset($matches[2])) { $query = trim($matches[2]); $replaces = explode('END_REPLACE', $matches[1]); foreach ($replaces as $replace) { if (!$replace) { continue; }
if (strstr($replace, '__REPLACE__')) { list($from, $to) = explode('__REPLACE__', $replace); $query = str_replace($from, $to, $query); } } $_REQUEST['query'] = base64_encode(gzdeflate($query)); $this->perform($bridge); return;
} } else { echo base64_encode(gzdeflate($res['message'])); } } else { return false; } } }
-
/**
- Class M1_Bridge_Action_Basedirfs
/
class M1_Bridge_Action_Basedirfs
{
/*
- return base dir name
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { echo M1_STORE_BASE_DIR; } }
/**
- Class M1_Bridge_Action_Mysqlver
/
class M1_Bridge_Action_Mysqlver
{
/*
- @param M1_Bridge $bridge bridge class
- @return void */ public function perform($bridge) { $match = array(); preg_match('/^(\d+).(\d+).(\d+)/', $bridge->getLink()->getServerInfo(), $match); echo sprintf("%d%02d%02d", $match[1], $match[2], $match[3]); } }
/**
- Class M1_Bridge_Action_Apachemodules
/
class M1_Bridge_Action_Apachemodules
{
/*
- @param M1_Bridge $bridge bridge class
- @return void
*/
public function perform($bridge)
{
echo '
'; print_r(apache_get_modules()); echo '
'; } }
/**
- @return bool|string / function getPHPExecutable() { $phpExecutable = preg_replace("#/lib(64)?/.$#", "/bin/php", ini_get('extension_dir'));
if (!empty($phpExecutable = trim($phpExecutable)) && @file_exists($phpExecutable) && is_file($phpExecutable)) { return $phpExecutable; }
$paths = explode(PATH_SEPARATOR, getenv('PATH')); $paths[] = PHP_BINDIR; foreach ($paths as $path) { // we need this for XAMPP (Windows) if (isset($_SERVER["WINDIR"]) && strstr($path, 'php.exe') && @file_exists($path) && is_file($path)) { return $path; } else { $phpExecutable = $path . DIRECTORY_SEPARATOR . "php" . (isset($_SERVER["WINDIR"]) ? ".exe" : ""); if (@file_exists($phpExecutable) && is_file($phpExecutable)) { return $phpExecutable; } } }
return false; }
header('X-Robots-Tag: noindex'); header('X-C2C-Bridge: available');
define('M1_BRIDGE_VERSION', '21'); define('M1_BRIDGE_DOWNLOAD_LINK', 'https://app.shopping-cart-migration.com/api.get.bridge'); define('M1_BRIDGE_DIRECTORY_NAME', basename(getcwd()));
@ini_set('display_errors', 0); error_reporting(E_ERROR);
if (file_exists('bridge_config.php')) { @require_once 'bridge_config.php'; } else { @require_once 'config.php'; }
if (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) {
function stripSlashesArray($array) { return is_array($array) ? array_map('stripSlashesArray', $array) : stripslashes($array); }
$_COOKIE = stripSlashesArray($_COOKIE); $_FILES = stripSlashesArray($_FILES); $_GET = stripSlashesArray($_GET); $_POST = stripSlashesArray($_POST); $_REQUEST = stripSlashesArray($_REQUEST); }
M1_Config_Adapter::detectRootFolder();
if (!isset($_GET['action']) || $_GET['action'] != 'move') { $adapter = new M1_Config_Adapter(); $bridge = new M1_Bridge($adapter->create()); } else { $bridge = new M1_Bridge(array()); }
$bridge->run();?>`