본문으로 건너뛰기

배송지 수정 기능 보안 강화

PHP 8 · GODO26
변경 파일 수: 38개
변경 파일 목록
총 38개
Controller (23)
LayerReceiverInfoController.phpAdmin/Order/OrderViewController.phpAdmin/Order/RegularOrderViewController.phpAdmin/Order/LayerShippingAddressController.phpAdmin/Share/OrderViewController.phpFront/Mypage/RegularDeliveryShippingAddressChangeController.phpFront/Mypage/ShippingController.phpFront/Mypage/LayerRegularOrderShippingAddressController.phpFront/Order/LayerRegularOrderShippingAddressRegistController.phpFront/Order/LayerShippingAddressController.phpFront/Order/LayerShippingAddressRegistController.phpFront/Order/OrderEndController.phpFront/Order/RegularOrderController.phpFront/Order/RegularOrderEndController.phpFront/Order/LayerShippingAddressRegistController.phpMobile/Mypage/OrderViewController.phpMobile/Mypage/ShippingController.phpMobile/Mypage/LayerRegularOrderShippingAddressController.phpMobile/Order/LayerRegularOrderShippingAddressRegistController.phpMobile/Order/OrderController.phpMobile/Order/OrderEndController.phpMobile/Order/OrderPsController.phpMobile/Order/RegularOrderController.phpMobile/Order/
변경 파일 코드
추가삭제
Admin/order/inc_order_view.php+8-8
변경 전inc_order_view.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
</td>
<?php } ?>
<?php } else {?>
<?php if($rowAll === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php if($data['receiverZonecode']){ echo "[".$data['receiverZonecode']."]"; } ?>
<?php if($data['receiverZipcode']){ echo "(".$data['receiverZipcode'].")"; } ?>
<br />
<?php if($data['receiverAddress']){ echo $data['receiverAddress']; } ?>
<?php if($data['receiverAddressSub']){ echo " ".$data['receiverAddressSub']; } ?>
</td>
<?php } ?>
<?php } ?>
 
변경 후inc_order_view.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
</td>
<?php } ?>
<?php } else {?>
<?php if($rowAll === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php if($data['receiverZonecode']){ echo "[".gd_htmlspecialchars($data['receiverZonecode'])."]"; } ?>
<?php if($data['receiverZipcode']){ echo "(".gd_htmlspecialchars($data['receiverZipcode']).")"; } ?>
<br />
<?php if($data['receiverAddress']){ echo gd_htmlspecialchars($data['receiverAddress']); } ?>
<?php if($data['receiverAddressSub']){ echo " ".gd_htmlspecialchars($data['receiverAddressSub']); } ?>
</td>
<?php } ?>
<?php } ?>
 
Admin/order/layer_regular_order_shipping_address.php+5-5
변경 전layer_regular_order_shipping_address.php
<?php foreach ($shippingInfo as $info) : ?>
<tr>
<td><input type="radio" name="shippingSno" value="<?=$info['sno']?>"></td>
<td><?php if ($info['defaultFl'] == 'y'): ?> (기본배송지) <br><?php endif;?><?=$info['shippingTitle']?></td>
<td><?=$info['shippingName']?></td>
<?php /* 주소 구성요소가 각각 '-' 로 치환돼 하이픈이 반복되므로 칸 전체를 단일 '-' 로 표시 */ ?>
<?php if (!empty($shippingMaskLabel)) { ?>
<td><?= $maskChar ?></td>
<?php } else { ?>
<td><?=$info['shippingZonecode']?> <?=$info['shippingAddress']?> <?=$info['shippingAddressSub']?></td>
<?php } ?>
<td> 전화번호 : <?=$info['shippingPhone']?> <br/> 휴대폰 : <?=$info['shippingCellPhone']?></td>
<td><?=$info['shippingMessage']?></td>
</tr>
<?php endforeach; ?>
</tbody>
 
변경 후layer_regular_order_shipping_address.php
<?php foreach ($shippingInfo as $info) : ?>
<tr>
<td><input type="radio" name="shippingSno" value="<?=$info['sno']?>"></td>
<td><?php if ($info['defaultFl'] == 'y'): ?> (기본배송지) <br><?php endif;?><?=gd_htmlspecialchars($info['shippingTitle'])?></td>
<td><?=gd_htmlspecialchars($info['shippingName'])?></td>
<?php /* 주소 구성요소가 각각 '-' 로 치환돼 하이픈이 반복되므로 칸 전체를 단일 '-' 로 표시 */ ?>
<?php if (!empty($shippingMaskLabel)) { ?>
<td><?= $maskChar ?></td>
<?php } else { ?>
<td><?=gd_htmlspecialchars($info['shippingZonecode'])?> <?=gd_htmlspecialchars($info['shippingAddress'])?> <?=gd_htmlspecialchars($info['shippingAddressSub'])?></td>
<?php } ?>
<td> 전화번호 : <?=gd_htmlspecialchars($info['shippingPhone'])?> <br/> 휴대폰 : <?=gd_htmlspecialchars($info['shippingCellPhone'])?></td>
<td><?=gd_htmlspecialchars($info['shippingMessage'])?></td>
</tr>
<?php endforeach; ?>
</tbody>
 
Admin/order/layout_order_goods_list.php+16-16
변경 전layout_order_goods_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_html_cut($val['orderMemo'], 30, '..') : '-'?>
</td>
<?php } ?>
<?php } else {?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_html_cut($val['multiShippingOrderMemo'], 30, '..');
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_html_cut($val['orderMemo'], 30, '..');
}
else {
echo '-';
<?php } // 주문번호 ?>
 
<?php if($gridKey === 'orderName' && $rowChk === 0){ // 주문자 ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>" data-cell-phone="<?= $memberMasking->masking('order','tel',$val['smsCellPhone']); ?>">
<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ // 수령자 ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= $memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']) ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo $memberMasking->masking('order', 'name', $val['multiShippingReceiverName']);
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo $memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']);
}
?>
</td>
<td <?= $orderMultiShippingRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
<?php } ?>
</td>
<?php } ?>
<td <?= $orderGoodsRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
<?php } ?>
</td>
<?php } ?>
 
변경 후layout_order_goods_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..')) : '-'?>
</td>
<?php } ?>
<?php } else {?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['multiShippingOrderMemo'], 30, '..'));
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..'));
}
else {
echo '-';
<?php } // 주문번호 ?>
 
<?php if($gridKey === 'orderName' && $rowChk === 0){ // 주문자 ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>" data-cell-phone="<?= gd_htmlspecialchars($memberMasking->masking('order','tel',$val['smsCellPhone'])); ?>">
<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ // 수령자 ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= gd_htmlspecialchars($memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName'])) ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo gd_htmlspecialchars($memberMasking->masking('order', 'name', $val['multiShippingReceiverName']));
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo gd_htmlspecialchars($memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']));
}
?>
</td>
<td <?= $orderMultiShippingRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
<?php } ?>
</td>
<?php } ?>
<td <?= $orderGoodsRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
<?php } ?>
</td>
<?php } ?>
 
Admin/order/layout_order_goods_simple_list.php+10-10
변경 전layout_order_goods_simple_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_html_cut($val['orderMemo'], 30, '..') : '-'?>
</td>
<?php } ?>
<?php } else {?>
<td <?= $orderGoodsRowSpan ?>>
<?php
if($val['orderMemo']){
echo gd_html_cut($val['orderMemo'], 30, '..');
if($val['multiShippingFl'] === 'y'){
echo ' 외' . ((int)$val['totalOrderInfoCount']-1) . '건';
}
<?php } // 주문번호 ?>
 
<?php if($gridKey === 'orderName' && $rowChk === 0){ // 주문자 ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>" data-cell-phone="<?= $memberMasking->masking('order','tel',$val['smsCellPhone']); ?>">
<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ // 수령자 ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= $memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']) ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php
echo $memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']);
if($val['totalOrderInfoCount'] > 1){
echo ' 외 ' . ((int)$val['totalOrderInfoCount']-1) . '명';
}
<td <?= $orderGoodsRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
<?php } ?>
</td>
<?php } //수령자 주소?>
 
변경 후layout_order_goods_simple_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..')) : '-'?>
</td>
<?php } ?>
<?php } else {?>
<td <?= $orderGoodsRowSpan ?>>
<?php
if($val['orderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..'));
if($val['multiShippingFl'] === 'y'){
echo ' 외' . ((int)$val['totalOrderInfoCount']-1) . '건';
}
<?php } // 주문번호 ?>
 
<?php if($gridKey === 'orderName' && $rowChk === 0){ // 주문자 ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>" data-cell-phone="<?= gd_htmlspecialchars($memberMasking->masking('order','tel',$val['smsCellPhone'])); ?>">
<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ // 수령자 ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= gd_htmlspecialchars($memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName'])) ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php
echo gd_htmlspecialchars($memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']));
if($val['totalOrderInfoCount'] > 1){
echo ' 외 ' . ((int)$val['totalOrderInfoCount']-1) . '명';
}
<td <?= $orderGoodsRowSpan ?>>
<?php /* 배송지: 탈퇴/휴면 회원 주문이면 단일 '-' 표시(개인정보 은닉), 아니면 기존 조합 표시 */ ?>
<?php if (!empty($data[$orderNo]['orderMaskLabel'])) { echo $data[$orderNo]['maskChar']; } else { ?>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
<?php } ?>
</td>
<?php } //수령자 주소?>
 
Admin/order/layout_order_list.php+10-10
변경 전layout_order_list.php
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_html_cut($val['multiShippingOrderMemo'], 30, '..');
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_html_cut($val['orderMemo'], 30, '..');
}
else {
echo '-';
<?php } //주문번호 ?>
 
<?php if($gridKey === 'orderName'){ //주문자 ?>
<td class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>" data-cell-phone="<?= $memberMasking->masking('order','tel',$val['smsCellPhone']); ?>">
<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo $memberMasking->masking('order', 'name', $val['multiShippingReceiverName']);
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo $memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']);
}
?>
</td>
 
<?php if($gridKey === 'receiverAddress'){ //수령자 주소 ?>
<td>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
</td>
<?php } //수령자 주소 ?>
 
 
변경 후layout_order_list.php
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['multiShippingOrderMemo'], 30, '..'));
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..'));
}
else {
echo '-';
<?php } //주문번호 ?>
 
