@@ -224,7 +224,7 @@ static void php_phongo_log(mongoc_log_level_t log_level, const char *log_domain,
224
224
/* }}} */
225
225
226
226
/* {{{ Init objects */
227
- static void phongo_cursor_init (zval * return_value , mongoc_cursor_t * cursor , mongoc_client_t * client TSRMLS_DC ) /* {{{ */
227
+ static void phongo_cursor_init (zval * return_value , zval * manager , mongoc_cursor_t * cursor TSRMLS_DC ) /* {{{ */
228
228
{
229
229
php_phongo_cursor_t * intern ;
230
230
@@ -233,18 +233,32 @@ static void phongo_cursor_init(zval *return_value, mongoc_cursor_t *cursor, mong
233
233
intern = Z_CURSOR_OBJ_P (return_value );
234
234
intern -> cursor = cursor ;
235
235
intern -> server_id = mongoc_cursor_get_hint (cursor );
236
- intern -> client = client ;
236
+ intern -> client = Z_MANAGER_OBJ_P (manager )-> client ;
237
+
238
+ #if PHP_VERSION_ID >= 70000
239
+ ZVAL_COPY (& intern -> manager , manager );
240
+ #else
241
+ Z_ADDREF_P (manager );
242
+ intern -> manager = manager ;
243
+ #endif
237
244
} /* }}} */
238
245
239
- void phongo_server_init (zval * return_value , mongoc_client_t * client , int server_id TSRMLS_DC ) /* {{{ */
246
+ void phongo_server_init (zval * return_value , zval * manager , int server_id TSRMLS_DC ) /* {{{ */
240
247
{
241
248
php_phongo_server_t * server ;
242
249
243
250
object_init_ex (return_value , php_phongo_server_ce );
244
251
245
252
server = Z_SERVER_OBJ_P (return_value );
246
- server -> client = client ;
247
253
server -> server_id = server_id ;
254
+ server -> client = Z_MANAGER_OBJ_P (manager )-> client ;
255
+
256
+ #if PHP_VERSION_ID >= 70000
257
+ ZVAL_COPY (& server -> manager , manager );
258
+ #else
259
+ Z_ADDREF_P (manager );
260
+ server -> manager = manager ;
261
+ #endif
248
262
}
249
263
/* }}} */
250
264
@@ -467,16 +481,23 @@ zend_bool phongo_writeerror_init(zval *return_value, bson_t *bson TSRMLS_DC) /*
467
481
return true;
468
482
} /* }}} */
469
483
470
- php_phongo_writeresult_t * phongo_writeresult_init (zval * return_value , bson_t * reply , mongoc_client_t * client , int server_id TSRMLS_DC ) /* {{{ */
484
+ php_phongo_writeresult_t * phongo_writeresult_init (zval * return_value , bson_t * reply , zval * manager , int server_id TSRMLS_DC ) /* {{{ */
471
485
{
472
486
php_phongo_writeresult_t * writeresult ;
473
487
474
488
object_init_ex (return_value , php_phongo_writeresult_ce );
475
489
476
490
writeresult = Z_WRITERESULT_OBJ_P (return_value );
477
491
writeresult -> reply = bson_copy (reply );
478
- writeresult -> client = client ;
479
492
writeresult -> server_id = server_id ;
493
+ writeresult -> client = Z_MANAGER_OBJ_P (manager )-> client ;
494
+
495
+ #if PHP_VERSION_ID >= 70000
496
+ ZVAL_COPY (& writeresult -> manager , manager );
497
+ #else
498
+ Z_ADDREF_P (manager );
499
+ writeresult -> manager = manager ;
500
+ #endif
480
501
481
502
return writeresult ;
482
503
} /* }}} */
@@ -506,15 +527,18 @@ mongoc_bulk_operation_t *phongo_bulkwrite_init(zend_bool ordered) { /* {{{ */
506
527
return mongoc_bulk_operation_new (ordered );
507
528
} /* }}} */
508
529
509
- bool phongo_execute_write (mongoc_client_t * client , const char * namespace , mongoc_bulk_operation_t * bulk , const mongoc_write_concern_t * write_concern , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
530
+ bool phongo_execute_write (zval * manager , const char * namespace , mongoc_bulk_operation_t * bulk , const mongoc_write_concern_t * write_concern , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
510
531
{
532
+ mongoc_client_t * client ;
511
533
bson_error_t error ;
512
534
char * dbname ;
513
535
char * collname ;
514
536
int success ;
515
537
bson_t reply = BSON_INITIALIZER ;
516
538
php_phongo_writeresult_t * writeresult ;
517
539
540
+ client = Z_MANAGER_OBJ_P (manager )-> client ;
541
+
518
542
if (!phongo_split_namespace (namespace , & dbname , & collname )) {
519
543
phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC , "%s: %s" , "Invalid namespace provided" , namespace );
520
544
return false;
@@ -553,7 +577,7 @@ bool phongo_execute_write(mongoc_client_t *client, const char *namespace, mongoc
553
577
return false;
554
578
}
555
579
556
- writeresult = phongo_writeresult_init (return_value , & reply , client , bulk -> hint TSRMLS_CC );
580
+ writeresult = phongo_writeresult_init (return_value , & reply , manager , bulk -> hint TSRMLS_CC );
557
581
writeresult -> write_concern = mongoc_write_concern_copy (write_concern );
558
582
559
583
/* The Write failed */
@@ -571,14 +595,17 @@ bool phongo_execute_write(mongoc_client_t *client, const char *namespace, mongoc
571
595
return success ;
572
596
} /* }}} */
573
597
574
- int phongo_execute_query (mongoc_client_t * client , const char * namespace , const php_phongo_query_t * query , const mongoc_read_prefs_t * read_preference , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
598
+ int phongo_execute_query (zval * manager , const char * namespace , const php_phongo_query_t * query , const mongoc_read_prefs_t * read_preference , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
575
599
{
600
+ mongoc_client_t * client ;
576
601
const bson_t * doc = NULL ;
577
602
mongoc_cursor_t * cursor ;
578
603
char * dbname ;
579
604
char * collname ;
580
605
mongoc_collection_t * collection ;
581
606
607
+ client = Z_MANAGER_OBJ_P (manager )-> client ;
608
+
582
609
if (!phongo_split_namespace (namespace , & dbname , & collname )) {
583
610
phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC , "%s: %s" , "Invalid namespace provided" , namespace );
584
611
return false;
@@ -626,17 +653,19 @@ int phongo_execute_query(mongoc_client_t *client, const char *namespace, const p
626
653
return true;
627
654
}
628
655
629
- phongo_cursor_init (return_value , cursor , client TSRMLS_CC );
656
+ phongo_cursor_init (return_value , manager , cursor TSRMLS_CC );
630
657
return true;
631
658
} /* }}} */
632
659
633
- int phongo_execute_command (mongoc_client_t * client , const char * db , const bson_t * command , const mongoc_read_prefs_t * read_preference , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
660
+ int phongo_execute_command (zval * manager , const char * db , const bson_t * command , const mongoc_read_prefs_t * read_preference , int server_id , zval * return_value , int return_value_used TSRMLS_DC ) /* {{{ */
634
661
{
662
+ mongoc_client_t * client ;
635
663
mongoc_cursor_t * cursor ;
636
664
const bson_t * doc ;
637
665
bson_iter_t iter ;
638
666
bson_iter_t child ;
639
667
668
+ client = Z_MANAGER_OBJ_P (manager )-> client ;
640
669
641
670
cursor = mongoc_client_command (client , db , MONGOC_QUERY_NONE , 0 , 1 , 0 , command , NULL , read_preference );
642
671
if (server_id > 0 ) {
@@ -702,7 +731,7 @@ int phongo_execute_command(mongoc_client_t *client, const char *db, const bson_t
702
731
mongoc_cursor_next (cursor , & doc );
703
732
}
704
733
705
- phongo_cursor_init (return_value , cursor , client TSRMLS_CC );
734
+ phongo_cursor_init (return_value , manager , cursor TSRMLS_CC );
706
735
return true;
707
736
} /* }}} */
708
737
0 commit comments