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