Merging code from trunk that fixes #774, this work was done by incastrix
[phpeclipse.git] / net.sourceforge.phpeclipse.help / docbook-src / guide / parseimages.php
1 <?php\r
2 \r
3   if (function_exists ("DebugBreak")) {\r
4     global $DBGSESSID;\r
5     $DBGSESSID = "1@clienthost:7869";\r
6     DebugBreak ();\r
7   }\r
8 \r
9   var_dump ($argv);\r
10 \r
11   echo getcwd(). "\n";\r
12 \r
13   $doc          = $argv[1];                     // the document name (xd-001 etc.)\r
14 \r
15   $dirlist   = glob ("*.html");                 // get the list of html files within the doc main directory\r
16 \r
17   foreach ($dirlist as $key => $file) {       // for every html file\r
18     ParseXHTML ($file, $lang, $doc, $fidlist, $idlist);\r
19   }\r
20 \r
21 \r
22 /***** ParseXHTML ()                         **********************************/\r
23 /* Parse the XHTML files\r
24  *\r
25  */\r
26 \r
27   function ParseXHTML (&$file, $lang, $doc, &$fidlist, &$idlist) {\r
28     $data     = file_get_contents ($file);                        // get the xhtml-file content\r
29     $parser   = xml_parser_create ($fencoding);\r
30     $imglist  = array ();                                         // initiate the image list array\r
31 \r
32     xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, 0);\r
33     // xml_parser_set_option ($parser, XML_OPTION_SKIP_WHITE, 1);\r
34 \r
35     xml_parse_into_struct ($parser, $data, $values, $tags);       // parse the xhtml file\r
36     xml_parser_free ($parser);\r
37 \r
38     MakePictureList ($values, $tags, $imglist, $lang, $doc);      // build the list with the used images\r
39     CopyImages ($imglist);                                        // copy the used images into the temp folder\r
40   }\r
41 \r
42 /***** CopyImages (...)                      **********************************/\r
43 /*\r
44  */\r
45   function CopyImages (&$imglist) {\r
46     CreateDirectory ('tmp/img');\r
47     CreateDirectory ('tmp/img/callouts');\r
48     CreateDirectory ('tmp/img/nav');\r
49     CreateDirectory ('tmp/img/admon');\r
50 \r
51     foreach ($imglist as $key => $img) {\r
52       $path    = explode ('/', $img);\r
53 \r
54       // The image path is something like: img/en/xxxx/xxx.png to img/xxx.png\r
55       if (($path[1] != 'callouts') && ($path[1] != 'nav') && ($path[1] != 'admon')) {\r
56         $dest = "tmp/".$path[0].'/'.$path[1].'/'.$path[2].'/'.$path[3];        // build the destination path for the image\r
57         CreateDirectory ('tmp/img/'.$path[1].'/'.$path[2]);\r
58       }\r
59       else {\r
60         $dest = "tmp/".$img;\r
61       }\r
62 \r
63       // echo "---copy:". $img. ":to:". $dest."\n";\r
64       copy ($img, $dest);\r
65     }\r
66   }\r
67 \r
68 /***** MakePictureList (...)                 **********************************/\r
69 /*\r
70  */\r
71   function MakePictureList (&$values, &$tags, &$imglist, &$lang, &$doc) {\r
72     // scan every <a> tag for the onmouseover and onmouseout attribute\r
73     foreach ($tags['a'] as $key => $val) {\r
74       if (isset ($values[$val]['attributes'])) {\r
75         foreach ($values[$val]['attributes'] as $tkey => $tval) {\r
76           if (($tkey == 'onmouseover') || ($tkey == 'onmouseout')) {\r
77             $ta  = explode ('=', $tval);                       // strip everthing before the '='\r
78             $img = str_replace ("'", "", $ta[1]);              // remove the '\r
79 \r
80             if (!in_array ($img, $imglist)) {                  // As long as this img yet isn't within the list\r
81               array_push ($imglist, $img);                     //  add this image to the list\r
82             }\r
83 \r
84             $values[$val]['attributes'][$tkey] = $ta[0]."='docs/".$lang."/".$doc."/".$img."'";\r
85           }\r
86         }\r
87       }\r
88     }\r
89 \r
90     // scan every <img> tag for the src attribute\r
91     foreach ($tags['img'] as $key => $val) {\r
92       if (isset ($values[$val]['attributes'])) {\r
93         foreach ($values[$val]['attributes'] as $tkey => $tval) {\r
94           if ($tkey == 'src') {                                // It it is the 'src' attribute\r
95             if (!in_array ($tval, $imglist)) {                 // As long as this img yet isn't within the list\r
96               array_push ($imglist, $tval);                    //  add this image to the list\r
97             }\r
98 \r
99             // now change the image path from img/en/xxxx/xxx.png to img/xxx.png\r
100             $path    = explode ('/', $tval);\r
101 \r
102             if (($path[1] != 'callouts') && ($path[1] != 'nav') && ($path[1] != 'admon')) {\r
103               $newpath = $path[0].'/'.$path[3];                  // path[0] = img; path[3] = xxx.png || xxx.jpg\r
104               $img = "docs/".$lang."/".$doc."/".$newpath;        // e.g. new path = docs/en/xn-001/img/xxx.png\r
105               $values[$val]['attributes'][$tkey] = $img;         // $img is the new link path to the image\r
106             }\r
107             else {\r
108               $values[$val]['attributes'][$tkey] = "docs/".$lang."/".$doc."/".$tval;\r
109             }\r
110           }\r
111         }\r
112       }\r
113     }\r
114   }\r
115 \r
116 /***** CreateDirectory (...)                 **********************************/\r
117 \r
118   function CreateDirectory ($dirname) {\r
119     $path = "";\r
120     $dir  = split ('[/|\\]', $dirname);\r
121 \r
122     for ($i = 0; $i < count ($dir); $i++) {\r
123       $path .= $dir[$i]."/";\r
124 \r
125       if (!is_dir ($path)) {\r
126         @mkdir ($path, 0777);\r
127         @chmod ($path, 0777);\r
128       }\r
129     }\r
130 \r
131     if (is_dir ($dirname)) {\r
132       return 1;\r
133     }\r
134 \r
135     return 0;\r
136   }\r
137 \r
138 /******************************************************************************/\r
139 \r
140 ?>\r