root/trunk/midgard/apis/php5/php_midgard_request_config.c

Revision 16169, 4.7 kB (checked in by piotras, 8 months ago)

Do not initialize request in extension.
It's done in core with midgard_http_host methods

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /* Copyright (C) 2007, 2008 Piotr Pokora <piotrek.pokora@gmail.com>
2  * This program is free software; you can redistribute it and/or modify it
3  * under the terms of the GNU Lesser General Public License as published
4  * by the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15  */
16
17 #include "php_midgard.h"
18 #include "php_midgard_gobject.h"
19
20 static zend_class_entry *php_midgard_request_config_class;
21
22 #define _GET_REQ_OBJECT \
23         zval *zval_object = getThis(); \
24         php_midgard_gobject *php_gobject = \
25                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC); \
26         MidgardRequestConfig *request = MIDGARD_REQUEST_CONFIG(php_gobject->gobject); \
27         if(!request) php_error(E_ERROR, "Can not find underlying request instance");
28
29 /* Object constructor */
30 static PHP_METHOD(midgard_request_config, __construct)
31 {
32         RETVAL_FALSE;
33         /* CHECK_MGD; */
34         MidgardRequestConfig *req;
35         const gchar *uri;
36         guint uri_length;
37         zval *zval_object = getThis();
38        
39         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &uri, &uri_length) == FAILURE)
40                 return;
41        
42         req = midgard_request_config_new(uri);
43
44         if(!req) {
45                 php_midgard_error_throw_exception(mgd_handle());
46                 return;
47         }
48
49         php_midgard_gobject *php_gobject =
50                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
51
52         php_gobject->gobject = G_OBJECT(req);
53 }
54
55 static PHP_METHOD(midgard_request_config, set_page)
56 {
57         RETVAL_FALSE;
58         gboolean rv;
59         zval *zval_page = NULL;
60        
61         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zval_page) == FAILURE)
62                 return;
63
64         _GET_REQ_OBJECT;
65                
66         php_midgard_gobject *php_page =
67                 (php_midgard_gobject *)zend_object_store_get_object(zval_page TSRMLS_CC);
68
69         rv = midgard_request_config_set_page(request, G_OBJECT(php_page->gobject));
70        
71         RETURN_BOOL(rv);
72 }
73
74 static PHP_METHOD(midgard_request_config, set_style)
75 {
76         RETVAL_FALSE;
77         gboolean rv;
78         zval *zval_style = NULL;
79        
80         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zval_style) == FAILURE)
81                 return;
82
83         _GET_REQ_OBJECT;
84                
85         php_midgard_gobject *php_style =
86                 (php_midgard_gobject *)zend_object_store_get_object(zval_style TSRMLS_CC);
87
88         rv = midgard_request_config_set_style(request, G_OBJECT(php_style->gobject));
89        
90         RETURN_BOOL(rv);
91 }
92
93 static PHP_METHOD(midgard_request_config, set_pages)
94 {
95         RETVAL_FALSE;
96         gboolean rv;
97         zval *pages_a = NULL;
98        
99         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &pages_a) == FAILURE)
100                 return;
101
102         _GET_REQ_OBJECT;
103                
104         GValue *gval = php_midgard_zval2gvalue(pages_a);
105
106         GValueArray *pages = (GValueArray *) g_value_get_boxed(gval);
107         rv = midgard_request_config_set_pages(request, pages);
108        
109         RETURN_BOOL(rv);
110 }
111
112 static PHP_METHOD(midgard_request_config, set_argv)
113 {
114         RETVAL_FALSE;
115         gboolean rv;
116         zval *argv_a = NULL;
117        
118         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &argv_a) == FAILURE)
119                 return;
120
121         _GET_REQ_OBJECT;
122                
123         GValue *gval = php_midgard_zval2gvalue(argv_a);
124
125         GValueArray *argv = (GValueArray *) g_value_get_boxed(gval);
126         rv = midgard_request_config_set_argv(request, argv);
127        
128         RETURN_BOOL(rv);
129 }
130
131 static PHP_METHOD(midgard_request_config, set_auth)
132 {
133         RETVAL_FALSE;
134         gboolean rv;
135         zend_bool zbool;
136        
137         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &zbool) == FAILURE)
138                 return;
139
140         _GET_REQ_OBJECT;
141        
142         rv = midgard_request_config_set_auth(request, (gboolean)zbool);
143        
144         RETURN_BOOL(rv);
145 }
146
147 /* Initialize class */
148 void php_midgard_request_config_init(int module_number)
149 {
150         static function_entry request_methods[] = {
151                 PHP_ME(midgard_request_config,    __construct,          NULL, ZEND_ACC_PUBLIC)
152                 PHP_ME(midgard_request_config,    set_page,             NULL, ZEND_ACC_PUBLIC)
153                 PHP_ME(midgard_request_config,    set_style,            NULL, ZEND_ACC_PUBLIC)
154                 PHP_ME(midgard_request_config,    set_pages,            NULL, ZEND_ACC_PUBLIC)
155                 PHP_ME(midgard_request_config,    set_argv,             NULL, ZEND_ACC_PUBLIC)
156                 PHP_ME(midgard_request_config,    set_auth,             NULL, ZEND_ACC_PUBLIC)
157                 {NULL, NULL, NULL}
158         };
159        
160         static zend_class_entry php_midgard_request_config_class_entry;
161        
162         INIT_CLASS_ENTRY(
163                         php_midgard_request_config_class_entry,
164                         "midgard_request_config", request_methods);
165        
166         php_midgard_request_config_class =
167                 zend_register_internal_class(&php_midgard_request_config_class_entry TSRMLS_CC);
168
169         /* Set function to initialize underlying data */
170         php_midgard_request_config_class->create_object = php_midgard_gobject_new;
171 }
Note: See TracBrowser for help on using the browser.