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

Revision 10856, 3.4 kB (checked in by piotras, 2 years ago)

Register object's wrapper

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /* Copyright (C) 2007 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_sitegroup_class;
21
22 /* Object constructor */
23 static PHP_METHOD(midgard_sitegroup, __construct)
24 {
25         RETVAL_FALSE;
26         CHECK_MGD;
27         MidgardSitegroup *sg;
28         gchar *name = NULL;
29         guint name_length;
30         zval *zval_object = getThis();
31        
32         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s",
33                                 &name, &name_length) == FAILURE) {
34                 return;
35         }
36
37         sg = midgard_sitegroup_new(mgd_handle(), name);
38
39         if(!sg)
40                 return;
41
42         php_midgard_gobject *php_gobject =
43                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
44
45         php_gobject->gobject = G_OBJECT(sg);
46 }
47
48 static PHP_METHOD(midgard_sitegroup, list)
49 {
50         RETVAL_FALSE;
51         CHECK_MGD;
52
53         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
54                                 ) == FAILURE) {
55                 return;
56         }
57
58         gchar **names = midgard_sitegroup_list(mgd_handle());
59         array_init(return_value);
60
61         if(names == NULL)
62                 return;
63
64         guint i = 0;
65
66         while(names[i]) {
67                 add_next_index_string(return_value, names[i], 1);
68                 i++;     
69         }
70
71         g_strfreev(names);
72 }
73
74 static PHP_METHOD(midgard_sitegroup, create)
75 {
76         CHECK_MGD;
77
78         gboolean rv;
79         zval *zval_object = getThis();
80        
81         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
82                                 ) == FAILURE) {
83                 return;
84         }
85        
86         php_midgard_gobject *php_gobject =
87                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
88        
89         MidgardSitegroup *sg = MIDGARD_SITEGROUP(php_gobject->gobject);
90        
91         rv = midgard_sitegroup_create(sg);
92        
93         RETURN_BOOL(rv);
94 }
95
96 static PHP_METHOD(midgard_sitegroup, update)
97 {
98         CHECK_MGD;
99        
100         gboolean rv;
101         zval *zval_object = getThis();
102        
103         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
104                                 ) == FAILURE) {
105                 return;
106         }
107        
108         php_midgard_gobject *php_gobject =
109                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
110        
111         MidgardSitegroup *sg = MIDGARD_SITEGROUP(php_gobject->gobject);
112        
113         rv = midgard_sitegroup_update(sg);
114        
115         RETURN_BOOL(rv);
116 }
117
118 void php_midgard_sitegroup_init(int module_number)
119 {
120         static function_entry sitegroup_methods[] = {
121                 PHP_ME(midgard_sitegroup,    __construct,       NULL, ZEND_ACC_PUBLIC)
122                 PHP_ME(midgard_sitegroup,    list,              NULL,
123                                 ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
124                 PHP_ME(midgard_sitegroup,    create,            NULL, ZEND_ACC_PUBLIC)
125                 PHP_ME(midgard_sitegroup,    update,            NULL, ZEND_ACC_PUBLIC)
126                 {NULL, NULL, NULL}
127         };
128        
129         static zend_class_entry php_midgard_sitegroup_class_entry;
130        
131         INIT_CLASS_ENTRY(
132                         php_midgard_sitegroup_class_entry,
133                         "midgard_sitegroup", sitegroup_methods);
134        
135         php_midgard_sitegroup_class =
136                 zend_register_internal_class(&php_midgard_sitegroup_class_entry TSRMLS_CC);
137
138         /* Set function to initialize underlying data */
139         php_midgard_sitegroup_class->create_object = php_midgard_gobject_new;
140 }
Note: See TracBrowser for help on using the browser.