コード例 #1
0
 public function loadContent()
 {
     $v568d8e07bbe5575518d5005e559743c3 = umiRemoteFileGetter::get($this->url);
     if (!$v568d8e07bbe5575518d5005e559743c3) {
         trigger_error("Can't load \"{$v572d4e421e5e6b9bc11d815e8a027112}\" RSS.", E_USER_WARNING);
         return false;
     }
     if (function_exists('mb_detect_encoding')) {
         if (mb_detect_encoding($v568d8e07bbe5575518d5005e559743c3, "UTF-8, ISO-8859-1, GBK, CP1251") != "UTF-8") {
             $v568d8e07bbe5575518d5005e559743c3 = iconv("CP1251", "UTF-8//IGNORE", $v568d8e07bbe5575518d5005e559743c3);
             $v568d8e07bbe5575518d5005e559743c3 = preg_replace("/(encoding=\"windows-1251\")/i", "encoding=\"UTF-8\"", $v568d8e07bbe5575518d5005e559743c3);
         }
     }
     $this->xml = simplexml_load_string($v568d8e07bbe5575518d5005e559743c3);
 }
コード例 #2
0
		public function onCronSyncCurrency(iUmiEventPoint $event) {
			$regedit = regedit::getInstance();
			if(!$regedit->getVal('//modules/emarket/enable-currency')) return false;
			
			$config = mainConfiguration::getInstance();
			$sourceUrl = $config->get('modules', 'emarket.currency.sync.source');
			$xslPath = CURRENT_WORKING_DIR .'/xsl/currencies/' . $config->get('modules', 'emarket.currency.sync.xsl');
			
			$originalXml = umiRemoteFileGetter::get($sourceUrl);
			if(function_exists('mb_detect_encoding') && (mb_detect_encoding($originalXml, "UTF-8, ISO-8859-1, GBK, CP1251") != "UTF-8")) {
				$originalXml = iconv ("CP1251", "UTF-8", $originalXml);
				$originalXml = preg_replace("/(encoding=\"windows-1251\")/i", "encoding=\"UTF-8\"", $originalXml);
			}
			
			$xslt = new xsltProcessor;
			$dom = new DomDocument();
			$dom->loadXML($originalXml);
			$xslt->importStyleSheet(DomDocument::load($xslPath));
			$resultXml = $xslt->transformToXML($dom);
			$tmpPath = SYS_CACHE_RUNTIME . 'tmpcurrencies.xml';
			file_put_contents($tmpPath, $resultXml);
			
			$currenciesList = new baseXmlConfig($tmpPath);
			$currencies = $currenciesList->getList('/Exchange/Exchange_Rates', array (
				'code'		=> '/New_Country',
				'rate'		=> '/Rate',
				'nominal'	=> '/Nominal'
			));
			
			foreach($currencies as $currencyInfo) {
				$code = getArrayKey($currencyInfo, 'code');
				
				try {
					if($currency = $this->getCurrency($code)) {
						$currency->nominal = getArrayKey($currencyInfo, 'nominal');
						$currency->rate = getArrayKey($currencyInfo, 'rate');
						$currency->commit();
					}
				} catch(privateException $e) {}
			}
			
			unlink($tmpPath);
		}
