From 35a632c14b8163764d570e27836935c895cdaceb Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 6 Nov 2008 09:44:03 +0000 Subject: [PATCH] - Export DateTime and DateTimeZone class entries so that external extensions can make use of it as well. --- ext/date/php_date.c | 57 ++++++++++----------------------------------- ext/date/php_date.h | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 45 deletions(-) diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 61e9e808ec..1e26bf5954 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -564,55 +564,22 @@ PHP_INI_END() zend_class_entry *date_ce_date, *date_ce_timezone, *date_ce_interval, *date_ce_period; + +PHPAPI zend_class_entry *php_date_get_date_ce(void) +{ + return date_ce_date; +} + +PHPAPI zend_class_entry *php_date_get_timezone_ce(void) +{ + return date_ce_timezone; +} + static zend_object_handlers date_object_handlers_date; static zend_object_handlers date_object_handlers_timezone; static zend_object_handlers date_object_handlers_interval; static zend_object_handlers date_object_handlers_period; -typedef struct _php_date_obj php_date_obj; -typedef struct _php_timezone_obj php_timezone_obj; -typedef struct _php_interval_obj php_interval_obj; -typedef struct _php_period_obj php_period_obj; - -struct _php_date_obj { - zend_object std; - timelib_time *time; - HashTable *props; -}; - -struct _php_timezone_obj { - zend_object std; - int initialized; - int type; - union { - timelib_tzinfo *tz; /* TIMELIB_ZONETYPE_ID; */ - timelib_sll utc_offset; /* TIMELIB_ZONETYPE_OFFSET */ - struct /* TIMELIB_ZONETYPE_ABBR */ - { - timelib_sll utc_offset; - char *abbr; - int dst; - } z; - } tzi; -}; - -struct _php_interval_obj { - zend_object std; - timelib_rel_time *diff; - HashTable *props; - int initialized; -}; - -struct _php_period_obj { - zend_object std; - timelib_time *start; - timelib_time *end; - timelib_rel_time *interval; - int recurrences; - int initialized; - int include_start_date; -}; - #define DATE_SET_CONTEXT \ zval *object; \ object = getThis(); \ @@ -2746,7 +2713,7 @@ PHP_METHOD(DateTime, __wakeup) /* }}} */ /* Helper function used to add an associative array of warnings and errors to a zval */ -void zval_from_error_container(zval *z, timelib_error_container *error) +static void zval_from_error_container(zval *z, timelib_error_container *error) { int i; zval *element; diff --git a/ext/date/php_date.h b/ext/date/php_date.h index 025adaaf2d..a16a4ea64a 100644 --- a/ext/date/php_date.h +++ b/ext/date/php_date.h @@ -105,6 +105,50 @@ PHP_MINIT_FUNCTION(date); PHP_MSHUTDOWN_FUNCTION(date); PHP_MINFO_FUNCTION(date); +typedef struct _php_date_obj php_date_obj; +typedef struct _php_timezone_obj php_timezone_obj; +typedef struct _php_interval_obj php_interval_obj; +typedef struct _php_period_obj php_period_obj; + +struct _php_date_obj { + zend_object std; + timelib_time *time; + HashTable *props; +}; + +struct _php_timezone_obj { + zend_object std; + int initialized; + int type; + union { + timelib_tzinfo *tz; /* TIMELIB_ZONETYPE_ID; */ + timelib_sll utc_offset; /* TIMELIB_ZONETYPE_OFFSET */ + struct /* TIMELIB_ZONETYPE_ABBR */ + { + timelib_sll utc_offset; + char *abbr; + int dst; + } z; + } tzi; +}; + +struct _php_interval_obj { + zend_object std; + timelib_rel_time *diff; + HashTable *props; + int initialized; +}; + +struct _php_period_obj { + zend_object std; + timelib_time *start; + timelib_time *end; + timelib_rel_time *interval; + int recurrences; + int initialized; + int include_start_date; +}; + ZEND_BEGIN_MODULE_GLOBALS(date) char *default_timezone; char *timezone; @@ -132,4 +176,8 @@ PHPAPI char *php_format_date(char *format, int format_len, time_t ts, int localt PHPAPI void php_date_set_tzdb(timelib_tzdb *tzdb); PHPAPI timelib_tzinfo *get_timezone_info(TSRMLS_D); +/* Grabbing CE's so that other exts can use the date objects too */ +PHPAPI zend_class_entry *php_date_get_date_ce(void); +PHPAPI zend_class_entry *php_date_get_timezone_ce(void); + #endif /* PHP_DATE_H */ -- 2.40.0