From e912db7615ecad2f9b0468cc60fb5c2e4ea857c4 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Mon, 5 Sep 2016 16:56:59 +0100 Subject: [PATCH] PHPC-552: Implement ObjectID::getTimestamp() method --- src/BSON/ObjectID.c | 19 +++++++++++++++++++ .../bson/bson-objectid-getTimestamp-001.phpt | 14 ++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/bson/bson-objectid-getTimestamp-001.phpt diff --git a/src/BSON/ObjectID.c b/src/BSON/ObjectID.c index 9c64198a3..b2cdd40f1 100644 --- a/src/BSON/ObjectID.c +++ b/src/BSON/ObjectID.c @@ -134,6 +134,24 @@ PHP_METHOD(ObjectID, __construct) } /* }}} */ +/* {{{ proto integer ObjectID::getTimestamp() + */ +PHP_METHOD(ObjectID, getTimestamp) +{ + php_phongo_objectid_t *intern; + bson_oid_t tmp_oid; + + intern = Z_OBJECTID_OBJ_P(getThis()); + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + bson_oid_init_from_string(&tmp_oid, intern->oid); + RETVAL_LONG(bson_oid_get_time_t(&tmp_oid)); +} +/* }}} */ + /* {{{ proto ObjectID::__set_state(array $properties) */ PHP_METHOD(ObjectID, __set_state) @@ -206,6 +224,7 @@ ZEND_END_ARG_INFO() static zend_function_entry php_phongo_objectid_me[] = { PHP_ME(ObjectID, __construct, ai_ObjectID___construct, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) + PHP_ME(ObjectID, getTimestamp, ai_ObjectID_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(ObjectID, __set_state, ai_ObjectID___set_state, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_ME(ObjectID, __toString, ai_ObjectID_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(ObjectID, __wakeup, ai_ObjectID_void, ZEND_ACC_PUBLIC) diff --git a/tests/bson/bson-objectid-getTimestamp-001.phpt b/tests/bson/bson-objectid-getTimestamp-001.phpt new file mode 100644 index 000000000..da97006e5 --- /dev/null +++ b/tests/bson/bson-objectid-getTimestamp-001.phpt @@ -0,0 +1,14 @@ +--TEST-- +MongoDB\BSON\ObjectID::getTimestamp +--FILE-- +getTimestamp(); +echo $ts, "\n"; +echo date_create( "@{$ts}" )->format( "Y-m-d H:i:s" ), "\n"; +?> +--EXPECTF-- +1447757782 +2015-11-17 10:56:22