Changeset 10954
- Timestamp:
- 06/09/07 11:56:07 (2 years ago)
- Files:
-
- trunk/midgard/apis/php4/midgard.c (modified) (19 diffs)
- trunk/midgard/apis/php4/php_midgard_compat.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midgard/apis/php4/midgard.c
r10911 r10954 43 43 /* True global resources - no need for thread safety here */ 44 44 GHashTable * midgard_registered_types; 45 static MidgardSchema *midgard_global_schema ;45 static MidgardSchema *midgard_global_schema = NULL; 46 46 static zend_class_entry *midgard_metadata_class; 47 47 static zend_class_entry *ce_midgard_exception; … … 352 352 zval *zobject; 353 353 MAKE_STD_ZVAL(zobject); 354 object_init_ex(zobject, Z_OBJCE_P(zval_object));355 354 php_midgard_gobject_new_with_gobject(zobject, Z_OBJCE_P(zval_object), 355 objects[i], TRUE); 356 356 zend_hash_next_index_insert( 357 357 HASH_OF(return_value), &zobject, sizeof(zval *), NULL); 358 g_object_unref(objects[i]);359 358 } 360 359 … … 365 364 } 366 365 } 367 368 366 369 367 PHP_FUNCTION(_midgard_php_object_create) … … 578 576 pobj = midgard_object_get_parent(mobj); 579 577 580 if(pobj) { 581 578 if(pobj) { 582 579 type_name = G_OBJECT_TYPE_NAME((GObject*)pobj); 583 580 class_name = g_ascii_strdown(type_name, strlen(type_name)); 584 581 zend_hash_find(CG(class_table), 585 582 class_name, strlen(class_name)+1, (void **) &pce); 586 object_init_ex(return_value, *pce); 583 php_midgard_gobject_new_with_gobject(return_value, *pce, 584 G_OBJECT(pobj), TRUE); 587 585 g_free(class_name); 588 586 } … … 643 641 for (i = 0; i < holder->elements; i++) { 644 642 645 zval *zobject; 646 MAKE_STD_ZVAL(zobject); 647 gchar *class_name = g_ascii_strdown( 648 g_type_name(G_TYPE_FROM_INSTANCE(objects[i])), -1); 649 650 zend_class_entry **ce; 651 zend_hash_find(CG(class_table), 652 class_name, strlen(class_name)+1, (void **) &ce); 653 object_init_ex(zobject, *ce); 654 g_free(class_name); 655 643 zval *zobject = NULL; 644 php_midgard_object_init(zobject, 645 G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 646 G_OBJECT(objects[i]), TRUE); 656 647 zend_hash_next_index_insert( 657 648 HASH_OF(return_value), &zobject, sizeof(zval *), NULL); … … 695 686 696 687 for (i = 0; i < holder->elements; i++) { 697 698 zval *zobject; 699 MAKE_STD_ZVAL(zobject); 700 gchar *class_name = g_ascii_strdown( 701 g_type_name(G_TYPE_FROM_INSTANCE(objects[i])), -1); 702 zend_class_entry **ce; 703 zend_hash_find(CG(class_table), 704 class_name, strlen(class_name)+1, (void **) &ce); 705 object_init_ex(zobject, *ce); 706 g_free(class_name); 707 688 689 zval *zobject = NULL; 690 php_midgard_object_init(zobject, 691 G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 692 G_OBJECT(objects[i]), TRUE); 708 693 zend_hash_next_index_insert( 709 HASH_OF(return_value), &zobject, sizeof(zval *), NULL); 694 HASH_OF(return_value), 695 &zobject, sizeof(zval *), NULL); 710 696 } 711 697 } … … 813 799 while(objects[i] != NULL){ 814 800 815 zval *zobject ;816 MAKE_STD_ZVAL(zobject);817 object_init_ex(zobject, *ce);818 801 zval *zobject = NULL; 802 php_midgard_object_init(zobject, 803 G_OBJECT_TYPE_NAME(G_OBJECT(objects[i])), 804 G_OBJECT(objects[i]), TRUE); 819 805 zend_hash_next_index_insert( 820 806 HASH_OF(return_value), … … 1031 1017 1032 1018 /* register Gtype types from schemas */ 1033 if(!g_type_from_name("midgard_article")) { 1019 if(!g_type_from_name("midgard_article") 1020 && midgard_global_schema == NULL) { 1034 1021 1035 1022 midgard_global_schema = g_object_new(MIDGARD_TYPE_SCHEMA, NULL); … … 1131 1118 /* Free connection */ 1132 1119 MidgardConnection *mgd = mgd_handle(); 1133 if(mgd != NULL) 1134 g_ object_unref(mgd);1120 if(mgd != NULL) 1121 g_warning("midgard_close() not yet implemented"); 1135 1122 1136 1123 return SUCCESS; … … 1138 1125 1139 1126 PHP_RINIT_FUNCTION(midgard) 1140 { 1127 { 1141 1128 inherited_cnc = NULL; 1142 1129 1143 if (SG(server_context)) { 1130 if (SG(server_context)) { 1144 1131 MGDG(mgd) = midgard_connection_workaround_get(); 1145 1132 } … … 1156 1143 inherited_cnc = mgd_handle(); 1157 1144 1158 _make_midgard_global(); 1159 1160 /* Initialize midgard_request object. 1161 * It's freed with other gobjects */ 1162 zend_class_entry **ce; 1163 zend_hash_find(CG(class_table), "midgard_request", 1164 sizeof("midgard_request"), (void **) &ce); 1165 1166 zval *zobject; 1167 MAKE_STD_ZVAL(zobject); 1168 object_init_ex(zobject, *ce); 1169 php_midgard_gobject_new_with_gobject(zobject, *ce, 1170 G_OBJECT(mgd_handle()->rcfg)); 1171 1145 _make_midgard_global(); 1172 1146 } 1173 1147 … … 1216 1190 */ 1217 1191 1192 g_debug("MIDGARD RSHUTDOWN SUCCESS"); 1218 1193 return SUCCESS; 1219 1194 } … … 1284 1259 1285 1260 MGDG(mgd) = mgd; 1286 _make_midgard_global(); 1261 /* FIXME, it should be available from MIDGARD_CONNECTION global */ 1262 //_make_midgard_global(); 1287 1263 1288 1264 if (mgd != NULL){ … … 1404 1380 1405 1381 static void _make_midgard_global() 1406 { 1382 { 1407 1383 int i; 1408 1384 zval *types, *confv, *mgd_php_globals, *schema_array; … … 1411 1387 GValueArray *array = NULL; 1412 1388 1413 TSRMLS_FETCH(); 1389 TSRMLS_FETCH(); 1414 1390 1415 1391 /* FIXME , we should initialize $MIDGARD object here … … 1443 1419 add_assoc_zval(mgd_php_globals, "schema", schema_array); 1444 1420 1445 /* add midgard_request object */ 1446 zval *mro; 1447 zend_class_entry **mrce; 1448 1449 zend_lookup_class("midgard_request", strlen("midgard_request"), &mrce TSRMLS_DC); 1450 1421 zval *mro = NULL; 1451 1422 MAKE_STD_ZVAL(mro); 1452 object_init_ex(mro, *mrce);1453 add_assoc_zval(mgd_php_globals, "midgard_request", mro);1454 1423 1455 1424 /* This can be cli ? */ 1456 1425 if(rcfg == NULL) { 1457 1426 1458 1427 MidgardRequest *request = midgard_request_new(); 1459 php_midgard_gobject *php_gobject = 1460 (php_midgard_gobject *)zend_object_store_get_object(mro TSRMLS_CC); 1461 php_gobject->gobject = G_OBJECT(request); 1462 1428 php_midgard_object_init(mro, "midgard_request", G_OBJECT(request), TRUE); 1429 add_assoc_zval(mgd_php_globals, "midgard_request", mro); 1463 1430 } 1464 1431 … … 1467 1434 1468 1435 /* MIDGARD_REQUEST */ 1469 php_midgard_gobject *php_gobject = 1470 (php_midgard_gobject *)zend_object_store_get_object(mro TSRMLS_CC); 1471 php_gobject->gobject = G_OBJECT(rcfg); 1436 php_midgard_object_init(mro, "midgard_request", G_OBJECT(rcfg), TRUE); 1437 add_assoc_zval(mgd_php_globals, "midgard_request", mro); 1472 1438 1473 1439 /* ARGC */ … … 1523 1489 GObject *object = g_value_get_object(oval); 1524 1490 1525 const gchar *_classname = 1526 G_OBJECT_TYPE_NAME(object); 1527 gchar *class_name = 1528 g_ascii_strdown(_classname, -1); 1529 1530 zend_class_entry **ce; 1531 zend_hash_find(CG(class_table), class_name, 1532 strlen(class_name)+1, (void **) &ce); 1533 1534 g_free(class_name); 1535 1536 zval *zobject; 1491 zval *zobject = NULL; 1537 1492 MAKE_STD_ZVAL(zobject); 1538 object_init_ex(zobject, *ce);1539 php_midgard_gobject_new_with_gobject(zobject, *ce,1540 object );1493 php_midgard_object_init(zobject, 1494 G_OBJECT_TYPE_NAME(object), 1495 object, FALSE); 1541 1496 1542 1497 zend_hash_next_index_insert( … … 1559 1514 /* HOST ID */ 1560 1515 id = 0; 1561 if(rcfg->host) 1516 if(rcfg->host) { 1562 1517 g_object_get(G_OBJECT(rcfg->host), "id", &id, NULL); 1563 1518 /* FIXME , Initialize midgard_host for PHP */ 1519 } 1520 1564 1521 add_assoc_long(mgd_php_globals, "host", id); 1565 1522 trunk/midgard/apis/php4/php_midgard_compat.c
r10833 r10954 89 89 /* It's important to initialize *any* object here. 90 90 * MidgardUser will be automagicaly unref'ed at request end */ 91 zend_class_entry **ce; 92 zend_hash_find(CG(class_table), "midgard_user", sizeof("midgard_user"), (void **) &ce); 93 zval *zobject; 94 MAKE_STD_ZVAL(zobject); 95 object_init_ex(zobject, *ce); 96 php_midgard_gobject_new_with_gobject(zobject, *ce, G_OBJECT(user)); 91 92 zval *zobject = NULL; 93 php_midgard_object_init(zobject, "midgard_user", G_OBJECT(user), TRUE); 97 94 98 95 RETURN_TRUE;
