ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
HFile_ueconv.php
Go to the documentation of this file.
1 <?php
2 $BEAUT_PATH = realpath(".")."/Services/COPage/syntax_highlight/php";
3 if (!isset ($BEAUT_PATH)) return;
4 require "$BEAUT_PATH/Beautifier/HFile.php";
5 
6 //######## Configuration Conversion functions
7 
8 // Function to go through an Ultraedit-style configuration file and convert to a PHP include
9 
10 function HFile_print_php_file($tofile = 1)
11 {
12  global $indent, $unindent, $stringchars, $config, $keywords, $delimiters, $lang_name;
13  global $linecommenton, $blockcommenton, $blockcommentoff;
14  global $perl, $nocase, $notrim;
15  if ($tofile) print "<?php\n"; else print "&lt;?\n";
16  print "######################################\n";
17  print "# Beautifier Highlighting Configuration File \n";
18  print "# $lang_name\n";
19  print "######################################\n";
20  print "# Flags\n\n";
21  dump_var($nocase, "\$nocase ");
22  dump_var($notrim, "\$notrim ");
23  dump_var($perl, "\$perl ");
24  print "\n# Colours\n\n";
25  $used_categories = get_categories();
26  dump_colours($used_categories);
27  dump_var("blue", "\$quotecolour ");
28  dump_var("green", "\$blockcommentcolour");
29  dump_var("green", "\$linecommentcolour ");
30  print "\n# Indent Strings\n\n";
31  dump_array($indent, "\$indent ");
32  dump_array($unindent, "\$unindent ");
33  print "\n# String characters and delimiters\n\n";
34  dump_array($stringchars, "\$stringchars ");
35  dump_array($delimiters, "\$delimiters ");
36  dump_var ($escchar, "\$escchar ");
37  print "\n# Comment settings\n\n";
38  dump_var ($linecommenton, "\$linecommenton ");
39  dump_var ($blockcommenton, "\$blockcommenton ");
40  dump_var ($blockcommentoff, "\$blockcommentoff ");
41  print "\n# Keywords (keyword mapping to colour number)\n\n";
42  dump_hash ($keywords, "\$keywords ");
43  print "\n# Special extensions\n";
44  dump_linkscripts($used_categories);
45  if ($tofile) print "\n?>"; else print "\n?&gt;";
46 }
47 
48 function get_categories()
49 {
50  global $keywords;
51  $usedcats = array();
52 
53  foreach(array_keys($keywords) as $k)
54  {
55  $cat = $keywords[$k];
56  if (!in_array($cat, $usedcats)) array_push($usedcats, $cat);
57  }
58  return $usedcats;
59 }
60 
61 function dump_linkscripts($cats)
62 {
63  print "
64 // Each category can specify a PHP function that returns an altered
65 // version of the keyword.
66  # This link is then placed in a <a href=\"...\">foo</a>; structure around keyword 'foo' - which is
67  \n\n";
68 
69  $linkhash = array();
70 
71  foreach($cats as $c)
72  {
73  $linkhash{$c} = "donothing";
74  }
75 
76  dump_hash($linkhash, "\$linkscripts ");
77  print "\n# DoNothing link function\n\n";
78  print "function donothing(\$keywordin)\n{\n return \$keywordin;\n}\n";
79 }
80 
81 function dump_colours($cats)
82 {
83  global $colours;
84 
85  $usedcols = array();
86  foreach($cats as $c)
87  {
88  array_push($usedcols, $colours[$c-1]);
89  }
90  dump_array($usedcols, "\$colours ");
91 }
92 
93 function dump_var($variable, $name)
94 {
95  print $name." = \"".addslashes($variable)."\";\n";
96 }
97 
98 function dump_array($array, $name)
99 {
100  $first = 1;
101  print $name." = array(";
102  foreach($array as $a)
103  {
104  if (!$first) print ", "; else $first = 0;
105  print "\"".addslashes($a)."\"";
106  }
107  print ");\n";
108 }
109 
110 function dump_hash($hash, $name)
111 {
112  $first = 1;
113  print $name." = array(";
114  foreach(array_keys($hash) as $k)
115  {
116  if (!$first) print ", "; else $first = 0;
117  print "\n \"".addslashes($k)."\"";
118  print " => \"".addslashes($hash[$k])."\"";
119  }
120  print ");\n";
121 }
122 
123 ?>
124 <html><title>Configuration Converter</title><body>
125 <h1>Important Note</h1>
126 <p>This script should <b>not</b> be run on a public server. It is possible to access files other than syntax highlight files (by entering /etc/passwd, for example). Although this should not display anything useful, it is still possible that important data may be extractable. As such, only run this script <b>locally</b> (it should not be necessary to run it on a public server, anyway).</p>
127 <form action="HFileconv.php">Please specify a syntax file to convert:<br />
128 <input type="text" width="64" size="64" name="file" value="<?php print $file; ?>" /><br />
129 Save to:<br />
130 <input type="text" width="64" size="64" name="fileout" value="<?php print stripslashes($fileout); ?>" /><br />
131 <input type="submit" /></form><hr />
132 <pre>
133 <?php
134 if (isset($fileout) && $fileout == "") unset($fileout);
135 if (isset($file) && file_exists($file))
136 {
137  HFile_parse_file($file);
138  ob_start();
139  HFile_print_php_file(isset($fileout));
140  $out = ob_get_contents();
141  if (isset($fileout))
142  {
143  $fd = fopen($fileout, "w");
144  fputs($fd, $out);
145  fclose($fd);
146  }
147  ob_end_flush();
148 }
149 ?>
150 </pre>
151 </body></html>
152 
153 
154