GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 278e53...818459 )
by gyeong-won
39:17 queued 30:14
created

krzipModel::getMigratedPostcode()   C

Complexity

Conditions 8
Paths 33

Size

Total Lines 47
Code Lines 20

Duplication

Lines 15
Ratio 31.91 %

Importance

Changes 0
Metric Value
cc 8
eloc 20
nc 33
nop 1
dl 15
loc 47
rs 5.7377
c 0
b 0
f 0
1
<?php
2
/* Copyright (C) NAVER <http://www.navercorp.com> */
3
/**
4
 * @class  krzipModel
5
 * @author NAVER ([email protected])
6
 * @brief  Krzip module model class.
7
 */
8
9
class krzipModel extends krzip
10
{
11
	/**
12
	 * @brief 한국 우편번호 모듈 설정 반환
13
	 * @return object
14
	 */
15
	function getConfig()
16
	{
17
		if(!isset($this->module_config))
18
		{
19
			$oModuleModel = getModel('module');
20
			$module_config = $oModuleModel->getModuleConfig('krzip');
21
			if(!is_object($module_config))
22
			{
23
				$module_config = new stdClass();
24
			}
25
26
			/* 기본 설정 추가 */
27
			$default_config = self::$default_config;
28
			foreach($default_config as $key => $val)
29
			{
30
				if(!isset($module_config->{$key}))
31
				{
32
					$module_config->{$key} = $val;
33
				}
34
			}
35
36
			$this->module_config = $module_config;
37
		}
38
39
		return $this->module_config;
40
	}
41
42
	/**
43
	 * @brief 여러 포맷의 우편번호를 모듈 표준 포맷으로 변환
44
	 * @param mixed $values
45
	 * @return array
46
	 */
47
	function getMigratedPostcode($values)
48
	{
49
		if(is_array($values))
50
		{
51
			$values = array_values($values);
52
53
			/* 5자리 우편변호 마이그레이션 */
54
			if(count($values) == 4 && preg_match('/^\(?[0-9a-z\x20-]{5,10}\)?$/i', trim($values[0])))
55
			{
56
				return $values;
57
			}
58
59
			$values = implode(' ', $values);
60
		}
61
62
		$output = array('', trim(preg_replace('/\s+/', ' ', $values)), '', '', '');
63
64
		/* 우편번호 */
65
		if(preg_match('/\(?([0-9-]{5,7})\)?/', $output[1], $matches))
66
		{
67
			$output[1] = trim(preg_replace('/\s+/', ' ', str_replace($matches[0], '', $output[1])));
68
			$output[0] = $matches[1];
69
		}
70
71
		/* 지번 주소 */
72 View Code Duplication
		if(preg_match('/\(.+\s.+[읍면동리(마을)(0-9+가)]\s[0-9-]+\)/', $output[1], $matches))
73
		{
74
			$output[1] = trim(str_replace($matches[0], '', $output[1]));
75
			$output[2] = $matches[0];
76
		}
77
78
		/* 부가 정보 */
79 View Code Duplication
		if(preg_match('/\(.+[읍면동리(마을)(0-9+가)](?:,.*)?\)/u', $output[1], $matches))
80
		{
81
			$output[1] = trim(str_replace($matches[0], '', $output[1]));
82
			$output[4] = $matches[0];
83
		}
84
85
		/* 상세 주소 */
86 View Code Duplication
		if(preg_match('/^(.+ [가-힝]+[0-9]*[동리로길]\s*[0-9-]+(?:번지?)?),?\s+(.+)$/u', $output[1], $matches))
87
		{
88
			$output[1] = trim($matches[1]);
89
			$output[3] = trim($matches[2]);
90
		}
91
92
		return $output;
93
	}
94
95
	/**
96
	 * @brief 외부 서버로부터 주소 검색 결과 반환
97
	 * @param string $query
98
	 * @return mixed
99
	 */
100
	function getKrzipCodeList($query)
101
	{
102
		$module_config = $this->getConfig();
103
		if($module_config->api_handler != 1)
104
		{
105
			return $this->makeObject(-1, 'msg_invalid_request');
106
		}
107
		if(!isset($query))
108
		{
109
			$query = Context::get('query');
110
		}
111
112
		$query = trim(strval($query));
113
		if($query === '')
114
		{
115
			return $this->stop('msg_krzip_no_query');
116
		}
117
118
		$output = $this->getEpostapiSearch($query);
119
		/* XML Request에서는 Array 치환에 대한 문제로 이 함수를 제대로 사용할 수 없음 */
120
		$this->add('address_list', $output->get('address_list'));
121
		if(!$output->toBool())
122
		{
123
			return $output;
124
		}
125
	}
126
127
	/**
128
	 * @brief 우체국 우편번호 API 검색 결과 반환
129
	 * @param string $query
130
	 * @return object
131
	 */
132
	function getEpostapiSearch($query = '')
133
	{
134
		/**
135
		 * @brief 문자열 인코딩 변환
136
		 * @note 우체국 우편번호 API는 검색어를 EUC-KR로 넘겨주어야 함
137
		 */
138
		$encoding = strtoupper(mb_detect_encoding($query));
139
		if($encoding !== 'EUC-KR')
140
		{
141
			$query = iconv($encoding, 'EUC-KR', $query);
142
		}
143
144
		$module_config = $this->getConfig();
145
		$regkey = $module_config->epostapi_regkey;
146
147
		$fields = array(
148
			'target' => 'postNew', /* 도로명 주소 */
149
			'regkey' => $regkey,
150
			'query' => $query
151
		);
152
		$headers = array(
153
			'accept-language' => 'ko'
154
		);
155
		$request_config = array(
156
			'ssl_verify_peer' => FALSE
157
		);
158
159
		$buff = FileHandler::getRemoteResource(
160
			self::$epostapi_host,
161
			NULL,
162
			30,
163
			'POST',
164
			'application/x-www-form-urlencoded',
165
			$headers,
166
			array(),
167
			$fields,
168
			$request_config
169
		);
170
171
		$oXmlParser = new XmlParser();
172
		$result = $oXmlParser->parse($buff);
173
		if($result->error)
174
		{
175
			$err_msg = trim($result->error->message->body);
176
			if(!$err_msg)
177
			{
178
				$err_code = intval(str_replace('ERR-', '', $result->error->error_code->body));
179
				switch($err_code)
180
				{
181
					case 1:
182
						$err_msg = 'msg_krzip_is_maintenance';
183
						break;
184
					case 2:
185
						$err_msg = 'msg_krzip_wrong_regkey';
186
						break;
187
					case 3:
188
						$err_msg = 'msg_krzip_no_result';
189
						break;
190
					default:
191
						$err_msg = 'msg_krzip_riddling_wrong';
192
						break;
193
				}
194
			}
195
196
			return $this->makeObject(-1, $err_msg);
197
		}
198
		if(!$result->post)
199
		{
200
			return $this->makeObject(-1, 'msg_krzip_riddling_wrong');
201
		}
202
203
		$item_list = $result->post->itemlist->item;
204
		if(!is_array($item_list))
205
		{
206
			$item_list = array($item_list);
207
		}
208
		if(!$item_list)
0 ignored issues
show
Bug Best Practice introduced by
The expression $item_list of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
209
		{
210
			return $this->makeObject(-1, 'msg_krzip_no_result');
211
		}
212
213
		$addr_list = array();
214
		foreach($item_list as $key => $val)
215
		{
216
			$postcode = $val->postcd->body;
217
			$road_addr = $val->address->body;
218
			$jibun_addr = $val->addrjibun->body;
219
			$detail = '';
220
			$extra = '';
221
222 View Code Duplication
			if(preg_match('/\((?<detail>.+[읍면동리(마을)(0-9+가)](?:,.*)?)\)/', $road_addr, $matches))
223
			{
224
				$road_addr = trim(str_replace($matches[0], '', $road_addr));
225
				$extra = '(' . $matches['detail'] . ')';
226
			}
227 View Code Duplication
			if(preg_match('/\((?<detail>.+[읍면동리(마을)(빌딩)(0-9+가)](?:,.*)?)\)/', $jibun_addr, $matches))
228
			{
229
				$jibun_addr = '(' . trim(str_replace($matches[0], '', $jibun_addr)) . ')';
230
			}
231
232
			$addr_list[] = array(
233
				$postcode, // 0 우편번호
234
				$road_addr, // 1 도로명 주소
235
				$jibun_addr, // 2 지번 주소
236
				$detail, // 3 상세 주소
237
				$extra // 4 부가 정보 (**동, **빌딩)
238
			);
239
		}
240
241
		$output = $this->makeObject();
242
		$output->add('address_list', $addr_list);
243
244
		return $output;
245
	}
246
247
	/**
248
	 * @brief HTML 입력 폼 반환
249
	 * @param string $column_name
250
	 * @param mixed $values
251
	 * @return string
252
	 */
253
	//06232 서울특별시 강남구 강남대로 382 서울특별시 강남구 역삼동 825-2
254
	function getKrzipCodeSearchHtml($column_name, $values)
255
	{
256
		$template_config = $this->getConfig();
257
		$template_config->sequence_id = ++self::$sequence_id;
258
		$template_config->column_name = $column_name;
259
		$template_config->values = $this->getMigratedPostcode($values);
260
		Context::set('template_config', $template_config);
261
262
		$api_name = strval(self::$api_list[$template_config->api_handler]);
263
		$oTemplate = TemplateHandler::getInstance();
264
		$output = $oTemplate->compile($this->module_path . 'tpl', 'template.' . $api_name);
265
debugPrint($output);
266
		return $output;
267
	}
268
}
269
270
/* End of file krzip.model.php */
271
/* Location: ./modules/krzip/krzip.model.php */
272