diff --git a/api/index.php b/api/index.php index ec32580..a136e35 100644 --- a/api/index.php +++ b/api/index.php @@ -1260,6 +1260,29 @@ switch($PARAM_1) } break; + case "vizitka": + { + //define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/vizitka/tmp/log.txt"); + //AddMessage2Log("_REQUEST['guid'] => ".$_REQUEST['guid'], "my_module_id"); + + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, API_HOST."/site/GetUserBusinessCard/?guid=".$_REQUEST['guid']); + curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 30); + curl_setopt($c, CURLOPT_TIMEOUT, 30); + curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($c, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); + + $response = curl_exec($c) or die(curl_error($c)); + + curl_close($c); + print $response; + + die(); + } + break; + default: { print json_encode([]); diff --git a/cron/yasprav.log b/cron/yasprav.log index 0811676..800a0a6 100644 --- a/cron/yasprav.log +++ b/cron/yasprav.log @@ -1 +1 @@ -
1 => MO1
2 => SP1
3 => BN1
4 => BG1
5 => VL1
6 => VR1
7 => EK1
8 => IR1
9 => KZ1
10 => KG1
11 => KL1
12 => KM1
13 => KR1
14 => KS2
15 => KS1
16 => LP1
17 => NC1
18 => NN1
19 => NV1
20 => NR1
21 => NS1
22 => OM1
23 => OR1
24 => PR1
25 => RD1
26 => RZ1
27 => SM1
28 => SR1
29 => SC1
30 => SK1
31 => ST1
32 => SG1
33 => TL1
34 => TM1
35 => UF1
36 => CB1
37 => CL1
38 => YR1
Ok! Сохранено по ссылке! 29.08.2022
\ No newline at end of file
+
1 => MO1
2 => SP1
3 => BN1
4 => BG1
5 => VL1
6 => VR1
7 => EK1
8 => IR1
9 => KZ1
10 => KG1
11 => KL1
12 => KM1
13 => KR1
14 => KS2
15 => KS1
16 => LP1
17 => NC1
18 => NN1
19 => NV1
20 => NR1
21 => NS1
22 => OM1
23 => OR1
24 => PR1
25 => RD1
26 => RZ1
27 => SM1
28 => SR1
29 => SC1
30 => SK1
31 => ST1
32 => SG1
33 => TL1
34 => TU1
35 => TM1
36 => UF1
37 => CB1
38 => CL1
39 => YR1
Ok! Сохранено по ссылке! 08.09.2022
\ No newline at end of file
diff --git a/local/components/evolution/vizitka/component.php b/local/components/evolution/vizitka/component.php
new file mode 100644
index 0000000..afac3f4
--- /dev/null
+++ b/local/components/evolution/vizitka/component.php
@@ -0,0 +1,116 @@
+ ".print_r($object, true)."\narParams => ".print_r($arParams, true), "my_module_id");
+		
+	//$ourData = file_get_contents($_SERVER["DOCUMENT_ROOT"]."/vizitka/data.json");
+	//$object = json_decode($ourData);
+		
+	//Очищаем временную директорию от файлоы старше 2 дней
+	$tmpfolders = $_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/';
+	$fileSystemIterator = new FilesystemIterator($tmpfolders);
+	$now = time();
+	foreach ($fileSystemIterator as $file) {
+		if ($now - $file->getCTime() >= 60 * 60 * 24 * 2) // 2 days 
+			unlink($tmpfolders.$file->getFilename());
+	}
+
+	//Разбираем данные из json
+	//if ($arParams["guid"] & $object->firstName) {
+	if ($object->firstName) {
+		$arParams["name"] = $object->firstName;
+		$arParams["family"] = $object->secondName;
+		$arParams["post"] = $object->post;
+		$arParams["dept"] = $object->department;
+		$arParams["company"] = "Эволюция Автолизинга";
+		$arParams["mob"] = $object->mobilePhone;
+		$arParams["mobcl"] = preg_replace('/[^0-9]/', '', $arParams["mob"]);
+		$arParams["tel"] = $object->workPhone;
+		$arParams["telcl"] = preg_replace('/[^0-9]/', '', $arParams["tel"]);
+		$arParams["teladd"] = $object->workPhoneCode;
+		$arParams["mail"] = $object->email;
+		$arParams["address"] = $object->address;
+		$arParams["whatsapp"] = $object->whatsAppOn;
+		$arParams["telegram"] = $object->telegram;
+		$arParams["www"] = "https://www.evoleasing.ru";
+		$arParams["image"] = $object->image;
+	
+//VCF для QR кода
+$qrtext	= 'BEGIN:VCARD
+VERSION:4.0
+N;CHARSET=UTF-8:'.$arParams["family"].';'.$arParams["name"].';;;
+FN;CHARSET=UTF-8:'.$arParams["name"].' '.$arParams["family"].'
+TITLE;CHARSET=UTF-8:'.$arParams["post"].'
+EMAIL:'.$arParams["mail"].'
+ORG;CHARSET=UTF-8:'.$arParams["company"].';'.$arParams["dept"].'
+TEL;type=CELL:'.$arParams["mob"].'
+URL;type=PREF:'.$arParams["www"].'
+LANG:ru-RU
+END:VCARD';
+	
+$qrimg = QRcode::png($qrtext, $_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/'.$arParams["guid"].'.png', 'L', 3, 2);
+//$im = imagecreatefrompng($_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/'.$arParams["guid"].'.png');
+	
+//Формируем vcf файл визитки для телефонов
+$arParams["vcarddata"] = 'BEGIN:VCARD
+VERSION:4.0
+N;CHARSET=UTF-8:'.$arParams["family"].';'.$arParams["name"].';;;
+FN;CHARSET=UTF-8:'.$arParams["name"].' '.$arParams["family"].'
+TITLE;CHARSET=UTF-8:'.$arParams["post"].'
+EMAIL:'.$arParams["mail"].'
+ORG;CHARSET=UTF-8:'.$arParams["company"].';'.$arParams["dept"].'
+TEL;type=CELL:'.$arParams["mob"].'
+URL;type=PREF:'.$arParams["www"].'
+PHOTO;ENCODING=BASE64;TYPE=JPEG:'.$arParams["image"].'
+LANG:ru-RU
+END:VCARD';
+$arParams["vcarddata"] = mb_convert_encoding($arParams["vcarddata"], "UTF-8");
+	
+	$arParams["vcffile"] = './tmp/'.$arParams["guid"].'.vcf';
+	$fp = fopen($arParams["vcffile"], "w");
+	fwrite($fp, $arParams["vcarddata"]);
+	fclose($fp);
+	
+//Формируем vcf файл визитки для компьютера
+$arParams["vcarddatawin"] = 'BEGIN:VCARD
+VERSION:4.0
+N;CHARSET=windows-1252:'.$arParams["family"].';'.$arParams["name"].';;;
+FN;CHARSET=windows-1252:'.$arParams["name"].' '.$arParams["family"].'
+TITLE;CHARSET=windows-1252:'.$arParams["post"].'
+EMAIL:'.$arParams["mail"].'
+ORG;CHARSET=windows-1252:'.$arParams["company"].';'.$arParams["dept"].'
+TEL;type=CELL:'.$arParams["mob"].'
+URL;type=PREF:'.$arParams["www"].'
+PHOTO;ENCODING=BASE64;TYPE=JPEG:'.$arParams["image"] .'
+LANG:ru-RU
+END:VCARD';
+	
+$arParams["vcarddatawin"] = iconv("utf-8", "windows-1251", $arParams["vcarddatawin"]);
+	
+	$arParams["vcffilewin"] = './tmp/'.$arParams["guid"].'-win.vcf';
+	$fp = fopen($arParams["vcffilewin"], "w");
+	fwrite($fp, $arParams["vcarddatawin"]);
+	fclose($fp);
+	
+}
+$this->IncludeComponentTemplate();
\ No newline at end of file
diff --git a/local/components/evolution/vizitka/templates/.default/script.js b/local/components/evolution/vizitka/templates/.default/script.js
new file mode 100644
index 0000000..4f9d9d4
--- /dev/null
+++ b/local/components/evolution/vizitka/templates/.default/script.js
@@ -0,0 +1,186 @@
+var calculation = { car_price: 0, CAR_PRICE_MIN: 0, CAR_PRICE_MAX:0, initial_payment: 0, lease_period: 0, monthly_payment: 0, redemption_payment: 0, tax_savings: 0, vat_reimbursement: 0 };
+
+function calculator(props)
+{
+	for(let i in calculation)
+	{
+		calculation[i] = parseInt(props[i], 10);
+	}
+
+	$("#FORM_FIELD_PRICE").val(calculation.car_price);
+	$("#FORM_FIELD_PREPAID").val(calculation.initial_payment);
+	$("#FORM_FIELD_TERM").val(calculation.lease_period);
+	$("#FORM_FIELD_REDEMPTION").val(calculation.redemption_payment);
+}
+
+function calculate(param, value)
+{
+	if(param !== undefined)
+	{
+		calculation[param] = value;
+	}
+
+	$("#FORM_FIELD_PRICE").val(calculation.car_price);
+	$("#FORM_FIELD_PREPAID").val(calculation.initial_payment);
+	$("#FORM_FIELD_TERM").val(calculation.lease_period);
+	$("#FORM_FIELD_REDEMPTION").val(calculation.redemption_payment);
+
+	$.post("/api/calculation/", 
+	{
+		car_price: calculation.car_price, 
+		initial_payment: calculation.initial_payment, 
+		lease_period: calculation.lease_period, 
+		redemption_payment: calculation.redemption_payment, 	
+	}, function(response)
+	{
+		for(let i in response)
+		{ calculation[i] = parseInt(response[i], 10); }
+
+		$("#calculator_monthly_payment_value").text(calculation['monthly_payment'].toLocaleString());
+		$("#calculator_tax_savings_value").text((calculation['tax_savings'] + calculation['vat_reimbursement']).toLocaleString());
+		$("#calculator_tax_savings_percent").text(Math.round((calculation['tax_savings']+calculation['vat_reimbursement']) / (calculation['car_price'] / 100)));
+	}, "json");
+}
+
+function calculator_car_price_save()
+{
+	var v = parseInt($("#calculator_car_price_input").val(), 10);
+	console.log(v, calculation['CAR_PRICE_MIN'], calculation['CAR_PRICE_MAX']);
+	if(v >= calculation['CAR_PRICE_MIN'] && v <= calculation['CAR_PRICE_MAX'])
+	{
+		var $input_range_car_price = $(`#calculation_car_price`);
+		$input_range_car_price.val(v).change();
+		calculate('car_price', v);
+
+		$("#calculator_car_price_text").show();
+		$("#calculator_car_price_editor").hide();
+	}
+	else
+	{
+		$("#calculator_car_price_text").show();
+		$("#calculator_car_price_editor").hide();
+	}
+}
+
+$(function()
+{
+	var $document = $(document);
+	var selector = '[data-rangeslider]';
+	var $element = $(selector);
+
+	// For ie8 support
+	var textContent = ('textContent' in document) ? 'textContent' : 'innerText';
+
+	// Example functionality to demonstrate a value feedback
+	function valueOutput(element) 
+	{
+		var value = element.value;
+		var output = element.parentNode.getElementsByTagName('output')[0] || element.parentNode.parentNode.getElementsByTagName('output')[0];
+		if($(element).data('slider-name') === "car_price")
+		{
+			output[textContent] = parseInt(value, 10).toLocaleString();
+		}
+		else
+		{
+			output[textContent] = value;
+		}
+	}
+
+	$document.on('input', 'input[type="range"], ' + selector, function(e) 
+	{
+		valueOutput(e.target);
+	});
+
+	// Example functionality to demonstrate disabled functionality
+	$document.on('click', '#js-example-disabled button[data-behaviour="toggle"]', function(e) 
+	{
+		var $inputRange = $(selector, e.target.parentNode);
+
+		if ($inputRange[0].disabled) {
+			$inputRange.prop("disabled", false);
+		}
+		else {
+			$inputRange.prop("disabled", true);
+		}
+		$inputRange.rangeslider('update');
+	});
+
+	// Example functionality to demonstrate programmatic value changes
+	$document.on('click', '#js-example-change-value button', function(e) {
+		var $inputRange = $(selector, e.target.parentNode);
+		var value = $('input[type="number"]', e.target.parentNode)[0].value;
+
+		$inputRange.val(value).change();
+	});
+
+	// Example functionality to demonstrate programmatic attribute changes
+	$document.on('click', '#js-example-change-attributes button', function(e) 
+	{
+		var $inputRange = $(selector, e.target.parentNode);
+		var attributes = {
+			min: $('input[name="min"]', e.target.parentNode)[0].value,
+			max: $('input[name="max"]', e.target.parentNode)[0].value,
+			step: $('input[name="step"]', e.target.parentNode)[0].value
+		};
+
+		$inputRange.attr(attributes);
+		$inputRange.rangeslider('update', true);
+	});
+
+	// Example functionality to demonstrate destroy functionality
+	$document
+	.on('click', '#js-example-destroy button[data-behaviour="destroy"]', function(e) {
+		$(selector, e.target.parentNode).rangeslider('destroy');
+	})
+	.on('click', '#js-example-destroy button[data-behaviour="initialize"]', function(e) {
+		$(selector, e.target.parentNode).rangeslider({ polyfill: false });
+	});
+
+	// Example functionality to test initialisation on hidden elements
+	$document.on('click', '#js-example-hidden button[data-behaviour="toggle"]', function(e) {
+		var $container = $(e.target.previousElementSibling);
+		$container.toggle();
+	});
+
+	// Basic rangeslider initialization
+	$element.rangeslider({
+		// Deactivate the feature detection
+		polyfill: false,
+		// Callback function
+		onInit: function() {
+			valueOutput(this.$element[0]);
+		},
+		// Callback function
+		onSlide: function(position, value) {
+			//console.log('onSlide');
+			//console.log('position: ' + position, 'value: ' + value);
+		},
+		// Callback function
+		onSlideEnd: function(position, value) 
+		{
+			calculate(this.$element.attr('data-slider-name'), value);
+			//console.log('position: ' + position, 'value: ' + value);
+		}
+	});
+
+	$("#calculator_car_price_text").on("click", function()
+	{
+		$("#calculator_car_price_input").val(parseInt(calculation.car_price, 10));
+		$("#calculator_car_price_text").hide();
+		$("#calculator_car_price_editor").show();
+	});
+
+	$("#calculator_car_price_save").on("click", function()
+	{
+		calculator_car_price_save();
+	});
+
+	$("#calculator_car_price_input").on("keydown", function(event)
+	{
+		if(event.keyCode === 13)
+		{
+			event.preventDefault();
+			calculator_car_price_save();
+		}
+	});
+});
\ No newline at end of file
diff --git a/local/components/evolution/vizitka/templates/.default/style.css b/local/components/evolution/vizitka/templates/.default/style.css
new file mode 100644
index 0000000..fc32ba4
--- /dev/null
+++ b/local/components/evolution/vizitka/templates/.default/style.css
@@ -0,0 +1,37 @@
+.offer_item_boston {
+    width: auto !important;
+    padding-bottom: 30px;
+    position: relative;
+}
+.offer_item_boston img{
+    border-radius: 50%;
+}
+.offer_item {
+    width: auto !important;
+    padding-left: 0 !important;
+    padding-right: 20px;
+}
+.leasing_offers_list {
+    margin-top: 30px !important;
+}
+.offer_item .qrimage {
+    position: relative !important;
+    width: auto !important;
+    height: auto !important;
+}
+.offer_item .vcfbutton {
+    background-color: #1c01a9;
+    color: #fff;
+    padding: 5px 15px;
+    width: fit-content;
+    font-weight: bold;
+}
+.messenger {
+    position: relative !important;
+    width: 30px;
+    height: 30px;
+    vertical-align: bottom;
+}
+.withoutform {
+    margin-top: 40px;
+}
\ No newline at end of file
diff --git a/local/components/evolution/vizitka/templates/.default/template.php b/local/components/evolution/vizitka/templates/.default/template.php
new file mode 100644
index 0000000..ecb2383
--- /dev/null
+++ b/local/components/evolution/vizitka/templates/.default/template.php
@@ -0,0 +1,84 @@
+setFrameMode(true);
+?>
+
+
+ +
+
+

+

+

+
+
+ + " alt="" /> + + + +
+ +
+

+ Сохраните контакт на телефон +

+ .png" /> +
+
+
+ +
+
+
+
+

+ Упс! Такой
визитки
не существует
+

+
+
+

+ Просто позвоните
по номеру
8 800 333 75 75
+

+
+
+

+ или отправьте
заявку на лизинг
из формы ниже
+

+
+
+
+
+ + \ No newline at end of file diff --git a/local/users_to_clients.php b/local/users_to_clients.php new file mode 100644 index 0000000..e3be2ce --- /dev/null +++ b/local/users_to_clients.php @@ -0,0 +1,113 @@ + 'asc' ], 'desc', [], [ "SELECT" => [ "UF_*" ] ]); +while($user = $users_res->Fetch()) +{ + print "user_id = ".$user['ID']."\n"; + + if($user['ID'] != 1) + { + $user_properties = [ + 'COMPANY' => $user['UF_ORG_TITLE'], + 'INN' => $user['UF_INN'], + 'KPP' => $user['UF_KPP'], + 'OGRN' => $user['UF_UF_OGRN'], + 'ADMINS' => [ $user['ID'] ], + 'USERS' => [ $user['ID'] ], + ]; + + $ar_new_client = [ + 'IBLOCK_ID' => IBLOCK_ID_CLIENTS, + 'NAME' => $user['UF_ORG_TITLE'], + 'CODE' => $user['XML_ID'], + 'PROPERTY_VALUES' => $user_properties, + 'ACTIVE' => 'Y', // активен + ]; + + $new_client = new CIBlockElement; + if($new_client_id = $new_client->Add($ar_new_client)) + { + print "New ID: ".$new_client_id."\n\n"; + } + else + { + print "Error: ".$new_client->LAST_ERROR."\n\n"; + print "EXISTED USER: \n\n"; + + $existed_client_res = CIBlockElement::GetList([ 'id' => 'desc' ], [ 'IBLOCK_ID' => IBLOCK_ID_CLIENTS, 'CODE' => $user['XML_ID'] ], false, []); + while ($existed_client_element = $existed_client_res->GetNextElement()) + { + $existed_client_record = $existed_client_element->GetFields(); + $existed_client_record['PROPERTIES'] = $existed_client_element->GetProperties(); + + $admins = $existed_client_record['PROPERTIES']['ADMINS']['VALUE']; + $users = $existed_client_record['PROPERTIES']['USERS']['VALUE']; + + array_push($admins, $user['ID']); + array_push($users, $user['ID']); + + $admins = array_unique($admins); + $users = array_unique($users); + + $updated_fields = [ + 'PROPERTY_VALUES' => [ + 'ADMINS' => $admins, + 'USERS' => $users, + ] + ]; + + CIBlockElement::SetPropertyValuesEx($existed_client_record['ID'], IBLOCK_ID_CLIENTS, [ 'ADMINS' => $admins, 'USERS' => $users, ]); + print $existed_client_record['CODE']." UPDATED\n\n"; + + /* + if($ai = array_search(20, $admins)) + { + array_splice($admins, $ai, 1); + } + + if($ai = array_search(20, $users)) + { + array_splice($users, $ai, 1); + } + */ + /* + $updated_client = new CIBlockElement; + if($updated_client_result = $updated_client->Update($existed_client_record['ID'], $updated_fields)) + { + print "UPDATED\n\n"; + } + else + { + print "UPDATE ERROR: ".$updated_client->LAST_ERROR."\n\n"; + } + */ + + //print_r($existed_client_record); + } + } + + /* + $rules_res = CIBlockElement::GetList([ 'id' => 'desc' ], [ 'PROPERTY_USER.' => '' ], false, $options); + while ($rules_ob_element = $rules_res->GetNextElement()) + { + $rules_ar_res = $rules_ob_element->GetFields(); + $rules_ar_res['PROPERTIES'] = $rules_ob_element->GetProperties(); + } + */ + } +} + +die(); + +?> \ No newline at end of file diff --git a/mailru-domain4Ghb7ZTpPY5uXUCS.html b/mailru-domain4Ghb7ZTpPY5uXUCS.html new file mode 100644 index 0000000..d42c10b --- /dev/null +++ b/mailru-domain4Ghb7ZTpPY5uXUCS.html @@ -0,0 +1 @@ +mailru-domain: 4Ghb7ZTpPY5uXUCS \ No newline at end of file diff --git a/vizitka/aepifanov_200.jpg b/vizitka/aepifanov_200.jpg deleted file mode 100644 index ee51753..0000000 Binary files a/vizitka/aepifanov_200.jpg and /dev/null differ diff --git a/vizitka/boston.jpg b/vizitka/boston.jpg deleted file mode 100644 index 63229a5..0000000 Binary files a/vizitka/boston.jpg and /dev/null differ diff --git a/vizitka/data.json b/vizitka/data.json deleted file mode 100644 index f092007..0000000 --- a/vizitka/data.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "fullName": "Анатолий Епифанов", - "post": "Начальник отдела технической поддержки", - "department": "Управление информационных технологий", - "image": "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", - "mobilePhone": "+7 926 566-0330", - "workPhone": "+7 495 146-6767", - "workPhoneCode": "доб. 11902", - "email": "aepifanov@evoleasing.ru", - "address": "115201, г. Москва, ул. Котляковская, д. 8", - "whatsAppOn": true, - "telegram": "verytolik" -} \ No newline at end of file diff --git a/vizitka/index.php b/vizitka/index.php index 55219c3..e14f7a8 100644 --- a/vizitka/index.php +++ b/vizitka/index.php @@ -1,224 +1,30 @@ SetTitle("Эволюция автолизинга: Приятно познакомиться"); -require_once($_SERVER["DOCUMENT_ROOT"].'/bitrix/php_interface/phpqrcode/qrlib.php'); ?> - +getRequest(); $request->getQueryList()->toArray(); -$guid = $request->get("userid"); +$guid = $request->get("user"); -$ourData = file_get_contents("data.json"); -$object = json_decode($ourData); +$APPLICATION->IncludeComponent( + "evolution:vizitka", + "", + Array( + "guid" => $guid, + ) +); ?> -//Очищаем временную директорию от файлоы старше 2 дней -$tmpfolders = $_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/'; -$fileSystemIterator = new FilesystemIterator($tmpfolders); -$now = time(); -foreach ($fileSystemIterator as $file) { - if ($now - $file->getCTime() >= 60 * 60 * 24 * 2) // 2 days - unlink($tmpfolders.$file->getFilename()); -} -?> - - -
- -fullName) { - $name = $object->fullName; - $post = $object->post; - $dept = $object->department; - $company = "Эволюция Автолизинга"; - $mob = $object->mobilePhone; - $mobcl = preg_replace('/[^0-9]/', '', $mob); - $tel = $object->workPhone; - $telcl = preg_replace('/[^0-9]/', '', $tel); - $teladd = $object->workPhoneCode; - $mail = $object->email; - $address = $object->address; - $whatsapp = $object->whatsAppOn; - $telegram = $object->telegram; - $www = "https://www.evoleasing.ru"; - -//VCF для QR кода -$qrtext = 'BEGIN:VCARD -VERSION:4.0 -N;CHARSET=UTF-8:;'.$name.';;; -FN;CHARSET=UTF-8:'.$name.' -TITLE;CHARSET=UTF-8:'.$post.' -EMAIL:'.$mail.' -ORG;CHARSET=UTF-8:'.$company.' -TEL:'.$mob.' -URL;type=PREF:'.$www.' -LANG:ru-RU -END:VCARD'; - -$qrimg = QRcode::png($qrtext, $_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/'.$guid.'.png', 'L', 4, 2); -$im = imagecreatefrompng($_SERVER["DOCUMENT_ROOT"].'/vizitka/tmp/'.$guid.'.png'); - - -//Формируем vcf файл визитки для телефонов -$vcarddata = 'BEGIN:VCARD -VERSION:4.0 -N;CHARSET=UTF-8:;'.$name.';;; -FN;CHARSET=UTF-8:'.$name.' -TITLE;CHARSET=UTF-8:'.$post.' -EMAIL:'.$mail.' -ORG;CHARSET=UTF-8:'.$company.' -TEL:'.$mob.' -URL;type=PREF:'.$www.' -PHOTO;ENCODING=BASE64;TYPE=JPEG:'.$object->image.' -LANG:ru-RU -END:VCARD'; -$vcarddata = mb_convert_encoding($vcarddata, "UTF-8"); - -$vcffile = './tmp/'.$guid.'.vcf'; -$fp = fopen($vcffile, "w"); -fwrite($fp, $vcarddata); -fclose($fp); - -//Формируем vcf файл визитки для компьютера -$vcarddatawin = 'BEGIN:VCARD -VERSION:4.0 -N;CHARSET=windows-1252:;'.$name.';;; -FN;CHARSET=windows-1252:'.$name.' -TITLE;CHARSET=windows-1252:'.$post.' -EMAIL:'.$mail.' -ORG;CHARSET=windows-1252:'.$company.' -TEL:'.$mob.' -URL;type=PREF:'.$www.' -PHOTO;ENCODING=BASE64;TYPE=JPEG:'.$object->image.' -LANG:ru-RU -END:VCARD'; - -$vcarddatawin = iconv("utf-8", "windows-1251", $vcarddatawin); - -$vcffilewin = './tmp/'.$guid.'-win.vcf'; -$fp = fopen($vcffilewin, "w"); -fwrite($fp, $vcarddatawin); -fclose($fp); - -//Дальше вёрстка -?> -
-
-

-

-

-
-
- image){?> - - - - -
- -
-

- Сохраните контакт на телефон -

- -
-
-
- - - - - -
-
-
-
-

- Такой
визитки
не существует
-

-
-
-

- Просто позвоните
по номеру
8 800 333 75 75
-

-
-
-

- или отправьте
заявку на лизинг
из формы ниже
-

-
-
-
-
- -
+ +