~ubuntu-branches/ubuntu/saucy/mapserver/saucy-security

« back to all changes in this revision

Viewing changes to mapscript/php/outputformat.c

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2011-12-23 14:02:06 UTC
  • mfrom: (26.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20111223140206-n3h9t2hsa8hyslmu
Tags: 6.0.1-2
Added missed stuff for libmapscript-perl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**********************************************************************
 
2
 * $Id: php_mapscript.c 9765 2010-01-28 15:32:10Z aboudreault $
 
3
 *
 
4
 * Project:  MapServer
 
5
 * Purpose:  PHP/MapScript extension for MapServer.  External interface 
 
6
 *           functions
 
7
 * Author:   Daniel Morissette, DM Solutions Group (dmorissette@dmsolutions.ca)
 
8
 *           Alan Boudreault, Mapgears
 
9
 *
 
10
 **********************************************************************
 
11
 * Copyright (c) 2000-2010, Daniel Morissette, DM Solutions Group Inc.
 
12
 *
 
13
 * Permission is hereby granted, free of charge, to any person obtaining a
 
14
 * copy of this software and associated documentation files (the "Software"),
 
15
 * to deal in the Software without restriction, including without limitation
 
16
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
17
 * and/or sell copies of the Software, and to permit persons to whom the
 
18
 * Software is furnished to do so, subject to the following conditions:
 
19
 * 
 
20
 * The above copyright notice and this permission notice shall be included in 
 
21
 * all copies of this Software or works derived from this Software.
 
22
 * 
 
23
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
24
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
25
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 
26
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
27
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
28
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
 
29
 * DEALINGS IN THE SOFTWARE.
 
30
 **********************************************************************/
 
31
 
 
32
#include "php_mapscript.h"
 
33
 
 
34
zend_class_entry *mapscript_ce_outputformat;
 
35
 
 
36
ZEND_BEGIN_ARG_INFO_EX(outputformat___get_args, 0, 0, 1)
 
37
  ZEND_ARG_INFO(0, property)
 
38
ZEND_END_ARG_INFO()
 
39
 
 
40
ZEND_BEGIN_ARG_INFO_EX(outputformat___set_args, 0, 0, 2)
 
41
  ZEND_ARG_INFO(0, property)
 
42
  ZEND_ARG_INFO(0, value)
 
43
ZEND_END_ARG_INFO()
 
44
 
 
45
ZEND_BEGIN_ARG_INFO_EX(outputformat_setOption_args, 0, 0, 2)
 
46
  ZEND_ARG_INFO(0, property)
 
47
  ZEND_ARG_INFO(0, value)
 
48
ZEND_END_ARG_INFO()
 
49
 
 
50
ZEND_BEGIN_ARG_INFO_EX(outputformat_getOption_args, 0, 0, 1)
 
51
  ZEND_ARG_INFO(0, property)
 
52
ZEND_END_ARG_INFO()
 
53
 
 
54
/* {{{ proto outputformat __construct()
 
55
   outputFormatObj CANNOT be instanciated, this will throw an exception on use */
 
56
PHP_METHOD(outputFormatObj, __construct)
 
57
{
 
58
    mapscript_throw_exception("outputFormatObj cannot be constructed" TSRMLS_CC);
 
59
}
 
60
/* }}} */
 
61
 
 
62
PHP_METHOD(outputFormatObj, __get)
 
63
{
 
64
    char *property;
 
65
    long property_len;
 
66
    zval *zobj = getThis();
 
67
    php_outputformat_object *php_outputformat;
 
68
 
 
69
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
70
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
 
71
                              &property, &property_len) == FAILURE) {
 
72
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
73
        return;
 
74
    }
 
