Changeset 11189

Show
Ignore:
Timestamp:
07/12/07 15:33:21 (1 year ago)
Author:
piotras
Message:

Fixed MgdSchema? classes and their methods registration.
Removed get_tree method.
Removed old macros.
Changed copyright.
Module name renamed to midgard2.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/midgard/apis/php4/config.m4

    r10994 r11189  
    4747dnl fi 
    4848 
    49 AC_CHECK_LIB(midgard, midgard_connection_new, [], [ 
     49AC_CHECK_LIB(midgard-2.0, midgard_connection_new, [], [ 
    5050        AC_MSG_ERROR(midgard library not found please install midgard-core) 
    5151        ]) 
    5252 
    53 MIDGARD_VERSION=`"$MIDGARD_CONFIG" --modversion midgard` 
    54 AC_MSG_RESULT(Midgard library found. Version $MIDGARD_VERSION) 
     53MIDGARD2_VERSION=`"$MIDGARD_CONFIG" --modversion midgard` 
     54AC_MSG_RESULT(Midgard library found. Version $MIDGARD2_VERSION) 
    5555 
    5656LFLAGS="$LFLAGS -Pmgd -olex.yy.c" 
     
    6969fi 
    7070 
    71 MIDGARD_INCLINE=`$MIDGARD_CONFIG --cflags midgard` 
    72 MIDGARD_LIBLINE=`$MIDGARD_CONFIG --libs midgard` 
     71MIDGARD2_INCLINE=`$MIDGARD_CONFIG --cflags midgard` 
     72MIDGARD2_LIBLINE=`$MIDGARD_CONFIG --libs midgard` 
    7373 
    74 PHP_EVAL_INCLINE($MIDGARD_INCLINE) 
    75 PHP_EVAL_LIBLINE($MIDGARD_LIBLINE, MIDGARD_SHARED_LIBADD) 
     74PHP_EVAL_INCLINE($MIDGARD2_INCLINE) 
     75PHP_EVAL_LIBLINE($MIDGARD2_LIBLINE, MIDGARD2_SHARED_LIBADD) 
    7676 
    7777CFLAGS="$CFLAGS -Wall -fno-strict-aliasing" 
    7878 
    7979AC_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) 
     80PHP_SUBST(MIDGARD2_SHARED_LIBADD) 
     81PHP_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  
    11/* $Id$ 
    2 Copyright (C) 1999 Jukka Zitting <jukka.zitting@iki.fi> 
    32Copyright (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> 
     3Copyright (C) 2005, 2006, 2007 Piotr Pokora, <piotrek.pokora@gmail.com> 
    74 
    85This program is free software; you can redistribute it and/or modify it 
     
    4239 
    4340/* True global resources - no need for thread safety here */ 
    44 GHashTable * midgard_registered_types; 
    4541static MidgardSchema *midgard_global_schema = NULL; 
    4642static zend_class_entry *midgard_metadata_class; 
     
    5551MGD_FUNCTION(ret_type, get_default_lang, (type param)); 
    5652MGD_FUNCTION(ret_type, get_midgard, (type param)); 
    57  
    58  
    59  
    6053MGD_FUNCTION(ret_type, debug_start, (type param)); 
    6154MGD_FUNCTION(ret_type, debug_stop, (type param)); 
     
    7063/* Every user visible function must have an entry in midgard_functions[]. 
    7164*/ 
    72 function_entry midgard_functions[] = { 
     65function_entry midgard2_functions[] = { 
    7366MGD_FE(errno, NULL) 
    7467MGD_FE(errstr, NULL) 
     
    9487MGD_FE(set_errno, NULL) 
    9588MGD_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[] */ 
    9790}; 
    9891 
     
    179172 
    180173/* Midgard object methods */ 
    181 #define _MOM 24 
     174#define _MOM 23 
    182175 
    183176static struct  
     
    196189    {"is_in_parent_tree",       ZEND_FN(_midgard_php_object_is_in_parent_tree)   },  
    197190    {"is_in_tree",              ZEND_FN(_midgard_php_object_is_in_tree)          },  
    198     {"get_tree",                ZEND_FN(_midgard_php_object_get_tree)            }, 
    199191    {"delete",                  ZEND_FN(_midgard_php_object_delete)              }, 
    200192    {"get_parent",              ZEND_FN(_midgard_php_object_get_parent)          }, 
     
    214206/* UPDATE _MOM value when you change type functions list */ 
    215207 
    216 ZEND_DECLARE_MODULE_GLOBALS(midgard)  
     208ZEND_DECLARE_MODULE_GLOBALS(midgard2)  
    217209 
    218210/* Object constructor */     
     
    300292} 
    301293 
    302 /* Returns string with all object's primary fields values 
    303  * are separated by comas. This function returns values for objects 
    304  * 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  
    330294PHP_FUNCTION(_midgard_php_object_find) 
    331295{ 
     
    535499        } 
    536500} 
    537  
    538501 
    539502PHP_FUNCTION(_midgard_php_object_delete) 
     
    590553} 
    591554 
    592  
    593555PHP_FUNCTION(_midgard_php_object_get) 
    594556{ 
     
    613575        } 
    614576} 
    615  
    616577 
    617578PHP_FUNCTION(_midgard_php_object_list) 
     
    887848        CHECK_MGD; 
    888849        NOT_STATIC_METHOD(); 
    889         zval *zval_object = getThis(); 
    890850 
    891851        php_midgard_gobject_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU); 
     
    895855/* End MIDGARD2 methods */ 
    896856 
    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 
     857zend_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 
    914868}; 
    915869 
    916 #ifdef COMPILE_DL_MIDGARD 
    917 ZEND_GET_MODULE(midgard
     870#ifdef COMPILE_DL_MIDGARD2 
     871ZEND_GET_MODULE(midgard2
    918872#endif 
    919873 
     
    923877*/ 
    924878 
    925 static void php_midgard_init_globals(zend_midgard_globals *midgard_globals) 
    926 { 
    927         midgard_globals->mgd = NULL; 
     879static void php_midgard2_init_globals(zend_midgard2_globals *midgard2_globals) 
     880{ 
     881        midgard2_globals->mgd = NULL; 
    928882} 
    929883 
     
    932886    zend_class_entry *mgdclass, *mgdclass_ptr; 
    933887    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]; 
    935893    
    936894    /* lcn is freed in zend_register_internal_class */ 
     
    947905     */ 
    948906    __functions[0].flags = 0;  
    949      
    950      
     907         
    951908    for (j = 0; __midgard_php_type_functions[j].fname; j++){ 
    952909 
     
    960917         */  
    961918        __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; 
    969926     
    970927    /* IMPORTANT 
     
    1002959} 
    1003960 
    1004 PHP_MINIT_FUNCTION(midgard
     961PHP_MINIT_FUNCTION(midgard2
    1005962{ 
    1006963        zend_extension *ze = zend_get_extension("midgard"); 
    1007964        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         
    1012975        zend_class_entry ce; 
    1013976 
     
    1020983        g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);  
    1021984 
    1022         ZEND_INIT_MODULE_GLOBALS(midgard, php_midgard_init_globals, NULL); 
     985        ZEND_INIT_MODULE_GLOBALS(midgard2, php_midgard2_init_globals, NULL); 
    1023986 
    1024987        zend_register_auto_global("_MIDGARD", sizeof("_MIDGARD")-1, NULL TSRMLS_CC); 
     
    11221085} 
    11231086 
    1124 PHP_MSHUTDOWN_FUNCTION(midgard
     1087PHP_MSHUTDOWN_FUNCTION(midgard2
    11251088{ 
    11261089        /* Remove comments if you have entries in php.ini 
     
    11401103} 
    11411104 
    1142 PHP_RINIT_FUNCTION(midgard
     1105PHP_RINIT_FUNCTION(midgard2
    11431106{        
    11441107        inherited_cnc = NULL; 
     
    11771140} 
    11781141 
    1179 PHP_RSHUTDOWN_FUNCTION(midgard
     1142PHP_RSHUTDOWN_FUNCTION(midgard2
    11801143{        
    11811144        MidgardConnection *mgd = mgd_handle(); 
     
    12221185} 
    12231186 
    1224 PHP_MINFO_FUNCTION(midgard
     1187PHP_MINFO_FUNCTION(midgard2
    12251188{ 
    12261189    int i = 0; 
    12271190    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()); 
    12301193     
    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); 
    12341196        i++; 
    12351197    } 
     
    12391201    php_info_print_table_start(); 
    12401202    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()); 
    12421204 
    12431205    while (__midgard_php_type_functions[i].fname) { 
  • trunk/midgard/apis/php4/php_midgard.h

    r11177 r11189  
    5757        PHP_FE(mgd_##name, arg_types) 
    5858 
    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  
    6659#include <midgard/midgard.h> 
    6760 
    6861#ifdef ZTS 
    69 #include "TSRM.h" 
     62#include <TSRM.h> 
    7063#endif 
    7164 
     
    7669void mgd_reset_errno(); 
    7770void 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 
     72extern zend_module_entry midgard2_module_entry; 
    8173 
    8274#ifdef ZTS 
     
    8476         MidgardConnection *mgd; 
    8577         zval *schema_types; 
    86 } midgard_globals; 
    87 #endif 
    88  
    89 #define phpext_midgard_ptr &midgard_module_entry 
     78} midgard2_globals; 
     79#endif 
     80 
     81#define phpext_midgard_ptr &midgard2_module_entry 
    9082 
    9183#ifdef PHP_WIN32 
     
    9587#endif 
    9688 
    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
     89PHP_MINIT_FUNCTION(midgard2); 
     90PHP_MSHUTDOWN_FUNCTION(midgard2); 
     91PHP_RINIT_FUNCTION(midgard2); 
     92PHP_RSHUTDOWN_FUNCTION(midgard2); 
     93PHP_MINFO_FUNCTION(midgard2); 
     94 
     95PHP_FUNCTION(confirm_midgard2_compiled);      /* For testing, remove later. */ 
     96 
     97ZEND_BEGIN_MODULE_GLOBALS(midgard2
    10698        MidgardConnection *mgd; 
    107 ZEND_END_MODULE_GLOBALS(midgard
     99ZEND_END_MODULE_GLOBALS(midgard2
    108100 
    109101/* ZEND_EXTERN_MODULE_GLOBALS(midgard)  */ 
     
    111103#ifdef ZTS  
    112104 
    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) */ 
    115107/* TODO , make sure if we need to get midgard_globals_id from thread safety resources. 
    116108 * TSRMLS_FETCH() macro seems to do the same 
     
    118110#define MGDLS_FETCH()  
    119111#else 
    120 #define MGDG(v) (midgard_globals.v) 
     112#define MGDG(v) (midgard2_globals.v) 
    121113#define MGDLS_FETCH() 
    122114#endif 
     
    124116#else 
    125117 
    126 #define phpext_midgard_ptr NULL 
     118#define phpext_midgard2_ptr NULL 
    127119 
    128120#endif 
     
    211203extern void php_midgard_connection_init(int module_number); 
    212204 
    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  
    223205#define NOT_STATIC_METHOD() \ 
    224206        if (!getThis()) { \