コード例 #3
0
 public function stream_open($vd6fe1d0be6347b8ef2427fa629c04485, $v15d61712450a686a7f365adf4fef581f, $v93da65a9fd0004d9477aeac024e08e15, $v6385a5865e0b96f09e4142ab2d9e3736)
 {
     $vb99eb979e6f6efabc396f777b503f7e7 = cacheFrontend::getInstance();
     $vd6fe1d0be6347b8ef2427fa629c04485 = $this->parsePath($vd6fe1d0be6347b8ef2427fa629c04485);
     if ($vd6fe1d0be6347b8ef2427fa629c04485) {
         if ($v8d777f385d3dfec8815d20f7496026dc = $vb99eb979e6f6efabc396f777b503f7e7->loadData($vd6fe1d0be6347b8ef2427fa629c04485)) {
             return $this->setData($v8d777f385d3dfec8815d20f7496026dc);
         }
         $v8d777f385d3dfec8815d20f7496026dc = umiRemoteFileGetter::get($vd6fe1d0be6347b8ef2427fa629c04485);
         if ($this->sourceCharset != "UTF-8") {
             $v8d777f385d3dfec8815d20f7496026dc = iconv($this->sourceCharset, "UTF-8//IGNORE", $v8d777f385d3dfec8815d20f7496026dc);
         }
         if ($this->expire) {
             $vb99eb979e6f6efabc396f777b503f7e7->saveData($vd6fe1d0be6347b8ef2427fa629c04485, $v8d777f385d3dfec8815d20f7496026dc, $this->expire);
         }
         return $this->setData($v8d777f385d3dfec8815d20f7496026dc);
     }
     return true;
 }
コード例 #4
0
    public function process($template = null)
    {
        $currency = strtoupper(mainConfiguration::getInstance()->get('system', 'default-currency'));
        if ($currency == 'RUR') {
            $currency = 'RUB';
        }
        list($templateString, $modeItem) = def_module::loadTemplates("emarket/payment/dengionline/" . $template, 'form_block', 'mode_type_item');
        $modeTypeItems = array();
        $xml = '<request>
				<action>get_project_paymodes</action>
				<projectId>' . $this->object->project . '</projectId>
			</request>';
        $headers = array("Content-type" => "application/x-www-form-urlencoded");
        $paymentsXML = umiRemoteFileGetter::get('http://www.onlinedengi.ru/dev/xmltalk.php', false, $headers, array('xml' => $xml));
        $dom = new DOMDocument('1.0', 'utf-8');
        $dom->loadXML($paymentsXML);
        if ($dom->getElementsByTagName('paymentMode')->length) {
            foreach ($dom->getElementsByTagName('paymentMode') as $payment) {
                $modeTypeItems[] = def_module::parseTemplate($modeItem, array('id' => $payment->getAttribute('id'), 'label' => $payment->getAttribute('title'), 'banner' => $payment->getAttribute('banner')));
            }
        }
        $order = $this->order;
        $order->order();
        $orderId = $order->getId();
        $param = array();
        $param['formAction'] = "http://www.onlinedengi.ru/wmpaycheck.php?priznak=UMI";
        $param['project'] = $this->object->project;
        // Задаётся пользователем в настройках магазина, поле "ID проекта"
        $param['amount'] = $order->getActualPrice();
        $param['nickname'] = $orderId;
        $param['order_id'] = $orderId;
        $param['source'] = $this->object->source;
        // Задаётся пользователем в настройках магазина, поле "Source (если есть)"
        $param['comment'] = "Payment for order " . $orderId;
        $param['paymentCurrency'] = $currency;
        $param['subnodes:items'] = $param['void:mode_type_list'] = $modeTypeItems;
        $order->setPaymentStatus('initialized');
        return def_module::parseTemplate($templateString, $param);
    }
コード例 #5
0
 protected function get_response($request, $method = "GET", $params = array(), $headers = array())
 {
     $apiUrl = 'http://api-metrika.yandex.ru/';
     $regedit = regedit::getInstance();
     $token = (string) trim($regedit->getVal("//modules/stat/yandex-token"));
     if (!$token) {
         throw new publicAdminException(getLabel('label-error-no-token'));
     }
     $url = $apiUrl . $request . '/?oauth_token=' . $token;
     if (count($params) && is_array($params)) {
         $url .= '&' . http_build_query($params);
         $params = array();
     }
     $response = umiRemoteFileGetter::get($url, false, $headers, $params, true, $method);
     $result = preg_split("|(\r\n\r\n)|", $response);
     $headers = $result[0];
     $xml = $result[1];
     if (strpos($headers, '200 OK') === false) {
         if (strpos($headers, '401 Unauthorized') !== false) {
             throw new publicAdminException(getLabel('label-error-no-token'));
         } else {
             throw new publicAdminException($xml);
         }
     }
     $xml = str_replace(' xmlns="http://api.yandex.ru/metrika/"', ' id="' . $request . '"', $xml);
     return $xml;
 }
