* @package stMigrationSoteshopPlugin * @subpackage libs */ class stMigrationSoteshopHelper { const SALT = 'f37e02d876032f4335ceb2c97a4b831c'; protected static $rootCategory = null; public static function getCultureByLangId($lang_id) { $culture = array(0 => 'pl_PL', 1 => 'en_US', 2 => 'de', 3 => 'cs', 4 => 'ru'); return isset($culture[$lang_id]) ? $culture[$lang_id] : 'pl_PL'; } public static function xmlOptionsToArray($xml_options) { $xml_options = str_replace("\r\n", "\n", $xml_options); $attributes = explode("\n\n", $xml_options); return self::xmlOptionToArrayHelper($attributes, 0); } public static function xmlOptionToArrayHelper($attributes) { $arr = array(); foreach ($attributes as $attribute) { $tmp = explode("\n", $attribute); $name = trim($tmp[0]); unset($tmp[0]); if ($name == 'multi') { continue; } foreach ($tmp as $i => $option) { @list($opt_name, $opt_price, $opt_image) = explode(',', $option); $opt_name = trim($opt_name); $arr[$name][$opt_name]['price'] = trim($opt_price); $arr[$name][$opt_name]['image'] = trim($opt_image); } } return $arr; } public static function getAddress($crypt_street, $crypt_house, $crypt_flat) { $address = self::decrypt($crypt_street); if ($crypt_house || $crypt_flat) { $address .= ' '; } if ($crypt_house) { $address .= self::decrypt($crypt_house); } if ($crypt_house && $crypt_flat) { $address .= '/'; } if ($crypt_flat) { $address .= self::decrypt($crypt_flat); } return $address; } public static function getFullName($crypt_name, $crypt_surname) { return self::decrypt($crypt_name) . ' ' . self::decrypt($crypt_surname); } /** * Odkodowuje dane z wersji 3.x, 4.0 * * @param string $data Dane do odkodowania * * @return string Odkodowane dane */ public static function decrypt($data) { $pwd = md5(self::SALT); $data = urldecode($data); $key[] = ""; $box[] = ""; $temp_swap = ""; $pwd_length = 0; $pwd_length = strlen($pwd); for ($i = 0; $i < 255; $i++) { $key[$i] = ord(substr($pwd, ($i % $pwd_length) + 1, 1)); $box[$i] = $i; } $x = 0; for ($i = 0; $i < 255; $i++) { $x = ($x + $box[$i] + $key[$i]) % 256; $temp_swap = $box[$i]; @$box[$i] = $box[$x]; $box[$x] = $temp_swap; } $temp = ""; $k = ""; $cipherby = ""; $cipher = ""; $a = 0; $j = 0; for ($i = 0; $i < strlen($data); $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $temp = $box[$a]; @$box[$a] = $box[$j]; $box[$j] = $temp; @$k = $box[(($box[$a] + $box[$j]) % 256)]; $cipherby = ord(substr($data, $i, 1)) ^ $k; $cipher .= chr($cipherby); } return iconv('ISO-8859-2', 'UTF-8', $cipher); } public static function algorithm($password) { return md5($password); } /** * Oblicza kwotę netto na podstawie kwoty brutto i vatu * * @param float $price_with_vat Kwota brutto * @param float $vat Vat * * @return float Kwota netto */ public static function calculateNettoPrice($price_with_vat, $vat) { return $price_with_vat / (1 + $vat / 100); } public static function fixString($code) { $code = str_replace(" ", "-", $code); return preg_replace("/[^a-zA-Z0-9_-]/", "_", $code); } public static function getRootCategory() { if (null === self::$rootCategory) { $c = new Criteria(); $c->add(CategoryPeer::PARENT_ID, null, Criteria::ISNULL); self::$rootCategory = CategoryPeer::doSelectOne($c); if (null === self::$rootCategory) { $tmp = new Category(); $tmp->setCulture('pl_PL'); $tmp->setName('Kategorie'); $tmp->makeRoot(); $tmp->save(); $tmp->setScope($tmp->getId()); $tmp->save(); self::$rootCategory = $tmp; } } return self::$rootCategory; } } ?>