File tree Expand file tree Collapse file tree 5 files changed +18
-20
lines changed Expand file tree Collapse file tree 5 files changed +18
-20
lines changed Original file line number Diff line number Diff line change 66use Capsule \Factory \ServerRequestFactory ;
77use Limber \Exceptions \NotFoundHttpException ;
88
9- const VERSION = '1.2.7 ' ;
9+ const VERSION = '1.2.8 ' ;
1010
1111/**
1212 * Absolute path, without trailing slash.
Original file line number Diff line number Diff line change @@ -191,9 +191,8 @@ var JsonView = (function (exports) {
191191 } else {
192192
193193 // XXX Modification made for MongoDB PHP GUI.
194- if ( node . key === '_id' ) {
194+ if ( node . key === '_id' && node . depth === 2 ) {
195195 MPG . documentId = node . value ;
196- MPG . documentIdType = _typeof ( node . value ) ;
197196 }
198197 if ( node . depth >= 2 && node . depth <= 5 && node . key !== '_id' ) {
199198 var documentFieldIsUpdatable = true ;
Original file line number Diff line number Diff line change @@ -43,14 +43,6 @@ MPG.collectionFields = [];
4343 */
4444MPG . documentId = '' ;
4545
46- /**
47- * Type of document ID.
48- * XXX Used by JsonView parser.
49- *
50- * @type {string }
51- */
52- MPG . documentIdType = '' ;
53-
5446/**
5547 * Cached output.
5648 *
@@ -517,11 +509,7 @@ MPG.eventListeners.addUpdate = function() {
517509 documentFieldNewValue , documentField . dataset . documentFieldType
518510 ) ;
519511
520- if ( MPG . documentIdType === 'number' ) {
521- var documentId = parseInt ( documentField . dataset . documentId ) ;
522- } else {
523- var documentId = documentField . dataset . documentId ;
524- }
512+ var documentId = documentField . dataset . documentId ;
525513
526514 var requestBody = {
527515 'databaseName' : MPG . databaseName ,
Original file line number Diff line number Diff line change @@ -287,10 +287,14 @@ public function updateOne() : JsonResponse {
287287 return new JsonResponse (400 , ErrorNormalizer::normalize ($ th , __METHOD__ ));
288288 }
289289
290- if ( isset ($ decodedRequestBody ['filter ' ]['_id ' ])
291- && preg_match (MongoDBHelper::OBJECT_ID_REGEX , $ decodedRequestBody ['filter ' ]['_id ' ]) ) {
292- $ decodedRequestBody ['filter ' ]['_id ' ] =
293- new \MongoDB \BSON \ObjectId ($ decodedRequestBody ['filter ' ]['_id ' ]);
290+ if ( isset ($ decodedRequestBody ['filter ' ]['_id ' ]) ) {
291+
292+ if ( preg_match (MongoDBHelper::OBJECT_ID_REGEX , $ decodedRequestBody ['filter ' ]['_id ' ]) ) {
293+ $ decodedRequestBody ['filter ' ]['_id ' ] = new \MongoDB \BSON \ObjectId ($ decodedRequestBody ['filter ' ]['_id ' ]);
294+ } elseif ( preg_match (MongoDBHelper::UINT_REGEX , $ decodedRequestBody ['filter ' ]['_id ' ]) ) {
295+ $ decodedRequestBody ['filter ' ]['_id ' ] = intval ($ decodedRequestBody ['filter ' ]['_id ' ]);
296+ }
297+
294298 }
295299
296300 foreach ($ decodedRequestBody ['update ' ]['$set ' ] as &$ updateValue ) {
Original file line number Diff line number Diff line change @@ -25,6 +25,13 @@ class MongoDBHelper {
2525 */
2626 public const OBJECT_ID_REGEX = '/^[a-f\d]{24}$/i ' ;
2727
28+ /**
29+ * Regular expression for an unsigned integer.
30+ *
31+ * @var string
32+ */
33+ public const UINT_REGEX = '/^(0|[1-9][0-9]*)$/ ' ;
34+
2835 /**
2936 * Regular expression for an ISO date-time.
3037 *
You can’t perform that action at this time.
0 commit comments