75
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
76
    
 
77
    php_outputformat = (php_outputformat_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
78
 
 
79
 
 
80
    IF_GET_STRING("name", php_outputformat->outputformat->name)
 
81
    else IF_GET_STRING("mimetype", php_outputformat->outputformat->mimetype)
 
82
    else IF_GET_STRING("driver", php_outputformat->outputformat->driver)
 
83
    else IF_GET_STRING("extension", php_outputformat->outputformat->extension)
 
84
    else IF_GET_LONG("renderer", php_outputformat->outputformat->renderer)
 
85
    else IF_GET_LONG("imagemode", php_outputformat->outputformat->imagemode)
 
86
    else IF_GET_LONG("transparent", php_outputformat->outputformat->transparent)
 
87
    else 
 
88
    {
 
89
        mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
 
90
    }
 
91
}
 
92
 
 
93
PHP_METHOD(outputFormatObj, __set)
 
94
{
 
95
    char *property;
 
96
    long property_len;
 
97
    zval *value;
 
98
    zval *zobj = getThis();
 
99
    php_outputformat_object *php_outputformat;
 
100
 
 
101
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
102
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz",
 
103
                              &property, &property_len, &value) == FAILURE) {
 
104
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
105
        return;
 
106
    }
 
107
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
108
    
 
109
    php_outputformat = (php_outputformat_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
110
 
 
111
    IF_SET_STRING("name", php_outputformat->outputformat->name, value)
 
112
    else IF_SET_STRING("mimetype", php_outputformat->outputformat->mimetype, value)
 
113
    else IF_SET_STRING("driver", php_outputformat->outputformat->driver, value)
 
114
    else IF_SET_STRING("extension", php_outputformat->outputformat->extension, value)
 
115
    else IF_SET_LONG("renderer", php_outputformat->outputformat->renderer, value)
 
116
    else IF_SET_LONG("imagemode", php_outputformat->outputformat->imagemode, value)
 
117
    else IF_SET_LONG("transparent", php_outputformat->outputformat->transparent, value)
 
118
    else 
 
119
    {
 
120
        mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
 
121
    }
 
122
}
 
123
 
 
124
/* {{{ proto int outputFormat.setOption(string property_name, new_value)
 
125
   Add or Modify the format option list. return true on success.*/
 
126
PHP_METHOD(outputFormatObj, setOption)
 
127
{
 
128
    char *property;
 
129
    long property_len;
 
130
    char *value;
 
131
    long value_len;
 
132
    zval *zobj = getThis();
 
133
    php_outputformat_object *php_outputformat;
 
134
 
 
135
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
136
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
 
137
                              &property, &property_len, &value, &value_len) == FAILURE) {
 
138
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
139
        return;
 
140
    }
 
141
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
142
    
 
143
    php_outputformat = (php_outputformat_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
144
 
 
145
    msSetOutputFormatOption(php_outputformat->outputformat, property, value);
 
146
 
 
147
    RETURN_LONG(MS_SUCCESS);
 
148
}
 
149
/* }}} */
 
150
 
 
151
/* {{{ proto string outputFormat.getOption(string property_name)
 
152
   Returns the associated value for the format option property passed as
 
153
   argument. Returns an empty string if property not found.*/
 
154
PHP_METHOD(outputFormatObj, getOption)
 
155
{
 
156
    char *property;
 
157
    long property_len;
 
158
    zval *zobj = getThis();
 
159
    const char *value = NULL;
 
160
    php_outputformat_object *php_outputformat;
 
161
 
 
162
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
163
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
 
164
                              &property, &property_len) == FAILURE) {
 
165
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
166
        return;
 
167
    }
 
168
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
169
    
 
170
    php_outputformat = (php_outputformat_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
171
 
 
172
    value = msGetOutputFormatOption(php_outputformat->outputformat, property, "");
 
173
 
 
174
    RETURN_STRING((char*)value,1);
 
175
}
 
176
/* }}} */
 
177
 
 
178
/* {{{ proto int outputFormat.validate()
 
179
   Checks some internal consistency issues, and returns MS_SUCCESS if things
 
180
   are OK and MS_FAILURE if there are problems. Some problems are fixed up
 
181
   internally. May produce debug output if issues encountered.*/
 
182
PHP_METHOD(outputFormatObj, validate)
 
