FOSSology  4.4.0
Open Source License Compliance by Open Source Software
lib_projxml.h.php
1 <?php
2 /*
3  db_postgres.h.php
4  SPDX-FileCopyrightText: © 2007 Hewlett-Packard Development Company, L.P.
5 
6  SPDX-License-Identifier: GPL-2.0-only
7 */
8 
35 function write_entry($in_handle, $marker, $out_handle){
36 
37  // The marker is really set AFTER <project>, so <project> needs to
38  // be written.
39  $start = fseek($in_handle, $marker);
40  fwrite($out_handle, " <project>\n");
41  while( false != ($line = fgets($in_handle, 1024))){
42  // </project> is the end tag, write it and return, all done.
43  if (preg_match('|</project>|', $line)){
44  fwrite($out_handle, $line);
45  return;
46  }
47  fwrite($out_handle, $line);
48  }
49 }
50 
66 function get_entry($in_handle, $marker){
67 
68  $project = array();
69 
70  // The marker is really set AFTER <project>, so <project> needs to
71  // be written.
72  $start = fseek($in_handle, $marker);
73  $project[] = " <project>\n";
74  while( false != ($line = fgets($in_handle, 1024))){
75  // </project> is the end tag, save it and return, all done.
76  if (preg_match('|</project>|', $line)){
77  $project[] = $line;
78  return($project);
79  }
80  $project[] = $line;
81  }
82 }
83 
95 function close_tag($handle){
96 
97  $tag = "</project-listing>\n";
98  fwrite($handle, $tag);
99  return;
100 }
112 function parse_fm_input($fm_string){
113  $parms = preg_split
114  ('/([\'|\"])+?/', $fm_string);
115  //("/([\'|\"])/", $fm_string, -1, PREG_SPLIT_DELIM_CAPTURE);
116  //("/([0-9]) ([0-9a-zA-Z]) (\'|\")*?/", $fm_string, -1, PREG_SPLIT_DELIM_CAPTURE);
117  // the split above leave null entries.... remove them.
118  $acnt = count($parms);
119  for ($ai=0; $ai<=$acnt; $ai++){
120  $len = strlen($parms[$ai]);
121  if ($len == 0){
122  //echo "unsetting 0 lenght entry\n";
123  unset($parms[$ai]);
124  }
125  elseif (!(isset($parms[$ai]))){
126  //echo "value not set, unsetting in parms \$parms[$ai]\n";
127  unset($parms[$ai]);
128  }
129  elseif ((isset($parms[$ai]))){
130  if(ereg('^ +', $parms[$ai])){
131  //echo "getting rid of space \$parms[$ai]\n";
132  unset($parms[$ai]);
133  }
134  }
135  }
136  // compact the array so list will work! this is just stupid...
137  $lparms = array_values($parms);
138  //pdbg("ParseFmI: \$parms is:", $lparms);
139  return($lparms);
140 }
141 
158 function pdbg($message, $dump=''){
159 
160  $dbg_msg = 'DBG->' . $message . "\n";
161 
162  echo $dbg_msg;
163 
164  if(isset($dump)){
165  // echo "\$dump is:\n";
166  print_r($dump);
167  echo "\n";
168  }
169  return;
170 }
171 
184 function write_hdr($handle){
185 
186  $xml_hdr = <<< HDR
187 <?xml version="1.0" encoding="ISO-8859-1"?>
188 <!DOCTYPE project-listing SYSTEM "http://freshmeat.net/backend/fm-projects-0.4.dtd">
189 <project-listing>
190 
191 HDR;
192  //pdbg("WHDR: \$xml_hdr is:$xml_hdr");
193  fwrite($handle, $xml_hdr);
194  return;
195 }
196 
210 function write_pxml($file_handle, $pxml){
211  //write_hdr($file_handle);
212  for ($i=0; $i < count($pxml); $i++){
213  fwrite($file_handle, $pxml[$i]);
214  }
215  return;
216 }
217 
230 function save_Yupdated($file_handle, $Updata){
231  //$Updata .= "\n";
232  fwrite($file_handle, $Updata);
233  return;
234 }
235 
249 function xtract($string){
250 
251  $pos = strpos($string, '>');
252  $val_start = $pos + 1;
253  $val_end = strpos($string, '</', $val_start);
254  if(!(is_numeric($val_end))){ // not a valid tag... return null.
255  return(NULL);
256  }
257  $val_len = $val_end - $val_start;
258  $value = substr($string, $val_start, $val_len);
259  return($value);
260 }
261 
277 function read_pfile($xml_file) {
278  /*
279  * Data Structure:
280  *
281  * Key Key Value(s)
282  * --- --- --------
283  * project_rank project_name <zero or more urls to archives>,
284  * <home_url>, <short-description>,
285  * version-info (3 tokens).
286  *
287  */
288  $meatdoc= simplexml_load_file("$xml_file");
289  # echo "read_pfile: Read XML file\n";
290  $fmprojs = array();
291  foreach ($meatdoc->project as $project) {
292  $fmprojs["$project->popularity_rank"] ["$project->projectname_short"] =
293  array ("$project->url_tgz",
294  "$project->url_bz2",
295  "$project->url_zip",
296  "$project->url_homepage",
297  "$project->desc_short"
298  );
299  foreach($project->latest_release as $verdata){
300  array_push(
301  $fmprojs["$project->popularity_rank"] ["$project->projectname_short"],
302  $verdata->latest_release_version,
303  $verdata->latest_release_id,
304  $verdata->latest_release_date
305  );
306  }
307  }
308  ksort($fmprojs);
309  return($fmprojs);
310 }