<?php if($gridKey === 'orderName'){ //주문자 ?>
<td class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>" data-cell-phone="<?= gd_htmlspecialchars($memberMasking->masking('order','tel',$val['smsCellPhone'])); ?>">
<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])); ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo gd_htmlspecialchars($memberMasking->masking('order', 'name', $val['multiShippingReceiverName']));
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo gd_htmlspecialchars($memberMasking->masking('order', 'name', $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']));
}
?>
</td>
 
<?php if($gridKey === 'receiverAddress'){ //수령자 주소 ?>
<td>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
</td>
<?php } //수령자 주소 ?>
 
 
Admin/order/logistics_layout_order_goods_list.php+16-16
변경 전logistics_layout_order_goods_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_html_cut($val['orderMemo'], 30, '..') : '-'?>
</td>
<?php } ?>
<?php } else {?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_html_cut($val['multiShippingOrderMemo'], 30, '..');
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_html_cut($val['orderMemo'], 30, '..');
}
else {
echo '-';
</td>
<?php } ?>
<?php if($gridKey === 'orderName' && $rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']) ?>" data-cell-phone="<?= $memberMasking->masking('order','tel',$val['smsCellPhone']); ?>">
<?= $memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName']) ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName'] ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo $val['multiShippingReceiverName'];
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo $data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName'];
}
?>
</td>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
</td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".$val['receiverZonecode']."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".$val['receiverZipcode'].")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo $val['receiverAddress']; } ?>
<?php if($val['receiverAddressSub']){ echo " ".$val['receiverAddressSub']; } ?>
</td>
<?php } ?>
<?php } ?>
 
