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

Revision 15814, 5.7 kB (checked in by piotras, 9 months ago)

Removed few legacy functions
GObject routines ported from 1-9
Parameter and atachment API ported from 1-9

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /*
2  * Copyright (C) 2006, 2007 Piotr Pokora <piotrek.pokora@gmail.com>
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #include "php_midgard.h"
20 #include "php_midgard_gobject.h"
21
22 #define _FREE_PARAMETERS \
23         guint _i; \
24         for(_i = 0; _i < n_params; _i++) { \
25                 g_value_unset(&parameters[_i].value); \
26         } \
27         g_free(parameters); \
28
29 PHP_FUNCTION(_php_midgard_object_list_parameters)
30 {
31         RETVAL_FALSE;
32         CHECK_MGD;
33         zval *zval_object = getThis();
34         gchar *domain = NULL;
35         guint domain_length;
36
37         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
38                                 "|s", &domain, &domain_length) != SUCCESS) {
39                 return;
40         }
41
42         MgdObject *mobj = php_midgard_get_midgard_object(zval_object); 
43         MgdObject **objects = midgard_object_list_parameters(mobj, domain);
44         array_init(return_value);
45        
46         if(objects) {
47                 php_midgard_array_from_objects((GObject **)objects, "midgard_parameter", return_value);
48                 g_free(objects);
49         }
50 }
51
52 PHP_FUNCTION(_php_midgard_object_delete_parameters)
53 {
54         RETVAL_FALSE;
55         CHECK_MGD;
56         zval *zval_object = getThis();
57         zval *params = NULL;
58         guint n_params = 0;
59         gboolean rv = FALSE;
60        
61         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
62                                 "|z", &params) != SUCCESS) {
63                 return;
64         }       
65
66         GParameter *parameters = php_midgard_array_to_gparameter(params, &n_params);
67         MgdObject *mobj = php_midgard_get_midgard_object(zval_object);
68         rv = midgard_object_delete_parameters(mobj, n_params, parameters);
69
70         _FREE_PARAMETERS;
71
72         RETURN_BOOL(rv);
73 }
74
75 PHP_FUNCTION(_php_midgard_object_purge_parameters)
76 {
77         RETVAL_FALSE;
78         CHECK_MGD;
79         zval *zval_object = getThis();
80         zval *params = NULL;
81         guint n_params = 0;
82         gboolean rv = FALSE;
83        
84         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
85                                 "|z", &params) != SUCCESS) {
86                 return;
87         }       
88
89         GParameter *parameters = php_midgard_array_to_gparameter(params, &n_params);
90         MgdObject *mobj = php_midgard_get_midgard_object(zval_object);
91         rv = midgard_object_purge_parameters(mobj, n_params, parameters);
92
93         _FREE_PARAMETERS;
94
95         RETURN_BOOL(rv);
96 }
97
98 PHP_FUNCTION(_php_midgard_object_find_parameters)
99 {
100         RETVAL_FALSE;
101         CHECK_MGD;
102         zval *zval_object = getThis();
103         zval *params = NULL;
104         guint n_params = 0;
105         MgdObject **objects = NULL;
106
107         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
108                                 "|z", &params) != SUCCESS) {
109                 return;
110         }       
111
112         GParameter *parameters = php_midgard_array_to_gparameter(params, &n_params);
113         MgdObject *mobj = php_midgard_get_midgard_object(zval_object);
114         objects = midgard_object_find_parameters(mobj, n_params, parameters);
115
116         _FREE_PARAMETERS;
117
118         array_init(return_value);
119        
120         if(objects) {   
121                 php_midgard_array_from_objects((GObject **)objects, "midgard_parameter", return_value);
122                 g_free(objects);
123         }
124 }
125
126 PHP_FUNCTION(_php_midgard_object_get_parameter)
127 {
128         RETVAL_FALSE;
129         CHECK_MGD;
130         gchar *domain, *name;
131         guint domain_length, name_length;               
132         const GValue *gvalue;
133         zval *zval_object = getThis();
134
135         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
136                                 "ss",
137                                 &domain, &domain_length,
138                                 &name, &name_length) != SUCCESS)
139                 return;
140
141         MgdObject *mobj = php_midgard_get_midgard_object(zval_object);
142         gvalue = midgard_object_get_parameter(mobj, domain, name);
143        
144         if(gvalue == NULL)
145                 RETURN_NULL();
146
147         php_midgard_gvalue2zval((GValue *)gvalue, return_value);
148 }
149
150 PHP_FUNCTION(_php_midgard_object_set_parameter)
151 {
152         RETVAL_FALSE;
153         CHECK_MGD;
154         gchar *domain, *name;
155         guint domain_length, name_length;
156         zval *zvalue = NULL;
157         zend_bool zbool = FALSE;
158         gboolean rv;
159         const GValue *gvalue;
160         zval *zval_object = getThis();
161
162         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
163                                 "ssz|z",
164                                 &domain, &domain_length,
165                                 &name, &name_length,
166                                 &zvalue, &zbool) != SUCCESS) {
167                 return;
168         }
169
170         MgdObject *mobj = php_midgard_get_midgard_object(zval_object);
171
172         convert_to_string_ex(&zvalue);
173         gvalue = php_midgard_zval2gvalue(zvalue);
174         rv = midgard_object_set_parameter(mobj,
175                         domain, name, (GValue *)gvalue, FALSE);
176        
177         RETURN_BOOL(rv);
178 }
179
180 PHP_FUNCTION(_php_midgard_object_parameter)
181 {
182         RETVAL_FALSE;
183         CHECK_MGD;
184         gchar *domain, *name;
185         guint domain_length, name_length;
186         zval *zvalue = NULL;
187         zend_bool zbool = FALSE;
188         guint _args = ZEND_NUM_ARGS();
189         gboolean rv;
190         const GValue *gvalue;
191         zval *zval_object = getThis();
192
193         if (zend_parse_parameters(_args TSRMLS_CC,
194                                 "ss|zz",
195                                 &domain, &domain_length,
196                                 &name, &name_length,
197                                 &zvalue, &zbool) != SUCCESS) {
198                 return;
199         }
200
201         php_midgard_gobject *php_gobject =
202                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
203         MgdObject *mobj =
204                 MIDGARD_OBJECT(php_gobject->gobject);
205
206         if(mobj){
207
208                 switch(_args) {
209
210                         case 2:
211                                 gvalue =
212                                         midgard_object_get_parameter(mobj,
213                                                         domain, name);
214                                 if(gvalue != NULL)
215                                         php_midgard_gvalue2zval((GValue *)gvalue,
216                                                         return_value);
217                                 else
218                                         RETURN_NULL();
219                                 break;
220
221                         case 3:
222                                 convert_to_string_ex(&zvalue);
223                                 gvalue = php_midgard_zval2gvalue(zvalue);
224                                 rv = midgard_object_set_parameter(mobj,
225                                                 domain, name, (GValue *)gvalue, FALSE);
226                                 RETURN_BOOL(rv);
227                                 break;
228
229                         case 4:
230                                 convert_to_string_ex(&zvalue);
231                                 gvalue = php_midgard_zval2gvalue(zvalue);
232                                 rv = midgard_object_set_parameter(mobj,
233                                                 domain, name, (GValue *)gvalue, zbool);
234                                 RETURN_BOOL(rv);
235                                 break;
236                 }
237         }
238 }
Note: See TracBrowser for help on using the browser.