Changeset 11189
- Timestamp:
- 07/12/07 15:33:21 (1 year ago)
- Files:
-
- trunk/midgard/apis/php4/config.m4 (modified) (2 diffs)
- trunk/midgard/apis/php4/midgard.c (modified) (25 diffs)
- trunk/midgard/apis/php4/php_midgard.h (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midgard/apis/php4/config.m4
r10994 r11189 47 47 dnl fi 48 48 49 AC_CHECK_LIB(midgard , midgard_connection_new, [], [49 AC_CHECK_LIB(midgard-2.0, midgard_connection_new, [], [ 50 50 AC_MSG_ERROR(midgard library not found please install midgard-core) 51 51 ]) 52 52 53 MIDGARD _VERSION=`"$MIDGARD_CONFIG" --modversion midgard`54 AC_MSG_RESULT(Midgard library found. Version $MIDGARD _VERSION)53 MIDGARD2_VERSION=`"$MIDGARD_CONFIG" --modversion midgard` 54 AC_MSG_RESULT(Midgard library found. Version $MIDGARD2_VERSION) 55 55 56 56 LFLAGS="$LFLAGS -Pmgd -olex.yy.c" … … 69 69 fi 70 70 71 MIDGARD _INCLINE=`$MIDGARD_CONFIG --cflags midgard`72 MIDGARD _LIBLINE=`$MIDGARD_CONFIG --libs midgard`71 MIDGARD2_INCLINE=`$MIDGARD_CONFIG --cflags midgard` 72 MIDGARD2_LIBLINE=`$MIDGARD_CONFIG --libs midgard` 73 73 74 PHP_EVAL_INCLINE($MIDGARD _INCLINE)75 PHP_EVAL_LIBLINE($MIDGARD _LIBLINE, MIDGARD_SHARED_LIBADD)74 PHP_EVAL_INCLINE($MIDGARD2_INCLINE) 75 PHP_EVAL_LIBLINE($MIDGARD2_LIBLINE, MIDGARD2_SHARED_LIBADD) 76 76 77 77 CFLAGS="$CFLAGS -Wall -fno-strict-aliasing" 78 78 79 79 AC_DEFINE(HAVE_MIDGARD, 1, [ ]) 80 PHP_SUBST(MIDGARD _SHARED_LIBADD)81 PHP_NEW_EXTENSION(midgard , midgard.c preparser.c preparse.c query_builder.c php_midgard_reflection_property.c php_midgard_collector.c php_midgard_object_parameter.c php_midgard_config.c php_midgard_gobject_generic.c php_midgard_user.c php_midgard_blob.c php_midgard_sitegroup.c php_midgard_object_class.c php_midgard_compat.c php_midgard_request.c php_midgard_connection.c, $ext_shared)80 PHP_SUBST(MIDGARD2_SHARED_LIBADD) 81 PHP_NEW_EXTENSION(midgard2, midgard.c preparser.c preparse.c query_builder.c php_midgard_reflection_property.c php_midgard_collector.c php_midgard_object_parameter.c php_midgard_config.c php_midgard_gobject_generic.c php_midgard_user.c php_midgard_blob.c php_midgard_sitegroup.c php_midgard_object_class.c php_midgard_compat.c php_midgard_request.c php_midgard_connection.c, $ext_shared) trunk/midgard/apis/php4/midgard.c
r11177 r11189 1 1 /* $Id$ 2 Copyright (C) 1999 Jukka Zitting <jukka.zitting@iki.fi>3 2 Copyright (C) 2000 The Midgard Project ry 4 Copyright (C) 2000 Emile Heyns, Aurora SA <emile@iris-advies.com> 5 Copyright (C) 2003 David Schmitter, Dataflow Solutions GmbH <schmitt@dataflow.ch> 6 Copyright (C) 2005 Piotr Pokora, <pp@infoglob.pl> 3 Copyright (C) 2005, 2006, 2007 Piotr Pokora, <piotrek.pokora@gmail.com> 7 4 8 5 This program is free software; you can redistribute it and/or modify it … … 42 39 43 40 /* True global resources - no need for thread safety here */ 44 GHashTable * midgard_registered_types;45 41 static MidgardSchema *midgard_global_schema = NULL; 46 42 static zend_class_entry *midgard_metadata_class; … … 55 51 MGD_FUNCTION(ret_type, get_default_lang, (type param)); 56 52 MGD_FUNCTION(ret_type, get_midgard, (type param)); 57 58 59 60 53 MGD_FUNCTION(ret_type, debug_start, (type param)); 61 54 MGD_FUNCTION(ret_type, debug_stop, (type param)); … … 70 63 /* Every user visible function must have an entry in midgard_functions[]. 71 64 */ 72 function_entry midgard _functions[] = {65 function_entry midgard2_functions[] = { 73 66 MGD_FE(errno, NULL) 74 67 MGD_FE(errstr, NULL) … … 94 87 MGD_FE(set_errno, NULL) 95 88 MGD_FE(reset_errno, NULL) 96 {NULL, NULL, NULL} /* Must be the last line in midgard _functions[] */89 {NULL, NULL, NULL} /* Must be the last line in midgard2_functions[] */ 97 90 }; 98 91 … … 179 172 180 173 /* Midgard object methods */ 181 #define _MOM 2 4174 #define _MOM 23 182 175 183 176 static struct … … 196 189 {"is_in_parent_tree", ZEND_FN(_midgard_php_object_is_in_parent_tree) }, 197 190 {"is_in_tree", ZEND_FN(_midgard_php_object_is_in_tree) }, 198 {"get_tree", ZEND_FN(_midgard_php_object_get_tree) },199 191 {"delete", ZEND_FN(_midgard_php_object_delete) }, 200 192 {"get_parent", ZEND_FN(_midgard_php_object_get_parent) }, … … 214 206 /* UPDATE _MOM value when you change type functions list */ 215 207 216 ZEND_DECLARE_MODULE_GLOBALS(midgard )208 ZEND_DECLARE_MODULE_GLOBALS(midgard2) 217 209 218 210 /* Object constructor */ … … 300 292 } 301 293 302 /* Returns string with all object's primary fields values303 * are separated by comas. This function returns values for objects304 * of the same type */305 PHP_FUNCTION(_midgard_php_object_get_tree)306 {307 zval *zval_object = getThis();308 GSList *tnodes;309 310 CHECK_MGD;311 RETVAL_FALSE;312 313 if(ZEND_NUM_ARGS() > 0)314 return;315 316 php_midgard_gobject *php_gobject =317 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);318 319 MgdObject *mobject =320 MIDGARD_OBJECT(php_gobject->gobject);321 322 if (mobject) {323 324 tnodes = g_slist_alloc();325 midgard_object_get_tree(mobject, tnodes);326 327 }328 }329 330 294 PHP_FUNCTION(_midgard_php_object_find) 331 295 { … … 535 499 } 536 500 } 537 538 501 539 502 PHP_FUNCTION(_midgard_php_object_delete) … … 590 553 } 591 554 592 593 555 PHP_FUNCTION(_midgard_php_object_get) 594 556 { … … 613 575 } 614 576 } 615 616 577 617 578 PHP_FUNCTION(_midgard_php_object_list) … … 887 848 CHECK_MGD; 888 849 NOT_STATIC_METHOD(); 889 zval *zval_object = getThis();890 850 891 851 php_midgard_gobject_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU); … … 895 855 /* End MIDGARD2 methods */ 896 856 897 898 zend_module_entry midgard_module_entry = { 899 #if ZEND_MODULE_API_NO >= 20010901 900 STANDARD_MODULE_HEADER, 901 #endif 902 "midgard", 903 midgard_functions, 904 PHP_MINIT(midgard), 905 PHP_MSHUTDOWN(midgard), 906 PHP_RINIT(midgard), /* Replace with NULL if there's nothing to do at request start */ 907 PHP_RSHUTDOWN(midgard), /* Replace with NULL if there's nothing to do at request end */ 908 PHP_MINFO(midgard), 909 #if ZEND_MODULE_API_NO >= 20010901 910 MIDGARD_LIB_VERSION, /* extension version number (string) */ 911 #endif 912 913 STANDARD_MODULE_PROPERTIES 857 zend_module_entry midgard2_module_entry = { 858 STANDARD_MODULE_HEADER, 859 "midgard2", 860 midgard2_functions, 861 PHP_MINIT(midgard2), 862 PHP_MSHUTDOWN(midgard2), 863 PHP_RINIT(midgard2), 864 PHP_RSHUTDOWN(midgard2), 865 PHP_MINFO(midgard2), 866 MIDGARD_LIB_VERSION, /* extension version number (string) */ 867 STANDARD_MODULE_PROPERTIES 914 868 }; 915 869 916 #ifdef COMPILE_DL_MIDGARD 917 ZEND_GET_MODULE(midgard )870 #ifdef COMPILE_DL_MIDGARD2 871 ZEND_GET_MODULE(midgard2) 918 872 #endif 919 873 … … 923 877 */ 924 878 925 static void php_midgard _init_globals(zend_midgard_globals *midgard_globals)926 { 927 midgard _globals->mgd = NULL;879 static void php_midgard2_init_globals(zend_midgard2_globals *midgard2_globals) 880 { 881 midgard2_globals->mgd = NULL; 928 882 } 929 883 … … 932 886 zend_class_entry *mgdclass, *mgdclass_ptr; 933 887 gint j; 934 zend_function_entry __functions[_MOM]; 888 889 /* Count how many functions we have */ 890 for (j = 0; __midgard_php_type_functions[j].fname; j++){ } 891 guint mfc = j+1; 892 zend_function_entry __functions[mfc]; 935 893 936 894 /* lcn is freed in zend_register_internal_class */ … … 947 905 */ 948 906 __functions[0].flags = 0; 949 950 907 951 908 for (j = 0; __midgard_php_type_functions[j].fname; j++){ 952 909 … … 960 917 */ 961 918 __functions[j+1].flags = 0; 962 } 963 964 __functions[ _MOM-1].fname = NULL;965 __functions[ _MOM-1].handler = NULL;966 __functions[ _MOM-1].arg_info = NULL;967 __functions[ _MOM-1].num_args = 0;968 __functions[ _MOM-1].flags = 0;919 } 920 921 __functions[mfc].fname = NULL; 922 __functions[mfc].handler = NULL; 923 __functions[mfc].arg_info = NULL; 924 __functions[mfc].num_args = 0; 925 __functions[mfc].flags = 0; 969 926 970 927 /* IMPORTANT … … 1002 959 } 1003 960 1004 PHP_MINIT_FUNCTION(midgard )961 PHP_MINIT_FUNCTION(midgard2) 1005 962 { 1006 963 zend_extension *ze = zend_get_extension("midgard"); 1007 964 if(ze != NULL) { 1008 php_error(E_NOTICE, "Module midgard already loaded"); 1009 return SUCCESS; 1010 } 1011 965 php_error(E_ERROR, "Module midgard (1.x) already loaded"); 966 return FAILURE; 967 } 968 969 ze = zend_get_extension("midgard2"); 970 if(ze != NULL) { 971 php_error(E_NOTICE, "Module midgard2 already loaded. It's recommended to load it via php.ini"); 972 return SUCCESS; 973 } 974 1012 975 zend_class_entry ce; 1013 976 … … 1020 983 g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL); 1021 984 1022 ZEND_INIT_MODULE_GLOBALS(midgard , php_midgard_init_globals, NULL);985 ZEND_INIT_MODULE_GLOBALS(midgard2, php_midgard2_init_globals, NULL); 1023 986 1024 987 zend_register_auto_global("_MIDGARD", sizeof("_MIDGARD")-1, NULL TSRMLS_CC); … … 1122 1085 } 1123 1086 1124 PHP_MSHUTDOWN_FUNCTION(midgard )1087 PHP_MSHUTDOWN_FUNCTION(midgard2) 1125 1088 { 1126 1089 /* Remove comments if you have entries in php.ini … … 1140 1103 } 1141 1104 1142 PHP_RINIT_FUNCTION(midgard )1105 PHP_RINIT_FUNCTION(midgard2) 1143 1106 { 1144 1107 inherited_cnc = NULL; … … 1177 1140 } 1178 1141 1179 PHP_RSHUTDOWN_FUNCTION(midgard )1142 PHP_RSHUTDOWN_FUNCTION(midgard2) 1180 1143 { 1181 1144 MidgardConnection *mgd = mgd_handle(); … … 1222 1185 } 1223 1186 1224 PHP_MINFO_FUNCTION(midgard )1187 PHP_MINFO_FUNCTION(midgard2) 1225 1188 { 1226 1189 int i = 0; 1227 1190 php_info_print_table_start(); 1228 php_info_print_table_header(2, "Midgard Support", "enabled");1229 php_info_print_table_row(2, "Midgard version", midgard_version());1191 php_info_print_table_header(2, "Midgard2 Support", "enabled"); 1192 php_info_print_table_row(2, "Midgard2 version", midgard_version()); 1230 1193 1231 /* TODO: pretify output by arranging functions according object classes */ 1232 while (midgard_module_entry.functions[i].fname) { 1233 php_info_print_table_row(2, "", midgard_module_entry.functions[i].fname); 1194 while (midgard2_module_entry.functions[i].fname) { 1195 php_info_print_table_row(2, "", midgard2_module_entry.functions[i].fname); 1234 1196 i++; 1235 1197 } … … 1239 1201 php_info_print_table_start(); 1240 1202 php_info_print_table_header(2, "MgdSchema technology support", "enabled"); 1241 php_info_print_table_row(2, "Midgard version", midgard_version());1203 php_info_print_table_row(2, "Midgard2 version", midgard_version()); 1242 1204 1243 1205 while (__midgard_php_type_functions[i].fname) { trunk/midgard/apis/php4/php_midgard.h
r11177 r11189 57 57 PHP_FE(mgd_##name, arg_types) 58 58 59 #define MGD_FALIAS(name, handler, arg_types) \60 PHP_FALIAS(mgd_##name, mgd_##handler, arg_types)61 62 #define MGD_PROPFIND(object, prop, retval) \63 (zend_hash_find(Z_OBJPROP_P(object), (prop), strlen(prop)+1, \64 (void**)&(retval)) == SUCCESS)65 66 59 #include <midgard/midgard.h> 67 60 68 61 #ifdef ZTS 69 #include "TSRM.h"62 #include <TSRM.h> 70 63 #endif 71 64 … … 76 69 void mgd_reset_errno(); 77 70 void mgd_set_errno(MgdErrorGeneric mgd_errno); 78 void mgd_php_store_elt (const char *name, const char *value, void *userdata); 79 80 extern zend_module_entry midgard_module_entry; 71 72 extern zend_module_entry midgard2_module_entry; 81 73 82 74 #ifdef ZTS … … 84 76 MidgardConnection *mgd; 85 77 zval *schema_types; 86 } midgard _globals;87 #endif 88 89 #define phpext_midgard_ptr &midgard _module_entry78 } midgard2_globals; 79 #endif 80 81 #define phpext_midgard_ptr &midgard2_module_entry 90 82 91 83 #ifdef PHP_WIN32 … … 95 87 #endif 96 88 97 PHP_MINIT_FUNCTION(midgard );98 PHP_MSHUTDOWN_FUNCTION(midgard );99 PHP_RINIT_FUNCTION(midgard );100 PHP_RSHUTDOWN_FUNCTION(midgard );101 PHP_MINFO_FUNCTION(midgard );102 103 PHP_FUNCTION(confirm_midgard _compiled); /* For testing, remove later. */104 105 ZEND_BEGIN_MODULE_GLOBALS(midgard )89 PHP_MINIT_FUNCTION(midgard2); 90 PHP_MSHUTDOWN_FUNCTION(midgard2); 91 PHP_RINIT_FUNCTION(midgard2); 92 PHP_RSHUTDOWN_FUNCTION(midgard2); 93 PHP_MINFO_FUNCTION(midgard2); 94 95 PHP_FUNCTION(confirm_midgard2_compiled); /* For testing, remove later. */ 96 97 ZEND_BEGIN_MODULE_GLOBALS(midgard2) 106 98 MidgardConnection *mgd; 107 ZEND_END_MODULE_GLOBALS(midgard )99 ZEND_END_MODULE_GLOBALS(midgard2) 108 100 109 101 /* ZEND_EXTERN_MODULE_GLOBALS(midgard) */ … … 111 103 #ifdef ZTS 112 104 113 #define MGDG(v) TSRMG(midgard _globals_id, zend_midgard_globals *, v)114 /* #define MGDLS_FETCH() php_midgard _globals *midgard_globals = ts_resource(midgard_globals_id) */105 #define MGDG(v) TSRMG(midgard2_globals_id, zend_midgard2_globals *, v) 106 /* #define MGDLS_FETCH() php_midgard2_globals *midgard_globals = ts_resource(midgard2_globals_id) */ 115 107 /* TODO , make sure if we need to get midgard_globals_id from thread safety resources. 116 108 * TSRMLS_FETCH() macro seems to do the same … … 118 110 #define MGDLS_FETCH() 119 111 #else 120 #define MGDG(v) (midgard _globals.v)112 #define MGDG(v) (midgard2_globals.v) 121 113 #define MGDLS_FETCH() 122 114 #endif … … 124 116 #else 125 117 126 #define phpext_midgard _ptr NULL118 #define phpext_midgard2_ptr NULL 127 119 128 120 #endif … … 211 203 extern void php_midgard_connection_init(int module_number); 212 204 213 #define _MIDGARD_UPDATE_LONG(key, val) \214 if(zend_hash_find(&EG(symbol_table), "_MIDGARD",\215 sizeof("_MIDGARD"), (void **) &hash) == SUCCESS &&\216 Z_TYPE_PP(hash) == IS_ARRAY &&\217 zend_hash_find(Z_ARRVAL_PP(hash), key,\218 strlen(key)+1, (void **) &vkey) == SUCCESS) {\219 convert_to_long_ex(vkey); \220 (*vkey)->value.lval = val; \221 }\222 223 205 #define NOT_STATIC_METHOD() \ 224 206 if (!getThis()) { \
