[wpkg_web] / packages_xml_out.php Repository:
ViewVC logotype

View of /packages_xml_out.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 45 - (download) (annotate)
Mon Jan 22 19:15:15 2007 UTC (11 years, 8 months ago) by linuxkidd
File size: 6640 byte(s)
Updated for execute='always' situations

<?php
include "connect.php";

$dl_sql="select languages.value,url,saveto from pack_downloads,languages where languages.id=lang_id and pack_id=%s";

$chk_sql="select chklevel,prnlevel,pack_chklogic.value,pack_chktype.value,pack_chkconditions.value,path,pack_checks.value from pack_checks left join pack_chktype on (pack_checks.chktype_id=pack_chktype.id) left join pack_chklogic on (pack_checks.chklog_id=pack_chklogic.id) left join pack_chkconditions on (pack_checks.chkcond_id=pack_chkconditions.id) where pack_id=%s order by chklog_id desc,chktype_id";

$cmd_sql="select pack_cmds.id,pack_cmdtype.value as cmdtype,priority,cmd,timeout from pack_cmds,pack_cmdtype where pack_id=%s and pack_cmds.cmdtype_id=pack_cmdtype.id order by cmdtype,priority";

$exits_sql="select exitcode,action_id from pack_cmdexits where cmd_id=%s order by exitcode";

$extras_sql="select pack_exttype.value,packages.idtxt from packages,pack_extras,pack_exttype where pack_id=%s and pack_extras.exttype_id=pack_exttype.id and packages.id=pack_extras.value order by packages.idtxt";

$sql="select * from packages where obsolete!=1";
if(isset(
$_GET['idtxt'])) {
  
$sql.=" and idtxt=" quote_smart($_GET['idtxt']);
} else if (isset(
$_GET['id'])) {
  
$sql.=" and id=" quote_smart($_GET['id']);
}
$sql_h=mysql_query($sql) or die($sql " --- " mysql_error());
if(isset(
$_GET['idtxt']) || isset($_GET['id'])) {
  
$pack_data=mysql_fetch_array($sql_h);
  
$filename=$pack_data[4] . ".xml";
  
$sql_h=mysql_query($sql) or die($sql " --- " mysql_error());
} else {
  
$filename='packages.xml';
}

$tf=array( 'false''true' );

header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="' $filename '"');

print 
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print 
"<packages>\n\n";
while(
$pack_data=mysql_fetch_array($sql_h)) {
  
escape_str($pack_data);
  print 
sprintf("<package id='%s' name='%s' revision='%s' priority='%s' reboot='%s'"$pack_data[4], $pack_data[1],  $pack_data[2], $pack_data[6], $tf[$pack_data[5]]);
  if(
$pack_data[7]) {
    print 
" execute='once'";
  } else {
    
$sql2="select count(id) from pack_checks where pack_id=" $pack_data['id'];
    unset(
$check_count);
    
$sql2_handle=mysql_query($sql2) or die($sql " --- " mysql_error());
    list(
$check_count)=mysql_fetch_array($sql2_handle);
    if(
$check_count<1) {
      print 
" execute='always'";
    }
  }
  print 
" >\n";
  if (
$pack_data[8])
    print 
"  <!-- " $pack_data[8] . " -->\n";
  
print_downloads($pack_data[0]);
  
$depth=-1;
  
$sql2=sprintf("select * from pack_checks where chklog_id is NOT NULL and pack_id=%s order by chklevel,chktype_id"quote_smart($pack_data[0]));
  
$sql2_h=mysql_query($sql2) or die($sql2 " --- " mysql_error());

  
$levels=array();
  while(
$level_data=mysql_fetch_array($sql2_h)) {
    
$levels[$level_data[3]][]=$level_data;
  }
  
print_checks($pack_data[0],0);

  
print_cmds($pack_data[0]);
  
print_extras($pack_data[0]);
  print 
"</package>\n\n";
}
print 
"</packages>\n";

function 
escape_str(&$data) {
  
$data preg_replace'/\'/''"'$data);
  
$data preg_replace('/&/''&amp;'$data);
}

function 
print_downloads($pack_id) {
  global 
$dl_sql;
  
$dl_h=mysql_query(sprintf($dl_sql,quote_smart($pack_id))) or die(sprintf($dl_sql,quote_smart($pack_id)) . " --- " mysql_error());
  while(
$dl_data=mysql_fetch_array($dl_h)) {
    
$dl_data[1] = preg_replace('/\&/''%26'$dl_data[1]);
    
escape_str($dl_data);
    print 
sprintf("  <download lang='%s' url='%s' saveto='%s' />\n"$dl_data[0], $dl_data[1], $dl_data[2]);
  }
}

