1 /*
2     SPDX-License-Identifier: GPL-2.0-or-later
3 
4     SPDX-FileCopyrightText: 2002 Heiko Nardmann <h.nardmann@secunet.de>
5     SPDX-FileCopyrightText: 2004 Thorsten Kunz <tk AT bytecrash DOT net>
6     SPDX-FileCopyrightText: 2003-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
7 */
8 
9 #include "php5writer.h"
10 
11 #include "association.h"
12 #include "attribute.h"
13 #include "classifier.h"
14 #include "debug_utils.h"
15 #include "operation.h"
16 #include "umldoc.h"
17 
18 #include <QRegExp>
19 #include <QTextStream>
20 
21 static const char *reserved_words[] = {
22     "abs",
23     "abstract",
24     "acos",
25     "acosh",
26     "add",
27     "addAction",
28     "addColor",
29     "addEntry",
30     "addFill",
31     "addShape",
32     "addString",
33     "add_namespace",
34     "addcslashes",
35     "addslashes",
36     "addstring",
37     "aggregate",
38     "aggregate_info",
39     "aggregate_methods",
40     "aggregate_methods_by_list",
41     "aggregate_methods_by_regexp",
42     "aggregate_properties",
43     "aggregate_properties_by_list",
44     "aggregate_properties_by_regexp",
45     "aggregation_info",
46     "align",
47     "apache_child_terminate",
48     "apache_lookup_uri",
49     "apache_note",
50     "apache_request_headers",
51     "apache_response_headers",
52     "apache_setenv",
53     "append_child",
54     "append_sibling",
55     "array",
56     "array_change_key_case",
57     "array_chunk",
58     "array_count_values",
59     "array_diff",
60     "array_diff_assoc",
61     "array_fill",
62     "array_filter",
63     "array_flip",
64     "array_intersect",
65     "array_intersect_assoc",
66     "array_key_exists",
67     "array_keys",
68     "array_map",
69     "array_merge",
70     "array_merge_recursive",
71     "array_multisort",
72     "array_pad",
73     "array_pop",
74     "array_push",
75     "array_rand",
76     "array_reduce",
77     "array_reverse",
78     "array_search",
79     "array_shift",
80     "array_slice",
81     "array_splice",
82     "array_sum",
83     "array_unique",
84     "array_unshift",
85     "array_values",
86     "array_walk",
87     "arsort",
88     "ascii2ebcdic",
89     "asin",
90     "asinh",
91     "asort",
92     "aspell_check",
93     "aspell_new",
94     "aspell_suggest",
95     "assert",
96     "assert_options",
97     "assign",
98     "atan",
99     "atan2",
100     "atanh",
101     "attreditable",
102     "attributes",
103     "base64_decode",
104     "base64_encode",
105     "base_convert",
106     "basename",
107     "bcadd",
108     "bccomp",
109     "bcdiv",
110     "bcmod",
111     "bcmul",
112     "bcpow",
113     "bcpowmod",
114     "bcscale",
115     "bcsqrt",
116     "bcsub",
117     "bin2hex",
118     "bindec",
119     "bindtextdomain",
120     "bind_textdomain_codeset",
121     "bool",
122     "break",
123     "bzclose",
124     "bzcompress",
125     "bzdecompress",
126     "bzerrno",
127     "bzerror",
128     "bzerrstr",
129     "bzflush",
130     "bzopen",
131     "bzread",
132     "bzwrite",
133     "cal_days_in_month",
134     "cal_from_jd",
135     "cal_info",
136     "call_user_func",
137     "call_user_func_array",
138     "call_user_method",
139     "call_user_method_array",
140     "cal_to_jd",
141     "ccvs_add",
142     "ccvs_auth",
143     "ccvs_command",
144     "ccvs_count",
145     "ccvs_delete",
146     "ccvs_done",
147     "ccvs_init",
148     "ccvs_lookup",
149     "ccvs_new",
150     "ccvs_report",
151     "ccvs_return",
152     "ccvs_reverse",
153     "ccvs_sale",
154     "ccvs_status",
155     "ccvs_textvalue",
156     "ccvs_void",
157     "ceil",
158     "chdir",
159     "checkdate",
160     "checkdnsrr",
161     "checkin",
162     "checkout",
163     "chgrp",
164     "child_nodes",
165     "children",
166     "chmod",
167     "chop",
168     "chown",
169     "chr",
170     "chroot",
171     "chunk_split",
172     "class",
173     "class_exists",
174     "clearstatcache",
175     "clone_node",
176     "closedir",
177     "closelog",
178     "com_addref",
179     "com_get",
180     "com_invoke",
181     "com_isenum",
182     "com_load",
183     "com_load_typelib",
184     "compact",
185     "com_propget",
186     "com_propput",
187     "com_propset",
188     "com_release",
189     "com_set",
190     "connection_aborted",
191     "connection_status",
192     "connection_timeout",
193     "constant",
194     "content",
195     "continue",
196     "convert_cyr_string",
197     "_COOKIE",
198     "copy",
199     "cos",
200     "cosh",
201     "count",
202     "count_chars",
203     "cpdf_add_annotation",
204     "cpdf_add_outline",
205     "cpdf_arc",
206     "cpdf_begin_text",
207     "cpdf_circle",
208     "cpdf_clip",
209     "cpdf_close",
210     "cpdf_closepath",
211     "cpdf_closepath_fill_stroke",
212     "cpdf_closepath_stroke",
213     "cpdf_continue_text",
214     "cpdf_curveto",
215     "cpdf_end_text",
216     "cpdf_fill",
217     "cpdf_fill_stroke",
218     "cpdf_finalize",
219     "cpdf_finalize_page",
220     "cpdf_global_set_document_limits",
221     "cpdf_import_jpeg",
222     "cpdf_lineto",
223     "cpdf_moveto",
224     "cpdf_newpath",
225     "cpdf_open",
226     "cpdf_output_buffer",
227     "cpdf_page_init",
228     "cpdf_place_inline_image",
229     "cpdf_rect",
230     "cpdf_restore",
231     "cpdf_rlineto",
232     "cpdf_rmoveto",
233     "cpdf_rotate",
234     "cpdf_rotate_text",
235     "cpdf_save",
236     "cpdf_save_to_file",
237     "cpdf_scale",
238     "cpdf_set_action_url",
239     "cpdf_set_char_spacing",
240     "cpdf_set_creator",
241     "cpdf_set_current_page",
242     "cpdf_setdash",
243     "cpdf_setflat",
244     "cpdf_set_font",
245     "cpdf_set_font_directories",
246     "cpdf_set_font_map_file",
247     "cpdf_setgray",
248     "cpdf_setgray_fill",
249     "cpdf_setgray_stroke",
250     "cpdf_set_horiz_scaling",
251     "cpdf_set_keywords",
252     "cpdf_set_leading",
253     "cpdf_setlinecap",
254     "cpdf_setlinejoin",
255     "cpdf_setlinewidth",
256     "cpdf_setmiterlimit",
257     "cpdf_set_page_animation",
258     "cpdf_setrgbcolor",
259     "cpdf_setrgbcolor_fill",
260     "cpdf_setrgbcolor_stroke",
261     "cpdf_set_subject",
262     "cpdf_set_text_matrix",
263     "cpdf_set_text_pos",
264     "cpdf_set_text_rendering",
265     "cpdf_set_text_rise",
266     "cpdf_set_title",
267     "cpdf_set_viewer_preferences",
268     "cpdf_set_word_spacing",
269     "cpdf_show",
270     "cpdf_show_xy",
271     "cpdf_stringwidth",
272     "cpdf_stroke",
273     "cpdf_text",
274     "cpdf_translate",
275     "crack_check",
276     "crack_closedict",
277     "crack_getlastmessage",
278     "crack_opendict",
279     "crc32",
280     "create_attribute",
281     "create_cdata_section",
282     "create_comment",
283     "create_element",
284     "create_element_ns",
285     "create_entity_reference",
286     "create_function",
287     "create_processing_instruction",
288     "create_text_node",
289     "crypt",
290     "ctype_alnum",
291     "ctype_alpha",
292     "ctype_cntrl",
293     "ctype_digit",
294     "ctype_graph",
295     "ctype_lower",
296     "ctype_print",
297     "ctype_punct",
298     "ctype_space",
299     "ctype_upper",
300     "ctype_xdigit",
301     "curl_close",
302     "curl_errno",
303     "curl_error",
304     "curl_exec",
305     "curl_getinfo",
306     "curl_init",
307     "curl_setopt",
308     "curl_version",
309     "current",
310     "cybercash_base64_decode",
311     "cybercash_base64_encode",
312     "cybercash_decr",
313     "cybercash_encr",
314     "cybermut_creerformulairecm",
315     "cybermut_creerreponsecm",
316     "cybermut_testmac",
317     "cyrus_authenticate",
318     "cyrus_bind",
319     "cyrus_close",
320     "cyrus_connect",
321     "cyrus_query",
322     "cyrus_unbind",
323     "data",
324     "date",
325     "dba_close",
326     "dba_delete",
327     "dba_exists",
328     "dba_fetch",
329     "dba_firstkey",
330     "dba_handlers",
331     "dba_insert",
332     "dba_list",
333     "dba_nextkey",
334     "dba_open",
335     "dba_optimize",
336     "dba_popen",
337     "dba_replace",
338     "dbase_add_record",
339     "dbase_close",
340     "dbase_create",
341     "dbase_delete_record",
342     "dbase_get_record",
343     "dbase_get_record_with_names",
344     "dbase_numfields",
345     "dbase_numrecords",
346     "dbase_open",
347     "dbase_pack",
348     "dbase_replace_record",
349     "dba_sync",
350     "dblist",
351     "dbmclose",
352     "dbmdelete",
353     "dbmexists",
354     "dbmfetch",
355     "dbmfirstkey",
356     "dbminsert",
357     "dbmnextkey",
358     "dbmopen",
359     "dbmreplace",
360     "dbplus_add",
361     "dbplus_aql",
362     "dbplus_chdir",
363     "dbplus_close",
364     "dbplus_curr",
365     "dbplus_errcode",
366     "dbplus_errno",
367     "dbplus_find",
368     "dbplus_first",
369     "dbplus_flush",
370     "dbplus_freealllocks",
371     "dbplus_freelock",
372     "dbplus_freerlocks",
373     "dbplus_getlock",
374     "dbplus_getunique",
375     "dbplus_info",
376     "dbplus_last",
377     "dbplus_lockrel",
378     "dbplus_next",
379     "dbplus_open",
380     "dbplus_prev",
381     "dbplus_rchperm",
382     "dbplus_rcreate",
383     "dbplus_rcrtexact",
384     "dbplus_rcrtlike",
385     "dbplus_resolve",
386     "dbplus_restorepos",
387     "dbplus_rkeys",
388     "dbplus_ropen",
389     "dbplus_rquery",
390     "dbplus_rrename",
391     "dbplus_rsecindex",
392     "dbplus_runlink",
393     "dbplus_rzap",
394     "dbplus_savepos",
395     "dbplus_setindex",
396     "dbplus_setindexbynumber",
397     "dbplus_sql",
398     "dbplus_tcl",
399     "dbplus_tremove",
400     "dbplus_undo",
401     "dbplus_undoprepare",
402     "dbplus_unlockrel",
403     "dbplus_unselect",
404     "dbplus_update",
405     "dbplus_xlockrel",
406     "dbplus_xunlockrel",
407     "dbstat",
408     "dbx_close",
409     "dbx_compare",
410     "dbx_connect",
411     "dbx_error",
412     "dbx_escape_string",
413     "dbx_query",
414     "dbx_sort",
415     "dcgettext",
416     "dcngettext",
417     "dcstat",
418     "deaggregate",
419     "debug_backtrace",
420     "debugger_off",
421     "debugger_on",
422     "decbin",
423     "dechex",
424     "declare",
425     "decoct",
426     "DEFAULT_INCLUDE_PATH",
427     "define",
428     "defined",
429     "define_syslog_variables",
430     "deg2rad",
431     "delete",
432     "description",
433     "dgettext",
434     "die",
435     "dio_close",
436     "dio_fcntl",
437     "dio_open",
438     "dio_read",
439     "dio_seek",
440     "dio_stat",
441     "dio_tcsetattr",
442     "dio_truncate",
443     "dio_write",
444     "dir",
445     "dirname",
446     "disk_free_space",
447     "diskfreespace",
448     "disk_total_space",
449     "dl",
450     "dngettext",
451     "dns_check_record",
452     "dns_get_mx",
453     "dns_get_record",
454     "do",
455     "doctype",
456     "document_element",
457     "DOCUMENT_ROOT",
458     "domxml_new_doc",
459     "domxml_open_file",
460     "domxml_open_mem",
461     "domxml_version",
462     "domxml_xmltree",
463     "domxml_xslt_stylesheet",
464     "domxml_xslt_stylesheet_doc",
465     "domxml_xslt_stylesheet_file",
466     "dotnet_load",
467     "doubleval",
468     "drawCurve",
469     "drawCurveTo",
470     "drawLine",
471     "drawLineTo",
472     "dstanchors",
473     "dstofsrcanchors",
474     "dump_file",
475         "dump_mem",
476     "dump_node",
477     "each",
478     "E_ALL",
479     "easter_date",
480     "easter_days",
481     "ebcdic2ascii",
482     "echo",
483     "E_COMPILE_ERROR",
484     "E_COMPILE_WARNING",
485     "E_CORE_ERROR",
486     "E_CORE_WARNING",
487     "E_ERROR",
488     "else",
489     "elseif",
490     "empty",
491     "end",
492     "endfor",
493     "endforeach",
494     "endif",
495     "endswitch",
496     "endwhile",
497     "E_NOTICE",
498     "entities",
499     "_ENV",
500     "E_PARSE",
501     "ereg",
502     "eregi",
503     "eregi_replace",
504     "ereg_replace",
505     "error_log",
506     "error_reporting",
507     "escapeshellarg",
508     "escapeshellcmd",
509     "E_USER_ERROR",
510     "E_USER_NOTICE",
511     "E_USER_WARNING",
512     "eval",
513     "E_WARNING",
514     "exec",
515     "exif_imagetype",
516     "exif_read_data",
517     "exif_thumbnail",
518     "exit",
519     "exp",
520     "explode",
521     "expm1",
522     "extension_loaded",
523     "extract",
524     "ezmlm_hash",
525     "FALSE",
526     "fbsql_affected_rows",
527     "fbsql_autocommit",
528     "fbsql_change_user",
529     "fbsql_close",
530     "fbsql_commit",
531     "fbsql_connect",
532     "fbsql_create_blob",
533     "fbsql_create_clob",
534     "fbsql_create_db",
535     "fbsql_database",
536     "fbsql_database_password",
537     "fbsql_data_seek",
538     "fbsql_db_query",
539     "fbsql_db_status",
540     "fbsql_drop_db",
541     "fbsql_errno",
542     "fbsql_error",
543     "fbsql_fetch_array",
544     "fbsql_fetch_assoc",
545     "fbsql_fetch_field",
546     "fbsql_fetch_lengths",
547     "fbsql_fetch_object",
548     "fbsql_fetch_row",
549     "fbsql_field_flags",
550     "fbsql_field_len",
551     "fbsql_field_name",
552     "fbsql_field_seek",
553     "fbsql_field_table",
554     "fbsql_field_type",
555     "fbsql_free_result",
556     "fbsql_get_autostart_info",
557     "fbsql_hostname",
558     "fbsql_insert_id",
559     "fbsql_list_dbs",
560     "fbsql_list_fields",
561     "fbsql_list_tables",
562     "fbsql_next_result",
563     "fbsql_num_fields",
564     "fbsql_num_rows",
565     "fbsql_password",
566     "fbsql_pconnect",
567     "fbsql_query",
568     "fbsql_read_blob",
569     "fbsql_read_clob",
570     "fbsql_result",
571     "fbsql_rollback",
572     "fbsql_select_db",
573     "fbsql_set_lob_mode",
574     "fbsql_set_transaction",
575     "fbsql_start_db",
576     "fbsql_stop_db",
577     "fbsql_tablename",
578     "fbsql_username",
579     "fbsql_warnings",
580     "fclose",
581     "fdf_add_doc_javascript",
582     "fdf_add_template",
583     "fdf_close",
584     "fdf_create",
585     "fdf_errno",
586     "fdf_error",
587     "fdf_get_ap",
588     "fdf_get_attachment",
589     "fdf_get_encoding",
590     "fdf_get_file",
591     "fdf_get_status",
592     "fdf_get_value",
593     "fdf_get_version",
594     "fdf_header",
595     "fdf_next_field_name",
596     "fdf_open",
597     "fdf_open_string",
598     "fdf_save",
599     "fdf_save_string",
600     "fdf_set_ap",
601     "fdf_set_encoding",
602     "fdf_set_file",
603     "fdf_set_flags",
604     "fdf_set_javascript_action",
605     "fdf_set_opt",
606     "fdf_set_status",
607     "fdf_set_submit_form_action",
608     "fdf_set_target_frame",
609     "fdf_set_value",
610     "fdf_set_version",
611     "feof",
612     "fflush",
613     "fgetc",
614     "fgetcsv",
615     "fgets",
616     "fgetss",
617     "file",
618     "__FILE__",
619     "fileatime",
620     "filectime",
621     "file_exists",
622     "file_get_contents",
623     "filegroup",
624     "fileinode",
625     "filemtime",
626     "fileowner",
627     "fileperms",
628     "filepro",
629     "filepro_fieldcount",
630     "filepro_fieldname",
631     "filepro_fieldtype",
632     "filepro_fieldwidth",
633     "filepro_retrieve",
634     "filepro_rowcount",
635     "_FILES",
636     "filesize",
637     "filetype",
638     "find",
639     "first_child",
640     "floatval",
641     "flock",
642     "floor",
643     "flush",
644     "fmod",
645     "fnmatch",
646     "fopen",
647     "for",
648     "foreach",
649     "fpassthru",
650     "fprintf",
651     "fputs",
652     "fread",
653     "frenchtojd",
654     "fribidi_log2vis",
655     "fscanf",
656     "fseek",
657     "fsockopen",
658     "fstat",
659     "ftell",
660     "ftok",
661     "ftp_cdup",
662     "ftp_chdir",
663     "ftp_close",
664     "ftp_connect",
665     "ftp_delete",
666     "ftp_exec",
667     "ftp_fget",
668     "ftp_fput",
669     "ftp_get",
670     "ftp_get_option",
671     "ftp_login",
672     "ftp_mdtm",
673     "ftp_mkdir",
674     "ftp_nb_continue",
675     "ftp_nb_fget",
676     "ftp_nb_fput",
677     "ftp_nb_get",
678     "ftp_nb_put",
679     "ftp_nlist",
680     "ftp_pasv",
681     "ftp_put",
682     "ftp_pwd",
683     "ftp_quit",
684     "ftp_rawlist",
685     "ftp_rename",
686     "ftp_rmdir",
687     "ftp_set_option",
688     "ftp_site",
689     "ftp_size",
690     "ftp_ssl_connect",
691     "ftp_systype",
692     "ftruncate",
693     "ftstat",
694     "func_get_arg",
695     "func_get_args",
696     "func_num_args",
697     "function",
698     "function_exists",
699     "fwrite",
700     "GATEWAY_INTERFACE",
701     "gd_info",
702     "_GET",
703     "getallheaders",
704     "get_attribute",
705     "get_attribute_node",
706     "get_browser",
707     "get_cfg_var",
708     "get_class",
709     "get_class_methods",
710     "get_class_vars",
711     "get_content",
712     "get_current_user",
713     "getcwd",
714     "getdate",
715     "get_declared_classes",
716     "get_defined_constants",
717     "get_defined_functions",
718     "get_defined_vars",
719     "get_element_by_id",
720     "get_elements_by_tagname",
721     "getenv",
722     "get_extension_funcs",
723     "getHeight",
724     "gethostbyaddr",
725     "gethostbyname",
726     "gethostbynamel",
727     "get_html_translation_table",
728     "getimagesize",
729     "get_included_files",
730     "get_include_path",
731     "getlastmod",
732     "get_loaded_extensions",
733     "get_magic_quotes_gpc",
734     "get_magic_quotes_runtime",
735     "get_meta_tags",
736     "getmxrr",
737     "getmygid",
738     "getmyinode",
739     "getmypid",
740     "getmyuid",
741     "get_object_vars",
742     "getopt",
743     "get_parent_class",
744     "getprotobyname",
745     "getprotobynumber",
746     "getrandmax",
747     "get_required_files",
748     "get_resource_type",
749     "getrusage",
750     "getservbyname",
751     "getservbyport",
752     "getshape1",
753     "getshape2",
754     "gettext",
755     "gettimeofday",
756     "gettype",
757     "getwidth",
758     "getWidth",
759     "glob",
760     "global",
761     "GLOBALS",
762     "gmdate",
763     "gmmktime",
764     "gmp_abs",
765     "gmp_add",
766     "gmp_and",
767     "gmp_clrbit",
768     "gmp_cmp",
769     "gmp_com",
770     "gmp_div",
771     "gmp_divexact",
772     "gmp_div_q",
773     "gmp_div_qr",
774     "gmp_div_r",
775     "gmp_fact",
776     "gmp_gcd",
777     "gmp_gcdext",
778     "gmp_hamdist",
779     "gmp_init",
780     "gmp_intval",
781     "gmp_invert",
782     "gmp_jacobi",
783     "gmp_legendre",
784     "gmp_mod",
785     "gmp_mul",
786     "gmp_neg",
787     "gmp_or",
788     "gmp_perfect_square",
789     "gmp_popcount",
790     "gmp_pow",
791     "gmp_powm",
792     "gmp_prob_prime",
793     "gmp_random",
794     "gmp_scan0",
795     "gmp_scan1",
796     "gmp_setbit",
797     "gmp_sign",
798     "gmp_sqrt",
799     "gmp_sqrtrm",
800     "gmp_strval",
801     "gmp_sub",
802     "gmp_xor",
803     "gmstrftime",
804     "gregoriantojd",
805     "gzclose",
806     "gzcompress",
807     "gzdeflate",
808     "gzencode",
809     "gzeof",
810     "gzfile",
811     "gzgetc",
812     "gzgets",
813     "gzgetss",
814     "gzinflate",
815     "gzopen",
816     "gzpassthru",
817     "gzputs",
818     "gzread",
819     "gzrewind",
820     "gzseek",
821     "gztell",
822     "gzuncompress",
823     "gzwrite",
824     "has_attribute",
825     "has_attributess",
826     "has_child_nodes",
827     "header",
828     "headers_sent",
829     "hebrev",
830     "hebrevc",
831     "hexdec",
832     "highlight_file",
833     "highlight_string",
834     "html_dump_mem",
835     "htmlentities",
836     "html_entity_decode",
837     "htmlspecialchars",
838     "HTTP_ACCEPT",
839     "HTTP_ACCEPT_CHARSET",
840     "HTTP_ACCEPT_LANGUAGE",
841     "HTTP_CONNECTION",
842     "HTTP_COOKIE_VARS",
843     "HTTP_ENCODING",
844     "HTTP_ENV_VARS",
845     "HTTP_GET_VARS",
846     "HTTP_HOST",
847     "HTTP_POST_FILES",
848     "HTTP_POST_VARS",
849     "HTTP_RAW_POST_DATA",
850     "HTTP_REFERER",
851     "HTTP_SERVER_VARS",
852     "HTTP_SESSION_VARS",
853     "HTTP_STATE_VARS",
854     "HTTP_USER_AGENT",
855     "hw_api_attribute",
856     "hw_api_content",
857     "hwapi_hgcsp",
858     "hw_api_object",
859     "hw_Array2Objrec",
860     "hw_changeobject",
861     "hw_Children",
862     "hw_ChildrenObj",
863     "hw_Close",
864     "hw_Connect",
865     "hw_connection_info",
866     "hw_Cp",
867     "hw_Deleteobject",
868     "hw_DocByAnchor",
869     "hw_DocByAnchorObj",
870     "hw_Document_Attributes",
871     "hw_Document_BodyTag",
872     "hw_Document_Content",
873     "hw_Document_SetContent",
874     "hw_Document_Size",
875     "hw_dummy",
876     "hw_EditText",
877     "hw_Error",
878     "hw_ErrorMsg",
879     "hw_Free_Document",
880     "hw_GetAnchors",
881     "hw_GetAnchorsObj",
882     "hw_GetAndLock",
883     "hw_GetChildColl",
884     "hw_GetChildCollObj",
885     "hw_GetChildDocColl",
886     "hw_GetChildDocCollObj",
887     "hw_GetObject",
888     "hw_GetObjectByQuery",
889     "hw_GetObjectByQueryColl",
890     "hw_GetObjectByQueryCollObj",
891     "hw_GetObjectByQueryObj",
892     "hw_GetParents",
893     "hw_GetParentsObj",
894     "hw_getrellink",
895     "hw_GetRemote",
896     "hw_GetRemoteChildren",
897     "hw_GetSrcByDestObj",
898     "hw_GetText",
899     "hw_getusername",
900     "hw_Identify",
901     "hw_InCollections",
902     "hw_Info",
903     "hw_InsColl",
904     "hw_InsDoc",
905     "hw_insertanchors",
906     "hw_InsertDocument",
907     "hw_InsertObject",
908     "hw_mapid",
909     "hw_Modifyobject",
910     "hw_Mv",
911     "hw_New_Document",
912     "hw_Objrec2Array",
913     "hw_Output_Document",
914     "hw_pConnect",
915     "hw_PipeDocument",
916     "hw_Root",
917     "hw_setlinkroot",
918     "hw_stat",
919     "hwstat",
920     "hw_Unlock",
921     "hw_Who",
922     "hypot",
923     "ibase_blob_add",
924     "ibase_blob_cancel",
925     "ibase_blob_close",
926     "ibase_blob_create",
927     "ibase_blob_echo",
928     "ibase_blob_get",
929     "ibase_blob_import",
930     "ibase_blob_info",
931     "ibase_blob_open",
932     "ibase_close",
933     "ibase_commit",
934     "ibase_connect",
935     "ibase_errmsg",
936     "ibase_execute",
937     "ibase_fetch_object",
938     "ibase_fetch_row",
939     "ibase_field_info",
940     "ibase_free_query",
941     "ibase_free_result",
942     "ibase_num_fields",
943     "ibase_pconnect",
944     "ibase_prepare",
945     "ibase_query",
946     "ibase_rollback",
947     "ibase_timefmt",
948     "ibase_trans",
949     "iconv",
950     "iconv_get_encoding",
951     "iconv_set_encoding",
952     "identify",
953     "if",
954     "ifx_affected_rows",
955     "ifx_blobinfile_mode",
956     "ifx_byteasvarchar",
957     "ifx_close",
958     "ifx_connect",
959     "ifx_copy_blob",
960     "ifx_create_blob",
961     "ifx_create_char",
962     "ifx_do",
963     "ifx_error",
964     "ifx_errormsg",
965     "ifx_fetch_row",
966     "ifx_fieldproperties",
967     "ifx_fieldtypes",
968     "ifx_free_blob",
969     "ifx_free_char",
970     "ifx_free_result",
971     "ifx_get_blob",
972     "ifx_get_char",
973     "ifx_getsqlca",
974     "ifx_htmltbl_result",
975     "ifx_nullformat",
976     "ifx_num_fields",
977     "ifx_num_rows",
978     "ifx_pconnect",
979     "ifx_prepare",
980     "ifx_query",
981     "ifx_textasvarchar",
982     "ifx_update_blob",
983     "ifx_update_char",
984     "ifxus_close_slob",
985     "ifxus_create_slob",
986     "ifxus_free_slob",
987     "ifxus_open_slob",
988     "ifxus_read_slob",
989     "ifxus_seek_slob",
990     "ifxus_tell_slob",
991     "ifxus_write_slob",
992     "ignore_user_abort",
993     "image2wbmp",
994     "imagealphablending",
995     "imagearc",
996     "imagechar",
997     "imagecharup",
998     "imagecolorallocate",
999     "imagecolorallocatealpha",
1000     "imagecolorat",
1001     "imagecolorclosest",
1002     "imagecolorclosestalpha",
1003     "imagecolorclosesthwb",
1004     "imagecolordeallocate",
1005     "imagecolorexact",
1006     "imagecolorexactalpha",
1007     "imagecolorresolve",
1008     "imagecolorresolvealpha",
1009     "imagecolorset",
1010     "imagecolorsforindex",
1011     "imagecolorstotal",
1012     "imagecolortransparent",
1013     "imagecopy",
1014     "imagecopymerge",
1015     "imagecopymergegray",
1016     "imagecopyresampled",
1017     "imagecopyresized",
1018     "imagecreate",
1019     "imagecreatefromgd",
1020     "imagecreatefromgd2",
1021     "imagecreatefromgd2part",
1022     "imagecreatefromgif",
1023     "imagecreatefromjpeg",
1024     "imagecreatefrompng",
1025     "imagecreatefromstring",
1026     "imagecreatefromwbmp",
1027     "imagecreatefromxbm",
1028     "imagecreatefromxpm",
1029     "imagecreatetruecolor",
1030     "imagedashedline",
1031     "imagedestroy",
1032     "imageellipse",
1033     "imagefill",
1034     "imagefilledarc",
1035     "imagefilledellipse",
1036     "imagefilledpolygon",
1037     "imagefilledrectangle",
1038     "imagefilltoborder",
1039     "imagefontheight",
1040     "imagefontwidth",
1041     "imageftbbox",
1042     "imagefttext",
1043     "imagegammacorrect",
1044     "imagegd",
1045     "imagegd2",
1046     "imagegif",
1047     "imageinterlace",
1048     "imagejpeg",
1049     "imageline",
1050     "imageloadfont",
1051     "imagepalettecopy",
1052     "imagepng",
1053     "imagepolygon",
1054     "imagepsbbox",
1055     "imagepscopyfont",
1056     "imagepsencodefont",
1057     "imagepsextendfont",
1058     "imagepsfreefont",
1059     "imagepsloadfont",
1060     "imagepsslantfont",
1061     "imagepstext",
1062     "imagerectangle",
1063     "imagerotate",
1064     "imagesetbrush",
1065     "imagesetpixel",
1066     "imagesetstyle",
1067     "imagesetthickness",
1068     "imagesettile",
1069     "imagestring",
1070     "imagestringup",
1071     "imagesx",
1072     "imagesy",
1073     "imagetruecolortopalette",
1074     "imagettfbbox",
1075     "imagettftext",
1076     "imagetypes",
1077     "image_type_to_mime_type",
1078     "imagewbmp",
1079     "imap_8bit",
1080     "imap_alerts",
1081     "imap_append",
1082     "imap_base64",
1083     "imap_binary",
1084     "imap_body",
1085     "imap_bodystruct",
1086     "imap_check",
1087     "imap_clearflag_full",
1088     "imap_close",
1089     "imap_createmailbox",
1090     "imap_delete",
1091     "imap_deletemailbox",
1092     "imap_errors",
1093     "imap_expunge",
1094     "imap_fetchbody",
1095     "imap_fetchheader",
1096     "imap_fetch_overview",
1097     "imap_fetchstructure",
1098     "imap_getmailboxes",
1099     "imap_get_quota",
1100     "imap_get_quotaroot",
1101     "imap_getsubscribed",
1102     "imap_header",
1103     "imap_headerinfo",
1104     "imap_headers",
1105     "imap_last_error",
1106     "imap_list",
1107     "imap_listmailbox",
1108     "imap_listscan",
1109     "imap_listsubscribed",
1110     "imap_lsub",
1111     "imap_mail",
1112     "imap_mailboxmsginfo",
1113     "imap_mail_compose",
1114     "imap_mail_copy",
1115     "imap_mail_move",
1116     "imap_mime_header_decode",
1117     "imap_msgno",
1118     "imap_num_msg",
1119     "imap_num_recent",
1120     "imap_open",
1121     "imap_ping",
1122     "imap_qprint",
1123     "imap_renamemailbox",
1124     "imap_reopen",
1125     "imap_rfc822_parse_adrlist",
1126     "imap_rfc822_parse_headers",
1127     "imap_rfc822_write_address",
1128     "imap_scanmailbox",
1129     "imap_search",
1130     "imap_setacl",
1131     "imap_setflag_full",
1132     "imap_set_quota",
1133     "imap_sort",
1134     "imap_status",
1135     "imap_subscribe",
1136     "imap_thread",
1137     "imap_uid",
1138     "imap_undelete",
1139     "imap_unsubscribe",
1140     "imap_utf7_decode",
1141     "imap_utf7_encode",
1142     "imap_utf8",
1143     "implements",
1144     "implode",
1145     "import_request_variables",
1146     "in_array",
1147     "include",
1148     "include_once",
1149     "info",
1150     "ingres_autocommit",
1151     "ingres_close",
1152     "ingres_commit",
1153     "ingres_connect",
1154     "ingres_fetch_array",
1155     "ingres_fetch_object",
1156     "ingres_fetch_row",
1157     "ingres_field_length",
1158     "ingres_field_name",
1159     "ingres_field_nullable",
1160     "ingres_field_precision",
1161     "ingres_field_scale",
1162     "ingres_field_type",
1163     "ingres_num_fields",
1164     "ingres_num_rows",
1165     "ingres_pconnect",
1166     "ingres_query",
1167     "ingres_rollback",
1168     "ini_alter",
1169     "ini_get",
1170     "ini_get_all",
1171     "ini_restore",
1172     "ini_set",
1173     "insert",
1174     "insertanchor",
1175     "insert_before",
1176     "insertcollection",
1177     "insertdocument",
1178     "int",
1179     "interface",
1180     "internal_subset",
1181     "intval",
1182     "ip2long",
1183     "iptcembed",
1184     "iptcparse",
1185     "ircg_channel_mode",
1186     "ircg_disconnect",
1187     "ircg_fetch_error_msg",
1188     "ircg_get_username",
1189     "ircg_html_encode",
1190     "ircg_ignore_add",
1191     "ircg_ignore_del",
1192     "ircg_is_conn_alive",
1193     "ircg_join",
1194     "ircg_kick",
1195     "ircg_lookup_format_messages",
1196     "ircg_msg",
1197     "ircg_nick",
1198     "ircg_nickname_escape",
1199     "ircg_nickname_unescape",
1200     "ircg_notice",
1201     "ircg_part",
1202     "ircg_pconnect",
1203     "ircg_register_format_messages",
1204     "ircg_set_current",
1205     "ircg_set_file",
1206     "ircg_set_on_die",
1207     "ircg_topic",
1208     "ircg_whois",
1209     "is_a",
1210     "is_array",
1211     "is_blank_node",
1212     "is_bool",
1213     "is_callable",
1214     "is_dir",
1215     "is_double",
1216     "is_executable",
1217     "is_file",
1218     "is_finite",
1219     "is_float",
1220     "is_infinite",
1221     "is_int",
1222     "is_integer",
1223     "is_link",
1224     "is_long",
1225     "is_nan",
1226     "is_null",
1227     "is_numeric",
1228     "is_object",
1229     "is_readable",
1230     "is_real",
1231     "is_resource",
1232     "is_scalar",
1233     "isset",
1234     "is_string",
1235     "is_subclass_of",
1236     "is_uploaded_file",
1237     "is_writable",
1238     "is_writeable",
1239     "java_last_exception_clear",
1240     "java_last_exception_get",
1241     "jddayofweek",
1242     "jdmonthname",
1243     "jdtofrench",
1244     "jdtogregorian",
1245     "jdtojewish",
1246     "jdtojulian",
1247     "jdtounix",
1248     "jewishtojd",
1249     "join",
1250     "jpeg2wbmp",
1251     "juliantojd",
1252     "key",
1253     "krsort",
1254     "ksort",
1255     "langdepvalue",
1256     "last_child",
1257     "lcg_value",
1258     "ldap_8859_to_t61",
1259     "ldap_add",
1260     "ldap_bind",
1261     "ldap_close",
1262     "ldap_compare",
1263     "ldap_connect",
1264     "ldap_count_entries",
1265     "ldap_delete",
1266     "ldap_dn2ufn",
1267     "ldap_err2str",
1268     "ldap_errno",
1269     "ldap_error",
1270     "ldap_explode_dn",
1271     "ldap_first_attribute",
1272     "ldap_first_entry",
1273     "ldap_first_reference",
1274     "ldap_free_result",
1275     "ldap_get_attributes",
1276     "ldap_get_dn",
1277     "ldap_get_entries",
1278     "ldap_get_option",
1279     "ldap_get_values",
1280     "ldap_get_values_len",
1281     "ldap_list",
1282     "ldap_mod_add",
1283     "ldap_mod_del",
1284     "ldap_modify",
1285     "ldap_mod_replace",
1286     "ldap_next_attribute",
1287     "ldap_next_entry",
1288     "ldap_next_reference",
1289     "ldap_parse_reference",
1290     "ldap_parse_result",
1291     "ldap_read",
1292     "ldap_rename",
1293     "ldap_search",
1294     "ldap_set_option",
1295     "ldap_set_rebind_proc",
1296     "ldap_sort",
1297     "ldap_start_tls",
1298     "ldap_t61_to_8859",
1299     "ldap_unbind",
1300     "levenshtein",
1301     "__LINE__",
1302     "link",
1303     "linkinfo",
1304     "list",
1305     "localeconv",
1306     "localtime",
1307     "lock",
1308     "log",
1309     "log10",
1310     "log1p",
1311     "long2ip",
1312     "lstat",
1313     "ltrim",
1314     "mail",
1315     "mailparse_determine_best_xfer_encoding",
1316     "mailparse_msg_create",
1317     "mailparse_msg_extract_part",
1318     "mailparse_msg_extract_part_file",
1319     "mailparse_msg_free",
1320     "mailparse_msg_get_part",
1321     "mailparse_msg_get_part_data",
1322     "mailparse_msg_get_structure",
1323     "mailparse_msg_parse",
1324     "mailparse_msg_parse_file",
1325     "mailparse_rfc822_parse_addresses",
1326     "mailparse_stream_encode",
1327     "mailparse_uudecode_all",
1328     "main",
1329     "max",
1330     "mb_convert_case",
1331     "mb_convert_encoding",
1332     "mb_convert_kana",
1333     "mb_convert_variables",
1334     "mb_decode_mimeheader",
1335     "mb_decode_numericentity",
1336     "mb_detect_encoding",
1337     "mb_detect_order",
1338     "mb_encode_mimeheader",
1339     "mb_encode_numericentity",
1340     "mb_ereg",
1341     "mb_eregi",
1342     "mb_eregi_replace",
1343     "mb_ereg_match",
1344     "mb_ereg_replace",
1345     "mb_ereg_search",
1346     "mb_ereg_search_getpos",
1347     "mb_ereg_search_getregs",
1348     "mb_ereg_search_init",
1349     "mb_ereg_search_pos",
1350     "mb_ereg_search_regs",
1351     "mb_ereg_search_setpos",
1352     "mb_get_info",
1353     "mb_http_input",
1354     "mb_http_output",
1355     "mb_internal_encoding",
1356     "mb_language",
1357     "mb_output_handler",
1358     "mb_parse_str",
1359     "mb_preferred_mime_name",
1360     "mb_regex_encoding",
1361     "mb_regex_set_options",
1362     "mb_send_mail",
1363     "mb_split",
1364     "mb_strcut",
1365     "mb_strimwidth",
1366     "mb_strlen",
1367     "mb_strpos",
1368     "mb_strrpos",
1369     "mb_strtolower",
1370     "mb_strtoupper",
1371     "mb_strwidth",
1372     "mb_substitute_character",
1373     "mb_substr",
1374     "mb_substr_count",
1375     "mcal_append_event",
1376     "mcal_close",
1377     "mcal_create_calendar",
1378     "mcal_date_compare",
1379     "mcal_date_valid",
1380     "mcal_day_of_week",
1381     "mcal_day_of_year",
1382     "mcal_days_in_month",
1383     "mcal_delete_calendar",
1384     "mcal_delete_event",
1385     "mcal_event_add_attribute",
1386     "mcal_event_init",
1387     "mcal_event_set_alarm",
1388     "mcal_event_set_category",
1389     "mcal_event_set_class",
1390     "mcal_event_set_description",
1391     "mcal_event_set_end",
1392     "mcal_event_set_recur_daily",
1393     "mcal_event_set_recur_monthly_mday",
1394     "mcal_event_set_recur_monthly_wday",
1395     "mcal_event_set_recur_none",
1396     "mcal_event_set_recur_weekly",
1397     "mcal_event_set_recur_yearly",
1398     "mcal_event_set_start",
1399     "mcal_event_set_title",
1400     "mcal_expunge",
1401     "mcal_fetch_current_stream_event",
1402     "mcal_fetch_event",
1403     "mcal_is_leap_year",
1404     "mcal_list_alarms",
1405     "mcal_list_events",
1406     "mcal_next_recurrence",
1407     "mcal_open",
1408     "mcal_popen",
1409     "mcal_rename_calendar",
1410     "mcal_reopen",
1411     "mcal_snooze",
1412     "mcal_store_event",
1413     "mcal_time_valid",
1414     "mcal_week_of_year",
1415     "mcrypt_cbc",
1416     "mcrypt_cfb",
1417     "mcrypt_create_iv",
1418     "mcrypt_decrypt",
1419     "mcrypt_ecb",
1420     "mcrypt_enc_get_algorithms_name",
1421     "mcrypt_enc_get_block_size",
1422     "mcrypt_enc_get_iv_size",
1423     "mcrypt_enc_get_key_size",
1424     "mcrypt_enc_get_modes_name",
1425     "mcrypt_enc_get_supported_key_sizes",
1426     "mcrypt_enc_is_block_algorithm",
1427     "mcrypt_enc_is_block_algorithm_mode",
1428     "mcrypt_enc_is_block_mode",
1429     "mcrypt_encrypt",
1430     "mcrypt_enc_self_test",
1431     "mcrypt_generic",
1432     "mcrypt_generic_deinit",
1433     "mcrypt_generic_end",
1434     "mcrypt_generic_init",
1435     "mcrypt_get_block_size",
1436     "mcrypt_get_cipher_name",
1437     "mcrypt_get_iv_size",
1438     "mcrypt_get_key_size",
1439     "mcrypt_list_algorithms",
1440     "mcrypt_list_modes",
1441     "mcrypt_module_close",
1442     "mcrypt_module_get_algo_block_size",
1443     "mcrypt_module_get_algo_key_size",
1444     "mcrypt_module_get_supported_key_sizes",
1445     "mcrypt_module_is_block_algorithm",
1446     "mcrypt_module_is_block_algorithm_mode",
1447     "mcrypt_module_is_block_mode",
1448     "mcrypt_module_open",
1449     "mcrypt_module_self_test",
1450     "mcrypt_ofb",
1451     "mcve_adduser",
1452     "mcve_adduserarg",
1453     "mcve_bt",
1454     "mcve_checkstatus",
1455     "mcve_chkpwd",
1456     "mcve_chngpwd",
1457     "mcve_completeauthorizations",
1458     "mcve_connect",
1459     "mcve_connectionerror",
1460     "mcve_deleteresponse",
1461     "mcve_deletetrans",
1462     "mcve_deleteusersetup",
1463     "mcve_deluser",
1464     "mcve_destroyconn",
1465     "mcve_destroyengine",
1466     "mcve_disableuser",
1467     "mcve_edituser",
1468     "mcve_enableuser",
1469     "mcve_force",
1470     "mcve_getcell",
1471     "mcve_getcellbynum",
1472     "mcve_getcommadelimited",
1473     "mcve_getheader",
1474     "mcve_getuserarg",
1475     "mcve_getuserparam",
1476     "mcve_gft",
1477     "mcve_gl",
1478     "mcve_gut",
1479     "mcve_initconn",
1480     "mcve_initengine",
1481     "mcve_initusersetup",
1482     "mcve_iscommadelimited",
1483     "mcve_liststats",
1484     "mcve_listusers",
1485     "mcve_maxconntimeout",
1486     "mcve_monitor",
1487     "mcve_numcolumns",
1488     "mcve_numrows",
1489     "mcve_override",
1490     "mcve_parsecommadelimited",
1491     "mcve_ping",
1492     "mcve_preauth",
1493     "mcve_preauthcompletion",
1494     "mcve_qc",
1495     "mcve_responseparam",
1496     "mcve_return",
1497     "mcve_returncode",
1498     "mcve_returnstatus",
1499     "mcve_sale",
1500     "mcve_setblocking",
1501     "mcve_setdropfile",
1502     "mcve_setip",
1503     "mcve_setssl",
1504     "mcve_settimeout",
1505     "mcve_settle",
1506     "mcve_text_avs",
1507     "mcve_text_code",
1508     "mcve_text_cv",
1509     "mcve_transactionauth",
1510     "mcve_transactionavs",
1511     "mcve_transactionbatch",
1512     "mcve_transactioncv",
1513     "mcve_transactionid",
1514     "mcve_transactionitem",
1515     "mcve_transactionssent",
1516     "mcve_transactiontext",
1517     "mcve_transinqueue",
1518     "mcve_transnew",
1519     "mcve_transparam",
1520     "mcve_transsend",
1521     "mcve_ub",
1522     "mcve_uwait",
1523     "mcve_verifyconnection",
1524     "mcve_verifysslcert",
1525     "mcve_void",
1526     "md5",
1527     "md5_file",
1528     "mdecrypt_generic",
1529     "memory_get_usage",
1530     "metaphone",
1531     "method_exists",
1532     "mhash",
1533     "mhash_count",
1534     "mhash_get_block_size",
1535     "mhash_get_hash_name",
1536     "mhash_keygen_s2k",
1537     "microtime",
1538     "mime_content_type",
1539     "mimetype",
1540     "min",
1541     "ming_setcubicthreshold",
1542     "ming_setscale",
1543     "ming_useswfversion",
1544     "mkdir",
1545     "mktime",
1546     "money_format",
1547     "move",
1548     "movePen",
1549     "movePenTo",
1550     "moveTo",
1551     "move_uploaded_file",
1552     "msession_connect",
1553     "msession_count",
1554     "msession_create",
1555     "msession_destroy",
1556     "msession_disconnect",
1557     "msession_find",
1558     "msession_get",
1559     "msession_get_array",
1560     "msession_getdata",
1561     "msession_inc",
1562     "msession_list",
1563     "msession_listvar",
1564     "msession_lock",
1565     "msession_plugin",
1566     "msession_randstr",
1567     "msession_set",
1568     "msession_set_array",
1569     "msession_setdata",
1570     "msession_timeout",
1571     "msession_uniq",
1572     "msession_unlock",
1573     "msg_get_queue",
1574     "msg_receive",
1575     "msg_remove_queue",
1576     "msg_send",
1577     "msg_set_queue",
1578     "msg_stat_queue",
1579     "msql",
1580     "msql_affected_rows",
1581     "msql_close",
1582     "msql_connect",
1583     "msql_create_db",
1584     "msql_createdb",
1585     "msql_data_seek",
1586     "msql_dbname",
1587     "msql_drop_db",
1588     "msql_dropdb",
1589     "msql_error",
1590     "msql_fetch_array",
1591     "msql_fetch_field",
1592     "msql_fetch_object",
1593     "msql_fetch_row",
1594     "msql_fieldflags",
1595     "msql_fieldlen",
1596     "msql_fieldname",
1597     "msql_field_seek",
1598     "msql_fieldtable",
1599     "msql_fieldtype",
1600     "msql_free_result",
1601     "msql_freeresult",
1602     "msql_list_dbs",
1603     "msql_listdbs",
1604     "msql_list_fields",
1605     "msql_listfields",
1606     "msql_list_tables",
1607     "msql_listtables",
1608     "msql_num_fields",
1609     "msql_numfields",
1610     "msql_num_rows",
1611     "msql_numrows",
1612     "msql_pconnect",
1613     "msql_query",
1614     "msql_regcase",
1615     "msql_result",
1616     "msql_select_db",
1617     "msql_selectdb",
1618     "msql_tablename",
1619     "mssql_bind",
1620     "mssql_close",
1621     "mssql_connect",
1622     "mssql_data_seek",
1623     "mssql_execute",
1624     "mssql_fetch_array",
1625     "mssql_fetch_assoc",
1626     "mssql_fetch_batch",
1627     "mssql_fetch_field",
1628     "mssql_fetch_object",
1629     "mssql_fetch_row",
1630     "mssql_field_length",
1631     "mssql_field_name",
1632     "mssql_field_seek",
1633     "mssql_field_type",
1634     "mssql_free_result",
1635     "mssql_free_statement",
1636     "mssql_get_last_message",
1637     "mssql_guid_string",
1638     "mssql_init",
1639     "mssql_min_error_severity",
1640     "mssql_min_message_severity",
1641     "mssql_next_result",
1642     "mssql_num_fields",
1643     "mssql_num_rows",
1644     "mssql_pconnect",
1645     "mssql_query",
1646     "mssql_result",
1647     "mssql_rows_affected",
1648     "mssql_select_db",
1649     "mt_getrandmax",
1650     "mt_rand",
1651     "mt_srand",
1652     "multColor",
1653     "muscat_close",
1654     "muscat_get",
1655     "muscat_give",
1656     "muscat_setup",
1657     "muscat_setup_net",
1658     "mysql_affected_rows",
1659     "mysql_change_user",
1660     "mysql_client_encoding",
1661     "mysql_close",
1662     "mysql_connect",
1663     "mysql_create_db",
1664     "mysql_data_seek",
1665     "mysql_db_name",
1666     "mysql_db_query",
1667     "mysql_drop_db",
1668     "mysql_errno",
1669     "mysql_error",
1670     "mysql_escape_string",
1671     "mysql_fetch_array",
1672     "mysql_fetch_assoc",
1673     "mysql_fetch_field",
1674     "mysql_fetch_lengths",
1675     "mysql_fetch_object",
1676     "mysql_fetch_row",
1677     "mysql_field_flags",
1678     "mysql_field_len",
1679     "mysql_field_name",
1680     "mysql_field_seek",
1681     "mysql_field_table",
1682     "mysql_field_type",
1683     "mysql_free_result",
1684     "mysql_get_client_info",
1685     "mysql_get_host_info",
1686     "mysql_get_proto_info",
1687     "mysql_get_server_info",
1688     "mysql_info",
1689     "mysql_insert_id",
1690     "mysql_list_dbs",
1691     "mysql_list_fields",
1692     "mysql_list_processes",
1693     "mysql_list_tables",
1694     "mysql_num_fields",
1695     "mysql_num_rows",
1696     "mysql_pconnect",
1697     "mysql_ping",
1698     "mysql_query",
1699     "mysql_real_escape_string",
1700     "mysql_result",
1701     "mysql_select_db",
1702     "mysql_stat",
1703     "mysql_tablename",
1704     "mysql_thread_id",
1705     "mysql_unbuffered_query",
1706     "name",
1707     "natcasesort",
1708     "natsort",
1709     "ncurses_addch",
1710     "ncurses_addchnstr",
1711     "ncurses_addchstr",
1712     "ncurses_addnstr",
1713     "ncurses_addstr",
1714     "ncurses_assume_default_colors",
1715     "ncurses_attroff",
1716     "ncurses_attron",
1717     "ncurses_attrset",
1718     "ncurses_baudrate",
1719     "ncurses_beep",
1720     "ncurses_bkgd",
1721     "ncurses_bkgdset",
1722     "ncurses_border",
1723     "ncurses_can_change_color",
1724     "ncurses_cbreak",
1725     "ncurses_clear",
1726     "ncurses_clrtobot",
1727     "ncurses_clrtoeol",
1728     "ncurses_color_set",
1729     "ncurses_curs_set",
1730     "ncurses_define_key",
1731     "ncurses_def_prog_mode",
1732     "ncurses_def_shell_mode",
1733     "ncurses_delay_output",
1734     "ncurses_delch",
1735     "ncurses_deleteln",
1736     "ncurses_delwin",
1737     "ncurses_doupdate",
1738     "ncurses_echo",
1739     "ncurses_echochar",
1740     "ncurses_end",
1741     "ncurses_erase",
1742     "ncurses_erasechar",
1743     "ncurses_filter",
1744     "ncurses_flash",
1745     "ncurses_flushinp",
1746     "ncurses_getch",
1747     "ncurses_getmouse",
1748     "ncurses_halfdelay",
1749     "ncurses_has_colors",
1750     "ncurses_has_ic",
1751     "ncurses_has_il",
1752     "ncurses_has_key",
1753     "ncurses_hline",
1754     "ncurses_inch",
1755     "ncurses_init",
1756     "ncurses_init_color",
1757     "ncurses_init_pair",
1758     "ncurses_insch",
1759     "ncurses_insdelln",
1760     "ncurses_insertln",
1761     "ncurses_insstr",
1762     "ncurses_instr",
1763     "ncurses_isendwin",
1764     "ncurses_keyok",
1765     "ncurses_killchar",
1766     "ncurses_longname",
1767     "ncurses_mouseinterval",
1768     "ncurses_mousemask",
1769     "ncurses_move",
1770     "ncurses_mvaddch",
1771     "ncurses_mvaddchnstr",
1772     "ncurses_mvaddchstr",
1773     "ncurses_mvaddnstr",
1774     "ncurses_mvaddstr",
1775     "ncurses_mvcur",
1776     "ncurses_mvdelch",
1777     "ncurses_mvgetch",
1778     "ncurses_mvhline",
1779     "ncurses_mvinch",
1780     "ncurses_mvvline",
1781     "ncurses_mvwaddstr",
1782     "ncurses_napms",
1783     "ncurses_newwin",
1784     "ncurses_nl",
1785     "ncurses_nocbreak",
1786     "ncurses_noecho",
1787     "ncurses_nonl",
1788     "ncurses_noqiflush",
1789     "ncurses_noraw",
1790     "ncurses_putp",
1791     "ncurses_qiflush",
1792     "ncurses_raw",
1793     "ncurses_refresh",
1794     "ncurses_resetty",
1795     "ncurses_savetty",
1796     "ncurses_scr_dump",
1797     "ncurses_scr_init",
1798     "ncurses_scrl",
1799     "ncurses_scr_restore",
1800     "ncurses_scr_set",
1801     "ncurses_slk_attr",
1802     "ncurses_slk_attroff",
1803     "ncurses_slk_attron",
1804     "ncurses_slk_attrset",
1805     "ncurses_slk_clear",
1806     "ncurses_slk_color",
1807     "ncurses_slk_init",
1808     "ncurses_slk_noutrefresh",
1809     "ncurses_slk_refresh",
1810     "ncurses_slk_restore",
1811     "ncurses_slk_touch",
1812     "ncurses_standend",
1813     "ncurses_standout",
1814     "ncurses_start_color",
1815     "ncurses_termattrs",
1816     "ncurses_termname",
1817     "ncurses_timeout",
1818     "ncurses_typeahead",
1819     "ncurses_ungetch",
1820     "ncurses_ungetmouse",
1821     "ncurses_use_default_colors",
1822     "ncurses_use_env",
1823     "ncurses_use_extended_names",
1824     "ncurses_vidattr",
1825     "ncurses_vline",
1826     "ncurses_wrefresh",
1827     "new",
1828     "next",
1829     "nextframe",
1830     "next_sibling",
1831     "ngettext",
1832     "nl2br",
1833     "nl_langinfo",
1834     "node_name",
1835     "node_type",
1836     "node_value",
1837     "notations",
1838     "notes_body",
1839     "notes_copy_db",
1840     "notes_create_db",
1841     "notes_create_note",
1842     "notes_drop_db",
1843     "notes_find_note",
1844     "notes_header_info",
1845     "notes_list_msgs",
1846     "notes_mark_read",
1847     "notes_mark_unread",
1848     "notes_nav_create",
1849     "notes_search",
1850     "notes_unread",
1851     "notes_version",
1852     "NULL",
1853     "number_format",
1854     "ob_clean",
1855     "ob_end_clean",
1856     "ob_end_flush",
1857     "ob_flush",
1858     "ob_get_contents",
1859     "ob_get_length",
1860     "ob_get_level",
1861     "ob_get_status",
1862     "ob_gzhandler",
1863     "ob_iconv_handler",
1864     "ob_implicit_flush",
1865     "object",
1866     "objectbyanchor",
1867     "ob_start",
1868     "ocibindbyname",
1869     "ocicancel",
1870     "OCICollAppend",
1871     "ocicollassign",
1872     "ocicollassignelem",
1873     "ocicollgetelem",
1874     "ocicollmax",
1875     "ocicollsize",
1876     "ocicolltrim",
1877     "ocicolumnisnull",
1878     "ocicolumnname",
1879     "ocicolumnprecision",
1880     "ocicolumnscale",
1881     "ocicolumnsize",
1882     "ocicolumntype",
1883     "ocicolumntyperaw",
1884     "ocicommit",
1885     "ocidefinebyname",
1886     "ocierror",
1887     "ociexecute",
1888     "ocifetch",
1889     "ocifetchinto",
1890     "ocifetchstatement",
1891     "ocifreecollection",
1892     "ocifreecursor",
1893     "OCIFreeDesc",
1894     "ocifreestatement",
1895     "ociinternaldebug",
1896     "ociloadlob",
1897     "ocilogoff",
1898     "ocilogon",
1899     "ocinewcollection",
1900     "ocinewcursor",
1901     "ocinewdescriptor",
1902     "ocinlogon",
1903     "ocinumcols",
1904     "ociparse",
1905     "ociplogon",
1906     "ociresult",
1907     "ocirollback",
1908     "ocirowcount",
1909     "ocisavelob",
1910     "ocisavelobfile",
1911     "ociserverversion",
1912     "ocisetprefetch",
1913     "ocistatementtype",
1914     "ociwritelobtofile",
1915     "octdec",
1916     "odbc_autocommit",
1917     "odbc_binmode",
1918     "odbc_close",
1919     "odbc_close_all",
1920     "odbc_columnprivileges",
1921     "odbc_columns",
1922     "odbc_commit",
1923     "odbc_connect",
1924     "odbc_cursor",
1925     "odbc_data_source",
1926     "odbc_do",
1927     "odbc_error",
1928     "odbc_errormsg",
1929     "odbc_exec",
1930     "odbc_execute",
1931     "odbc_fetch_array",
1932     "odbc_fetch_into",
1933     "odbc_fetch_object",
1934     "odbc_fetch_row",
1935     "odbc_field_len",
1936     "odbc_field_name",
1937     "odbc_field_num",
1938     "odbc_field_precision",
1939     "odbc_field_scale",
1940     "odbc_field_type",
1941     "odbc_foreignkeys",
1942     "odbc_free_result",
1943     "odbc_gettypeinfo",
1944     "odbc_longreadlen",
1945     "odbc_next_result",
1946     "odbc_num_fields",
1947     "odbc_num_rows",
1948     "odbc_pconnect",
1949     "odbc_prepare",
1950     "odbc_primarykeys",
1951     "odbc_procedurecolumns",
1952     "odbc_procedures",
1953     "odbc_result",
1954     "odbc_result_all",
1955     "odbc_rollback",
1956     "odbc_setoption",
1957     "odbc_specialcolumns",
1958     "odbc_statistics",
1959     "odbc_tableprivileges",
1960     "odbc_tables",
1961     "opendir",
1962     "openlog",
1963     "openssl_csr_export",
1964     "openssl_csr_export_to_file",
1965     "openssl_csr_new",
1966     "openssl_csr_sign",
1967     "openssl_error_string",
1968     "openssl_free_key",
1969     "openssl_get_privatekey",
1970     "openssl_get_publickey",
1971     "openssl_open",
1972     "openssl_pkcs7_decrypt",
1973     "openssl_pkcs7_encrypt",
1974     "openssl_pkcs7_sign",
1975     "openssl_pkcs7_verify",
1976     "openssl_pkey_export",
1977     "openssl_pkey_export_to_file",
1978     "openssl_pkey_get_private",
1979     "openssl_pkey_get_public",
1980     "openssl_pkey_new",
1981     "openssl_private_decrypt",
1982     "openssl_private_encrypt",
1983     "openssl_public_decrypt",
1984     "openssl_public_encrypt",
1985     "openssl_seal",
1986     "openssl_sign",
1987     "openssl_verify",
1988     "openssl_x509_check_private_key",
1989     "openssl_x509_checkpurpose",
1990     "openssl_x509_export",
1991     "openssl_x509_export_to_file",
1992     "openssl_x509_free",
1993     "openssl_x509_parse",
1994     "openssl_x509_read",
1995     "ora_bind",
1996     "ora_close",
1997     "ora_columnname",
1998     "ora_columnsize",
1999     "ora_columntype",
2000     "ora_commit",
2001     "ora_commitoff",
2002     "ora_commiton",
2003     "ora_do",
2004     "ora_error",
2005     "ora_errorcode",
2006     "ora_exec",
2007     "ora_fetch",
2008     "ora_fetch_into",
2009     "ora_getcolumn",
2010     "ora_logoff",
2011     "ora_logon",
2012     "ora_numcols",
2013     "ora_numrows",
2014     "ora_open",
2015     "ora_parse",
2016     "ora_plogon",
2017     "ora_rollback",
2018     "ord",
2019     "output",
2020     "overload",
2021     "ovrimos_close",
2022     "ovrimos_commit",
2023     "ovrimos_connect",
2024     "ovrimos_cursor",
2025     "ovrimos_exec",
2026     "ovrimos_execute",
2027     "ovrimos_fetch_into",
2028     "ovrimos_fetch_row",
2029     "ovrimos_field_len",
2030     "ovrimos_field_name",
2031     "ovrimos_field_num",
2032     "ovrimos_field_type",
2033     "ovrimos_free_result",
2034     "ovrimos_longreadlen",
2035     "ovrimos_num_fields",
2036     "ovrimos_num_rows",
2037     "ovrimos_prepare",
2038     "ovrimos_result",
2039     "ovrimos_result_all",
2040     "ovrimos_rollback",
2041     "owner_document",
2042     "pack",
2043     "parent_node",
2044     "parents",
2045     "parse_ini_file",
2046     "parse_str",
2047     "parse_url",
2048     "passthru",
2049     "pathinfo",
2050     "PATH_TRANSLATED",
2051     "pclose",
2052     "pcntl_exec",
2053     "pcntl_fork",
2054     "pcntl_signal",
2055     "pcntl_waitpid",
2056     "pcntl_wexitstatus",
2057     "pcntl_wifexited",
2058     "pcntl_wifsignaled",
2059     "pcntl_wifstopped",
2060     "pcntl_wstopsig",
2061     "pcntl_wtermsig",
2062     "pdf_add_annotation",
2063     "pdf_add_bookmark",
2064     "pdf_add_launchlink",
2065     "pdf_add_locallink",
2066     "pdf_add_note",
2067     "pdf_add_outline",
2068     "pdf_add_pdflink",
2069     "pdf_add_thumbnail",
2070     "pdf_add_weblink",
2071     "pdf_arc",
2072     "pdf_arcn",
2073     "pdf_attach_file",
2074     "pdf_begin_page",
2075     "pdf_begin_pattern",
2076     "pdf_begin_template",
2077     "pdf_circle",
2078     "pdf_clip",
2079     "pdf_close",
2080     "pdf_close_image",
2081     "pdf_closepath",
2082     "pdf_closepath_fill_stroke",
2083     "pdf_closepath_stroke",
2084     "pdf_close_pdi",
2085     "pdf_close_pdi_page",
2086     "pdf_concat",
2087     "pdf_continue_text",
2088     "pdf_curveto",
2089     "pdf_delete",
2090     "pdf_end_page",
2091     "pdf_endpath",
2092     "pdf_end_pattern",
2093     "pdf_end_template",
2094     "pdf_fill",
2095     "pdf_fill_stroke",
2096     "pdf_findfont",
2097     "pdf_get_buffer",
2098     "pdf_get_font",
2099     "pdf_get_fontname",
2100     "pdf_get_fontsize",
2101     "pdf_get_image_height",
2102     "pdf_get_image_width",
2103     "pdf_get_majorversion",
2104     "pdf_get_minorversion",
2105     "pdf_get_parameter",
2106     "pdf_get_pdi_parameter",
2107     "pdf_get_pdi_value",
2108     "pdf_get_value",
2109     "pdf_initgraphics",
2110     "pdf_lineto",
2111     "pdf_makespotcolor",
2112     "pdf_moveto",
2113     "pdf_new",
2114     "pdf_open",
2115     "pdf_open_CCITT",
2116     "pdf_open_file",
2117     "pdf_open_gif",
2118     "pdf_open_image",
2119     "pdf_open_image_file",
2120     "pdf_open_jpeg",
2121     "pdf_open_memory_image",
2122     "pdf_open_pdi",
2123     "pdf_open_pdi_page",
2124     "pdf_open_png",
2125     "pdf_open_tiff",
2126     "pdf_place_image",
2127     "pdf_place_pdi_page",
2128     "pdf_rect",
2129     "pdf_restore",
2130     "pdf_rotate",
2131     "pdf_save",
2132     "pdf_scale",
2133     "pdf_set_border_color",
2134     "pdf_set_border_dash",
2135     "pdf_set_border_style",
2136     "pdf_set_char_spacing",
2137     "pdf_setcolor",
2138     "pdf_setdash",
2139     "pdf_set_duration",
2140     "pdf_setflat",
2141     "pdf_set_font",
2142     "pdf_setfont",
2143     "pdf_setgray",
2144     "pdf_setgray_fill",
2145     "pdf_setgray_stroke",
2146     "pdf_set_horiz_scaling",
2147     "pdf_set_info",
2148     "pdf_set_info_author",
2149     "pdf_set_info_creator",
2150     "pdf_set_info_keywords",
2151     "pdf_set_info_subject",
2152     "pdf_set_info_title",
2153     "pdf_set_leading",
2154     "pdf_setlinecap",
2155     "pdf_setlinejoin",
2156     "pdf_setlinewidth",
2157     "pdf_setmatrix",
2158     "pdf_setmiterlimit",
2159     "pdf_set_parameter",
2160     "pdf_setpolydash",
2161     "pdf_setrgbcolor",
2162     "pdf_setrgbcolor_fill",
2163     "pdf_setrgbcolor_stroke",
2164     "pdf_set_text_matrix",
2165     "pdf_set_text_pos",
2166     "pdf_set_text_rendering",
2167     "pdf_set_text_rise",
2168     "pdf_set_value",
2169     "pdf_set_word_spacing",
2170     "pdf_show",
2171     "pdf_show_boxed",
2172     "pdf_show_xy",
2173     "pdf_skew",
2174     "pdf_stringwidth",
2175     "pdf_stroke",
2176     "pdf_translate",
2177     "PEAR_EXTENSION_DIR",
2178     "PEAR_INSTALL_DIR",
2179     "pfpro_cleanup",
2180     "pfpro_init",
2181     "pfpro_process",
2182     "pfpro_process_raw",
2183     "pfpro_version",
2184     "pfsockopen",
2185     "pg_affected_rows",
2186     "pg_cancel_query",
2187     "pg_client_encoding",
2188     "pg_close",
2189     "pg_connect",
2190     "pg_connection_busy",
2191     "pg_connection_reset",
2192     "pg_connection_status",
2193     "pg_convert",
2194     "pg_copy_from",
2195     "pg_copy_to",
2196     "pg_dbname",
2197     "pg_delete",
2198     "pg_end_copy",
2199     "pg_escape_bytea",
2200     "pg_escape_string",
2201     "pg_fetch_all",
2202     "pg_fetch_array",
2203     "pg_fetch_assoc",
2204     "pg_fetch_object",
2205     "pg_fetch_result",
2206     "pg_fetch_row",
2207     "pg_field_is_null",
2208     "pg_field_name",
2209     "pg_field_num",
2210     "pg_field_prtlen",
2211     "pg_field_size",
2212     "pg_field_type",
2213     "pg_free_result",
2214     "pg_get_notify",
2215     "pg_get_pid",
2216     "pg_get_result",
2217     "pg_host",
2218     "pg_insert",
2219     "pg_last_error",
2220     "pg_last_notice",
2221     "pg_last_oid",
2222     "pg_lo_close",
2223     "pg_lo_create",
2224     "pg_lo_export",
2225     "pg_lo_import",
2226     "pg_lo_open",
2227     "pg_lo_read",
2228     "pg_lo_read_all",
2229     "pg_lo_seek",
2230     "pg_lo_tell",
2231     "pg_lo_unlink",
2232     "pg_lo_write",
2233     "pg_meta_data",
2234     "pg_num_fields",
2235     "pg_num_rows",
2236     "pg_options",
2237     "pg_pconnect",
2238     "pg_ping",
2239     "pg_port",
2240     "pg_put_line",
2241     "pg_query",
2242     "pg_result_error",
2243     "pg_result_seek",
2244     "pg_result_status",
2245     "pg_select",
2246     "pg_send_query",
2247     "pg_set_client_encoding",
2248     "pg_trace",
2249     "pg_tty",
2250     "pg_unescape_bytea",
2251     "pg_untrace",
2252     "pg_update",
2253     "PHP_BINDIR",
2254     "PHP_CONFIG_FILE_PATH",
2255     "phpcredits",
2256     "PHP_DATADIR",
2257     "PHP_ERRMSG",
2258     "PHP_EXTENSION_DIR",
2259     "phpinfo",
2260     "php_ini_scanned_files",
2261     "PHP_LIBDIR",
2262     "PHP_LOCALSTATEDIR",
2263     "php_logo_guid",
2264     "PHP_OS",
2265     "PHP_OUTPUT_HANDLER_CONT",
2266     "PHP_OUTPUT_HANDLER_END",
2267     "PHP_OUTPUT_HANDLER_START",
2268     "php_sapi_name",
2269     "PHP_SELF",
2270     "PHP_SYSCONFDIR",
2271     "php_uname",
2272     "phpversion",
2273     "PHP_VERSION",
2274     "pi",
2275     "png2wbmp",
2276     "popen",
2277     "pos",
2278     "posix_ctermid",
2279     "posix_getcwd",
2280     "posix_getegid",
2281     "posix_geteuid",
2282     "posix_getgid",
2283     "posix_getgrgid",
2284     "posix_getgrnam",
2285     "posix_getgroups",
2286     "posix_getlogin",
2287     "posix_getpgid",
2288     "posix_getpgrp",
2289     "posix_getpid",
2290     "posix_getppid",
2291     "posix_getpwnam",
2292     "posix_getpwuid",
2293     "posix_getrlimit",
2294     "posix_getsid",
2295     "posix_getuid",
2296     "posix_isatty",
2297     "posix_kill",
2298     "posix_mkfifo",
2299     "posix_setegid",
2300     "posix_seteuid",
2301     "posix_setgid",
2302     "posix_setpgid",
2303     "posix_setsid",
2304     "posix_setuid",
2305     "posix_times",
2306     "posix_ttyname",
2307     "posix_uname",
2308     "_POST",
2309     "pow",
2310     "prefix",
2311     "preg_grep",
2312     "preg_match",
2313     "preg_match_all",
2314     "preg_quote",
2315     "preg_replace",
2316     "preg_replace_callback",
2317     "preg_split",
2318     "prev",
2319     "previous_sibling",
2320     "print",
2321     "printer_abort",
2322     "printer_close",
2323     "printer_create_brush",
2324     "printer_create_dc",
2325     "printer_create_font",
2326     "printer_create_pen",
2327     "printer_delete_brush",
2328     "printer_delete_dc",
2329     "printer_delete_font",
2330     "printer_delete_pen",
2331     "printer_draw_bmp",
2332     "printer_draw_chord",
2333     "printer_draw_elipse",
2334     "printer_draw_line",
2335     "printer_draw_pie",
2336     "printer_draw_rectangle",
2337     "printer_draw_roundrect",
2338     "printer_draw_text",
2339     "printer_end_doc",
2340     "printer_end_page",
2341     "printer_get_option",
2342     "printer_list",
2343     "printer_logical_fontheight",
2344     "printer_open",
2345     "printer_select_brush",
2346     "printer_select_font",
2347     "printer_select_pen",
2348     "printer_set_option",
2349     "printer_start_doc",
2350     "printer_start_page",
2351     "printer_write",
2352     "printf",
2353     "print_r",
2354     "private",
2355     "proc_close",
2356     "process",
2357     "proc_open",
2358     "protected",
2359     "pspell_add_to_personal",
2360     "pspell_add_to_session",
2361     "pspell_check",
2362     "pspell_clear_session",
2363     "pspell_config_create",
2364     "pspell_config_ignore",
2365     "pspell_config_mode",
2366     "pspell_config_personal",
2367     "pspell_config_repl",
2368     "pspell_config_runtogether",
2369     "pspell_config_save_repl",
2370     "pspell_new",
2371     "pspell_new_config",
2372     "pspell_new_personal",
2373     "pspell_save_wordlist",
2374     "pspell_store_replacement",
2375     "pspell_suggest",
2376     "public",
2377     "public_id",
2378     "putenv",
2379     "qdom_error",
2380     "qdom_tree",
2381     "QUERY_STRING",
2382     "quoted_printable_decode",
2383     "quotemeta",
2384     "rad2deg",
2385     "rand",
2386     "range",
2387     "rawurldecode",
2388     "rawurlencode",
2389     "read",
2390     "readdir",
2391     "read_exif_data",
2392     "readfile",
2393     "readgzfile",
2394     "readline",
2395     "readline_add_history",
2396     "readline_clear_history",
2397     "readline_completion_function",
2398     "readline_info",
2399     "readline_list_history",
2400     "readline_read_history",
2401     "readline_write_history",
2402     "readlink",
2403     "realpath",
2404     "reason",
2405     "recode",
2406     "recode_file",
2407     "recode_string",
2408     "register_shutdown_function",
2409     "register_tick_function",
2410     "REMOTE_ADDR",
2411     "REMOTE_PORT",
2412     "remove",
2413     "remove_attribute",
2414     "remove_child",
2415     "rename",
2416     "replace",
2417     "replace_child",
2418     "replace_node",
2419     "_REQUEST",
2420     "REQUEST_METHOD",
2421     "REQUEST_URI",
2422     "require",
2423     "require_once",
2424     "reset",
2425     "restore_error_handler",
2426     "restore_include_path",
2427     "result_dump_file",
2428     "result_dump_mem",
2429     "return",
2430     "rewind",
2431     "rewinddir",
2432     "rmdir",
2433     "Rotate",
2434     "rotateTo",
2435     "round",
2436     "rsort",
2437     "rtrim",
2438     "save",
2439     "scale",
2440     "scaleTo",
2441     "SCRIPT_FILENAME",
2442     "SCRIPT_NAME",
2443     "sem_acquire",
2444     "sem_get",
2445     "sem_release",
2446     "sem_remove",
2447     "serialize",
2448     "_SERVER",
2449     "SERVER_ADMIN",
2450     "SERVER_NAME",
2451     "SERVER_PORT",
2452     "SERVER_PROTOCOL",
2453     "SERVER_SIGNATURE",
2454     "SERVER_SOFTWARE",
2455     "sesam_affected_rows",
2456     "sesam_commit",
2457     "sesam_connect",
2458     "sesam_diagnostic",
2459     "sesam_disconnect",
2460     "sesam_errormsg",
2461     "sesam_execimm",
2462     "sesam_fetch_array",
2463     "sesam_fetch_result",
2464     "sesam_fetch_row",
2465     "sesam_field_array",
2466     "sesam_field_name",
2467     "sesam_free_result",
2468     "sesam_num_fields",
2469     "sesam_query",
2470     "sesam_rollback",
2471     "sesam_seek_row",
2472     "sesam_settransaction",
2473     "_SESSION",
2474     "session_cache_expire",
2475     "session_cache_limiter",
2476     "session_decode",
2477     "session_destroy",
2478     "session_encode",
2479     "session_get_cookie_params",
2480     "session_id",
2481     "session_is_registered",
2482     "session_module_name",
2483     "session_name",
2484     "session_readonly",
2485     "session_register",
2486     "session_save_path",
2487     "session_set_cookie_params",
2488     "session_set_save_handler",
2489     "session_start",
2490     "session_unregister",
2491     "session_unset",
2492     "session_write_close",
2493     "setAction",
2494     "set_attribute",
2495     "setbackground",
2496     "setbounds",
2497     "setcolor",
2498     "setColor",
2499     "setcommitedversion",
2500     "set_content",
2501     "setcookie",
2502     "setDepth",
2503     "setdimension",
2504     "setdown",
2505     "set_error_handler",
2506     "set_file_buffer",
2507     "setFont",
2508     "setframes",
2509     "setHeight",
2510     "setHit",
2511     "set_include_path",
2512     "setindentation",
2513     "setLeftFill",
2514     "setLeftMargin",
2515     "setLine",
2516     "setLineSpacing",
2517     "setlocale",
2518     "set_magic_quotes_runtime",
2519     "setMargins",
2520     "set_name",
2521     "setname",
2522     "setName",
2523     "set_namespace",
2524     "setOver",
2525     "setrate",
2526     "setRatio",
2527     "setRightFill",
2528     "setrightMargin",
2529     "setSpacing",
2530     "set_time_limit",
2531     "settype",
2532     "setUp",
2533     "sha1",
2534     "sha1_file",
2535     "shell_exec",
2536     "shm_attach",
2537     "shm_detach",
2538     "shm_get_var",
2539     "shmop_close",
2540     "shmop_delete",
2541     "shmop_open",
2542     "shmop_read",
2543     "shmop_size",
2544     "shmop_write",
2545     "shm_put_var",
2546     "shm_remove",
2547     "shm_remove_var",
2548     "show_source",
2549     "shuffle",
2550     "similar_text",
2551     "sin",
2552     "sinh",
2553     "sizeof",
2554     "skewX",
2555     "skewXTo",
2556     "skewY",
2557     "skewYTo",
2558     "sleep",
2559     "snmpget",
2560     "snmp_get_quick_print",
2561     "snmprealwalk",
2562     "snmpset",
2563     "snmp_set_quick_print",
2564     "snmpwalk",
2565     "snmpwalkoid",
2566     "socket_accept",
2567     "socket_bind",
2568     "socket_clear_error",
2569     "socket_close",
2570     "socket_connect",
2571     "socket_create",
2572     "socket_create_listen",
2573     "socket_create_pair",
2574     "socket_get_option",
2575     "socket_getpeername",
2576     "socket_getsockname",
2577     "socket_get_status",
2578     "socket_iovec_add",
2579     "socket_iovec_alloc",
2580     "socket_iovec_delete",
2581     "socket_iovec_fetch",
2582     "socket_iovec_free",
2583     "socket_iovec_set",
2584     "socket_last_error",
2585     "socket_listen",
2586     "socket_read",
2587     "socket_readv",
2588     "socket_recv",
2589     "socket_recvfrom",
2590     "socket_recvmsg",
2591     "socket_select",
2592     "socket_send",
2593     "socket_sendmsg",
2594     "socket_sendto",
2595     "socket_set_blocking",
2596     "socket_set_nonblock",
2597     "socket_set_option",
2598     "socket_set_timeout",
2599     "socket_shutdown",
2600     "socket_strerror",
2601     "socket_write",
2602     "socket_writev",
2603     "sort",
2604     "soundex",
2605     "specified",
2606     "split",
2607     "spliti",
2608     "sprintf",
2609     "sql_regcase",
2610     "sqrt",
2611     "srand",
2612     "srcanchors",
2613     "srcsofdst",
2614     "sscanf",
2615     "stat",
2616     "static",
2617     "stdClass",
2618     "strcasecmp",
2619     "strchr",
2620     "strcmp",
2621     "strcoll",
2622     "strcspn",
2623     "stream_context_create",
2624     "stream_context_get_options",
2625     "stream_context_set_option",
2626     "stream_context_set_params",
2627     "stream_filter_append",
2628     "stream_filter_prepend",
2629     "stream_get_filters",
2630     "stream_get_meta_data",
2631     "stream_get_wrappers",
2632     "streammp3",
2633     "stream_register_filter",
2634     "stream_register_wrapper",
2635     "stream_select",
2636     "stream_set_blocking",
2637     "stream_set_timeout",
2638     "stream_set_write_buffer",
2639     "strftime",
2640     "stripcslashes",
2641     "stripslashes",
2642     "strip_tags",
2643     "stristr",
2644     "strlen",
2645     "strnatcasecmp",
2646     "strnatcmp",
2647     "strncasecmp",
2648     "strncmp",
2649     "str_pad",
2650     "strpos",
2651     "strrchr",
2652     "str_repeat",
2653     "str_replace",
2654     "strrev",
2655     "str_rot13",
2656     "strrpos",
2657     "str_shuffle",
2658     "strspn",
2659     "strstr",
2660     "strtok",
2661     "strtolower",
2662     "strtotime",
2663     "strtoupper",
2664     "strtr",
2665     "strval",
2666     "str_word_count",
2667     "substr",
2668     "substr_count",
2669     "substr_replace",
2670     "SWFAction",
2671     "swf_actiongeturl",
2672     "swf_actiongotoframe",
2673     "swf_actiongotolabel",
2674     "swf_actionnextframe",
2675     "swf_actionplay",
2676     "swf_actionprevframe",
2677     "swf_actionsettarget",
2678     "swf_actionstop",
2679     "swf_actiontogglequality",
2680     "swf_actionwaitforframe",
2681     "swf_addbuttonrecord",
2682     "swf_addcolor",
2683     "SWFBitmap",
2684     "SWFbutton",
2685     "swfbutton_keypress",
2686     "swf_closefile",
2687     "swf_definebitmap",
2688     "swf_definefont",
2689     "swf_defineline",
2690     "swf_definepoly",
2691     "swf_definerect",
2692     "swf_definetext",
2693     "SWFDisplayItem",
2694     "swf_endbutton",
2695     "swf_enddoaction",
2696     "swf_endshape",
2697     "swf_endsymbol",
2698     "SWFFill",
2699     "SWFFont",
2700     "swf_fontsize",
2701     "swf_fontslant",
2702     "swf_fonttracking",
2703     "swf_getbitmapinfo",
2704     "swf_getfontinfo",
2705     "swf_getframe",
2706     "SWFGradient",
2707     "swf_labelframe",
2708     "swf_lookat",
2709     "swf_modifyobject",
2710     "SWFMorph",
2711     "SWFMovie",
2712     "swf_mulcolor",
2713     "swf_nextid",
2714     "swf_oncondition",
2715     "swf_openfile",
2716     "swf_ortho",
2717     "swf_ortho2",
2718     "swf_perspective",
2719     "swf_placeobject",
2720     "swf_polarview",
2721     "swf_popmatrix",
2722     "swf_posround",
2723     "swf_pushmatrix",
2724     "swf_removeobject",
2725     "swf_rotate",
2726     "swf_scale",
2727     "swf_setfont",
2728     "swf_setframe",
2729     "SWFShape",
2730     "swf_shapearc",
2731     "swf_shapecurveto",
2732     "swf_shapecurveto3",
2733     "swf_shapefillbitmapclip",
2734     "swf_shapefillbitmaptile",
2735     "swf_shapefilloff",
2736     "swf_shapefillsolid",
2737     "swf_shapelinesolid",
2738     "swf_shapelineto",
2739     "swf_shapemoveto",
2740     "swf_showframe",
2741     "SWFSprite",
2742     "swf_startbutton",
2743     "swf_startdoaction",
2744     "swf_startshape",
2745     "swf_startsymbol",
2746     "SWFText",
2747     "SWFTextField",
2748     "swf_textwidth",
2749     "swf_translate",
2750     "swf_viewport",
2751     "switch",
2752     "sybase_affected_rows",
2753     "sybase_close",
2754     "sybase_connect",
2755     "sybase_data_seek",
2756     "sybase_fetch_array",
2757     "sybase_fetch_field",
2758     "sybase_fetch_object",
2759     "sybase_fetch_row",
2760     "sybase_field_seek",
2761     "sybase_free_result",
2762     "sybase_get_last_message",
2763     "sybase_min_client_severity",
2764     "sybase_min_error_severity",
2765     "sybase_min_message_severity",
2766     "sybase_min_server_severity",
2767     "sybase_num_fields",
2768     "sybase_num_rows",
2769     "sybase_pconnect",
2770     "sybase_query",
2771     "sybase_result",
2772     "sybase_select_db",
2773     "symlink",
2774     "syslog",
2775     "system",
2776     "system_id",
2777     "tagname",
2778     "tan",
2779     "tanh",
2780     "target",
2781     "tempnam",
2782     "textdomain",
2783     "time",
2784     "title",
2785     "tmpfile",
2786     "token_get_all",
2787     "token_name",
2788     "touch",
2789     "trigger_error",
2790     "trim",
2791     "TRUE",
2792     "type",
2793     "uasort",
2794     "ucfirst",
2795     "ucwords",
2796     "udm_add_search_limit",
2797     "udm_alloc_agent",
2798     "udm_api_version",
2799     "udm_cat_list",
2800     "udm_cat_path",
2801     "udm_check_charset",
2802     "udm_check_stored",
2803     "udm_clear_search_limits",
2804     "udm_close_stored",
2805     "udm_crc32",
2806     "udm_errno",
2807     "udm_error",
2808     "udm_find",
2809     "udm_free_agent",
2810     "udm_free_ispell_data",
2811     "udm_free_res",
2812     "udm_get_doc_count",
2813     "udm_get_res_field",
2814     "udm_get_res_param",
2815     "udm_load_ispell_data",
2816     "udm_open_stored",
2817     "udm_set_agent_param",
2818     "uksort",
2819     "umask",
2820     "uniqid",
2821     "unixtojd",
2822     "unlink",
2823     "unlink_node",
2824     "unlock",
2825     "unpack",
2826     "unregister_tick_function",
2827     "unserialize",
2828     "unset",
2829     "urldecode",
2830     "urlencode",
2831     "user",
2832     "user_error",
2833     "userlist",
2834     "usleep",
2835     "usort",
2836     "utf8_decode",
2837     "utf8_encode",
2838     "value",
2839     "values",
2840     "var",
2841     "var_dump",
2842     "var_export",
2843     "version_compare",
2844     "virtual",
2845     "vpopmail_add_alias_domain",
2846     "vpopmail_add_alias_domain_ex",
2847     "vpopmail_add_domain",
2848     "vpopmail_add_domain_ex",
2849     "vpopmail_add_user",
2850     "vpopmail_alias_add",
2851     "vpopmail_alias_del",
2852     "vpopmail_alias_del_domain",
2853     "vpopmail_alias_get",
2854     "vpopmail_alias_get_all",
2855     "vpopmail_auth_user",
2856     "vpopmail_del_domain",
2857     "vpopmail_del_domain_ex",
2858     "vpopmail_del_user",
2859     "vpopmail_error",
2860     "vpopmail_passwd",
2861     "vpopmail_set_user_quota",
2862     "vprintf",
2863     "vsprintf",
2864     "w32api_deftype",
2865     "w32api_init_dtype",
2866     "w32api_invoke_function",
2867     "w32api_register_function",
2868     "w32api_set_call_method",
2869     "wddx_add_vars",
2870     "wddx_deserialize",
2871     "wddx_packet_end",
2872     "wddx_packet_start",
2873     "wddx_serialize_value",
2874     "wddx_serialize_vars",
2875     "while",
2876     "wordwrap",
2877     "xinclude",
2878     "xml_error_string",
2879     "xml_get_current_byte_index",
2880     "xml_get_current_column_number",
2881     "xml_get_current_line_number",
2882     "xml_get_error_code",
2883     "xml_parse",
2884     "xml_parse_into_struct",
2885     "xml_parser_create",
2886     "xml_parser_create_ns",
2887     "xml_parser_free",
2888     "xml_parser_get_option",
2889     "xml_parser_set_option",
2890     "xmlrpc_decode",
2891     "xmlrpc_decode_request",
2892     "xmlrpc_encode",
2893     "xmlrpc_encode_request",
2894     "xmlrpc_get_type",
2895     "xmlrpc_parse_method_descriptions",
2896     "xmlrpc_server_add_introspection_data",
2897     "xmlrpc_server_call_method",
2898     "xmlrpc_server_create",
2899     "xmlrpc_server_destroy",
2900     "xmlrpc_server_register_introspection_callback",
2901     "xmlrpc_server_register_method",
2902     "xmlrpc_set_type",
2903     "xml_set_character_data_handler",
2904     "xml_set_default_handler",
2905     "xml_set_element_handler",
2906     "xml_set_end_namespace_decl_handler",
2907     "xml_set_external_entity_ref_handler",
2908     "xml_set_notation_decl_handler",
2909     "xml_set_object",
2910     "xml_set_processing_instruction_handler",
2911     "xml_set_start_namespace_decl_handler",
2912     "xml_set_unparsed_entity_decl_handler",
2913     "xpath_eval",
2914     "xpath_eval_expression",
2915     "xpath_new_context",
2916     "xptr_eval",
2917     "xptr_new_context",
2918     "xslt_create",
2919     "xslt_errno",
2920     "xslt_error",
2921     "xslt_free",
2922     "xslt_output_process",
2923     "xslt_set_base",
2924     "xslt_set_encoding",
2925     "xslt_set_error_handler",
2926     "xslt_set_log",
2927     "xslt_set_sax_handler",
2928     "xslt_set_sax_handlers",
2929     "xslt_set_scheme_handler",
2930     "xslt_set_scheme_handlers",
2931     "yaz_addinfo",
2932     "yaz_ccl_conf",
2933     "yaz_ccl_parse",
2934     "yaz_close",
2935     "yaz_connect",
2936     "yaz_database",
2937     "yaz_element",
2938     "yaz_errno",
2939     "yaz_error",
2940     "yaz_get_option",
2941     "yaz_hits",
2942     "yaz_itemorder",
2943     "yaz_present",
2944     "yaz_range",
2945     "yaz_record",
2946     "yaz_scan",
2947     "yaz_scan_result",
2948     "yaz_schema",
2949     "yaz_search",
2950     "yaz_set_option",
2951     "yaz_sort",
2952     "yaz_syntax",
2953     "yaz_wait",
2954     "yp_all",
2955     "yp_cat",
2956     "yp_errno",
2957     "yp_err_string",
2958     "yp_first",
2959     "yp_get_default_domain",
2960     "yp_master",
2961     "yp_match",
2962     "yp_next",
2963     "yp_order",
2964     "zend_logo_guid",
2965     "zend_version",
2966     "zend_version",
2967     "zip_close",
2968     "zip_entry_close",
2969     "zip_entry_compressedsize",
2970     "zip_entry_compressionmethod",
2971     "zip_entry_filesize",
2972     "zip_entry_name",
2973     "zip_entry_open",
2974     "zip_entry_read",
2975     "zip_open",
2976     "zip_read",
2977     0
2978 };
2979 
Php5Writer()2980 Php5Writer::Php5Writer()
2981 {
2982 }
2983 
~Php5Writer()2984 Php5Writer::~Php5Writer()
2985 {
2986 }
2987 
2988 /**
2989  * Call this method to generate Php code for a UMLClassifier.
2990  * @param c   the class you want to generate code for.
2991  */
writeClass(UMLClassifier * c)2992 void Php5Writer::writeClass(UMLClassifier *c)
2993 {
2994     if (!c) {
2995         uDebug()<<"Cannot write class of NULL concept!";
2996         return;
2997     }
2998 
2999     QString classname = cleanName(c->name());
3000     //find an appropriate name for our file
3001     QString fileName = findFileName(c, QLatin1String(".php"));
3002     if (fileName.isEmpty()) {
3003         emit codeGenerated(c, false);
3004         return;
3005     }
3006 
3007     QFile filephp;
3008     if (!openFile(filephp, fileName)) {
3009         emit codeGenerated(c, false);
3010         return;
3011     }
3012     QTextStream php(&filephp);
3013 
3014     //////////////////////////////
3015     //Start generating the code!!
3016     /////////////////////////////
3017 
3018     //try to find a heading file (license, comments, etc)
3019     QString str;
3020     str = getHeadingFile(QLatin1String(".php"));
3021     if (!str.isEmpty()) {
3022         str.replace(QRegExp(QLatin1String("%filename%")), fileName);
3023         str.replace(QRegExp(QLatin1String("%filepath%")), filephp.fileName());
3024         php<<str<<m_endl;
3025     } else {
3026         php << "<?php" << m_endl;
3027     }
3028 
3029     //write includes
3030     UMLPackageList includes;
3031     findObjectsRelated(c, includes);
3032     foreach(UMLPackage* conc, includes) {
3033         QString headerName = findFileName(conc, QLatin1String(".php"));
3034         if (!headerName.isEmpty()) {
3035             php << "require_once '" << headerName << "';" << m_endl;
3036         }
3037     }
3038     php << m_endl;
3039 
3040     //Write class Documentation if there is something or if force option
3041     if (forceDoc() || !c->doc().isEmpty()) {
3042         php << m_endl << "/**" << m_endl;
3043         php << " * class " << classname << m_endl;
3044         php << formatDoc(c->doc(), QLatin1String(" * "));
3045         php << " */" << m_endl ;
3046     }
3047 
3048     UMLClassifierList superclasses = c->getSuperClasses(false);
3049     UMLAssociationList aggregations = c->getAggregations();
3050     UMLAssociationList compositions = c->getCompositions();
3051     UMLAssociationList realizations = c->getRealizations();
3052 
3053     bool isInterface = c->isInterface();
3054 
3055     //check if it is an interface or regular class
3056     if (isInterface) {
3057         php << "interface " << classname;
3058     } else {
3059         //check if class is abstract and / or has abstract methods
3060         if (c->isAbstract())
3061             php << "abstract ";
3062         php << "class " << classname << (superclasses.count() > 0 ? QLatin1String(" extends ") : QString());
3063         if (superclasses.count() > 0) {
3064             //php5 does not support multiple inheritance so only use the first one and print a warning if more are used
3065             UMLClassifier *obj = superclasses.first();
3066             php << cleanName(obj->name());
3067             if (superclasses.count() > 1)
3068                 php << m_indentation << "//WARNING: PHP5 does not support multiple inheritance but there is more than 1 superclass defined in your UML model!";
3069         }
3070         //check for realizations
3071         if (!realizations.isEmpty()) {
3072             int rc = realizations.count();
3073             int ri = rc;
3074             foreach (UMLAssociation* a, realizations) {
3075                 UMLObject *o = a->getObject(Uml::RoleType::B);
3076                 QString typeName = cleanName(o->name());
3077                 if (ri == rc)
3078                     php << m_endl << m_indentation << m_indentation << m_indentation <<  "implements ";
3079                 php << typeName << (--rc == 0 ? QString() : QLatin1String(", "));
3080             }
3081         }
3082     }
3083     php << m_endl << '{' << m_endl;
3084 
3085     //associations
3086     if (forceSections() || !aggregations.isEmpty()) {
3087         php<< m_endl << m_indentation << "/** Aggregations: */" << m_endl;
3088         foreach (UMLAssociation* a, aggregations) {
3089             php<< m_endl;
3090             //maybe we should parse the string here and take multiplicity into account to decide
3091             //which container to use.
3092             UMLObject *o = a->getObject(Uml::RoleType::A);
3093             if (o == 0) {
3094                 uError() << "aggregation role A object is NULL" << endl;
3095                 continue;
3096             }
3097             //:UNUSED: QString typeName = cleanName(o->name());
3098             if (a->getMultiplicity(Uml::RoleType::A).isEmpty())  {
3099                 php << m_indentation << "var $m_" << ';' << m_endl;
3100             } else {
3101                 php << m_indentation << "var $m_" << "Vector = array();" << m_endl;
3102             }
3103         }//end for
3104     }
3105 
3106     if (forceSections() || !compositions.isEmpty()) {
3107         php<< m_endl << m_indentation << "/** Compositions: */" << m_endl;
3108         foreach (UMLAssociation* a, compositions) {
3109             // see comment on Aggregation about multiplicity...
3110             UMLObject *o = a->getObject(Uml::RoleType::A);
3111             if (o == 0) {
3112                 uError() << "composition role A object is NULL";
3113                 continue;
3114             }
3115             //:UNUSED: QString typeName = cleanName(o->name());
3116             if (a->getMultiplicity(Uml::RoleType::A).isEmpty())  {
3117                 php << m_indentation << "var $m_" << ';' << m_endl;
3118             } else {
3119                 php << m_indentation << "var $m_" << "Vector = array();" << m_endl;
3120             }
3121         }
3122     }
3123 
3124     //attributes
3125     if (!isInterface)
3126         writeAttributes(c, php);
3127 
3128     //operations
3129     writeOperations(c, php);
3130 
3131     php << m_endl;
3132 
3133     //finish file
3134     php <<  m_endl << "} // end of " << classname << m_endl;
3135     php << "?>" << m_endl;
3136 
3137     //close files and notfiy we are done
3138     filephp.close();
3139     emit codeGenerated(c, true);
3140     emit showGeneratedFile(filephp.fileName());
3141 }
3142 
3143 ////////////////////////////////////////////////////////////////////////////////////
3144 //  Helper Methods
3145 
3146 /**
3147  * Write all operations for a given class.
3148  * @param c     the concept we are generating code for
3149  * @param php   output stream for the PHP file
3150  */
writeOperations(UMLClassifier * c,QTextStream & php)3151 void Php5Writer::writeOperations(UMLClassifier *c, QTextStream &php)
3152 {
3153     //Lists to store operations  sorted by scope
3154     UMLOperationList oppub, opprot, oppriv;
3155 
3156     bool isInterface = c->isInterface();
3157     bool generateErrorStub = false;
3158 
3159     //sort operations by scope first and see if there are abstract methods
3160     UMLOperationList opl(c->getOpList());
3161     foreach (UMLOperation *op, opl) {
3162         switch(op->visibility()) {
3163           case Uml::Visibility::Public:
3164             oppub.append(op);
3165             break;
3166           case Uml::Visibility::Protected:
3167             opprot.append(op);
3168             break;
3169           case Uml::Visibility::Private:
3170             oppriv.append(op);
3171             break;
3172           default:
3173             break;
3174         }
3175     }
3176 
3177     QString classname(cleanName(c->name()));
3178 
3179     //write operations to file
3180     if (forceSections() || !oppub.isEmpty()) {
3181         php << m_endl;
3182         writeOperations(classname, oppub, php, isInterface, generateErrorStub);
3183     }
3184 
3185     if (forceSections() || !opprot.isEmpty()) {
3186         php << m_endl;
3187         writeOperations(classname, opprot, php, isInterface, generateErrorStub);
3188     }
3189 
3190     if (forceSections() || !oppriv.isEmpty()) {
3191         php << m_endl;
3192         writeOperations(classname, oppriv, php, isInterface, generateErrorStub);
3193     }
3194 
3195     // build an oplist for all of the realized operations
3196     UMLOperationList opreal;
3197 
3198     // go through each of the realizations, taking each op
3199     UMLAssociationList realizations = c->getRealizations();
3200 
3201     if (!realizations.isEmpty()) {
3202         foreach (UMLAssociation* a, realizations) {
3203 
3204             // we know its a classifier if its in the list
3205             UMLClassifier *real = (UMLClassifier*)a->getObject(Uml::RoleType::B);
3206 
3207             // exclude realizations to self
3208             if (real == c)
3209                 continue;
3210 
3211             UMLOperationList opl(real->getOpList());
3212             foreach(UMLOperation *op, opl) {
3213                 opreal.append(op);
3214             }
3215         }
3216     }
3217 
3218     // write out all the realizations operations
3219     writeOperations(classname, opreal, php, false, true);
3220 }
3221 
3222 /**
3223  * Write a list of class operations.
3224  * @param classname   the name of the class
3225  * @param opList      the list of operations
3226  * @param php         output stream for the PHP file
3227  * @param interface   indicates if the operation is an interface member
3228  */
writeOperations(const QString & classname,UMLOperationList & opList,QTextStream & php,bool isInterface,bool generateErrorStub)3229 void Php5Writer::writeOperations(const QString & classname, UMLOperationList &opList,
3230                                  QTextStream &php, bool isInterface /* = false */,
3231                                  bool generateErrorStub /* = false */)
3232 {
3233     Q_UNUSED(classname);
3234     foreach (UMLOperation *op, opList) {
3235         UMLAttributeList atl = op->getParmList();
3236 
3237         //write method doc if we have doc || if at least one of the params has doc
3238         bool writeDoc = forceDoc() || !op->doc().isEmpty();
3239         foreach (UMLAttribute* at,  atl)
3240             writeDoc |= !at->doc().isEmpty();
3241 
3242         if (writeDoc)  //write method documentation
3243         {
3244             php << m_indentation << "/**" << m_endl <<formatDoc(op->doc(), m_indentation + QLatin1String(" * "));
3245             php << m_indentation << " *" << m_endl;
3246 
3247             foreach (UMLAttribute* at, atl)  //write parameter documentation
3248             {
3249                 if (forceDoc() || !at->doc().isEmpty()) {
3250                     php << m_indentation << " * @param " << at->getTypeName() << ' ' << cleanName(at->name());
3251                     php << ' ' << formatDoc(at->doc(), QString()) << m_endl;
3252                 }
3253             }//end for : write parameter documentation
3254             QString str = op->getTypeName();
3255             if (str.isEmpty()) {
3256                 str = QLatin1String("void");
3257             }
3258             php << m_indentation << " * @return " << str << m_endl;
3259             if (op->isAbstract()) php << m_indentation << " * @abstract" << m_endl;
3260             if (op->isStatic()) php << m_indentation << " * @static" << m_endl;
3261             switch(op->visibility()) {
3262               case Uml::Visibility::Public:
3263                 php << m_indentation << " * @access public" << m_endl;
3264                 break;
3265               case Uml::Visibility::Protected:
3266                 php << m_indentation << " * @access protected" << m_endl;
3267                 break;
3268               case Uml::Visibility::Private:
3269                 php << m_indentation << " * @access private" << m_endl;
3270                 break;
3271               default:
3272                 break;
3273             }
3274             php << m_indentation << " */" << m_endl;
3275         }//end if : write method documentation
3276 
3277         php <<  m_indentation;
3278         if (op->isAbstract())
3279             php << "abstract ";
3280         switch(op->visibility()) {
3281           case Uml::Visibility::Public:
3282             php << "public ";
3283             break;
3284           case Uml::Visibility::Protected:
3285             php << "protected ";
3286             break;
3287           case Uml::Visibility::Private:
3288             php << "private ";
3289             break;
3290           default:
3291             break;
3292         }
3293         if (op->isStatic())
3294             php << "static ";
3295         php << "function " << cleanName(op->name()) << "(";
3296 
3297         int i= atl.count();
3298         int j=0;
3299         foreach (UMLAttribute* at, atl) {
3300             php << " $" << cleanName(at->name())
3301                 << (!(at->getInitialValue().isEmpty()) ?
3302                     (QLatin1String(" = ") + at->getInitialValue()) : QString())
3303                 << ((j < i-1) ? QLatin1String(", ") : QString());
3304             j++;
3305         }
3306         php << ")";
3307         if (!isInterface && !op->isAbstract()) {
3308             php << " {" << m_endl;
3309 
3310             QString sourceCode = op->getSourceCode();
3311             if (sourceCode.isEmpty()) {
3312                 if (generateErrorStub) {
3313                     php  << m_indentation << m_indentation << "trigger_error(\"Implement \" . __FUNCTION__);" << m_endl;
3314                 }
3315             }
3316             else {
3317                 php << formatSourceCode(sourceCode, m_indentation + m_indentation);
3318             }
3319             php << m_indentation << "} // end of member function " << cleanName(op->name()) << m_endl;
3320         }
3321         else {
3322             php << ';' << m_endl;
3323         }
3324         php << m_endl;
3325     }//end for
3326 }
3327 
3328 /**
3329  * Write all the attributes of a class.
3330  * @param c     the class we are generating code for
3331  * @param php   output stream for the PHP file
3332  */
writeAttributes(UMLClassifier * c,QTextStream & php)3333 void Php5Writer::writeAttributes(UMLClassifier *c, QTextStream &php)
3334 {
3335     UMLAttributeList  atpub, atprot, atpriv, atdefval;
3336 
3337     //sort attributes by scope and see if they have a default value
3338     UMLAttributeList atl = c->getAttributeList();
3339 
3340     foreach(UMLAttribute* at, atl) {
3341         if (!at->getInitialValue().isEmpty())
3342             atdefval.append(at);
3343         switch(at->visibility()) {
3344           case Uml::Visibility::Public:
3345             atpub.append(at);
3346             break;
3347           case Uml::Visibility::Protected:
3348             atprot.append(at);
3349             break;
3350           case Uml::Visibility::Private:
3351             atpriv.append(at);
3352             break;
3353           default:
3354             break;
3355         }
3356     }
3357 
3358     if (forceSections() || atl.count())
3359         php<< m_endl << m_indentation << " /*** Attributes: ***/" << m_endl <<m_endl;
3360 
3361     if (forceSections() || atpub.count()) {
3362         writeAttributes(atpub, php);
3363     }
3364 
3365     if (forceSections() || atprot.count()) {
3366         writeAttributes(atprot, php);
3367     }
3368 
3369     if (forceSections() || atpriv.count()) {
3370         writeAttributes(atpriv, php);
3371     }
3372 }
3373 
3374 /**
3375  * Write a list of class attributes.
3376  * @param atList   the list of attributes
3377  * @param php      output stream for the PHP file
3378  */
writeAttributes(UMLAttributeList & atList,QTextStream & php)3379 void Php5Writer::writeAttributes(UMLAttributeList &atList, QTextStream &php)
3380 {
3381     foreach (UMLAttribute *at, atList) {
3382         bool isStatic = at->isStatic();
3383         if (forceDoc() || !at->doc().isEmpty()) {
3384             php << m_indentation << "/**" << m_endl << formatDoc(at->doc(), m_indentation + QLatin1String(" * "));
3385             if (isStatic) php << m_indentation << " * @static" << m_endl;
3386             switch(at->visibility()) {
3387               case Uml::Visibility::Public:
3388                 php << m_indentation << " * @access public" << m_endl;
3389                 break;
3390               case Uml::Visibility::Protected:
3391                 php << m_indentation << " * @access protected" << m_endl;
3392                 break;
3393               case Uml::Visibility::Private:
3394                 php << m_indentation << " * @access private" << m_endl;
3395                 break;
3396               default:
3397                 break;
3398             }
3399             php << m_indentation << " */" << m_endl;
3400         }
3401         php << m_indentation;
3402         switch(at->visibility()) {
3403           case Uml::Visibility::Public:
3404             php << "public ";
3405             break;
3406           case Uml::Visibility::Protected:
3407             php << "protected ";
3408             break;
3409           case Uml::Visibility::Private:
3410             php << "private ";
3411             break;
3412           default:
3413             break;
3414         }
3415         if (isStatic) php << "static ";
3416         php << "$" << cleanName(at->name());
3417         if (!at->getInitialValue().isEmpty())
3418             php << " = " << at->getInitialValue();
3419         php << ";" << m_endl << m_endl;
3420     } // end for
3421     return;
3422 }
3423 
3424 /**
3425  * Returns "PHP".
3426  * @return   the programming language identifier
3427  */
language() const3428 Uml::ProgrammingLanguage::Enum Php5Writer::language() const
3429 {
3430     return Uml::ProgrammingLanguage::PHP5;
3431 }
3432 
3433 /**
3434  * Get list of reserved keywords.
3435  * @return   the list of reserved keywords
3436  */
reservedKeywords() const3437 QStringList Php5Writer::reservedKeywords() const
3438 {
3439     static QStringList keywords;
3440 
3441     if (keywords.isEmpty()) {
3442         for (int i = 0; reserved_words[i]; ++i) {
3443             keywords.append(QLatin1String(reserved_words[i]));
3444         }
3445     }
3446 
3447     return keywords;
3448 }
3449 
3450 
3451 
3452