Changeset 20361

Show
Ignore:
Timestamp:
02/06/09 09:59:12 (1 year ago)
Author:
piotras
Message:

Initialize PHP Datetime object from generic midgard_timestamp value. refs #54

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/midgard/apis/php5/php_midgard_gobject_generic.c

    r20336 r20361  
    240240                         
    241241                case G_TYPE_BOXED: 
    242                         array_init(zvalue); 
    243  
    244                         if(G_VALUE_TYPE(gvalue) == G_TYPE_VALUE_ARRAY) { 
     242 
     243                        if (G_VALUE_TYPE(gvalue) == G_TYPE_VALUE_ARRAY) { 
     244 
     245                                array_init(zvalue); 
    245246 
    246247                                array = (GValueArray *) g_value_get_boxed(gvalue); 
     
    256257                                        add_index_zval(zvalue, i, zarr_val); 
    257258                                } 
     259                        }  
     260 
     261                        if (G_VALUE_TYPE(gvalue) == MGD_TYPE_TIMESTAMP) { 
     262                                 
     263                                php_midgard_datetime_from_gvalue(gvalue, zvalue); 
     264                                return TRUE; 
    258265                        } 
     266 
    259267                        break; 
    260268                 
  • trunk/midgard/apis/php5/php_midgard_timestamp.c

    r20336 r20361  
    251251} 
    252252 
     253void php_midgard_datetime_from_gvalue(const GValue *gval, zval *zvalue) 
     254{ 
     255        g_assert(gval != NULL); 
     256        g_assert(zvalue != NULL); 
     257        g_return_if_fail(G_VALUE_HOLDS(gval, MGD_TYPE_TIMESTAMP)); 
     258 
     259        GValue str_val = {0, }; 
     260        g_value_init(&str_val, G_TYPE_STRING); 
     261        g_value_transform(gval, &str_val); 
     262        const gchar *timestamp = g_value_get_string(&str_val);   
     263 
     264        if (timestamp == NULL) 
     265                timestamp = g_strdup(MIDGARD_DEFAULT_DATETIME); 
     266 
     267        zval *date; 
     268        MAKE_STD_ZVAL(date); 
     269        ZVAL_STRING(date, (gchar *)timestamp, 1); 
     270         
     271        g_value_unset(&str_val); 
     272 
     273        if (zvalue == NULL) 
     274                MAKE_STD_ZVAL(zvalue); 
     275         
     276        object_init_ex(zvalue, php_midgard_datetime_class); 
     277 
     278        zend_call_method_with_1_params(&zvalue, php_midgard_datetime_class, NULL, "__construct", NULL, date);  
     279 
     280        return; 
     281} 
     282 
    253283zval *php_midgard_datetime_object_from_property(zval *object, const gchar *property) 
    254284{ 
  • trunk/midgard/apis/php5/php_midgard_timestamp.h

    r20229 r20361  
    2828/* ROUTINES */ 
    2929gboolean php_midgard_is_property_timestamp(MidgardDBObjectClass *klass, const gchar *property); 
     30 
    3031zend_class_entry *php_midgard_get_datetime_class_ptr(void); 
    3132zend_class_entry *php_midgard_get_date_timezone_class_ptr(void); 
     33 
     34void php_midgard_datetime_from_gvalue(const GValue *gval, zval *zvalue); 
     35 
    3236zval *php_midgard_datetime_object_from_property(zval *object, const gchar *property); 
    3337zval *php_midgard_datetime_get_timestamp(zval *object); 
     38 
    3439void php_midgard_datetime_object_from_string(const gchar *date, zval *zvalue); 
    3540zval *php_midgard_string_from_datetime_object(zval *object);