コード例 #6
0
 public function openXML($xml)
 {
     $url = "http://www.megaindex.ru/xml.php";
     $addHeaders = array("Content-type" => "application/x-www-form-urlencoded");
     $postVars = array('text' => $xml);
     if (!$this->cook) {
         $response = umiRemoteFileGetter::get($url, false, $addHeaders, $postVars, true);
         $result = preg_split("|(\r\n\r\n)|", $response);
         $header = array_shift($result);
         $response = implode('', $result);
         preg_match_all("!Set\\-Cookie\\: (.*)=(.*);!siU", $header, $matches);
         foreach ($matches[1] as $i => $k) {
             $this->cook .= "{$k}={$matches[2][$i]}; ";
         }
     } else {
         $addHeaders['Cookie'] = $this->cook;
         $response = umiRemoteFileGetter::get($url, false, $addHeaders, $postVars);
     }
     return $response;
 }
コード例 #7
0
 public function getDeliveryPrice(order $order)
 {
     $objects = umiObjectsCollection::getInstance();
     $deliveryAddress = $objects->getObject($order->delivery_address);
     if (!$deliveryAddress) {
         return "Невозможно автоматически определить стоимость";
     }
     $orderPrice = $order->getActualPrice();
     $weight = 0;
     $items = $order->getItems();
     foreach ($items as $item) {
         $element = $item->getItemElement();
         $itemWeight = (int) $element->getValue("weight");
         if ($itemWeight != 0) {
             $weight += $itemWeight * $item->getAmount();
         } else {
             return "Невозможно автоматически определить стоимость";
         }
     }
     $viewPost = $objects->getObject($this->object->viewpost)->getValue("identifier");
     if ($viewPost == 44 || $viewPost == 45) {
         $weight = $weight / 1000;
         $departureCity = $objects->getObject($this->object->departure_city);
         $departureCity = $departureCity instanceof umiObject ? $departureCity->getName() : "Москва";
         $city = $deliveryAddress->getValue("city");
         $response = $this->calculateSumEMS($price, $departureCity, $city, $weight, $min, $max, $flag);
         if ($flag == 'ok') {
             $price = $response->price;
             $min = $response->term->min;
             $max = $response->term->max;
             $flag = " {$price} руб. (займет от {$min} до {$max} дней)";
         }
         return $flag;
     } else {
         $typePost = $objects->getObject($this->object->typepost)->getValue("identifier");
         $value = $this->object->setpostvalue ? ceil($order->getActualPrice()) : 0;
         $zip = $deliveryAddress->getValue("index");
         $url = "http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost={$viewPost}&countryCode=643&typePost={$typePost}&weight={$weight}&value1={$value}&postOfficeId={$zip}";
         $content = umiRemoteFileGetter::get($url);
         if (preg_match("/<input id=\"key\" name=\"key\" value=\"(\\d+)\"\\/>/i", $content, $match)) {
             $key = trim($match[1]);
             $content = umiRemoteFileGetter::get($url, false, array('Content-type' => 'application/x-www-form-urlencoded'), array('key' => $key));
             $content = umiRemoteFileGetter::get($url);
         }
         if (preg_match("/span\\s+id=\"TarifValue\">([^<]+)<\\/span/i", $content, $match)) {
             $price = floatval(str_replace(",", ".", trim($match[1])));
             if ($price > 0) {
                 return $price;
             } elseif (preg_match("/span\\s+id=\"lblErrStr\">([^<]+)<\\/span/i", $content, $match)) {
                 return $match[1];
             }
         }
         return "Не определено. Свяжитесь с менеджером для уточнения информации.";
     }
 }