변경 후logistics_layout_order_goods_list.php
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?=($val['orderMemo']) ? gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..')) : '-'?>
</td>
<?php } ?>
<?php } else {?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingOrderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['multiShippingOrderMemo'], 30, '..'));
if(((int)$val['multiShippingOrderMemoCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingOrderMemoCount']-1) . '건';
}
}
else {
if($val['orderMemo']){
echo gd_htmlspecialchars(gd_html_cut($val['orderMemo'], 30, '..'));
}
else {
echo '-';
</td>
<?php } ?>
<?php if($gridKey === 'orderName' && $rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan; ?> class="js-member-info" data-member-no="<?= $val['memNo'] ?>" data-member-name="<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])) ?>" data-cell-phone="<?= gd_htmlspecialchars($memberMasking->masking('order','tel',$val['smsCellPhone'])); ?>">
<?= gd_htmlspecialchars($memberMasking->masking('order','name',$data[$orderNo]['withdrawnMembersPersonalData']['orderName'] ?: $val['orderName'])) ?>
<p class="mgb0">
<?php if (!$val['memNo']) { ?>
<?php if (!$val['memNoCheck']) { ?>
<?php if($gridKey === 'receiverName'){ ?>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>><?= gd_htmlspecialchars($data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']) ?></td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<?php
if($val['multiShippingFl'] === 'y'){
if($val['multiShippingReceiverName']){
echo gd_htmlspecialchars($val['multiShippingReceiverName']);
if(((int)$val['multiShippingReceiverNameCount']-1) > 0){
echo ' 외 ' . ((int)$val['multiShippingReceiverNameCount']-1) . '명';
}
}
}
else {
echo gd_htmlspecialchars($data[$orderNo]['withdrawnMembersPersonalData']['receiverName'] ?: $val['receiverName']);
}
?>
</td>
<?php if($useMultiShippingKey === true){ ?>
<?php if($rowMultiShipping === 0){ ?>
<td <?= $orderMultiShippingRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
</td>
<?php } ?>
<?php } else {?>
<?php if($rowChk === 0){ ?>
<td <?= $orderGoodsRowSpan ?>>
<?php if($val['receiverZonecode']){ echo "[".gd_htmlspecialchars($val['receiverZonecode'])."]"; } ?>
<?php if($val['receiverZipcode']){ echo "(".gd_htmlspecialchars($val['receiverZipcode']).")"; } ?>
<br />
<?php if($val['receiverAddress']){ echo gd_htmlspecialchars($val['receiverAddress']); } ?>
<?php if($val['receiverAddressSub']){ echo " ".gd_htmlspecialchars($val['receiverAddressSub']); } ?>
</td>
<?php } ?>
<?php } ?>
 
Admin/order/popup_order_packet.php+3-3
변경 전popup_order_packet.php
}
?>
</td>
<td class="center"><?= isset($withdrawnMaskLabels[$data['orderNo']]) ? $maskChar : $data['receiverName'] ?></td>
<td class="center">
<?php if (isset($withdrawnMaskLabels[$data['orderNo']])) { ?>
<div><?= $maskChar ?></div>
<?php if (isset($withdrawnMaskLabels[$data['orderNo']])) { ?>
<?= $maskChar ?>
<?php } else if (empty($data['isDefaultMall']) === true) { ?>
(<?=$data['receiverZonecode']?>) <?=$data['receiverAddressSub']?> <?=$data['receiverState']?> <?=$data['receiverCity']?> <?=$data['receiverAddress']?> <?=$data['receiverCountry']?>
<?php } else { ?>
(<?=$data['receiverZonecode']?>) <?=$data['receiverAddress']?> <?=$data['receiverAddressSub']?>
<?php } ?>
</td>
<td class="center">
 
변경 후popup_order_packet.php
}
?>
</td>
<td class="center"><?= isset($withdrawnMaskLabels[$data['orderNo']]) ? $maskChar : gd_htmlspecialchars($data['receiverName']) ?></td>
<td class="center">
<?php if (isset($withdrawnMaskLabels[$data['orderNo']])) { ?>
<div><?= $maskChar ?></div>
<?php if (isset($withdrawnMaskLabels[$data['orderNo']])) { ?>
<?= $maskChar ?>
<?php } else if (empty($data['isDefaultMall']) === true) { ?>
(<?=gd_htmlspecialchars($data['receiverZonecode'])?>) <?=gd_htmlspecialchars($data['receiverAddressSub'])?> <?=gd_htmlspecialchars($data['receiverState'])?> <?=gd_htmlspecialchars($data['receiverCity'])?> <?=gd_htmlspecialchars($data['receiverAddress'])?> <?=gd_htmlspecialchars($data['receiverCountry'])?>
<?php } else { ?>
(<?=gd_htmlspecialchars($data['receiverZonecode'])?>) <?=gd_htmlspecialchars($data['receiverAddress'])?> <?=gd_htmlspecialchars($data['receiverAddressSub'])?>
<?php } ?>
</td>
<td class="center">
 
Admin/order/regular_order_view.php+4-4
변경 전regular_order_view.php
<th>휴대폰번호</th>
<td class="text-left">
<span><?= $applierInfo['applierCellPhone'] ?></span>
<?php /* member_sms 인자는 SMS 발송 기능용 → 분리 원본 키 사용 */ ?>
<a class="btn btn-sm btn-gray" onclick="member_sms('<?=gd_isset($applierInfo['memNo'])?>','<?= urlencode($applierInfo['applierName']); ?>','<?= isset($applierInfo['applierCellPhoneSeparationOrigin']) ? $applierInfo['applierCellPhoneSeparationOrigin'] : $applierInfo['applierCellPhone']; ?>', '<?=$applierInfo['smsFl']?>')">SMS 보내기</a>
</td>
</tr>
<tr>
<th>휴대폰번호</th>
<td class="text-left">
<span><?= $shippingInfo['shippingCellPhone'] ?></span>
<?php /* member_sms 인자는 SMS 발송 기능용 → 분리 원본 키 사용 */ ?>
<a class="btn btn-sm btn-gray" onclick="member_sms('<?=gd_isset($shippingInfo['memNo'])?>','<?= urlencode(isset($shippingInfo['shippingNameSeparationOrigin']) ? $shippingInfo['shippingNameSeparationOrigin'] : $shippingInfo['shippingName']); ?>','<?= isset($shippingInfo['shippingCellPhoneSeparationOrigin']) ? $shippingInfo['shippingCellPhoneSeparationOrigin'] : $shippingInfo['shippingCellPhone']; ?>', '<?=$shippingInfo['smsFl']?>')">SMS 보내기</a>
</td>
</tr>
<tr>
 
변경 후regular_order_view.php
<th>휴대폰번호</th>
<td class="text-left">
<span><?= $applierInfo['applierCellPhone'] ?></span>
<?php /* member_sms 인자는 SMS 발송 기능용 → 분리 원본(이름은 이스케이프 전 값) 사용 */ ?>
<a class="btn btn-sm btn-gray" onclick="member_sms('<?=gd_isset($applierInfo['memNo'])?>','<?= urlencode($applierNameRaw); ?>','<?= isset($applierInfo['applierCellPhoneSeparationOrigin']) ? $applierInfo['applierCellPhoneSeparationOrigin'] : $applierInfo['applierCellPhone']; ?>', '<?=$applierInfo['smsFl']?>')">SMS 보내기</a>
</td>
</tr>
<tr>
<th>휴대폰번호</th>
<td class="text-left">
<span><?= $shippingInfo['shippingCellPhone'] ?></span>
<?php /* member_sms 인자는 SMS 발송 기능용 → 분리 원본(이름은 이스케이프 전 값) 사용 */ ?>
<a class="btn btn-sm btn-gray" onclick="member_sms('<?=gd_isset($shippingInfo['memNo'])?>','<?= urlencode($shippingNameRaw); ?>','<?= isset($shippingInfo['shippingCellPhoneSeparationOrigin']) ? $shippingInfo['shippingCellPhoneSeparationOrigin'] : $shippingInfo['shippingCellPhone']; ?>', '<?=$shippingInfo['smsFl']?>')">SMS 보내기</a>
</td>
</tr>
<tr>
 
Component/Design/ReplaceCode.php+60-59
변경 전ReplaceCode.php
use Framework\Utility\ComponentUtils;
use Framework\Utility\DateTimeUtils;
use Framework\Utility\SkinUtils;
 
use Globals;
use Logger;
 
Logger::info(__METHOD__);
$this->replaceSrc['{rc_memNm}'] = [
'desc' => __('회원명'),
'val' => $replaceData['memNm'],
];
$this->replaceSrc['{rc_orderDt}'] = [
'desc' => __('주문일시'),
];
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => $replaceData['orderNm'],
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
];
$this->replaceSrc['{rc_receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => $replaceData['receiverNm'],
];
$this->replaceSrc['{rc_receiverZipcode}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => $replaceData['receiverZipcode'],
];
$this->replaceSrc['{rc_receiverZonecode}'] = [
'desc' => __('우편번호'),
'val' => $replaceData['receiverZonecode'],
];
$this->replaceSrc['{rc_receiverAddress}'] = [
'desc' => __('주소'),
'val' => $replaceData['receiverAddress'],
];
$this->replaceSrc['{rc_receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => $replaceData['receiverAddressSub'],
];
$this->replaceSrc['{rc_receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => $replaceData['receiverPhone'],
];
$this->replaceSrc['{rc_receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => $replaceData['receiverCellPhone'],
];
$this->replaceSrc['{rc_receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => $replaceData['receiverMemo'],
];
$this->replaceSrc['{rc_receiverPhonePrefix}'] = [
'desc' => __('전화번호 국가번호'),
'val' => $replaceData['receiverPhonePrefix'],
];
$this->replaceSrc['{rc_receiverCellPhonePrefix}'] = [
'desc' => __('휴대폰번호 국가번호'),
'val' => $replaceData['receiverCellPhonePrefix'],
];
$this->replaceSrc['{rc_receiverPhonePrefixCode}'] = [
'desc' => __('전화번호 국가코드'),
'val' => $replaceData['receiverPhonePrefixCode'],
];
$this->replaceSrc['{rc_receiverCellPhonePrefixCode}'] = [
'desc' => __('휴대폰번호 국가코드'),
'val' => $replaceData['receiverCellPhonePrefixCode'],
];
$this->replaceSrc['{rc_receiverCountry}'] = [
'desc' => __('수취인 국가'),
'val' => $replaceData['receiverCountry'],
];
$this->replaceSrc['{rc_receiverCity}'] = [
'desc' => __('수취인 도시'),
'val' => $replaceData['receiverCity'],
];
$this->replaceSrc['{rc_receiverState}'] = [
'desc' => __('수취인 주소'),
'val' => $replaceData['receiverState'],
];
$this->replaceSrc['{rc_totalDeliveryInsuranceFee}'] = [
'desc' => __('EMS 해외 총 보험료'),
];
$this->replaceSrc['{rc_receiverNmAdd}'] = [
'desc' => __('받는 사람'),
'val' => $replaceData['receiverNmAdd'],
];
$this->replaceSrc['{rc_receiverZipcodeAdd}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => $replaceData['receiverZipcodeAdd'],
];
$this->replaceSrc['{rc_receiverZonecodeAdd}'] = [
'desc' => __('우편번호'),
'val' => $replaceData['receiverZonecodeAdd'],
];
$this->replaceSrc['{rc_receiverAddressAdd}'] = [
'desc' => __('주소'),
'val' => $replaceData['receiverAddressAdd'],
];
$this->replaceSrc['{rc_receiverAddressSubAdd}'] = [
'desc' => __('상세주소'),
'val' => $replaceData['receiverAddressSubAdd'],
];
$this->replaceSrc['{rc_receiverPhoneAdd}'] = [
'desc' => __('전화번호'),
'val' => $replaceData['receiverPhoneAdd'],
];
$this->replaceSrc['{rc_receiverCellPhoneAdd}'] = [
'desc' => __('휴대폰번호'),
'val' => $replaceData['receiverCellPhoneAdd'],
];
$this->replaceSrc['{rc_orderMemoAdd}'] = [
'desc' => __('배송메시지'),
'val' => $replaceData['orderMemoAdd'],
];
$this->replaceSrc['{rc_expirationDate}'] = [
'desc' => __('입금만료일(yyyy-mm-dd hh:mm)'),
];
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => $replaceData['orderNm'],
];
$this->replaceSrc['{rc_bankSender}'] = [
'desc' => __('입금자명'),
'val' => $replaceData['bankSender'],
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
Logger::info(__METHOD__);
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => $replaceData['orderNm'],
];
$this->replaceSrc['{rc_bankSender}'] = [
'desc' => __('입금자명'),
'val' => $replaceData['bankSender'],
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
];
$this->replaceSrc['{rc_receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => $replaceData['receiverNm'],
];
$this->replaceSrc['{rc_receiverZipcode}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => $replaceData['receiverZipcode'],
];
$this->replaceSrc['{rc_receiverZonecode}'] = [
'desc' => __('우편번호'),
'val' => $replaceData['receiverZonecode'],
];
$this->replaceSrc['{rc_receiverAddress}'] = [
'desc' => __('주소'),
'val' => $replaceData['receiverAddress'],
];
$this->replaceSrc['{rc_receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => $replaceData['receiverAddressSub'],
];
$this->replaceSrc['{rc_receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => $replaceData['receiverPhone'],
];
$this->replaceSrc['{rc_receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => $replaceData['receiverCellPhone'],
];
$this->replaceSrc['{rc_receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => $replaceData['receiverMemo'],
];
$this->replaceSrc['{rc_receiverPhonePrefix}'] = [
'desc' => __('전화번호 국가번호'),
'val' => $replaceData['receiverPhonePrefix'],
];
$this->replaceSrc['{rc_receiverCellPhonePrefix}'] = [
'desc' => __('휴대폰번호 국가번호'),
'val' => $replaceData['receiverCellPhonePrefix'],
];
$this->replaceSrc['{rc_receiverPhonePrefixCode}'] = [
'desc' => __('전화번호 국가코드'),
'val' => $replaceData['receiverPhonePrefixCode'],
];
$this->replaceSrc['{rc_receiverCellPhonePrefixCode}'] = [
'desc' => __('휴대폰번호 국가코드'),
'val' => $replaceData['receiverCellPhonePrefixCode'],
];
$this->replaceSrc['{rc_receiverCountry}'] = [
'desc' => __('수취인 국가'),
'val' => $replaceData['receiverCountry'],
];
$this->replaceSrc['{rc_receiverCity}'] = [
'desc' => __('수취인 도시'),
'val' => $replaceData['receiverCity'],
];
$this->replaceSrc['{rc_receiverState}'] = [
'desc' => __('수취인 주소'),
'val' => $replaceData['receiverState'],
];
$this->replaceSrc['{rc_receiverNmAdd}'] = [
'desc' => __('받는 사람'),
'val' => $replaceData['receiverNmAdd'],
];
$this->replaceSrc['{rc_receiverZipcodeAdd}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => $replaceData['receiverZipcodeAdd'],
];
$this->replaceSrc['{rc_receiverZonecodeAdd}'] = [
'desc' => __('우편번호'),
'val' => $replaceData['receiverZonecodeAdd'],
];
$this->replaceSrc['{rc_receiverAddressAdd}'] = [
'desc' => __('주소'),
'val' => $replaceData['receiverAddressAdd'],
];
$this->replaceSrc['{rc_receiverAddressSubAdd}'] = [
'desc' => __('상세주소'),
'val' => $replaceData['receiverAddressSubAdd'],
];
$this->replaceSrc['{rc_receiverPhoneAdd}'] = [
'desc' => __('전화번호'),
'val' => $replaceData['receiverPhoneAdd'],
];
$this->replaceSrc['{rc_receiverCellPhoneAdd}'] = [
'desc' => __('휴대폰번호'),
'val' => $replaceData['receiverCellPhoneAdd'],
];
$this->replaceSrc['{rc_orderMemoAdd}'] = [
'desc' => __('배송메시지'),
'val' => $replaceData['orderMemoAdd'],
];
}
 
$this->replaceSrc['{deliveryDueDate}'] = [
'desc' => __('배송예정일'),
'val' => $replaceData['deliveryDueDate'],
];
$this->replaceSrc['{deliveryRound}'] = [
'desc' => __('배송회차'),
'val' => $replaceData['deliveryRound'],
];
$this->replaceSrc['{receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => $replaceData['receiverNm'],
];
$this->replaceSrc['{receiverAddress}'] = [
'desc' => __('주소'),
'val' => $replaceData['receiverAddress'],
];
$this->replaceSrc['{receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => $replaceData['receiverAddressSub'],
];
$this->replaceSrc['{receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => $replaceData['receiverMemo'],
];
$this->replaceSrc['{receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => $replaceData['receiverPhone'],
];
$this->replaceSrc['{receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => $replaceData['receiverCellPhone'],
];
$this->replaceSrc['{serviceView}'] = [
'desc' => __('고객센터 페이지'),
 
변경 후ReplaceCode.php
use Framework\Utility\ComponentUtils;
use Framework\Utility\DateTimeUtils;
use Framework\Utility\SkinUtils;
use Framework\Utility\StringUtils;
use Globals;
use Logger;
 
Logger::info(__METHOD__);
$this->replaceSrc['{rc_memNm}'] = [
'desc' => __('회원명'),
'val' => StringUtils::htmlSpecialChars($replaceData['memNm'] ?? ''),
];
$this->replaceSrc['{rc_orderDt}'] = [
'desc' => __('주문일시'),
];
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => StringUtils::htmlSpecialChars($replaceData['orderNm'] ?? ''),
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
];
$this->replaceSrc['{rc_receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverNm'] ?? ''),
];
$this->replaceSrc['{rc_receiverZipcode}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZipcode'] ?? ''),
];
$this->replaceSrc['{rc_receiverZonecode}'] = [
'desc' => __('우편번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZonecode'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddress}'] = [
'desc' => __('주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddress'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressSub'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhone'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhone'] ?? ''),
];
$this->replaceSrc['{rc_receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverMemo'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhonePrefix}'] = [
'desc' => __('전화번호 국가번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhonePrefix'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhonePrefix}'] = [
'desc' => __('휴대폰번호 국가번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhonePrefix'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhonePrefixCode}'] = [
'desc' => __('전화번호 국가코드'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhonePrefixCode'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhonePrefixCode}'] = [
'desc' => __('휴대폰번호 국가코드'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhonePrefixCode'] ?? ''),
];
$this->replaceSrc['{rc_receiverCountry}'] = [
'desc' => __('수취인 국가'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCountry'] ?? ''),
];
$this->replaceSrc['{rc_receiverCity}'] = [
'desc' => __('수취인 도시'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCity'] ?? ''),
];
$this->replaceSrc['{rc_receiverState}'] = [
'desc' => __('수취인 주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverState'] ?? ''),
];
$this->replaceSrc['{rc_totalDeliveryInsuranceFee}'] = [
'desc' => __('EMS 해외 총 보험료'),
];
$this->replaceSrc['{rc_receiverNmAdd}'] = [
'desc' => __('받는 사람'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverNmAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverZipcodeAdd}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZipcodeAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverZonecodeAdd}'] = [
'desc' => __('우편번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZonecodeAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressAdd}'] = [
'desc' => __('주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressSubAdd}'] = [
'desc' => __('상세주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressSubAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhoneAdd}'] = [
'desc' => __('전화번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhoneAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhoneAdd}'] = [
'desc' => __('휴대폰번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhoneAdd'] ?? ''),
];
$this->replaceSrc['{rc_orderMemoAdd}'] = [
'desc' => __('배송메시지'),
'val' => StringUtils::htmlSpecialChars($replaceData['orderMemoAdd'] ?? ''),
];
$this->replaceSrc['{rc_expirationDate}'] = [
'desc' => __('입금만료일(yyyy-mm-dd hh:mm)'),
];
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => StringUtils::htmlSpecialChars($replaceData['orderNm'] ?? ''),
];
$this->replaceSrc['{rc_bankSender}'] = [
'desc' => __('입금자명'),
'val' => StringUtils::htmlSpecialChars($replaceData['bankSender'] ?? ''),
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
Logger::info(__METHOD__);
$this->replaceSrc['{rc_orderNm}'] = [
'desc' => __('주문자명'),
'val' => StringUtils::htmlSpecialChars($replaceData['orderNm'] ?? ''),
];
$this->replaceSrc['{rc_bankSender}'] = [
'desc' => __('입금자명'),
'val' => StringUtils::htmlSpecialChars($replaceData['bankSender'] ?? ''),
];
$this->replaceSrc['{rc_orderNo}'] = [
'desc' => __('주문번호'),
];
$this->replaceSrc['{rc_receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverNm'] ?? ''),
];
$this->replaceSrc['{rc_receiverZipcode}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZipcode'] ?? ''),
];
$this->replaceSrc['{rc_receiverZonecode}'] = [
'desc' => __('우편번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZonecode'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddress}'] = [
'desc' => __('주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddress'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressSub'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhone'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhone'] ?? ''),
];
$this->replaceSrc['{rc_receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverMemo'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhonePrefix}'] = [
'desc' => __('전화번호 국가번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhonePrefix'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhonePrefix}'] = [
'desc' => __('휴대폰번호 국가번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhonePrefix'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhonePrefixCode}'] = [
'desc' => __('전화번호 국가코드'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhonePrefixCode'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhonePrefixCode}'] = [
'desc' => __('휴대폰번호 국가코드'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhonePrefixCode'] ?? ''),
];
$this->replaceSrc['{rc_receiverCountry}'] = [
'desc' => __('수취인 국가'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCountry'] ?? ''),
];
$this->replaceSrc['{rc_receiverCity}'] = [
'desc' => __('수취인 도시'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCity'] ?? ''),
];
$this->replaceSrc['{rc_receiverState}'] = [
'desc' => __('수취인 주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverState'] ?? ''),
];
$this->replaceSrc['{rc_receiverNmAdd}'] = [
'desc' => __('받는 사람'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverNmAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverZipcodeAdd}'] = [
'desc' => __('구 우편번호 (6자리)'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZipcodeAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverZonecodeAdd}'] = [
'desc' => __('우편번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverZonecodeAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressAdd}'] = [
'desc' => __('주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverAddressSubAdd}'] = [
'desc' => __('상세주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressSubAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverPhoneAdd}'] = [
'desc' => __('전화번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhoneAdd'] ?? ''),
];
$this->replaceSrc['{rc_receiverCellPhoneAdd}'] = [
'desc' => __('휴대폰번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhoneAdd'] ?? ''),
];
$this->replaceSrc['{rc_orderMemoAdd}'] = [
'desc' => __('배송메시지'),
'val' => StringUtils::htmlSpecialChars($replaceData['orderMemoAdd'] ?? ''),
];
}
 
$this->replaceSrc['{deliveryDueDate}'] = [
'desc' => __('배송예정일'),
'val' => $replaceData['deliveryDueDate'],
];
$this->replaceSrc['{deliveryRound}'] = [
'desc' => __('배송회차'),
'val' => $replaceData['deliveryRound'],
];
$this->replaceSrc['{receiverNm}'] = [
'desc' => __('받는 사람'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverNm'] ?? ''),
];
$this->replaceSrc['{receiverAddress}'] = [
'desc' => __('주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddress'] ?? ''),
];
$this->replaceSrc['{receiverAddressSub}'] = [
'desc' => __('상세주소'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverAddressSub'] ?? ''),
];
$this->replaceSrc['{receiverMemo}'] = [
'desc' => __('배송메시지'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverMemo'] ?? ''),
];
$this->replaceSrc['{receiverPhone}'] = [
'desc' => __('전화번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverPhone'] ?? ''),
];
$this->replaceSrc['{receiverCellPhone}'] = [
'desc' => __('휴대폰번호'),
'val' => StringUtils::htmlSpecialChars($replaceData['receiverCellPhone'] ?? ''),
];
$this->replaceSrc['{serviceView}'] = [
'desc' => __('고객센터 페이지'),
 
Component/Order/OrderNew.php+88-3
변경 전OrderNew.php
const SETTLE_KIND_LATER = 'pl'; // 기타. 네이버페이에서 "후불결제"로 결제된 경우
const SETTLE_KIND_FINTECH_UNKNOWN = 'fu'; // 페이코/네이버페이에서 상품상세에서 주문시 결제수단을 알수 없는 경우
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**
* @var array 영수증 신청 상태 (n : 신청 안함, r : 현금 영수증, t : 세금 계산서)
*/
// 주문 추가 필드 정보
$getData['addField'] = $this->getOrderAddFieldView($getData['addField']);
 
// 남기실 내용
$getData['orderMemo'] = nl2br($getData['orderMemo']);
 
// 무통장 입금 은행 정보
$getData['bankAccount'] = explode(STR_DIVISION, $getData['bankAccount']);
 
return $getData;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**
* 배송지 정보 수정
*/
 
변경 후OrderNew.php
const SETTLE_KIND_LATER = 'pl'; // 기타. 네이버페이에서 "후불결제"로 결제된 경우
const SETTLE_KIND_FINTECH_UNKNOWN = 'fu'; // 페이코/네이버페이에서 상품상세에서 주문시 결제수단을 알수 없는 경우
 
/**
* @var array 뷰 출력 전 이스케이프가 필요한 주문자·수령자 정보 필드
*/
const RECEIVER_ESCAPE_FIELDS = [
'orderName',
'orderPhone',
'orderPhonePrefix',
'orderCellPhone',
'orderCellPhonePrefix',
'orderEmail',
'orderZonecode',
'orderZipcode',
'orderAddress',
'orderAddressSub',
'orderCity',
'orderState',
'orderCountry',
'receiverName',
'receiverNm', // 멀티 배송지 정보의 수령자명 키
'receiverPhone',
'receiverPhonePrefix',
'receiverCellPhone',
'receiverCellPhonePrefix',
'receiverZonecode',
'receiverZipcode',
'receiverAddress',
'receiverAddressSub',
'receiverCity',
'receiverState',
'receiverCountry',
'visitName',
'visitPhone',
'visitAddress',
'visitMemo', // 방문수령 메모
];
 
/**
* @var array 영수증 신청 상태 (n : 신청 안함, r : 현금 영수증, t : 세금 계산서)
*/
// 주문 추가 필드 정보
$getData['addField'] = $this->getOrderAddFieldView($getData['addField']);
 
 
 
 
// 무통장 입금 은행 정보
$getData['bankAccount'] = explode(STR_DIVISION, $getData['bankAccount']);
 
return $getData;
}
 
/**
* 수령자 정보 필드를 뷰 출력용으로 이스케이프
*
* 주문 데이터 전체는 goodsImage·gift.imageUrl 처럼 서버에서 생성한 이미지 태그를
* 포함하므로 통째로 이스케이프할 수 없다.
* 남기실 내용은 이스케이프 뒤에 nl2br 을 거쳐야 줄바꿈이 글자로 보이지 않으므로
* 조회 메서드가 아니라 이 메서드가 줄바꿈 변환까지 담당한다.
* 수령자명·연락처를 가공하는 처리(선물하기 마스킹 등)가 있으면 그 뒤에 호출해야 한다.
*
* @param array $data 주문 정보 (필드별 배열인 멀티 배송지 정보도 그대로 사용 가능)
*
* @return array 수령자 정보가 이스케이프된 주문 정보
*/
public function escapeReceiverInfo(array $data): array
{
foreach (static::RECEIVER_ESCAPE_FIELDS as $receiverField) {
if (isset($data[$receiverField])) {
$data[$receiverField] = StringUtils::htmlSpecialChars($data[$receiverField]);
}
}
 
// 마이페이지 주문상세의 방문 수령지 주소는 배송지별 중첩 배열로 출력된다
if (isset($data['visitDeliveryInfo']['address'])) {
$data['visitDeliveryInfo']['address'] = StringUtils::htmlSpecialChars($data['visitDeliveryInfo']['address']);
}
 
// 남기실 내용은 이스케이프 뒤에 줄바꿈을 변환한다
if (isset($data['orderMemo'])) {
$data['orderMemo'] = $this->nl2brRecursive(
StringUtils::htmlSpecialChars($data['orderMemo'])
);
}
 
return $data;
}
 
/**
* 문자열 또는 배열에 nl2br 을 적용
*
* @param array|string|null $value 변환할 값 (멀티 배송지는 필드별 배열로 들어온다)
*
* @return array|string 줄바꿈이 <br /> 로 변환된 값
*/
protected function nl2brRecursive($value)
{
if (is_array($value)) {
return array_map([$this, 'nl2brRecursive'], $value);
}
 
return nl2br($value ?? '');
}
 
/**
* 배송지 정보 수정
*/
 
Component/Order/Order.php+88-3
변경 전Order.php
const SETTLE_KIND_LATER = 'pl'; // 기타. 네이버페이에서 "후불결제"로 결제된 경우
const SETTLE_KIND_FINTECH_UNKNOWN = 'fu'; // 페이코/네이버페이에서 상품상세에서 주문시 결제수단을 알수 없는 경우
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**
* @var array 영수증 신청 상태 (n : 신청 안함, r : 현금 영수증, t : 세금 계산서)
*/
// 주문 추가 필드 정보
$getData['addField'] = $this->getOrderAddFieldView($getData['addField']);
 
// 남기실 내용
$getData['orderMemo'] = nl2br($getData['orderMemo']);
 
// 무통장 입금 은행 정보
$getData['bankAccount'] = explode(STR_DIVISION, $getData['bankAccount']);
 
return $getData;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**
* 배송지 정보 수정
*/
 
변경 후Order.php
const SETTLE_KIND_LATER = 'pl'; // 기타. 네이버페이에서 "후불결제"로 결제된 경우
const SETTLE_KIND_FINTECH_UNKNOWN = 'fu'; // 페이코/네이버페이에서 상품상세에서 주문시 결제수단을 알수 없는 경우
 
/**
* @var array 뷰 출력 전 이스케이프가 필요한 주문자·수령자 정보 필드
*/
const RECEIVER_ESCAPE_FIELDS = [
'orderName',
'orderPhone',
'orderPhonePrefix',
'orderCellPhone',
'orderCellPhonePrefix',
'orderEmail',
'orderZonecode',
'orderZipcode',
'orderAddress',
'orderAddressSub',
'orderCity',
'orderState',
'orderCountry',
'receiverName',
'receiverNm', // 멀티 배송지 정보의 수령자명 키
'receiverPhone',
'receiverPhonePrefix',
'receiverCellPhone',
'receiverCellPhonePrefix',
'receiverZonecode',
'receiverZipcode',
'receiverAddress',
'receiverAddressSub',
'receiverCity',
'receiverState',
'receiverCountry',
'visitName',
'visitPhone',
'visitAddress',
'visitMemo', // 방문수령 메모
];
 
/**
* @var array 영수증 신청 상태 (n : 신청 안함, r : 현금 영수증, t : 세금 계산서)
*/
// 주문 추가 필드 정보
$getData['addField'] = $this->getOrderAddFieldView($getData['addField']);
 
 
 
 
// 무통장 입금 은행 정보
$getData['bankAccount'] = explode(STR_DIVISION, $getData['bankAccount']);
 
return $getData;
}
 
/**
* 수령자 정보 필드를 뷰 출력용으로 이스케이프
*
* 주문 데이터 전체는 goodsImage·gift.imageUrl 처럼 서버에서 생성한 이미지 태그를
* 포함하므로 통째로 이스케이프할 수 없다.
* 남기실 내용은 이스케이프 뒤에 nl2br 을 거쳐야 줄바꿈이 글자로 보이지 않으므로
* 조회 메서드가 아니라 이 메서드가 줄바꿈 변환까지 담당한다.
* 수령자명·연락처를 가공하는 처리(선물하기 마스킹 등)가 있으면 그 뒤에 호출해야 한다.
*
* @param array $data 주문 정보 (필드별 배열인 멀티 배송지 정보도 그대로 사용 가능)
*
* @return array 수령자 정보가 이스케이프된 주문 정보
*/
public function escapeReceiverInfo(array $data): array
{
foreach (static::RECEIVER_ESCAPE_FIELDS as $receiverField) {
if (isset($data[$receiverField])) {
$data[$receiverField] = StringUtils::htmlSpecialChars($data[$receiverField]);
}
}
 
// 마이페이지 주문상세의 방문 수령지 주소는 배송지별 중첩 배열로 출력된다
if (isset($data['visitDeliveryInfo']['address'])) {
$data['visitDeliveryInfo']['address'] = StringUtils::htmlSpecialChars($data['visitDeliveryInfo']['address']);
}
 
// 남기실 내용은 이스케이프 뒤에 줄바꿈을 변환한다
if (isset($data['orderMemo'])) {
$data['orderMemo'] = $this->nl2brRecursive(
StringUtils::htmlSpecialChars($data['orderMemo'])
);
}
 
return $data;
}
 
/**
* 문자열 또는 배열에 nl2br 을 적용
*
* @param array|string|null $value 변환할 값 (멀티 배송지는 필드별 배열로 들어온다)
*
* @return array|string 줄바꿈이 <br /> 로 변환된 값
*/
protected function nl2brRecursive($value)
{
if (is_array($value)) {
return array_map([$this, 'nl2brRecursive'], $value);
}
 
return nl2br($value ?? '');
}
 
/**
* 배송지 정보 수정
*/
 
Component/RegularDelivery/RegularOrder/RegularOrderShippingAddress.php+1-1
변경 전RegularOrderShippingAddress.php
'shippingName' => htmlspecialchars($address['shippingName'], ENT_QUOTES),
'shippingPhone' => $address['shippingPhone'],
'shippingCellPhone' => $address['shippingCellPhone'],
'shippingZoneCode' => $address['shippingZonecode'],
'shippingAddress' => htmlspecialchars($address['shippingAddress'], ENT_QUOTES),
'shippingAddressSub' => htmlspecialchars($address['shippingAddressSub'], ENT_QUOTES),
'shippingMessage' => htmlspecialchars($address['shippingMessage'], ENT_QUOTES),
 
변경 후RegularOrderShippingAddress.php
'shippingName' => htmlspecialchars($address['shippingName'], ENT_QUOTES),
'shippingPhone' => $address['shippingPhone'],
'shippingCellPhone' => $address['shippingCellPhone'],
'shippingZoneCode' => htmlspecialchars($address['shippingZonecode'], ENT_QUOTES),
'shippingAddress' => htmlspecialchars($address['shippingAddress'], ENT_QUOTES),
'shippingAddressSub' => htmlspecialchars($address['shippingAddressSub'], ENT_QUOTES),
'shippingMessage' => htmlspecialchars($address['shippingMessage'], ENT_QUOTES),
 
Controller/Admin/Order/LayerReceiverInfoController.php+4-1
변경 전LayerReceiverInfoController.php
use Exception;
use Request;
use App;
 
 
/**
* Class LayerReceiverInfoController
// 모듈 설정
$order = App::load(\Component\Order\OrderAdmin::class);
$getData = $order->getOrderView($postValue['orderNo']);
$this->setData('data', $getData);
 
 
// 국가데이터 가져오기
$countriesCode = $order->getUsableCountriesList($getData['mallSno']);
 
변경 후LayerReceiverInfoController.php
use Exception;
use Request;
use App;
use Framework\Utility\StringUtils;
 
/**
* Class LayerReceiverInfoController
// 모듈 설정
$order = App::load(\Component\Order\OrderAdmin::class);
$getData = $order->getOrderView($postValue['orderNo']);
 
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('data', StringUtils::htmlSpecialChars($getData));
// 국가데이터 가져오기
$countriesCode = $order->getUsableCountriesList($getData['mallSno']);
 
Controller/Admin/Order/OrderViewController.php+26-2
변경 전OrderViewController.php
use Origin\Enum\Privacy\Withdrawn\WithdrawnSection;
use Session;
use Request;
 
 
/**
* 주문 상세 페이지
}
}
 
// 네이버페이 메모
if ($naverPayMemo) {
$this->setData('naverPayMemo', $naverPayMemo);
}
 
if($naverpayIndividualCustomUniqueCode) {
// 템플릿 데이터 설정
$this->setData('order', $order);
if ($data['orderChannelFl'] == 'naverpay') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
$this->setData('data', gd_isset($data));
} else {
$this->setData('data', gd_htmlspecialchars(gd_isset($data)));
}
 
 
 
// 주문자명: 탈퇴/휴면=회원유형 라벨, 일반 회원=null
$this->setData('orderMaskLabel', $orderMaskLabel);
// 주소는 우편번호·기본·상세·시도·시군구가 각각 '-' 로 치환돼 한 칸에 모이면 하이픈이 반복된다.
 
변경 후OrderViewController.php
use Origin\Enum\Privacy\Withdrawn\WithdrawnSection;
use Session;
use Request;
use Framework\Utility\StringUtils;
 
/**
* 주문 상세 페이지
}
}
 
// 네이버페이 메모 (네이버페이 주문은 남기실 내용 대신 이 값을 출력한다)
if ($naverPayMemo) {
$this->setData('naverPayMemo', StringUtils::htmlSpecialChars($naverPayMemo));
}
 
if($naverpayIndividualCustomUniqueCode) {
// 템플릿 데이터 설정
$this->setData('order', $order);
if ($data['orderChannelFl'] == 'naverpay') {
// 네이버페이는 goods 항목의 orderStatusStr 등에 서버가 생성한 HTML 이 포함되어 전체 이스케이프가 불가하다
$receiverEscapeFields = $order::RECEIVER_ESCAPE_FIELDS;
foreach ($receiverEscapeFields as $receiverEscapeField) {
if (isset($data[$receiverEscapeField])) {
$data[$receiverEscapeField] = StringUtils::htmlSpecialChars($data[$receiverEscapeField]);
}
}
// 방문 수령지 주소는 배송지별 중첩 배열이라 필드 목록 순회에 걸리지 않는다
if (isset($data['visitDeliveryInfo']['address'])) {
$data['visitDeliveryInfo']['address'] = StringUtils::htmlSpecialChars($data['visitDeliveryInfo']['address']);
}
if (!empty($data['multiShippingList'])) {
foreach ($data['multiShippingList'] as $multiShippingKey => $multiShippingData) {
foreach ($receiverEscapeFields as $receiverEscapeField) {
if (isset($multiShippingData[$receiverEscapeField])) {
$data['multiShippingList'][$multiShippingKey][$receiverEscapeField] = StringUtils::htmlSpecialChars($multiShippingData[$receiverEscapeField]);
}
}
}
}
$this->setData('data', gd_isset($data));
} else {
$this->setData('data', gd_htmlspecialchars(gd_isset($data)));
}
if (!empty($withdrawnMembersPersonalData)) {
$withdrawnMembersPersonalData = StringUtils::htmlSpecialChars($withdrawnMembersPersonalData);
}
// 주문자명: 탈퇴/휴면=회원유형 라벨, 일반 회원=null
$this->setData('orderMaskLabel', $orderMaskLabel);
// 주소는 우편번호·기본·상세·시도·시군구가 각각 '-' 로 치환돼 한 칸에 모이면 하이픈이 반복된다.
 
Controller/Admin/Order/RegularOrderViewController.php+6-2
변경 전RegularOrderViewController.php
// 카드번호는 표시 전용이라(폼·파라미터 미사용) 원본을 남기지 않고 덮는다
$this->setData('cardNo', ColumnMaskingService::DEFAULT_MASK);
}
$this->setData('applierInfo', $applierInfo);
$this->setData('shippingInfo', $shippingInfo);
// 신청자명(1A): 탈퇴/휴면이면 회원 유형 라벨로 표시(뷰: applierMaskLabel ?: 기존식). 일반 회원=null.
$this->setData('applierMaskLabel', $applierMaskLabel);
// 배송지처럼 구성요소가 한 칸에 모이는 항목은 뷰가 칸 전체를 이 값 하나로 대체한다
$this->setData('maskChar', ColumnMaskingService::DEFAULT_MASK);
 
 
 
 
 
// 정기결제 신청서 상담 및 관리자 메모 정보
$consultMemo = $regularOrderAdminDetail->getRegularOrderConsultMemo($applyNo);
$this->setData('consultMemo', $consultMemo);
 
변경 후RegularOrderViewController.php
// 카드번호는 표시 전용이라(폼·파라미터 미사용) 원본을 남기지 않고 덮는다
$this->setData('cardNo', ColumnMaskingService::DEFAULT_MASK);
}
$this->setData('applierInfo', gd_htmlspecialchars($applierInfo));
$this->setData('shippingInfo', gd_htmlspecialchars($shippingInfo));
// 신청자명(1A): 탈퇴/휴면이면 회원 유형 라벨로 표시(뷰: applierMaskLabel ?: 기존식). 일반 회원=null.
$this->setData('applierMaskLabel', $applierMaskLabel);
// 배송지처럼 구성요소가 한 칸에 모이는 항목은 뷰가 칸 전체를 이 값 하나로 대체한다
$this->setData('maskChar', ColumnMaskingService::DEFAULT_MASK);
 
// SMS 발송 팝업은 urlencode 로 전달하며, 수신자명이 회원명과 다르면 비회원으로 분류되므로 이스케이프 전 값을 사용한다
$this->setData('applierNameRaw', $regularOrderShippingInfo['applierInfo']['applierName'] ?? '');
$this->setData('shippingNameRaw', $regularOrderShippingInfo['shippingInfo']['shippingName'] ?? '');
 
// 정기결제 신청서 상담 및 관리자 메모 정보
$consultMemo = $regularOrderAdminDetail->getRegularOrderConsultMemo($applyNo);
$this->setData('consultMemo', $consultMemo);
 
Controller/Admin/Share/LayerShippingAddressController.php+4-1
변경 전LayerShippingAddressController.php
use Exception;
use App;
use Framework\Debug\Exception\AlertCloseException;
 
 
/**
* Class LayerShippingAddress
 
$order = App::load('\\Component\\Order\\Order');
$deliveryAddress = $order->getShippingAddressList($getValue['page'], $getValue['pageNum'], $getValue['memNo']);
$this->setData('deliveryAddress', $deliveryAddress);
 
 
 
// 페이지
$pageObj = \App::load('\\Component\\Page\\Page');
 
변경 후LayerShippingAddressController.php
use Exception;
use App;
use Framework\Debug\Exception\AlertCloseException;
use Framework\Utility\StringUtils;
 
/**
* Class LayerShippingAddress
 
$order = App::load('\\Component\\Order\\Order');
$deliveryAddress = $order->getShippingAddressList($getValue['page'], $getValue['pageNum'], $getValue['memNo']);
 
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('deliveryAddress', StringUtils::htmlSpecialChars($deliveryAddress));
 
// 페이지
$pageObj = \App::load('\\Component\\Page\\Page');
 
Controller/Front/Mypage/OrderViewController.php+14-7
변경 전OrderViewController.php
$multiOrderInfo = null;
if ($orderData['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo(Request::get()->get('orderNo'));
$this->setData('multiOrderInfo', $multiOrderInfo);
$this->setData('isUseMultiShipping', true);
}
 
// 우체국 반품 수거 반송추적 — 보충 조회 1회로 행에 서버 조립 URL 주입 (송장 원문 미노출)
$orderData = \App::getInstance(ReturnInvoice::class)->assignTraceUrls($orderData);
 
$this->setData('orderData', $orderData);
 
 
 
 
 
 
$orderData = $orderData[0];
// 회원할인에 회원 배송비 할인 추가
$orderData['totalMemberDcPrice'] += $orderData['totalMemberDeliveryDcPrice'];
if ($isPresentOrder) {
$presentOrderAdmin = \App::getInstance(\Component\Present\Order\PresentOrderAdmin::class);
$presentOrderAdmin->maskReceiverInfo($orderData, $multiOrderInfo);
if (!empty($multiOrderInfo)) {
$this->setData('multiOrderInfo', $multiOrderInfo);
}
}
 
 
 
 
 
 
$this->setData('orderInfo', $orderData);
$this->setData('guest', Request::get()->get('guest'));
 
 
변경 후OrderViewController.php
$multiOrderInfo = null;
if ($orderData['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo(Request::get()->get('orderNo'));
 
$this->setData('isUseMultiShipping', true);
}
 
// 우체국 반품 수거 반송추적 — 보충 조회 1회로 행에 서버 조립 URL 주입 (송장 원문 미노출)
$orderData = \App::getInstance(ReturnInvoice::class)->assignTraceUrls($orderData);
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$escapedOrderData = [];
foreach ($orderData as $orderKey => $orderRow) {
$escapedOrderData[$orderKey] = $order->escapeReceiverInfo($orderRow);
}
 
$this->setData('orderData', $escapedOrderData);
$orderData = $orderData[0];
// 회원할인에 회원 배송비 할인 추가
$orderData['totalMemberDcPrice'] += $orderData['totalMemberDeliveryDcPrice'];
if ($isPresentOrder) {
$presentOrderAdmin = \App::getInstance(\Component\Present\Order\PresentOrderAdmin::class);
$presentOrderAdmin->maskReceiverInfo($orderData, $multiOrderInfo);
 
 
 
 
}
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$orderData = $order->escapeReceiverInfo($orderData);
if (isset($multiOrderInfo)) {
$this->setData('multiOrderInfo', $order->escapeReceiverInfo($multiOrderInfo));
}
 
$this->setData('orderInfo', $orderData);
$this->setData('guest', Request::get()->get('guest'));
 
 
Controller/Front/Mypage/RegularDeliveryShippingAddressChangeController.php+2-1
변경 전RegularDeliveryShippingAddressChangeController.php
$pager = $shippingAddressList['pager'];
 
// 데이터 뷰에 전달
$this->setData('shippingAddressList', $shippingList);
 
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
}
}
 
변경 후RegularDeliveryShippingAddressChangeController.php
$pager = $shippingAddressList['pager'];
 
// 데이터 뷰에 전달
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('shippingAddressList', \Framework\Utility\StringUtils::htmlSpecialChars($shippingList));
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
}
}
 
Controller/Front/Mypage/ShippingController.php+6-2
변경 전ShippingController.php
use Framework\Utility\DateTimeUtils;
use App;
use Request;
 
 
/**
* Class ShippingController
$pageNo = Request::get()->get('page', 1);
 
$shippingList = $order->getShippingAddressList($pageNo, 10);
$this->setData('shippingList', $shippingList);
 
 
 
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
 
 
 
// 데이터 뷰에 전달
$this->setData('regularShippingList', $regularShippingList['list']);
 
$this->setData('totalShippingAddressList', $regularShippingList['pager']->recode['total'] ?? 0);
 
// 정기배송지 페이징 처리
 
변경 후ShippingController.php
use Framework\Utility\DateTimeUtils;
use App;
use Request;
use Framework\Utility\StringUtils;
 
/**
* Class ShippingController
$pageNo = Request::get()->get('page', 1);
 
$shippingList = $order->getShippingAddressList($pageNo, 10);
 
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('shippingList', StringUtils::htmlSpecialChars($shippingList));
 
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
 
 
 
// 데이터 뷰에 전달
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('regularShippingList', StringUtils::htmlSpecialChars($regularShippingList['list']));
$this->setData('totalShippingAddressList', $regularShippingList['pager']->recode['total'] ?? 0);
 
// 정기배송지 페이징 처리
 
Controller/Front/Order/LayerRegularOrderShippingAddressController.php+3-1
변경 전LayerRegularOrderShippingAddressController.php
use Component\Member\Util\MemberUtil;
use Controller\Front\Controller;
use Exception;
 
use Request;
 
class LayerRegularOrderShippingAddressController extends Controller
$shippingList = $shippingInfo['list'];
$pager = $shippingInfo['pager'];
 
$this->setData('deliveryAddress', $shippingList);
 
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
} catch (Exception $e) {
\Logger::channel('regularOrder')->error(__CLASS__ . 'Regular order shipping address 조회 실패', $e->getMessage());
 
변경 후LayerRegularOrderShippingAddressController.php
use Component\Member\Util\MemberUtil;
use Controller\Front\Controller;
use Exception;
use Framework\Utility\StringUtils;
use Request;
 
class LayerRegularOrderShippingAddressController extends Controller
$shippingList = $shippingInfo['list'];
$pager = $shippingInfo['pager'];
 
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('deliveryAddress', StringUtils::htmlSpecialChars($shippingList));
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
} catch (Exception $e) {
\Logger::channel('regularOrder')->error(__CLASS__ . 'Regular order shipping address 조회 실패', $e->getMessage());
 
Controller/Front/Order/LayerRegularOrderShippingAddressRegistController.php+3-1
변경 전LayerRegularOrderShippingAddressRegistController.php
use Controller\Front\Controller;
use Request;
use Component\Member\Util\MemberUtil;
 
 
class LayerRegularOrderShippingAddressRegistController extends Controller
{
// 수정 화면
$regularOrderShippingAddress->hasActiveOrPausedOrdersUsingShippingAddress($shippingAddressSno, $memNo); // 이미 등록된 배송지로 활성화 또는 일시정지된 정기배송이 있는지 확인
$shippingInfo = $regularOrderShippingAddress->getShippingAddressInfo($shippingAddressSno, $memNo);
$this->setData('data', $shippingInfo);
 
$this->setData('mode', 'shipping_modify');
} else {
// 등록 화면
 
변경 후LayerRegularOrderShippingAddressRegistController.php
use Controller\Front\Controller;
use Request;
use Component\Member\Util\MemberUtil;
use Framework\Utility\StringUtils;
 
class LayerRegularOrderShippingAddressRegistController extends Controller
{
// 수정 화면
$regularOrderShippingAddress->hasActiveOrPausedOrdersUsingShippingAddress($shippingAddressSno, $memNo); // 이미 등록된 배송지로 활성화 또는 일시정지된 정기배송이 있는지 확인
$shippingInfo = $regularOrderShippingAddress->getShippingAddressInfo($shippingAddressSno, $memNo);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('data', StringUtils::htmlSpecialChars($shippingInfo));
$this->setData('mode', 'shipping_modify');
} else {
// 등록 화면
 
Controller/Front/Order/LayerShippingAddressController.php+3-1
변경 전LayerShippingAddressController.php
use Session;
use Request;
use Exception;
 
/**
* Class LayerDeliveryAddress
$order = App::load(\Component\Order\Order::class);
$deliveryAddress = $order->getShippingAddressList($page);
$this->setData('deliveryAddress', $deliveryAddress);
 
$this->setData('shippingNo', \Request::get()->get('shippingNo'));
// 페이징 처리
 
변경 후LayerShippingAddressController.php
use Session;
use Request;
use Exception;
use Framework\Utility\StringUtils;
/**
* Class LayerDeliveryAddress
$order = App::load(\Component\Order\Order::class);
$deliveryAddress = $order->getShippingAddressList($page);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('deliveryAddress', StringUtils::htmlSpecialChars($deliveryAddress));
$this->setData('shippingNo', \Request::get()->get('shippingNo'));
// 페이징 처리
 
Controller/Front/Order/LayerShippingAddressRegistController.php+4-1
변경 전LayerShippingAddressRegistController.php
use Exception;
use Framework\Debug\Exception\WarningException;
use Request;
 
/**
* Class LayerDeliveryAddress
if (Request::get()->has('sno') && is_numeric(Request::get()->get('sno'))) {
$data = $order->getShippingAddressData(Request::get()->get('sno'));
$this->setData('data', $data);
 
 
$this->setData('mode', 'shipping_modify');
} else {
if (empty($order->getShippingDefaultFlYn()) === true) {
 
변경 후LayerShippingAddressRegistController.php
use Exception;
use Framework\Debug\Exception\WarningException;
use Request;
use Framework\Utility\StringUtils;
/**
* Class LayerDeliveryAddress
if (Request::get()->has('sno') && is_numeric(Request::get()->get('sno'))) {
$data = $order->getShippingAddressData(Request::get()->get('sno'));
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('data', StringUtils::htmlSpecialChars($data));
$this->setData('mode', 'shipping_modify');
} else {
if (empty($order->getShippingDefaultFlYn()) === true) {
 
Controller/Front/Order/OrderEndController.php+8-1
변경 전OrderEndController.php
 
if ($orderInfo['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo($orderNo);
$this->setData('multiOrderInfo', $multiOrderInfo);
 
 
}
 
// 수취인 배송 국가명
}
 
$this->setData('naverCommonInflowScript', gd_isset($naverCommonInflowScript));
 
 
 
 
 
$this->setData('orderInfo', gd_isset($orderInfo));
 
} catch (\Exception $e) {
 
변경 후OrderEndController.php
 
if ($orderInfo['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo($orderNo);
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$this->setData('multiOrderInfo', $order->escapeReceiverInfo($multiOrderInfo));
}
 
// 수취인 배송 국가명
}
 
$this->setData('naverCommonInflowScript', gd_isset($naverCommonInflowScript));
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
if (!empty($orderInfo)) {
$orderInfo = $order->escapeReceiverInfo($orderInfo);
}
$this->setData('orderInfo', gd_isset($orderInfo));
 
} catch (\Exception $e) {
 
Controller/Front/Order/RegularOrderController.php+3-1
변경 전RegularOrderController.php
use Component\Cart\RegularOrderCart;
use Controller\Front\Controller;
use Framework\Debug\Exception\AlertRedirectException;
 
use Request;
 
class RegularOrderController extends Controller
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
$memNo = \Session::get('member.memNo');
$defaultShippingInfo = $regularOrderShippingAddress->findDefaultShippingInfo($memNo);
$this->setData('shippingInfo', $defaultShippingInfo);
 
 
// pg 정보
$pgConf = gd_policy('autoPg.pgName');
 
변경 후RegularOrderController.php
use Component\Cart\RegularOrderCart;
use Controller\Front\Controller;
use Framework\Debug\Exception\AlertRedirectException;
use Framework\Utility\StringUtils;
use Request;
 
class RegularOrderController extends Controller
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
$memNo = \Session::get('member.memNo');
$defaultShippingInfo = $regularOrderShippingAddress->findDefaultShippingInfo($memNo);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('shippingInfo', StringUtils::htmlSpecialChars($defaultShippingInfo));
 
// pg 정보
$pgConf = gd_policy('autoPg.pgName');
 
Controller/Front/Order/RegularOrderEndController.php+3-1
변경 전RegularOrderEndController.php
namespace Bundle\Controller\Front\Order;
 
use Controller\Front\Controller;
 
 
class RegularOrderEndController extends Controller
{
$orderInfo = $regularOrder->getOrderEndInfo($applyGroupNo);
}
 
$this->setData('orderInfo', $orderInfo['orderInfo']);
 
$this->setData('orderGoodsName', $orderInfo['orderGoodsName']);
$this->setData('cardName', $orderInfo['cardName']);
$this->setData('cardNo', $orderInfo['cardNo']);
 
변경 후RegularOrderEndController.php
namespace Bundle\Controller\Front\Order;
 
use Controller\Front\Controller;
use Framework\Utility\StringUtils;
 
class RegularOrderEndController extends Controller
{
$orderInfo = $regularOrder->getOrderEndInfo($applyGroupNo);
}
 
// XSS 방지 - 배송지 뷰 출력용 이스케이프 (신청 정보는 텍스트 컬럼만 조회해 전체 이스케이프 가능)
$this->setData('orderInfo', StringUtils::htmlSpecialChars($orderInfo['orderInfo'] ?? []));
$this->setData('orderGoodsName', $orderInfo['orderGoodsName']);
$this->setData('cardName', $orderInfo['cardName']);
$this->setData('cardNo', $orderInfo['cardNo']);
 
Controller/Mobile/Mypage/LayerShippingAddressRegistController.php+4-1
변경 전LayerShippingAddressRegistController.php
use Component\Member\Util\MemberUtil;
use Exception;
use Request;
 
/**
* 배송지 등록 레이어
if (Request::get()->has('sno') && is_numeric(Request::get()->get('sno'))) {
$data = $order->getShippingAddressData(Request::get()->get('sno'));
$this->setData('data', $data);
 
 
$this->setData('mode', 'shipping_modify');
} else {
if (empty($order->getShippingDefaultFlYn()) === true) {
 
변경 후LayerShippingAddressRegistController.php
use Component\Member\Util\MemberUtil;
use Exception;
use Request;
use Framework\Utility\StringUtils;
/**
* 배송지 등록 레이어
if (Request::get()->has('sno') && is_numeric(Request::get()->get('sno'))) {
$data = $order->getShippingAddressData(Request::get()->get('sno'));
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('data', StringUtils::htmlSpecialChars($data));
$this->setData('mode', 'shipping_modify');
} else {
if (empty($order->getShippingDefaultFlYn()) === true) {
 
Controller/Mobile/Mypage/OrderViewController.php+15-8
변경 전OrderViewController.php
$multiOrderInfo = null;
if ($orderData['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo(Request::get()->get('orderNo'));
$this->setData('multiOrderInfo', $multiOrderInfo);
$this->setData('isUseMultiShipping', true);
}
 
// 우체국 반품 수거 반송추적 — 보충 조회 1회로 행에 서버 조립 URL 주입 (송장 원문 미노출)
$orderData = \App::getInstance(ReturnInvoice::class)->assignTraceUrls($orderData);
 
$this->setData('orderData', $orderData);
 
 
 
 
 
 
 
$ordersByRegisterDay = [];
foreach ($orderData as $index => $item) {
if (empty($item['regDt']) === false) {
$ordersByRegisterDay[DateTimeUtils::dateFormat('Y-m-d', $item['regDt'])][] = $item;
$ordersByRegisterDay[DateTimeUtils::dateFormat('Y-m-d', $item['regDt'])][$index]['orderGoodsCnt'] = gd_count($item['goods']);
if ($isPresentOrder) {
$presentOrderAdmin = \App::getInstance(\Component\Present\Order\PresentOrderAdmin::class);
$presentOrderAdmin->maskReceiverInfo($orderData, $multiOrderInfo);
if (!empty($multiOrderInfo)) {
$this->setData('multiOrderInfo', $multiOrderInfo);
}
}
 
 
 
 
 
 
$this->setData('orderInfo', $orderData);
$this->setData('guest', Request::get()->get('guest'));
 
 
변경 후OrderViewController.php
$multiOrderInfo = null;
if ($orderData['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo(Request::get()->get('orderNo'));
 
$this->setData('isUseMultiShipping', true);
}
 
// 우체국 반품 수거 반송추적 — 보충 조회 1회로 행에 서버 조립 URL 주입 (송장 원문 미노출)
$orderData = \App::getInstance(ReturnInvoice::class)->assignTraceUrls($orderData);
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$escapedOrderData = [];
foreach ($orderData as $orderKey => $orderRow) {
$escapedOrderData[$orderKey] = $order->escapeReceiverInfo($orderRow);
}
 
$this->setData('orderData', $escapedOrderData);
 
$ordersByRegisterDay = [];
foreach ($escapedOrderData as $index => $item) {
if (empty($item['regDt']) === false) {
$ordersByRegisterDay[DateTimeUtils::dateFormat('Y-m-d', $item['regDt'])][] = $item;
$ordersByRegisterDay[DateTimeUtils::dateFormat('Y-m-d', $item['regDt'])][$index]['orderGoodsCnt'] = gd_count($item['goods']);
if ($isPresentOrder) {
$presentOrderAdmin = \App::getInstance(\Component\Present\Order\PresentOrderAdmin::class);
$presentOrderAdmin->maskReceiverInfo($orderData, $multiOrderInfo);
 
 
 
 
}
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$orderData = $order->escapeReceiverInfo($orderData);
if (isset($multiOrderInfo)) {
$this->setData('multiOrderInfo', $order->escapeReceiverInfo($multiOrderInfo));
}
 
$this->setData('orderInfo', $orderData);
$this->setData('guest', Request::get()->get('guest'));
 
 
Controller/Mobile/Mypage/ShippingController.php+4-1
변경 전ShippingController.php
use Framework\Utility\DateTimeUtils;
use App;
use Request;
 
/**
* Class ShippingController
$pageNo = Request::get()->get('page', 1);
$shippingList = $order->getShippingAddressList($pageNo, 100);
$this->setData('shippingList', $shippingList);
 
 
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
 
변경 후ShippingController.php
use Framework\Utility\DateTimeUtils;
use App;
use Request;
use Framework\Utility\StringUtils;
/**
* Class ShippingController
$pageNo = Request::get()->get('page', 1);
$shippingList = $order->getShippingAddressList($pageNo, 100);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('shippingList', StringUtils::htmlSpecialChars($shippingList));
$regularOrderShippingAddress = \App::getInstance(\Component\RegularDelivery\RegularOrder\RegularOrderShippingAddress::class);
 
Controller/Mobile/Order/LayerRegularOrderShippingAddressController.php+3-1
변경 전LayerRegularOrderShippingAddressController.php
use Component\Member\Util\MemberUtil;
use Controller\Mobile\Controller;
use Exception;
 
use Request;
 
class LayerRegularOrderShippingAddressController extends Controller
$shippingList = $shippingInfo['list'];
$pager = $shippingInfo['pager'];
 
$this->setData('deliveryAddress', $shippingList);
 
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
} catch (Exception $e) {
\Logger::channel('regularOrder')->error(__CLASS__ . 'Regular order shipping address 조회 실패', $e->getMessage());
 
변경 후LayerRegularOrderShippingAddressController.php
use Component\Member\Util\MemberUtil;
use Controller\Mobile\Controller;
use Exception;
use Framework\Utility\StringUtils;
use Request;
 
class LayerRegularOrderShippingAddressController extends Controller
$shippingList = $shippingInfo['list'];
$pager = $shippingInfo['pager'];
 
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('deliveryAddress', StringUtils::htmlSpecialChars($shippingList));
$this->setData('pagination', $pager->getPage('goPageOnDeliveryAddress(\'PAGELINK\');'));
} catch (Exception $e) {
\Logger::channel('regularOrder')->error(__CLASS__ . 'Regular order shipping address 조회 실패', $e->getMessage());
 
Controller/Mobile/Order/LayerRegularOrderShippingAddressRegistController.php+3-1
변경 전LayerRegularOrderShippingAddressRegistController.php
use Controller\Mobile\Controller;
use Request;
use Component\Member\Util\MemberUtil;
 
 
class LayerRegularOrderShippingAddressRegistController extends Controller
{
// 수정 화면
$regularOrderShippingAddress->hasActiveOrPausedOrdersUsingShippingAddress($shippingAddressSno, $memNo); // 이미 등록된 배송지로 활성화 또는 일시정지된 정기배송이 있는지 확인
$shippingInfo = $regularOrderShippingAddress->getShippingAddressInfo($shippingAddressSno, $memNo);
$this->setData('data', $shippingInfo);
 
$this->setData('mode', 'shipping_modify');
} else {
// 등록 화면
 
변경 후LayerRegularOrderShippingAddressRegistController.php
use Controller\Mobile\Controller;
use Request;
use Component\Member\Util\MemberUtil;
use Framework\Utility\StringUtils;
 
class LayerRegularOrderShippingAddressRegistController extends Controller
{
// 수정 화면
$regularOrderShippingAddress->hasActiveOrPausedOrdersUsingShippingAddress($shippingAddressSno, $memNo); // 이미 등록된 배송지로 활성화 또는 일시정지된 정기배송이 있는지 확인
$shippingInfo = $regularOrderShippingAddress->getShippingAddressInfo($shippingAddressSno, $memNo);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('data', StringUtils::htmlSpecialChars($shippingInfo));
$this->setData('mode', 'shipping_modify');
} else {
// 등록 화면
 
Controller/Mobile/Order/OrderController.php+3-1
변경 전OrderController.php
if((int)Session::get('member.memNo') > 0){
// 기본 배송지 정보 가져오기
$defaultShippingAddress = $order->getDefaultShippingAddress();
$this->setData('basiceShippingAddress', $defaultShippingAddress);
 
 
$this->setData('shippingDefaultFl', $order->getShippingDefaultFlYn());
}
 
 
변경 후OrderController.php
if((int)Session::get('member.memNo') > 0){
// 기본 배송지 정보 가져오기
$defaultShippingAddress = $order->getDefaultShippingAddress();
 
// XSS 방지 - 뷰 출력용 이스케이프 (원본은 아래 shippingCountryCode 판별에 재사용)
$this->setData('basiceShippingAddress', StringUtils::htmlSpecialChars($defaultShippingAddress));
$this->setData('shippingDefaultFl', $order->getShippingDefaultFlYn());
}
 
 
Controller/Mobile/Order/OrderEndController.php+8-1
변경 전OrderEndController.php
 
if ($orderInfo['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo($orderNo);
$this->setData('multiOrderInfo', $multiOrderInfo);
 
 
}
 
$dbUrl = \App::load('\\Component\\Marketing\\DBUrl');
}
 
$this->setData('naverCommonInflowScript', gd_isset($naverCommonInflowScript));
 
 
 
 
 
$this->setData('orderInfo', gd_isset($orderInfo));
 
} catch (\Exception $e) {
 
변경 후OrderEndController.php
 
if ($orderInfo['multiShippingFl'] == 'y') {
$multiOrderInfo = $order->getMultiOrderInfo($orderNo);
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
$this->setData('multiOrderInfo', $order->escapeReceiverInfo($multiOrderInfo));
}
 
$dbUrl = \App::load('\\Component\\Marketing\\DBUrl');
}
 
$this->setData('naverCommonInflowScript', gd_isset($naverCommonInflowScript));
 
// XSS 방지 - 수령자 정보 뷰 출력용 이스케이프
if (!empty($orderInfo)) {
$orderInfo = $order->escapeReceiverInfo($orderInfo);
}
$this->setData('orderInfo', gd_isset($orderInfo));
 
} catch (\Exception $e) {
 
Controller/Mobile/Order/OrderPsController.php+6
변경 전OrderPsController.php
use Framework\Debug\Exception\AlertBackException;
use Framework\Utility\NumberUtils;
use Framework\Utility\ProducerUtils;
 
use Globals;
use Origin\Service\Order\OrderInfoService;
use Request;
try {
$order = App::load(\Component\Order\Order::class);
$deliveryAddress = $order->getShippingAddressList(1, 999);
 
 
 
 
 
$this->json($deliveryAddress);
} catch (Exception $e) {
$this->json([
 
변경 후OrderPsController.php
use Framework\Debug\Exception\AlertBackException;
use Framework\Utility\NumberUtils;
use Framework\Utility\ProducerUtils;
use Framework\Utility\StringUtils;
use Globals;
use Origin\Service\Order\OrderInfoService;
use Request;
try {
$order = App::load(\Component\Order\Order::class);
$deliveryAddress = $order->getShippingAddressList(1, 999);
 
// XSS 방지 - 스킨이 innerHTML로 출력하는 shippingTitle만 이스케이프 (나머지 필드는 .val()로 input에 채워져 이스케이프하면 엔티티가 그대로 노출됨)
foreach ($deliveryAddress as $key => $shippingAddress) {
$deliveryAddress[$key]['shippingTitle'] = StringUtils::htmlSpecialChars($shippingAddress['shippingTitle']);
}
$this->json($deliveryAddress);
} catch (Exception $e) {
$this->json([
 
Controller/Mobile/Order/RegularOrderController.php+4-2
변경 전RegularOrderController.php
use Component\Mall\Mall;
use Component\Cart\RegularOrderCart;
use Framework\Debug\Exception\AlertRedirectException;
 
use Request;
 
class RegularOrderController extends Controller
$defaultShippingInfo = $regularOrderShippingAddress->findDefaultShippingInfo($memNo);
}
$shippingList = $regularOrderShippingAddress->getRegularOrderShippingAddress($memNo, 1, 999);
$this->setData('shippingInfo', $defaultShippingInfo);
$this->setData('shippingList', $shippingList['list']);
 
 
// pg 정보
$pgConf = gd_policy('autoPg.pgName');
 
변경 후RegularOrderController.php
use Component\Mall\Mall;
use Component\Cart\RegularOrderCart;
use Framework\Debug\Exception\AlertRedirectException;
use Framework\Utility\StringUtils;
use Request;
 
class RegularOrderController extends Controller
$defaultShippingInfo = $regularOrderShippingAddress->findDefaultShippingInfo($memNo);
}
$shippingList = $regularOrderShippingAddress->getRegularOrderShippingAddress($memNo, 1, 999);
// XSS 방지 - 뷰(스킨/Asset) 출력용 이스케이프
$this->setData('shippingInfo', StringUtils::htmlSpecialChars($defaultShippingInfo));
$this->setData('shippingList', StringUtils::htmlSpecialChars($shippingList['list']));
 
// pg 정보
$pgConf = gd_policy('autoPg.pgName');
 
data/skin/mobile/moment/order/order.html-54
변경 전order.html
<div id="pgSettlementApplyLayer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
<script id="myShippingList" type="text/html">
<li class="delivery_item">
<div class="inp_rdo">
 
<input type="radio" id="input<%=idx%>" name="shipping"/>
<label for="input<%=idx%>"></label>
 
</div>
<div class="del_body">
<label for="input1">
<div class="del-name">
<span class="shipping_name"><strong><%=shippingName%></strong></span>
<% if (defaultFl == 'y') { %>
<span>({=__('기본배송지')})</span>
<% } %>
</div>
<div class="del-address">
<span class="shipping_zonecode"><%=shippingZonecode%></span>
<% if (shippingZipcode != '') { %>
(
<span class="shipping_zipcode"><%=shippingZipcode%></span>
)
<% } %>
<!--{ ? gGlobal.isFront }-->
<span class="shipping_addresssub"><%=shippingAddressSub%></span>,
<span class="shipping_address"><%=shippingAddress%></span>,
<span class="shipping_state"><%=shippingState%></span>,
<span class="shipping_city"><%=shippingCity%></span>,
<span class="shipping_country"><%=shippingCountry%></span>
<span class="shipping_country_code dn"><%=shippingCountryCode%></span>
<!--{ : }-->
<span class="shipping_address"><%=shippingAddress%></span>
<span class="shipping_addresssub"><%=shippingAddressSub%></span>
<!--{ / }-->
</div>
<div class="del-callnum">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping_cellphone_prefix"><%=shippingCellPhonePrefix%></span>)
<span class="shipping_cellphone_prefixcode dn"><%=shippingCellPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping_cellphone"><%=shippingCellPhone%></span>
 
<span class="dn">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping_phone_prefix"><%=shippingPhonePrefix%></span>)
<span class="shipping_phone_prefixcode dn"><%=shippingPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping_phone"><%=shippingPhone%></span>
</span>
</div>
</label>
</div>
</li>
</script>
<!-- //나의 배송지 관리 레이어 -->
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">
 
변경 후order.html
<div id="pgSettlementApplyLayer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- //나의 배송지 관리 레이어 -->
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">
 
data/skin/mobile/mygreek/order/order.html-54
변경 전order.html
<div id="pgSettlementApplyLayer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
<script id="myShippingList" type="text/html">
<li class="delivery_item">
<div class="inp_rdo">
 
<input type="radio" id="input<%=idx%>" name="shipping"/>
<label for="input<%=idx%>"></label>
 
</div>
<div class="del_body">
<label for="input1">
<div class="del-name">
<span class="shipping_name"><strong><%=shippingName%></strong></span>
<% if (defaultFl == 'y') { %>
<span>({=__('기본배송지')})</span>
<% } %>
</div>
<div class="del-address">
<span class="shipping_zonecode"><%=shippingZonecode%></span>
<% if (shippingZipcode != '') { %>
(
<span class="shipping_zipcode"><%=shippingZipcode%></span>
)
<% } %>
<!--{ ? gGlobal.isFront }-->
<span class="shipping_addresssub"><%=shippingAddressSub%></span>,
<span class="shipping_address"><%=shippingAddress%></span>,
<span class="shipping_state"><%=shippingState%></span>,
<span class="shipping_city"><%=shippingCity%></span>,
<span class="shipping_country"><%=shippingCountry%></span>
<span class="shipping_country_code dn"><%=shippingCountryCode%></span>
<!--{ : }-->
<span class="shipping_address"><%=shippingAddress%></span>
<span class="shipping_addresssub"><%=shippingAddressSub%></span>
<!--{ / }-->
</div>
<div class="del-callnum">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping_cellphone_prefix"><%=shippingCellPhonePrefix%></span>)
<span class="shipping_cellphone_prefixcode dn"><%=shippingCellPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping_cellphone"><%=shippingCellPhone%></span>
 
<span class="dn">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping_phone_prefix"><%=shippingPhonePrefix%></span>)
<span class="shipping_phone_prefixcode dn"><%=shippingPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping_phone"><%=shippingPhone%></span>
</span>
</div>
</label>
</div>
</li>
</script>
<!-- //나의 배송지 관리 레이어 -->
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">
 
변경 후order.html
<div id="pgSettlementApplyLayer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- //나의 배송지 관리 레이어 -->
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">
 
data/skin/mobile/story_g/order/order.html-54
변경 전order.html
<div id="pgSettlementApplyLayer" class="btm-fix-layer pg-layer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
<script id="myShippingList" type="text/html">
<li class="delivery-item">
<div class="del-head inp_rdo">
 
<input type="radio" id="input<%=idx%>" name="shipping" class="sp">
<label for="input<%=idx%>"></label>
 
</div>
<div class="del-body">
<label for="input1">
<div class="del-name">
<span class="shipping-name"><strong><%=shippingName%></strong></span>
<% if (defaultFl == 'y') { %>
<span class="c-orange">({=__('기본배송지')})</span>
<% } %>
</div>
<div class="del-address">
<span class="shipping-zonecode"><%=shippingZonecode%></span>
<% if (shippingZipcode != '') { %>
(
<span class="shipping-zipcode"><%=shippingZipcode%></span>
)
<% } %>
<!--{ ? gGlobal.isFront }-->
<span class="shipping-addresssub"><%=shippingAddressSub%></span>,
<span class="shipping-address"><%=shippingAddress%></span>,
<span class="shipping-state"><%=shippingState%></span>,
<span class="shipping-city"><%=shippingCity%></span>,
<span class="shipping-country"><%=shippingCountry%></span>
<span class="shipping-country-code dn"><%=shippingCountryCode%></span>
<!--{ : }-->
<span class="shipping-address"><%=shippingAddress%></span>
<span class="shipping-addresssub"><%=shippingAddressSub%></span>
<!--{ / }-->
</div>
<div class="del-callnum">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping-cellphone-prefix"><%=shippingCellPhonePrefix%></span>)
<span class="shipping-cellphone-prefixcode dn"><%=shippingCellPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping-cellphone"><%=shippingCellPhone%></span>
 
<span class="dn">
<!--{ ? gGlobal.isFront }-->
(+<span class="shipping-phone-prefix"><%=shippingPhonePrefix%></span>)
<span class="shipping-phone-prefixcode dn"><%=shippingPhonePrefixCode%></span>
<!--{ / }-->
<span class="shipping-phone"><%=shippingPhone%></span>
</span>
</div>
</label>
</div>
</li>
</script>
 
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">
 
변경 후order.html
<div id="pgSettlementApplyLayer" class="btm-fix-layer pg-layer" data-key="pg-layer"></div>
<!--//PG 결제 적용하기 레이어 -->
<!-- 나의 배송지 관리 레이어 -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!--{ ? isUseMultiShipping === true }-->
<script type="text/html" class="template" id="multiShippingRow">