183
{
 
184
    zval *zobj = getThis();
 
185
    int status = MS_FALSE;
 
186
    php_outputformat_object *php_outputformat;
 
187
 
 
188
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
189
    if (zend_parse_parameters_none() == FAILURE) {
 
190
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
191
        return;
 
192
    }
 
193
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
194
    
 
195
    php_outputformat = (php_outputformat_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
196
 
 
197
    status = msOutputFormatValidate(php_outputformat->outputformat, MS_TRUE);
 
198
    if (status != MS_TRUE)
 
199
    {
 
200
        mapscript_report_mapserver_error(E_WARNING TSRMLS_CC);
 
201
        RETURN_LONG(MS_FAILURE);
 
202
    }
 
203
    else
 
204
        RETURN_LONG(MS_SUCCESS);
 
205
}
 
206
/* }}} */
 
207
 
 
208
zend_function_entry outputformat_functions[] = {
 
209
    PHP_ME(outputFormatObj, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
 
210
    PHP_ME(outputFormatObj, __get, outputformat___get_args, ZEND_ACC_PUBLIC)
 
211
    PHP_ME(outputFormatObj, __set, outputformat___set_args, ZEND_ACC_PUBLIC)
 
212
    PHP_MALIAS(outputFormatObj, set, __set, NULL, ZEND_ACC_PUBLIC)
 
213
    PHP_ME(outputFormatObj, setOption, outputformat_setOption_args, ZEND_ACC_PUBLIC)
 
214
    PHP_ME(outputFormatObj, getOption, outputformat_getOption_args, ZEND_ACC_PUBLIC)
 
215
    PHP_ME(outputFormatObj, validate, NULL, ZEND_ACC_PUBLIC)
 
216
    {NULL, NULL, NULL}
 
217
};
 
218
 
 
219
void mapscript_create_outputformat(outputFormatObj *outputformat, parent_object parent, zval *return_value TSRMLS_DC)
 
220
{
 
221
    php_outputformat_object * php_outputformat;
 
222
    object_init_ex(return_value, mapscript_ce_outputformat); 
 
223
    php_outputformat = (php_outputformat_object *)zend_object_store_get_object(return_value TSRMLS_CC);
 
224
    php_outputformat->outputformat = outputformat;
 
225
 
 
226
    php_outputformat->parent = parent;
 
227
    MAPSCRIPT_ADDREF(parent.val);
 
228
}
 
229
 
 
230
static void mapscript_outputformat_object_destroy(void *object TSRMLS_DC)
 
231
{
 
232
    php_outputformat_object *php_outputformat = (php_outputformat_object *)object;
 
233
 
 
234
    MAPSCRIPT_FREE_OBJECT(php_outputformat);
 
235
 
 
236
    MAPSCRIPT_FREE_PARENT(php_outputformat->parent);
 
237
 
 
238
    /* We don't need to free the outputFormatObj */ 
 
239
 
 
240
    efree(object);
 
241
}
 
242
 
 
243
static zend_object_value mapscript_outputformat_object_new(zend_class_entry *ce TSRMLS_DC)
 
244
{
 
245
    zend_object_value retval;
 
246
    php_outputformat_object *php_outputformat;
 
247
 
 
248
    MAPSCRIPT_ALLOC_OBJECT(php_outputformat, php_outputformat_object);
 
249
 
 
250
    retval = mapscript_object_new(&php_outputformat->std, ce,
 
251
                                  &mapscript_outputformat_object_destroy TSRMLS_CC);
 
252
 
 
253
    MAPSCRIPT_INIT_PARENT(php_outputformat->parent);
 
254
 
 
255
    return retval;
 
256
}
 
257
 
 
258
PHP_MINIT_FUNCTION(outputformat)
 
259
{
 
260
    zend_class_entry ce;
 
261
 
 
262
    MAPSCRIPT_REGISTER_CLASS("outputFormatObj", 
 
263
                             outputformat_functions,
 
264
                             mapscript_ce_outputformat,
 
265
                             mapscript_outputformat_object_new);
 
266
 
 
267
    mapscript_ce_outputformat->ce_flags |= ZEND_ACC_FINAL_CLASS; 
 
268
    
 
269
    return SUCCESS;
 
270
}