コード例 #8
0
 public function getYandexData($url, $method = "GET", $headers = array(), $params = array(), $responseCode = '200 OK')
 {
     $regedit = regedit::getInstance();
     $token = (string) trim($regedit->getVal("//modules/seo/yandex-token"));
     if (!$token) {
         throw new publicAdminException(getLabel('label-error-no-token'));
     }
     $headers["Authorization"] = "OAuth " . $token;
     $apiUrl = 'https://webmaster.yandex.ru';
     if (strpos($url, '/') === 0) {
         $url = $apiUrl . $url;
     }
     $response = umiRemoteFileGetter::get($url, false, $headers, $params, true, $method);
     $result = preg_split("|(\r\n\r\n)|", $response);
     $headerLines = $result[0];
     $xml = $result[1];
     $headerLines = preg_split("|(\r\n)|", $headerLines);
     $responseHeaders = array();
     foreach ($headerLines as $headerLine) {
         if (strpos($headerLine, ':')) {
             list($key, $value) = explode(": ", $headerLine);
             $responseHeaders[strtolower(trim($key))] = trim($value);
         } else {
             $responseHeaders['code'] = trim(preg_replace("#HTTP([^\\s]*)\\s#", '', trim($headerLine)));
         }
     }
     if ($responseHeaders['code'] != $responseCode) {
         if ($responseHeaders['code'] == '401 Unauthorized') {
             throw new publicAdminException(getLabel('label-error-no-token'));
         } else {
             throw new publicAdminException(getLabel('label-error-service-down'));
         }
     }
     switch ($responseCode) {
         case "302 Found":
         case "201 Created":
             return $responseHeaders['location'];
             break;
     }
     return $xml;
 }
コード例 #9
0
 /**
  * Загружает новые сообщения с сервера для данной системы.
  * 
  */
 public function getNewUmiMessages()
 {
     $newMessages = array();
     $regedit = regedit::getInstance();
     $lastConnect = $regedit->getVal('//umiMessages/lastConnectTime');
     if (!$lastConnect || $lastConnect < time() - 86400) {
         $lastMessageId = $regedit->getVal('//umiMessages/lastMessageId');
         if (!$lastMessageId) {
             $lastMessageId = 0;
         }
         $info = array();
         $info['keycode'] = $regedit->getVal('//settings/keycode');
         $info['last-message-id'] = $lastMessageId;
         $package = base64_encode(serialize($info));
         $url = 'http://messages.umi-cms.ru/udata/custom/getUmiMessages/' . $package . '/';
         $result = umiRemoteFileGetter::get($url);
         if ($result) {
             $old = libxml_use_internal_errors(true);
             $xml = simplexml_load_string($result);
             if ($xml && count($messages = $xml->xpath("//message")) > 0) {
                 foreach ($messages as $message) {
                     $id = (string) $message->attributes()->id;
                     $text = (string) $message;
                     $newMessages[$id] = $text;
                 }
             }
             libxml_use_internal_errors($old);
             $regedit->setVal('//umiMessages/lastConnectTime', time());
         }
     }
     return $newMessages;
 }
コード例 #10
0
 private function get_file($v572d4e421e5e6b9bc11d815e8a027112)
 {
     try {
         $result = umiRemoteFileGetter::get($v572d4e421e5e6b9bc11d815e8a027112);
         return $result;
     } catch (Exception $ve1671797c52e15f763380b45e841ec32) {
         throw new publicAdminException(getLabel("label-errors-13041"), 13041);
     }
 }
