@@ -87,15 +87,22 @@ protected function driverWrite(CacheItemInterface $item)
8787 */
8888 if ($ item instanceof Item) {
8989 try {
90+ $ set = [
91+ self ::DRIVER_DATA_WRAPPER_INDEX => new Binary ($ this ->encode ($ item ->get ()), Binary::TYPE_GENERIC ),
92+ self ::DRIVER_TAGS_WRAPPER_INDEX => new Binary ($ this ->encode ($ item ->getTags ()), Binary::TYPE_GENERIC ),
93+ self ::DRIVER_EDATE_WRAPPER_INDEX => ($ item ->getTtl () > 0 ? new UTCDateTime ((time () + $ item ->getTtl ()) * 1000 ) : new UTCDateTime (time () * 1000 )),
94+ ];
95+
96+ if (!empty ($ this ->config [ 'itemDetailedDate ' ])){
97+ $ set += [
98+ self ::DRIVER_MDATE_WRAPPER_INDEX => ($ item ->getModificationDate () ? new UTCDateTime (($ item ->getModificationDate ()->getTimestamp ()) * 1000 ) : new UTCDateTime (time () * 1000 )),
99+ self ::DRIVER_CDATE_WRAPPER_INDEX => ($ item ->getCreationDate () ? new UTCDateTime (($ item ->getCreationDate ()->getTimestamp ()) * 1000 ) : new UTCDateTime (time () * 1000 )),
100+ ];
101+ }
102+
90103 $ result = (array )$ this ->getCollection ()->updateOne (
91104 ['_id ' => $ item ->getEncodedKey ()],
92- [
93- '$set ' => [
94- self ::DRIVER_DATA_WRAPPER_INDEX => new Binary ($ this ->encode ($ item ->get ()), Binary::TYPE_GENERIC ),
95- self ::DRIVER_TAGS_WRAPPER_INDEX => new Binary ($ this ->encode ($ item ->getTags ()), Binary::TYPE_GENERIC ),
96- self ::DRIVER_EDATE_WRAPPER_INDEX => ($ item ->getTtl () > 0 ? new UTCDateTime ((time () + $ item ->getTtl ()) * 1000 ) : new UTCDateTime (time () * 1000 )),
97- ],
98- ],
105+ ['$set ' => $ set ],
99106 ['upsert ' => true , 'multiple ' => false ]
100107 );
101108 } catch (MongoDBException $ e ) {
@@ -117,11 +124,20 @@ protected function driverRead(CacheItemInterface $item)
117124 $ document = $ this ->getCollection ()->findOne (['_id ' => $ item ->getEncodedKey ()]);
118125
119126 if ($ document ) {
120- return [
127+ $ return = [
121128 self ::DRIVER_DATA_WRAPPER_INDEX => $ this ->decode ($ document [ self ::DRIVER_DATA_WRAPPER_INDEX ]->getData ()),
122129 self ::DRIVER_TAGS_WRAPPER_INDEX => $ this ->decode ($ document [ self ::DRIVER_TAGS_WRAPPER_INDEX ]->getData ()),
123130 self ::DRIVER_EDATE_WRAPPER_INDEX => (new \DateTime ())->setTimestamp ($ document [ self ::DRIVER_EDATE_WRAPPER_INDEX ]->toDateTime ()->getTimestamp ()),
124131 ];
132+
133+ if (!empty ($ this ->config [ 'itemDetailedDate ' ])){
134+ $ return += [
135+ self ::DRIVER_MDATE_WRAPPER_INDEX => (new \DateTime ())->setTimestamp ($ document [ self ::DRIVER_MDATE_WRAPPER_INDEX ]->toDateTime ()->getTimestamp ()),
136+ self ::DRIVER_CDATE_WRAPPER_INDEX => (new \DateTime ())->setTimestamp ($ document [ self ::DRIVER_CDATE_WRAPPER_INDEX ]->toDateTime ()->getTimestamp ()),
137+ ];
138+ }
139+
140+ return $ return ;
125141 } else {
126142 return null ;
127143 }
0 commit comments