This source file includes following definitions.
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #ifdef HAVE_CONFIG_H
17 #include "config.h"
18 #endif
19
20 #include "../php_intl.h"
21 #include "dateformat_class.h"
22 #include "../intl_convert.h"
23 #include "dateformat_class.h"
24 #include "dateformat_attr.h"
25
26 #include <unicode/ustring.h>
27 #include <unicode/udat.h>
28
29
30
31
32
33
34 PHP_FUNCTION( datefmt_get_datetype )
35 {
36 DATE_FORMAT_METHOD_INIT_VARS;
37
38
39 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
40 {
41 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
42 "datefmt_get_datetype: unable to parse input params", 0 );
43 RETURN_FALSE;
44 }
45
46
47 DATE_FORMAT_METHOD_FETCH_OBJECT;
48
49 INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter datetype." );
50
51 RETURN_LONG(dfo->date_type );
52 }
53
54
55
56
57
58
59
60 PHP_FUNCTION( datefmt_get_timetype )
61 {
62 DATE_FORMAT_METHOD_INIT_VARS;
63
64
65 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
66 {
67 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
68 "datefmt_get_timetype: unable to parse input params", 0 );
69 RETURN_FALSE;
70 }
71
72
73 DATE_FORMAT_METHOD_FETCH_OBJECT;
74
75 INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter timetype." );
76
77 RETURN_LONG(dfo->time_type );
78 }
79
80
81
82
83
84
85
86 PHP_FUNCTION( datefmt_get_pattern )
87 {
88 UChar value_buf[64];
89 int length = USIZE( value_buf );
90 UChar* value = value_buf;
91 zend_bool is_pattern_localized =FALSE;
92
93 DATE_FORMAT_METHOD_INIT_VARS;
94
95
96 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "O", &object, IntlDateFormatter_ce_ptr ) == FAILURE )
97 {
98 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
99 "datefmt_get_pattern: unable to parse input params", 0 );
100 RETURN_FALSE;
101 }
102
103
104 DATE_FORMAT_METHOD_FETCH_OBJECT;
105
106 length = udat_toPattern(DATE_FORMAT_OBJECT(dfo), is_pattern_localized, value, length, &INTL_DATA_ERROR_CODE(dfo));
107 if(INTL_DATA_ERROR_CODE(dfo) == U_BUFFER_OVERFLOW_ERROR && length >= USIZE( value_buf )) {
108 ++length;
109 INTL_DATA_ERROR_CODE(dfo) = U_ZERO_ERROR;
110 value = eumalloc(length);
111 length = udat_toPattern(DATE_FORMAT_OBJECT(dfo), is_pattern_localized, value, length, &INTL_DATA_ERROR_CODE(dfo) );
112 if(U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
113 efree(value);
114 value = value_buf;
115 }
116 }
117 INTL_METHOD_CHECK_STATUS(dfo, "Error getting formatter pattern" );
118
119 INTL_METHOD_RETVAL_UTF8( dfo, value, length, ( value != value_buf ) );
120 }
121
122
123
124
125
126
127
128 PHP_FUNCTION( datefmt_set_pattern )
129 {
130 char* value = NULL;
131 size_t value_len = 0;
132 int32_t slength = 0;
133 UChar* svalue = NULL;
134 zend_bool is_pattern_localized =FALSE;
135
136
137 DATE_FORMAT_METHOD_INIT_VARS;
138
139
140 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "Os",
141 &object, IntlDateFormatter_ce_ptr, &value, &value_len ) == FAILURE )
142 {
143 intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
144 "datefmt_set_pattern: unable to parse input params", 0);
145 RETURN_FALSE;
146 }
147
148 DATE_FORMAT_METHOD_FETCH_OBJECT;
149
150
151 intl_convert_utf8_to_utf16(&svalue, &slength, value, value_len, &INTL_DATA_ERROR_CODE(dfo));
152 INTL_METHOD_CHECK_STATUS(dfo, "Error converting pattern to UTF-16" );
153
154 udat_applyPattern(DATE_FORMAT_OBJECT(dfo), (UBool)is_pattern_localized, svalue, slength);
155
156 if (svalue) {
157 efree(svalue);
158 }
159 INTL_METHOD_CHECK_STATUS(dfo, "Error setting symbol value");
160
161 RETURN_TRUE;
162 }
163
164
165
166
167
168
169
170 PHP_FUNCTION( datefmt_get_locale )
171 {
172 char *loc;
173 zend_long loc_type =ULOC_ACTUAL_LOCALE;
174
175 DATE_FORMAT_METHOD_INIT_VARS;
176
177
178 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "O|l",
179 &object, IntlDateFormatter_ce_ptr,&loc_type) == FAILURE )
180 {
181 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
182 "datefmt_get_locale: unable to parse input params", 0 );
183
184 RETURN_FALSE;
185 }
186
187
188 DATE_FORMAT_METHOD_FETCH_OBJECT;
189
190 loc = (char *)udat_getLocaleByType(DATE_FORMAT_OBJECT(dfo), loc_type,&INTL_DATA_ERROR_CODE(dfo));
191 INTL_METHOD_CHECK_STATUS(dfo, "Error getting locale");
192 RETURN_STRING(loc);
193 }
194
195
196
197
198
199
200
201 PHP_FUNCTION( datefmt_is_lenient )
202 {
203
204 DATE_FORMAT_METHOD_INIT_VARS;
205
206
207 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "O",
208 &object, IntlDateFormatter_ce_ptr ) == FAILURE )
209 {
210 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
211 "datefmt_is_lenient: unable to parse input params", 0 );
212
213 RETURN_FALSE;
214 }
215
216
217 DATE_FORMAT_METHOD_FETCH_OBJECT;
218
219 RETVAL_BOOL(udat_isLenient(DATE_FORMAT_OBJECT(dfo)));
220 }
221
222
223
224
225
226
227
228 PHP_FUNCTION( datefmt_set_lenient )
229 {
230 zend_bool isLenient = FALSE;
231
232 DATE_FORMAT_METHOD_INIT_VARS;
233
234
235 if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "Ob",
236 &object, IntlDateFormatter_ce_ptr,&isLenient ) == FAILURE )
237 {
238 intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
239 "datefmt_set_lenient: unable to parse input params", 0 );
240 RETURN_FALSE;
241 }
242
243
244 DATE_FORMAT_METHOD_FETCH_OBJECT;
245
246 udat_setLenient(DATE_FORMAT_OBJECT(dfo), (UBool)isLenient );
247 }
248