コード例 #11
0
            $vc887d69eddcd7c7f58c08995042fa392 = simplexml_load_string(umiRemoteFileGetter::get($ve2a0ca64b9696e59b6741d935f7fcfbe));
            $vea6db7e7b60eac0c99920c4c09e2b0c6 = $vc887d69eddcd7c7f58c08995042fa392->xpath('//property[@name = "short_description"]/value');
            $v9a0364b9e99bb480dd25e1f0284c8555 .= '<error code="' . $vcb5e100e5a9a3e7f6d1fd97512215282[0] . '" critical="' . $vcb5e100e5a9a3e7f6d1fd97512215282[1] . '"><![CDATA[' . (string) $vea6db7e7b60eac0c99920c4c09e2b0c6[0] . ']]></error>';
        }
    } else {
        $v9a0364b9e99bb480dd25e1f0284c8555 .= '<message>ok</message>';
    }
    $v9a0364b9e99bb480dd25e1f0284c8555 .= '</result>';
    echo $v9a0364b9e99bb480dd25e1f0284c8555;
    exit;
}
if ((is_null($vebcb36c005e769a1576aa2a8d49539ec) || is_null($v18415cf46dd0e74b620c558a691ce8ff)) && !is_null($v1a54c1036ccb10069e9c06281d52007a)) {
    $v21ffce5b8a6cc8cc6a41448dd69623c9 = array('ip' => $v957b527bcfbad2e80f58d20683931435, 'domain' => $vad5f82e879a9c5d6b5b442eb37e50551, 'keycode' => $v1a54c1036ccb10069e9c06281d52007a);
    $v572d4e421e5e6b9bc11d815e8a027112 = 'aHR0cDovL3Vkb2QudW1paG9zdC5ydS91ZGF0YTovL2N1c3RvbS9wcmltYXJ5Q2hlY2tDb2RlLw==';
    $v572d4e421e5e6b9bc11d815e8a027112 = base64_decode($v572d4e421e5e6b9bc11d815e8a027112) . base64_encode(serialize($v21ffce5b8a6cc8cc6a41448dd69623c9)) . '/';
    $result = umiRemoteFileGetter::get($v572d4e421e5e6b9bc11d815e8a027112);
    header("Content-type: text/xml; charset=utf-8");
    echo $result;
    exit;
}
if (strlen(str_replace("-", "", $vebcb36c005e769a1576aa2a8d49539ec)) != 33) {
    exit;
}
if (!$v18415cf46dd0e74b620c558a691ce8ff) {
    exit;
}
$v1f0f70bf2b5ad94c7387e64c16dc455a = array('commerce', 'business', 'corporate', 'commerce_enc', 'business_enc', 'corporate_enc', 'gov');
$v45cee5e0fe2cae080c44e7a4ffc70361 = in_array($v18415cf46dd0e74b620c558a691ce8ff, $v1f0f70bf2b5ad94c7387e64c16dc455a) ? 'pro' : $v18415cf46dd0e74b620c558a691ce8ff;
$ve8701a96f778fea2f6da0920e291d189 = umiTemplater::getSomething($v45cee5e0fe2cae080c44e7a4ffc70361, $vad5f82e879a9c5d6b5b442eb37e50551);
if ($ve8701a96f778fea2f6da0920e291d189 != substr($vebcb36c005e769a1576aa2a8d49539ec, 12)) {
    exit;
コード例 #12
0
 /**
  * Функция применяет или откатывает патч
  * 
  */
 public function getDiff()
 {
     if (CURRENT_VERSION_LINE == 'demo') {
         $message = getLabel('label-stop-in-demo');
         $code = "failed";
     } else {
         $regedit = regedit::getInstance();
         if (isset($_GET['id'])) {
             $id = $_GET['id'];
         }
         if (isset($_GET['type'])) {
             $type = $_GET['type'];
         }
         if (isset($_GET['repository'])) {
             $repository = $_GET['repository'];
         }
         if (isset($_GET['link'])) {
             $url = $_GET['link'];
         }
         $code = "";
         $message = "";
         if ($id != false) {
             $dir = "./sys-temp/diffs/" . $repository . "/";
             $filename = $dir . $id . ".patch";
             if ($type === 'apply') {
                 if (is_dir($dir) == false) {
                     if (!mkdir($dir, 0777, true)) {
                         $message = getLabel('label-diff-dir-create-failed');
                         $code = "failed";
                     }
                 }
                 umiRemoteFileGetter::get($url, $filename);
                 if (!file_exists($filename) || !filesize($filename) > 50) {
                     $message = getLabel('label-diff-get-failed');
                     $code = "failed";
                 }
             }
             $root = $_SERVER['DOCUMENT_ROOT'];
             $tryPatch = shell_exec("patch -v");
             if (!stristr($tryPatch, 'Copyright')) {
                 $message = getLabel('label-diff-not-patch');
                 $code = "failed";
             } else {
                 switch ($type) {
                     case "apply":
                         $shell = "cd " . $root . "; patch -p0 -b -i " . $filename;
                         $output = shell_exec($shell);
                         if (stristr($output, 'failed') || !$output) {
                             $message = getLabel('label-diff-applying-failed');
                             $code = "failed";
                         } else {
                             $regedit->setVar("//modules/autoupdate/applied_patches/" . $id . "/", NULL);
                             $message = getLabel('label-diff-applied');
                             $code = "ok";
                         }
                         break;
                     case "revert":
                         $shell = "cd " . $root . "; patch -p0 -b -R -i " . $filename;
                         $output = shell_exec($shell);
                         if (stristr($output, 'failed') || !$output) {
                             $message = getLabel('label-diff-reverting-failed');
                             $code = "failed";
                         } else {
                             $regedit->delVar("//modules/autoupdate/applied_patches/" . $id . "/");
                             $message = getLabel('label-diff-reverted');
                             $code = "ok";
                         }
                         break;
                     default:
                         $message = getLabel('label-diff-notype');
                         $code = "failed";
                         break;
                 }
             }
         }
     }
     $data['xml:response'] = '<response message="' . $message . '" code="' . $code . '"/>';
     $this->setDataType("settings");
     $this->setActionType("view");
     $this->setData($data);
     return $this->doData();
 }
コード例 #13
0
 public function sendSupportRequest()
 {
     if (defined('CURRENT_VERSION_LINE') && CURRENT_VERSION_LINE == 'demo') {
         $vfca1bff8ad8b3a8585abfb0ad523ba42 = array();
         $vfca1bff8ad8b3a8585abfb0ad523ba42['success'] = getLabel('no-ask-support-in-demo-mode');
         return def_module::parseTemplate('', $vfca1bff8ad8b3a8585abfb0ad523ba42);
     }
     $v4340fd73e75df7a9d9e45902a59ba3a4 = array("Content-type" => 'application/x-www-form-urlencoded; charset=utf-8');
     $vd1fc8eaf36937be0c3ba8cfe0a2c1bfe = umiRemoteFileGetter::get("http://www.umi-cms.ru/webforms/post_support/?ajax=1", false, $v4340fd73e75df7a9d9e45902a59ba3a4, $_POST);
     $vfca1bff8ad8b3a8585abfb0ad523ba42 = array();
     $vdd988cfd769c9f7fbd795a0f5da8e751 = new DOMDocument();
     if (@$vdd988cfd769c9f7fbd795a0f5da8e751->loadXML($vd1fc8eaf36937be0c3ba8cfe0a2c1bfe) === false) {
         $vfca1bff8ad8b3a8585abfb0ad523ba42['error'] = getLabel('error-invalid_answer');
     } else {
         $vfca1bff8ad8b3a8585abfb0ad523ba42[$vdd988cfd769c9f7fbd795a0f5da8e751->documentElement->nodeName] = html_entity_decode($vdd988cfd769c9f7fbd795a0f5da8e751->documentElement->nodeValue);
     }
     return def_module::parseTemplate('', $vfca1bff8ad8b3a8585abfb0ad523ba42);
 }