function 
print_cmds($pack_id) {
  global 
$cmd_sql;
  
$cmd_h=mysql_query(sprintf($cmd_sql,quote_smart($pack_id))) or die(sprintf($cmd_sql,quote_smart($pack_id)) . " --- " mysql_error());
  while(
$cmd_data=mysql_fetch_array($cmd_h)) {
    
escape_str($cmd_data);
    if(
$cmd_data[4]!='3600') {
      print 
sprintf("  <%s cmd='%s' timeout='%s' "$cmd_data[1], $cmd_data[3], $cmd_data[4]);
    } else {
      print 
sprintf("  <%s cmd='%s' "$cmd_data[1], $cmd_data[3]);
    }
    
$exit_data=print_cmdexits($cmd_data[0]);
    if(
$exit_data) {
      print 
sprintf(">\n%s  </%s>\n"$exit_data$cmd_data[1]);
    } else {
      print 
"/>\n";
    }
  }
}

function 
print_extras($pack_id) {
  global 
$extras_sql;
  
$extras_h=mysql_query(sprintf($extras_sql,quote_smart($pack_id))) or die(sprintf($extras_sql,quote_smart($pack_id)) . " --- " mysql_error());
  while(
$extras_data=mysql_fetch_array($extras_h)) {
    
escape_str($extras_data);
    print 
sprintf("  <%s package-id='%s' />\n"$extras_data[0], $extras_data[1]);
  }
}

function 
print_cmdexits($cmd_id) {
  global 
$exits_sql;
  
$ret_data='';
  
$exits_h=mysql_query(sprintf($exits_sql,quote_smart($cmd_id))) or die(sprintf($exits_sql,quote_smart($cmd_id)) . " --- " mysql_error());
  while(
$exits_data=mysql_fetch_array($exits_h)) {
    
escape_str($exits_data);
    
$ret_data.=sprintf("    <exit code='%s'"$exits_data[0]);
    if(
$exits_data[1]>1) {
      
$ret_data.=" reboot='true'";
    }
    
$ret_data.=" />\n";
  }
  return 
$ret_data;
}


function 
print_checks() {
  
#     0        1        2       3          4         5    6
  # chklevel,prnlevel,chklogic,chktype,chkconditions,path,value
  
$arg_count=func_num_args();
  
$pack_id=func_get_arg(0);
  
$level=func_get_arg(1);
  
$printed_levels=array();
  if(
$arg_count>2) {
    
$prnlevel  =func_get_arg(2);
    
$level_id  =func_get_arg(3);
  }
  global 
$chk_sql,$depth;
  
$depth++;
  
$sql3="select count(id) from pack_checks where pack_id=" quote_smart($pack_id);
  
$sql3_h=mysql_query($sql3) or die($sql3 " --- " mysql_error());
  list(
$chk_count)=mysql_fetch_array($sql3_h);
  
$chk_h=mysql_query(sprintf($chk_sql,quote_smart($pack_id))) or die(sprintf($chk_sql,quote_smart($pack_id)) . " --- " mysql_error());
  
$count=0;
  while(
$chk_data=mysql_fetch_array($chk_h)) {
    
escape_str($chk_data);
    
$count++;
    if(
$chk_data[1]!='') {
      if ( 
$chk_count>)
        print 
sprintf("  <check type='logical' condition='%s'>\n"$chk_data[2]);
      continue;
    }
    for(
$i=0;$i<$level;$i++) {
      print 
"  ";
    }
    print 
sprintf("  <check type='%s' condition='%s' path='%s'"$chk_data[3], $chk_data[4], $chk_data[5]);
    if(
$chk_data[6]) {
      print 
sprintf(" value='%s'"$chk_data[6]);
    }
    print 
" />\n";
  }
  if(isset(
$levels[$level])) {
    foreach ( 
$levels[$level] as $nextlevel ) {
      if(!isset(
$printed_levels[$nextlevel[0]])) {
        
print_checks($pack_id,$nextlevel[2],$level,$nextlevel[0]);
        
$printed_levels[$nextlevel[0]]=1;
      }
    }
  }
  if (
$count>&& $chk_count>2)
    print 
"  </check>\n";
}

ViewVC Help
Powered by ViewVC 1.0.3