diff options
Diffstat (limited to 'ext/date/php_date.c')
-rw-r--r-- | ext/date/php_date.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index cb07c05308..2fe4799249 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2213,7 +2213,7 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int timelib_fill_holes(dateobj->time, now, 0); timelib_update_ts(dateobj->time, tzi); - dateobj->time->have_weekday_relative = dateobj->time->have_relative = 0; + dateobj->time->have_relative = 0; if (type == TIMELIB_ZONETYPE_ID && now->tz_info != tzi) { timelib_tzinfo_dtor(now->tz_info); @@ -2453,28 +2453,24 @@ void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time * break; } } - if (parsed_time->have_relative || parsed_time->have_weekday_relative || parsed_time->have_special_relative || parsed_time->relative.first_last_day_of) { + if (parsed_time->have_relative) { MAKE_STD_ZVAL(element); array_init(element); - } - if (parsed_time->have_relative) { add_assoc_long(element, "year", parsed_time->relative.y); add_assoc_long(element, "month", parsed_time->relative.m); add_assoc_long(element, "day", parsed_time->relative.d); add_assoc_long(element, "hour", parsed_time->relative.h); add_assoc_long(element, "minute", parsed_time->relative.i); add_assoc_long(element, "second", parsed_time->relative.s); - } - if (parsed_time->have_weekday_relative) { - add_assoc_long(element, "weekday", parsed_time->relative.weekday); - } - if (parsed_time->have_special_relative && (parsed_time->special.type == TIMELIB_SPECIAL_WEEKDAY)) { - add_assoc_long(element, "weekdays", parsed_time->special.amount); - } - if (parsed_time->relative.first_last_day_of) { - add_assoc_bool(element, parsed_time->relative.first_last_day_of == 1 ? "first_day_of_month" : "last_day_of_month", 1); - } - if (parsed_time->have_relative || parsed_time->have_weekday_relative || parsed_time->have_special_relative || parsed_time->relative.first_last_day_of) { + if (parsed_time->relative.have_weekday_relative) { + add_assoc_long(element, "weekday", parsed_time->relative.weekday); + } + if (parsed_time->relative.have_special_relative && (parsed_time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY)) { + add_assoc_long(element, "weekdays", parsed_time->relative.special.amount); + } + if (parsed_time->relative.first_last_day_of) { + add_assoc_bool(element, parsed_time->relative.first_last_day_of == 1 ? "first_day_of_month" : "last_day_of_month", 1); + } add_assoc_zval(return_value, "relative", element); } timelib_time_dtor(parsed_time); @@ -2563,7 +2559,7 @@ PHP_FUNCTION(date_modify) dateobj->time->relative.s = tmp_time->relative.s; dateobj->time->relative.weekday = tmp_time->relative.weekday; dateobj->time->have_relative = tmp_time->have_relative; - dateobj->time->have_weekday_relative = tmp_time->have_weekday_relative; + dateobj->time->relative.have_weekday_relative = tmp_time->relative.have_weekday_relative; dateobj->time->sse_uptodate = 0; timelib_time_dtor(tmp_time); @@ -2600,9 +2596,9 @@ PHP_FUNCTION(date_add) dateobj->time->relative.h = intobj->diff->h * bias; dateobj->time->relative.i = intobj->diff->i * bias; dateobj->time->relative.s = intobj->diff->s * bias; - dateobj->time->relative.weekday = 0; dateobj->time->have_relative = 1; - dateobj->time->have_weekday_relative = 0; + dateobj->time->relative.weekday = 0; + dateobj->time->relative.have_weekday_relative = 0; dateobj->time->sse_uptodate = 0; timelib_update_ts(dateobj->time, NULL); @@ -2638,9 +2634,9 @@ PHP_FUNCTION(date_sub) dateobj->time->relative.h = 0 - (intobj->diff->h * bias); dateobj->time->relative.i = 0 - (intobj->diff->i * bias); dateobj->time->relative.s = 0 - (intobj->diff->s * bias); - dateobj->time->relative.weekday = 0; dateobj->time->have_relative = 1; - dateobj->time->have_weekday_relative = 0; + dateobj->time->relative.weekday = 0; + dateobj->time->relative.have_weekday_relative = 0; dateobj->time->sse_uptodate = 0; timelib_update_ts(dateobj->time, NULL); |