432 lines
25 KiB
PHP
432 lines
25 KiB
PHP
|
|
<?php
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
|||
|
|
|
|||
|
|
//ini_set('display_errors', 1);
|
|||
|
|
//error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
|||
|
|
|
|||
|
|
if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id']) && $_GET['days_num'] && is_numeric($_GET['days_num'])) {
|
|||
|
|
|
|||
|
|
$get = clearInputData($_GET);
|
|||
|
|
|
|||
|
|
$sql3 = "SELECT objects.* FROM objects WHERE objects.id = $get[object_id]";
|
|||
|
|
$rez_obj = mysql_query($sql3);
|
|||
|
|
$obj = mysql_fetch_assoc($rez_obj);
|
|||
|
|
|
|||
|
|
if ($obj) {
|
|||
|
|
|
|||
|
|
$curUser = new User();
|
|||
|
|
$curUser->get($_SESSION['id']);
|
|||
|
|
|
|||
|
|
$requestToSend = [];
|
|||
|
|
|
|||
|
|
$login = $curUser->zipal_login;
|
|||
|
|
$password = $curUser->zipal_password;
|
|||
|
|
|
|||
|
|
if (empty($login) || empty($password)) {
|
|||
|
|
$login = $curUser->agencyZipalLogin;
|
|||
|
|
$password = $curUser->agencyZipalPassword;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$requestToSend['login'] = $login;
|
|||
|
|
$requestToSend['password'] = $password;
|
|||
|
|
$requestToSend['method'] = 'GetPrices';
|
|||
|
|
$requestToSend['request'] = [];
|
|||
|
|
$requestToSend['request']['requestType'] = 'GetPricesByParamsRequestType';
|
|||
|
|
$requestToSend['request']['days'] = $get['days_num'];
|
|||
|
|
$requestToSend['request']['hasPhotos'] = false;
|
|||
|
|
$requestToSend['request']['room'] = false;
|
|||
|
|
|
|||
|
|
if($obj['id_rf_region']){
|
|||
|
|
$sqlRegion = "SELECT code FROM rf_regions
|
|||
|
|
WHERE rf_regions.id = ".$obj['id_rf_region'];
|
|||
|
|
$rezRegion = mysql_query($sqlRegion);
|
|||
|
|
$requestToSend['request']['region'] = mysql_fetch_assoc($rezRegion)['code'];
|
|||
|
|
}else{
|
|||
|
|
$requestToSend['request']['region'] = 78;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($obj['operation_type'] == 1) {
|
|||
|
|
$requestToSend['request']['dealType'] = 'SELL';
|
|||
|
|
} else {
|
|||
|
|
$requestToSend['request']['dealType'] = 'RENT';
|
|||
|
|
$requestToSend['request']['priceType'] = 'MONTH';
|
|||
|
|
if ($obj['srok'] == 1) {
|
|||
|
|
$requestToSend['request']['priceType'] = 'DAY';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sqlPhotoInfo = "SELECT oop.sort_order FROM objects_object_photo oop WHERE oop.object_id = $obj[id]";
|
|||
|
|
$rezPhotoInfo = mysql_query($sqlPhotoInfo);
|
|||
|
|
if (mysql_num_rows($rezPhotoInfo) > 0) {
|
|||
|
|
$requestToSend['request']['hasPhotos'] = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch ($obj['type']) {
|
|||
|
|
case 1:
|
|||
|
|
|
|||
|
|
$requestToSend['request']['objectType'] = 'FLAT';
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
$requestToSend['request']['objectType'] = 'FLAT';
|
|||
|
|
$requestToSend['request']['room'] = true;
|
|||
|
|
break;
|
|||
|
|
case 3:
|
|||
|
|
$requestToSend['request']['objectType'] = 'HOUSE';
|
|||
|
|
break;
|
|||
|
|
case 4:
|
|||
|
|
case 6:
|
|||
|
|
if ($obj['type_category']) {
|
|||
|
|
if ($obj['type_category'] == 1) {
|
|||
|
|
$requestToSend['request']['objectType'] = 'BUSINESS';
|
|||
|
|
}
|
|||
|
|
if ($obj['type_category'] == 2) {
|
|||
|
|
$requestToSend['request']['objectType'] = 'WAREHOUSE';
|
|||
|
|
}
|
|||
|
|
if ($obj['type_category'] >= 3) {
|
|||
|
|
$requestToSend['request']['objectType'] = 'BUSINESS';
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$requestToSend['request']['objectType'] = 'BUSINESS';
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 5:
|
|||
|
|
$requestToSend['request']['objectType'] = 'HOUSE';
|
|||
|
|
break;
|
|||
|
|
break;
|
|||
|
|
case 7:
|
|||
|
|
$requestToSend['request']['objectType'] = 'LAND';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$user_agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch_Diamond2_T5353; Windows Phone 6.5)';
|
|||
|
|
|
|||
|
|
//делаем запрос к zipal
|
|||
|
|
$result = curl_request_zipal_json("https://zipal.ru/ws/json", $_SESSION['id'], $user_agent, json_encode($requestToSend));
|
|||
|
|
|
|||
|
|
/*if ($_SESSION['id'] == 93) {
|
|||
|
|
echo json_encode($requestToSend);
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
$jsonResult = json_decode($result, true);
|
|||
|
|
|
|||
|
|
if ($jsonResult['resultCode'] == "FAIL") {
|
|||
|
|
//ошибка
|
|||
|
|
$res = strpos($jsonResult['result'], "at [Source:");
|
|||
|
|
if ($res) {
|
|||
|
|
echo substr($jsonResult['result'], $res);
|
|||
|
|
} else {
|
|||
|
|
echo $jsonResult['result'];
|
|||
|
|
}
|
|||
|
|
echo $jsonResult['result'];
|
|||
|
|
} else {
|
|||
|
|
if ($jsonResult['resultCode'] == "OK") {
|
|||
|
|
|
|||
|
|
if (!isset($_GET['asScript'])) {
|
|||
|
|
//print_r($jsonResult['result']);
|
|||
|
|
?>
|
|||
|
|
<input type="hidden" name="zipal_object_Id" id="zipal_object_Id"
|
|||
|
|
value="<?php echo $get['object_id']; ?>"/>
|
|||
|
|
<div class="form-block">
|
|||
|
|
<div class="label">Дней размещения</div>
|
|||
|
|
<div class="inputs">
|
|||
|
|
<input class="text" type="number" min="1" max="30" name="zipal_days" id="zipal_days"
|
|||
|
|
value="<?php echo $get['days_num']; ?>"/>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="form-block">
|
|||
|
|
<div class="label">Базовая цена</div>
|
|||
|
|
<div class="label" style="color: black;">
|
|||
|
|
<span id="zipal-base-price"><?php echo ($jsonResult['result']['basePrice'] / 100) * $ZIPAL_MULTIPLY; ?></span>
|
|||
|
|
<span class="rub">p</span>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="form-block">
|
|||
|
|
<div class="label">Итого</div>
|
|||
|
|
<div class="label" style="color: black;">
|
|||
|
|
<span id="zipal-total-price"><?php echo ($jsonResult['result']['basePrice'] / 100) * $ZIPAL_MULTIPLY; ?></span>
|
|||
|
|
<span class="rub">p</span>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
<div style="max-height: 600px; overflow-y: auto;">
|
|||
|
|
<table cellpadding="0" cellspacing="0" border="0" style="width: 100%">
|
|||
|
|
<?php
|
|||
|
|
|
|||
|
|
foreach ($jsonResult['result']['destination'] as $dest) {
|
|||
|
|
|
|||
|
|
//Авито пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'AVITO') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
//EMLS пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'EMLS') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
//CIAN пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'CIAN') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
if (!isset($dest['destination'])) {
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$targetName = $dest['destination'];
|
|||
|
|
if(isset($ZIPAL_TARGETS[$dest['destination']])){
|
|||
|
|
$targetName = $ZIPAL_TARGETS[$dest['destination']];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// у нас должны быть показаны те, кто не в фиде
|
|||
|
|
$onlyFeed = true;
|
|||
|
|
foreach ($dest['price'] as $price) {
|
|||
|
|
if (!$price['feedOnly']) {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'YANDEX') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'CIAN') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'EMLS') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'AVITO') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$checked = false;
|
|||
|
|
|
|||
|
|
foreach ($dest['price'] as $price) {
|
|||
|
|
if (($price['price'] == 0 && !$price['feedOnly']) || $dest['destination'] === 'YANDEX' || $dest['destination'] === 'CIAN' || $dest['destination'] === 'EMLS' || $dest['destination'] === 'AVITO') {
|
|||
|
|
$checked = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!$onlyFeed) {
|
|||
|
|
?>
|
|||
|
|
<tr style="border-top: 1px solid gray;" class="<?php echo $dest['destination']; ?>_row <?php if (!$checked) { echo 'gryed-row';}?>">
|
|||
|
|
<td style="width:50%;">
|
|||
|
|
<div class="form-block" style="padding-top: 10px;">
|
|||
|
|
<div class="inputs" style="width: 90%;">
|
|||
|
|
<div class="checkbox" style="height: 60px;">
|
|||
|
|
<input name="<?php echo $dest['destination']; ?>_check"
|
|||
|
|
id="<?php echo $dest['destination']; ?>_check"
|
|||
|
|
data-destination="<?php echo $dest['destination']; ?>"
|
|||
|
|
type="checkbox" class="destination-box" <?php if ($checked) { echo 'checked = "true"';}?>>
|
|||
|
|
<label style="font-weight: bold;"
|
|||
|
|
for="<?php echo $dest['destination']; ?>_check"><?php echo $targetName; ?></label>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td style="padding: 10px 0;">
|
|||
|
|
<?php
|
|||
|
|
foreach ($dest['price'] as $price) {
|
|||
|
|
$oneSelected = false;
|
|||
|
|
|
|||
|
|
$priceType = $ZIPAL_PRICE_TYPES[$price['type']];
|
|||
|
|
|
|||
|
|
if (!$priceType) {
|
|||
|
|
$priceType = $price['type'];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'YANDEX' || $dest['destination'] === 'CIAN' || $dest['destination'] === 'EMLS' || $dest['destination'] === 'AVITO') {
|
|||
|
|
if ($price['feedOnly']) {
|
|||
|
|
?>
|
|||
|
|
<label style="display: block; cursor: pointer;position: relative;">
|
|||
|
|
<span id="feed_<?php echo $dest['destination'] . "_" .$price['type']; ?>_value" style="width:60px;position: absolute;top: 0;text-align: right;right: 100%;">
|
|||
|
|
<?php if ($price['price'] > 0) { ?>
|
|||
|
|
<?php echo $price['price'] / 100; ?><span class="rub">p</span>
|
|||
|
|
<?php } ?>
|
|||
|
|
</span>
|
|||
|
|
<input name="<?php echo $dest['destination']; ?>_radio" type="radio"
|
|||
|
|
class="zipal-radio-price"
|
|||
|
|
data-price="<?php echo $price['price'] / 100; ?>"
|
|||
|
|
data-feed="true" data-type="<?php echo $price['type']; ?>"
|
|||
|
|
<?php if ($price['price'] == 0 && !$oneSelected) { $oneSelected = true; echo 'checked = "true"';} else { if (!$checked) { echo " disabled ";}}?>
|
|||
|
|
id="feed_<?php echo $dest['destination'] . "_" .$price['type']; ?>_radio"
|
|||
|
|
value="feed_<?php echo $price['type']; ?>"> Фид
|
|||
|
|
- <?php echo $priceType; ?></label>
|
|||
|
|
<?php
|
|||
|
|
} else {
|
|||
|
|
?>
|
|||
|
|
<label style="display: block; cursor: pointer;position: relative;">
|
|||
|
|
<span id="<?php echo $dest['destination'] . "_" .$price['type']; ?>_value" style="width:60px;position: absolute;top: 0;text-align: right;right: 100%;">
|
|||
|
|
<?php if ($price['price'] > 0) { ?>
|
|||
|
|
<?php echo $price['price'] / 100; ?><span class="rub">p</span>
|
|||
|
|
<?php } ?>
|
|||
|
|
</span>
|
|||
|
|
<input name="<?php echo $dest['destination']; ?>_radio" type="radio"
|
|||
|
|
class="zipal-radio-price"
|
|||
|
|
data-price="<?php echo $price['price'] / 100; ?>"
|
|||
|
|
data-feed="false" data-type="<?php echo $price['type']; ?>"
|
|||
|
|
<?php if ($price['price'] == 0 && !$oneSelected) { $oneSelected = true; echo 'checked = "true"';} else { if (!$checked) { echo " disabled ";}}?>
|
|||
|
|
id="<?php echo $dest['destination'] . "_" .$price['type']; ?>_radio"
|
|||
|
|
value="<?php echo $price['type']; ?>"> <?php echo $priceType; ?>
|
|||
|
|
</label>
|
|||
|
|
<label style="display: block; cursor: pointer;position: relative;">
|
|||
|
|
<span id="feed_<?php echo $dest['destination'] . "_" .$price['type']; ?>_value" style="width:60px;position: absolute;top: 0;text-align: right;right: 100%;">
|
|||
|
|
<?php if ($price['price'] > 0) { ?>
|
|||
|
|
<?php echo $price['price'] / 100; ?><span class="rub">p</span>
|
|||
|
|
<?php } ?>
|
|||
|
|
</span>
|
|||
|
|
<input name="<?php echo $dest['destination']; ?>_radio" type="radio"
|
|||
|
|
class="zipal-radio-price"
|
|||
|
|
data-price="<?php echo $price['price'] / 100; ?>"
|
|||
|
|
data-feed="true" data-type="<?php echo $price['type']; ?>"
|
|||
|
|
<?php if ($price['price'] == 0 && !$oneSelected) { $oneSelected = true; echo 'checked = "true"';} else { if (!$checked) { echo " disabled ";}}?>
|
|||
|
|
id="feed_<?php echo $dest['destination'] . "_" .$price['type']; ?>_radio"
|
|||
|
|
value="feed_<?php echo $price['type']; ?>"> Фид
|
|||
|
|
- <?php echo $priceType; ?></label>
|
|||
|
|
<?php
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (!$price['feedOnly']) {
|
|||
|
|
?>
|
|||
|
|
<label style="display: block; cursor: pointer;position: relative;">
|
|||
|
|
<span id="<?php echo $dest['destination'] . "_" .$price['type']; ?>_value" style="width:60px;position: absolute;top: 0;text-align: right;right: 100%;">
|
|||
|
|
<?php if ($price['price'] > 0) { ?>
|
|||
|
|
<?php echo $price['price'] / 100; ?><span class="rub">p</span>
|
|||
|
|
<?php } ?>
|
|||
|
|
</span>
|
|||
|
|
<input name="<?php echo $dest['destination']; ?>_radio"
|
|||
|
|
class="zipal-radio-price"
|
|||
|
|
data-price="<?php echo $price['price'] / 100; ?>"
|
|||
|
|
type="radio" data-type="<?php echo $price['type']; ?>"
|
|||
|
|
data-feed="false"
|
|||
|
|
<?php if ($price['price'] == 0 && !$oneSelected) { $oneSelected = true; echo 'checked = "true"';} else { if (!$checked) { echo " disabled ";}}?>
|
|||
|
|
id="<?php echo $dest['destination'] . "_" .$price['type']; ?>_radio"
|
|||
|
|
value="<?php echo $price['type']; ?>"> <?php echo $priceType; ?>
|
|||
|
|
</label>
|
|||
|
|
<?php }
|
|||
|
|
}
|
|||
|
|
} ?>
|
|||
|
|
</td>
|
|||
|
|
<?php } ?>
|
|||
|
|
</tr>
|
|||
|
|
<?php } ?>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
<?php
|
|||
|
|
} else {
|
|||
|
|
echo '[{';
|
|||
|
|
echo '"id": "zipal-base-price",';
|
|||
|
|
echo '"value" : "';
|
|||
|
|
echo ($jsonResult['result']['basePrice'] / 100) * $ZIPAL_MULTIPLY;
|
|||
|
|
echo '"}';
|
|||
|
|
|
|||
|
|
foreach ($jsonResult['result']['destination'] as $dest) {
|
|||
|
|
|
|||
|
|
//Авито пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'AVITO') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
//EMLS пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'EMLS') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
//CIAN пропускаем, так как он у нас есть на JW
|
|||
|
|
//if ($dest['destination'] === 'CIAN') {
|
|||
|
|
//continue;
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
// у нас должны быть показаны те, кто не в фиде
|
|||
|
|
$onlyFeed = true;
|
|||
|
|
foreach ($dest['price'] as $price) {
|
|||
|
|
if (!$price['feedOnly']) {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!isset($dest['destination'])) {
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'YANDEX') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'CIAN') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'EMLS') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($dest['destination'] === 'AVITO') {
|
|||
|
|
$onlyFeed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!$onlyFeed) {
|
|||
|
|
foreach ($dest['price'] as $price) {
|
|||
|
|
if ($dest['destination'] === 'YANDEX' || $dest['destination'] === 'CIAN' || $dest['destination'] === 'EMLS' || $dest['destination'] === 'AVITO') {
|
|||
|
|
echo ",";
|
|||
|
|
if ($price['feedOnly']) {
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "feed_' . $dest['destination'] . "_" .$price['type'] .'_value",';
|
|||
|
|
echo '"value" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 . '<span class=\'rub\'>p</span>' : "";
|
|||
|
|
echo '"},';
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "feed_' . $dest['destination'] . "_" .$price['type'] .'_radio",';
|
|||
|
|
echo '"price" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 : "";
|
|||
|
|
echo '"}';
|
|||
|
|
} else {
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "' . $dest['destination'] . "_" .$price['type'] .'_value",';
|
|||
|
|
echo '"value" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 . '<span class=\'rub\'>p</span>' : "";
|
|||
|
|
echo '"},';
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "' . $dest['destination'] . "_" .$price['type'] .'_radio",';
|
|||
|
|
echo '"price" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 : "";
|
|||
|
|
echo '"},';
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "feed_' . $dest['destination'] . "_" .$price['type'] .'_value",';
|
|||
|
|
echo '"value" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 . '<span class=\'rub\'>p</span>' : "";
|
|||
|
|
echo '"},';
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "feed_' . $dest['destination'] . "_" .$price['type'] .'_radio",';
|
|||
|
|
echo '"price" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 : "";
|
|||
|
|
echo '"}';
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (!$price['feedOnly']) {
|
|||
|
|
echo ",";
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "' . $dest['destination'] . "_" .$price['type'] .'_value",';
|
|||
|
|
echo '"value" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 . '<span class=\'rub\'>p</span>' : "";
|
|||
|
|
echo '"},';
|
|||
|
|
echo '{';
|
|||
|
|
echo '"id": "' . $dest['destination'] . "_" .$price['type'] .'_radio",';
|
|||
|
|
echo '"price" : "';
|
|||
|
|
echo $price['price'] > 0 ? $price['price'] / 100 : "";
|
|||
|
|
echo '"}';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
echo ']';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|