/[dehs]/trunk/dehs_pg.php
ViewVC logotype

Diff of /trunk/dehs_pg.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 77 by atomo64-guest, Sun Dec 16 01:53:08 2007 UTC revision 123 by atomo64-guest, Mon Mar 24 17:51:34 2008 UTC
# Line 4  Line 4 
4    
5  Originally written by Stefano Fabri <bluefuture@nospam@email.it>  Originally written by Stefano Fabri <bluefuture@nospam@email.it>
6  Copyright 2004, Stefano Fabri  Copyright 2004, Stefano Fabri
7  Copyright 2007 by Raphael Geissert <atomo64@gmail.com>  Copyright 2007, 2008 by Raphael Geissert <atomo64@gmail.com>
8    
9  This program is free software; you can redistribute it and/or modify  This program is free software; you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by  it under the terms of the GNU General Public License as published by
# Line 28  set_time_limit(0); Line 28  set_time_limit(0);
28  ini_set ( "memory_limit", "40M");  ini_set ( "memory_limit", "40M");
29  #print_R($_SERVER);  #print_R($_SERVER);
30  require "dehs.config.inc";  require "dehs.config.inc";
31    require "events.class.php";
32  dir_ctrl($dirs);  dir_ctrl($dirs);
33  if (!function_exists('file_get_contents')) {  if (!function_exists('file_get_contents')) {
34      function file_get_contents($filename) {      function file_get_contents($filename) {
# Line 63  if (in_array("-db_add",$argv))  db_add(( Line 64  if (in_array("-db_add",$argv))  db_add((
64      elseif (in_array("-dl_diffs",$argv) || in_array("-keep_diff",$argv))  dl_diffs($argv[2]);      elseif (in_array("-dl_diffs",$argv) || in_array("-keep_diff",$argv))  dl_diffs($argv[2]);
65      elseif (in_array("-keep_sources",$argv) || in_array("-download_sources",$argv))  download_sources();      elseif (in_array("-keep_sources",$argv) || in_array("-download_sources",$argv))  download_sources();
66      elseif (in_array("-db_popcon",$argv))  db_popcon($argv[2]);      elseif (in_array("-db_popcon",$argv))  db_popcon($argv[2]);
67      elseif (in_array("-dl_popcon",$argv) || in_array("-keep_popcon",$argv))  dl_popcon($argv[2]);      elseif (in_array("-dl_popcon",$argv) || in_array("-keep_popcon",$argv))  dl_popcon();
68      elseif (in_array("-db_upstream",$argv))  db_upstream($argv[2]);      elseif (in_array("-db_upstream",$argv))  db_upstream((!empty($argv[2])?$argv[2]:'%'));
69      elseif (in_array("-update_all",$argv))  update_all();      elseif (in_array("-update_all",$argv))  update_all();
70      elseif (in_array("-update_new",$argv))  update_new();      elseif (in_array("-update_new",$argv))  update_new();
71      elseif (in_array("-update_bogus",$argv))  update_bogus();      elseif (in_array("-update_bogus",$argv))  update_bogus();
# Line 72  if (in_array("-db_add",$argv))  db_add(( Line 73  if (in_array("-db_add",$argv))  db_add((
73      elseif (in_array("-dehsqa_db",$argv))  dehsqa_db();      elseif (in_array("-dehsqa_db",$argv))  dehsqa_db();
74      elseif (in_array("-clear_db",$argv))  clear_db();      elseif (in_array("-clear_db",$argv))  clear_db();
75      elseif (in_array("-db_up_error",$argv))  db_up_error();      elseif (in_array("-db_up_error",$argv))  db_up_error();
76      elseif (in_array("-up_changes",$argv))  up_changes($argv[2], true);      elseif (in_array("-up_changes",$argv))  up_changes((!empty($argv[2])?$argv[2]:'%'), true);
77      elseif (in_array("-watchf",$argv) || in_array("-wwiz",$argv))  watch_wizard((!empty($argv[2])?$argv[2]:''));      elseif (in_array("-watchf",$argv) || in_array("-wwiz",$argv))  watch_wizard((!empty($argv[2])?$argv[2]:'%'));
78      elseif (in_array("-kb_total",$argv))  print "Diff      elseif (in_array("-kb_total",$argv))  print "Diff
79  #stat_up_error();  #stat_up_error();
80  #stat_up_error();to download Kb => " . kb_total($argv[2]) . "\n" ;  #stat_up_error();to download Kb => " . kb_total($argv[2]) . "\n" ;
# Line 132  function dl_diffs($initial = '') { Line 133  function dl_diffs($initial = '') {
133          #if ($res_array['dist']=='non-US') $conn_id = $conn_non_us;          #if ($res_array['dist']=='non-US') $conn_id = $conn_non_us;
134          #else          #else
135          $conn_id = $conn_normal;          $conn_id = $conn_normal;
136          if   ($localfile=download_diffs($conn_id,$res_array[name],$res_array[version],$res_array['dir'],$res_array[md5_diff],$res_array[md5_atsource],$res_array[bytes],$res_array[dist])) {          if   ($localfile=download_diff($conn_id,$res_array[name],$res_array[version],$res_array['dir'],$res_array[md5_diff],$res_array[md5_atsource],$res_array[bytes],$res_array[dist])) {
137              $watch=ext_watch($localfile,$res_array[name],$res_array[version]);              $watch=ext_watch($localfile,$res_array[name],$res_array[version]);
138              unlink($localfile);              unlink($localfile);
139              if ($watch!=NULL) {              if ($watch!=NULL) {
# Line 150  function dl_diffs($initial = '') { Line 151  function dl_diffs($initial = '') {
151      pg_close($db);      pg_close($db);
152      return "Fatto\n";      return "Fatto\n";
153  }  }
154  function download_diffs(&$conn_id,$pkg,$version,$directory,$md5_diff,$md5_atsource,$diff_kb,$dist) {  function download_diff(&$conn_id,$pkg,$version,$directory,$md5_diff,$md5_atsource,$diff_kb,$dist) {
155      global $dirs,$mirrors;      global $dirs,$mirrors;
156      $localfile=$dirs[diffs_dir] . "/$pkg" . "_" . "$version.diff.gz";      $localfile=$dirs[diffs_dir] . "/$pkg" . "_" . "$version.diff.gz";
157      #if ($dist=="non-US") $remotefile="/debian-non-US/$directory/$pkg" . "_" . "$version.diff.gz";      #if ($dist=="non-US") $remotefile="/debian-non-US/$directory/$pkg" . "_" . "$version.diff.gz";
# Line 168  function download_diffs(&$conn_id,$pkg,$ Line 169  function download_diffs(&$conn_id,$pkg,$
169      print "Download Diff.gz of package $pkg => Fallito\n";      print "Download Diff.gz of package $pkg => Fallito\n";
170      return false;      return false;
171  }  }
172  function db_add($initial='', $clear_db = true) {  function db_add($initial='') {
173      global $dirs,$dists,$dbconn;      global $dirs,$dists,$dbconn;
174      check_db();      check_db();
175      download_sources();      download_sources();
# Line 207  function db_add($initial='', $clear_db = Line 208  function db_add($initial='', $clear_db =
208                              $matches[10]=pg_escape_string($matches[10]);                              $matches[10]=pg_escape_string($matches[10]);
209                          }                          }
210                          @pg_exec($db,"INSERT INTO pkgs_atsrc (name,dist) VALUES ('$matches[1]','$dist')") OR die_status("Temp table pkgs_atsrc query error");                          @pg_exec($db,"INSERT INTO pkgs_atsrc (name,dist) VALUES ('$matches[1]','$dist')") OR die_status("Temp table pkgs_atsrc query error");
211                          $rst=@pg_exec($db, "INSERT INTO pkgs (name,version,dversionmangled,maint,dir,md5_atsource,bytes,dist,section,uploaders) VALUES ('$matches[1]','$matches[4]','$matches[4]','$matches[5]','$matches[6]','$matches[7]','$matches[8]','$dist','$section','$matches[10]')") ;                          $rst=@pg_exec($db, "INSERT INTO pkgs (name,version,dversionmangled,maint,dir,md5_atsource,bytes,dist,section,uploaders) VALUES ('$matches[1]','$matches[4]','$matches[4]','$matches[5]','$matches[6]','$matches[7]','$matches[8]','$dist','$section','$matches[10]')");
212                          if (!$rst) {                          if (!$rst) {
213                              $rst=@pg_exec($db, "UPDATE pkgs SET name='$matches[1]',version='$matches[4]',dversionmangled='$matches[4]',maint='$matches[5]',dir='$matches[6]',md5_atsource='$matches[7]',bytes='$matches[8]',dist='$dist',section='$section',uploaders='$matches[10]' WHERE name='$matches[1]' AND dist='$dist'") OR die_status("\nDb adding error =>" . pg_last_error() . "\n");                              $rsql=pg_exec($db, "SELECT pkgs.version FROM pkgs WHERE name='$matches[1]' AND dist='$dist';");
214                                $version = $matches[4]; // just for safety
215                                while ($res_array=pg_fetch_array($rsql)) {
216                                    $version = $res_array['version'];
217                                }
218                                $extra = '';
219                                if ($version != $matches[4]) {
220                                    // only update the dversionmangled field if the versions differ
221                                    $extra = ",dversionmangled='$matches[4]'";
222                                    // and reset wwiz_type
223                                    $extra = ",wwiz_type=NULL";
224                                }
225                                $rst=@pg_exec($db, "UPDATE pkgs SET name='$matches[1]',version='$matches[4]'$extra,maint='$matches[5]',dir='$matches[6]',md5_atsource='$matches[7]',bytes='$matches[8]',dist='$dist',section='$section',uploaders='$matches[10]' WHERE name='$matches[1]' AND dist='$dist'") OR die_status("\nDb adding error =>" . pg_last_error() . "\n");
226                          }                          }
227                          $bin_names=split(",", $matches[2]);                          $bin_names=split(",", $matches[2]);
228                          foreach ($bin_names as $bin_name) {                          foreach ($bin_names as $bin_name) {
# Line 230  function db_add($initial='', $clear_db = Line 243  function db_add($initial='', $clear_db =
243              gzclose($zp) ;              gzclose($zp) ;
244          }          }
245      }      }
     if ($clear_db)  
246      clear_db($db);      clear_db($db);
247      pg_close($db);      pg_close($db);
248  }  }
249  function db_query($pkg,$dist='%') {  function db_query($pkg,$dist='%') {
250      global $dirs,$dbconn;      global $dirs,$dbconn;
251      $db = pg_pconnect($dbconn )  or  die_status(pg_last_error($db));      $db = pg_pconnect($dbconn )  or  die_status(pg_last_error($db));
252      $rsql=pg_exec($db, "SELECT pkgs.* ,mpop_inst FROM (SELECT name,MAX(binpkgs.pop_inst) AS mpop_inst FROM binpkgs GROUP BY name)      $rsql=pg_exec($db, "SELECT * FROM  pkgs
253                                                                          AS binpkgs INNER JOIN pkgs ON pkgs.name=binpkgs.name                                WHERE name='$pkg' AND dist LIKE '$dist';");
                               WHERE pkgs.name='$pkg' AND dist='$dist';");  
254      while ($res_array=pg_fetch_array($rsql)) {      while ($res_array=pg_fetch_array($rsql)) {
255          print "Package=> " . $res_array['name'] . "\n";          print "Package=> " . $res_array['name'] . "\n";
256          print "Version => " . $res_array['version'] . "\n";          print "Version => " . $res_array['version'] . "\n";
# Line 249  function db_query($pkg,$dist='%') { Line 260  function db_query($pkg,$dist='%') {
260          print "Distribution => " . $res_array['dist'] . "\n";          print "Distribution => " . $res_array['dist'] . "\n";
261          print "Section => " . $res_array['section'] . "\n";          print "Section => " . $res_array['section'] . "\n";
262          print "KBytes => " . number_format ( $res_array['bytes']/1024, 2, ",",".") . "\n";          print "KBytes => " . number_format ( $res_array['bytes']/1024, 2, ",",".") . "\n";
263          print "Pop Inst=>" . $res_array['mpop_inst'] . "\n";          print "Pop Inst=>" . $res_array['pop_inst'] . "\n";
264          if ($res_array['watch']) {          if ($res_array['watch']) {
265              $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['watch']);              $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['watch']);
266              print "Version Upstream => " . $uscan_res[0] . "\n";              print "Version Upstream => " . $uscan_res['uversion'] . "\n";
267              print "Watch => " . trim($res_array['watch'])."\n";              print "Watch => " . trim($res_array['watch'])."\n";
268              print "Watch Warnings => " . $uscan_res[1];              print "Watch Warnings => " . $uscan_res['warnings'];
269          }          }
270          else print "Watch => Not present" . "\n";          else print "Watch => Not present" . "\n";
271          if ($res_array['wwiz_type']) {          if ($res_array['wwiz_type']) {
272              $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['wwiz']);              $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['wwiz']);
273              print "WWiz Upstream => " . $uscan_res[0] . "\n";              print "WWiz Upstream => " . $uscan_res['uversion'] . "\n";
274              print "WWiz => " . $res_array['wwiz']."\n";              print "WWiz => " . $res_array['wwiz']."\n";
275              print "WWiz Warings => " . $uscan_res[1];              print "WWiz Warings => " . $uscan_res['warnings'];
276          }          }
277          print "\n";          print "\n";
278      }      }
# Line 310  function md5_source($section,$dist) { Line 321  function md5_source($section,$dist) {
321      # 183dea9ca3c2e35ffd6cf5eee9501c21          2941637 main/binary-i386/Packages.gz      # 183dea9ca3c2e35ffd6cf5eee9501c21          2941637 main/binary-i386/Packages.gz
322  }  }
323    
324  function vers_conv($debvers) {  function vers_conv($debvers, $extendedConv = true) {
325      // Strip off the epoch      // Strip off the epoch
326      $pos = strpos($debvers, ':');      $pos = strpos($debvers, ':');
327      if ( $pos !== FALSE) {      if ( $pos !== FALSE) {
# Line 323  function vers_conv($debvers) { Line 334  function vers_conv($debvers) {
334          $debvers = substr($debvers, 0, $pos);          $debvers = substr($debvers, 0, $pos);
335      }      }
336    
337      // strip off repacking indicators      if ($extendedConv) {
338      $debvers = preg_replace("/[-.+~]?(ds|dfsg|debian)(.*)/i", "", $debvers);          // strip off repacking indicators
339            $debvers = preg_replace("/[-.+~]?(ds|dfsg|debian)(.*)/i", "", $debvers);
340        }
341    
342      return $debvers;      return $debvers;
343  }  }
344  function check_db() {  function check_db() {
345      global $dirs,$dbconn;      global $dirs,$dbconn;
346      $db = pg_pconnect($dbconn) or die_status(1/*pg_last_notice($db)*/);      $db = pg_pconnect($dbconn) or die_status(1/*pg_last_notice($db)*/);
347      if (!pg_table_exists($db,"pkgs")){      if (!pg_table_exists($db, "pkgs")) {
348          pg_exec($db, "CREATE TABLE pkgs (id serial PRIMARY KEY,name text,version text, dversionmangled text,maint text, uploaders text, dir text,watch text,md5_diff text,md5_atsource text,bytes numeric,dist text,section text,up_version text,up_changes text, up_url text,watch_warn text,updated bool, keep_changes bool, wwiz text,wwiz_version text, wwiz_type text)") or die_status('Error creating table pkgs\n');          pg_exec($db, "CREATE TABLE pkgs (id serial PRIMARY KEY,name text,version text, dversionmangled text,maint text, uploaders text, dir text,watch text,md5_diff text,md5_atsource text,bytes numeric,dist text,section text,up_version text,up_changes text, up_url text,watch_warn text,updated bool, keep_changes bool, wwiz text,wwiz_version text, wwiz_type text, lastcheck timestamp, homepage text, vcs text,  vcs_type text, vcs_browser text, lastupvsdebsync timestamp, pop_inst numeric,pop_vote numeric)") or die_status('Error creating table pkgs\n');
349          pg_exec($db, "CREATE UNIQUE INDEX idxname on pkgs (name,dist)") or die_status('Errore creating index - ' . pg_last_error($db));          pg_exec($db, "CREATE UNIQUE INDEX idxname on pkgs (name,dist)") or die_status('Errore creating index - ' . pg_last_error($db));
350            pg_exec($db, "CREATE INDEX checkx on pkgs (lastcheck)") or die_status('Errore creating index - ' . pg_last_error($db));
351            pg_exec($db, "CREATE INDEX maintx on pkgs (maint)") or die_status('Errore creating index - ' . pg_last_error($db));
352          $sw=true;          $sw=true;
353      }      }
354      if (!pg_table_exists($db,"binpkgs")){      if (!pg_table_exists($db, "binpkgs")) {
355          pg_exec($db, "CREATE TABLE binpkgs (id serial PRIMARY KEY, name text,bin_name text,dist text, pop_inst numeric,pop_vote numeric, up_error numeric,avg_error_date numeric)") or die_status('Error creating table binpkgs\n');          pg_exec($db, "CREATE TABLE binpkgs (id serial PRIMARY KEY, name text,bin_name text,dist text, pop_inst numeric,pop_vote numeric, up_error numeric,avg_error_date numeric)") or die_status('Error creating table binpkgs\n');
356          pg_exec($db, "CREATE UNIQUE INDEX idxbin on binpkgs (name,bin_name,dist)") or die_status('Errore creating index - ' . pg_last_error($db));          pg_exec($db, "CREATE UNIQUE INDEX idxbin on binpkgs (name,bin_name,dist)") or die_status('Errore creating index - ' . pg_last_error($db));
357          $sw=true;          $sw=true;
358      }      }
359        if (!pg_table_exists($db, "events")) {
360            pg_exec($db, "CREATE TABLE events (id serial PRIMARY KEY, name text,type text, dist text, stamp timestamp, content text)") or die_status('Error creating table events\n');
361            pg_exec($db, "CREATE UNIQUE INDEX idxevents on events (name,dist,content)") or die_status('Error creating index - ' . pg_last_error($db));
362            pg_exec($db, "CREATE INDEX pkgxeventtype on events (name,type,dist)") or die_status('Error creating index - ' . pg_last_error($db));
363            $sw=true;
364        }
365        if (!pg_table_exists($db, "stamps")) {
366            pg_exec($db, "CREATE TABLE stamps (type text PRIMARY KEY, stamp timestamp, pid text)") or die_status('Error creating table stamps\n');
367            $sw=true;
368        }
369      #if (!pg_table_exists($db,"upstream")){      #if (!pg_table_exists($db,"upstream")){
370      #  pg_exec($db, "CREATE TABLE upstream (name text,dist text,up_version text,watch_warn text,updated bool)") or die_status('Errore nel creare la tabella');      #  pg_exec($db, "CREATE TABLE upstream (name text,dist text,up_version text,watch_warn text,updated bool)") or die_status('Errore nel creare la tabella');
371      #  pg_exec($db, "CREATE UNIQUE INDEX idxupstrm on upstream (name,dist)") or die_status('Errore nel creare gli indici ' . pg_last_error($db));      #  pg_exec($db, "CREATE UNIQUE INDEX idxupstrm on upstream (name,dist)") or die_status('Errore nel creare gli indici ' . pg_last_error($db));
# Line 384  function clear_db(&$db) { Line 410  function clear_db(&$db) {
410      $sql1=      "Delete from binpkgs where id NOT IN      $sql1=      "Delete from binpkgs where id NOT IN
411                          (select id FROM binpkgs INNER JOIN bin_atsrc USING (name,bin_name,dist))" ;                          (select id FROM binpkgs INNER JOIN bin_atsrc USING (name,bin_name,dist))" ;
412      $sql2=      "Delete from pkgs where id NOT IN (select id FROM pkgs INNER JOIN pkgs_atsrc USING (name,dist))" ;      $sql2=      "Delete from pkgs where id NOT IN (select id FROM pkgs INNER JOIN pkgs_atsrc USING (name,dist))" ;
413      $sql3=      "UPDATE pkgs SET wwiz=NULL, wwiz_type=NULL, wwiz_version=NULL WHERE watch IS NOT NULL or watch!=''" ;      $sql3=      "UPDATE pkgs SET wwiz=NULL, wwiz_type=NULL, wwiz_version=NULL WHERE watch IS NOT NULL and watch!=''" ;
414      $sql4=      "UPDATE pkgs SET up_changes=NULL WHERE wwiz_version=up_version OR up_version=version" ;      $sql4=      "UPDATE pkgs SET up_changes=NULL WHERE updated='1'";
415      if(pg_exec($db,$sql1) AND pg_exec($db,$sql2) AND pg_exec($db,$sql3) AND pg_exec($db,$sql4)) print "Db clear complete\n";      if(pg_exec($db,$sql1) && pg_exec($db,$sql2) && pg_exec($db,$sql3) && pg_exec($db,$sql4)) {
416            print "Db clear complete\n";
417        }
418  }  }
419  function db_popcon($initial='') {  function db_popcon($initial='') {
420      global $dirs,$dbconn;      global $dirs,$dbconn;
421      $db = pg_pconnect($dbconn)  or  die_status(pg_last_error($db));      $db = pg_pconnect($dbconn)  or  die_status(pg_last_error($db));
422      $filename=$dirs[popcon_dir] . "/all-popcon-results.txt.gz";      $filename=$dirs[popcon_dir] . "/popcon.db";
423      $regexp="/Package:\s($initial\S*)\s+(\d+)\s+(\d+)/iS";      $popcon_db = dba_open("$filename", 'r-', 'db4');
424      $zp = gzopen($filename, "r") or die_status("Could not open $filename");  
425      $tin=time();      $rsql = pg_exec($dbconn, "SELECT name FROM pkgs");
426      if(filesize($filename)>20) {  
427          #pg_exec($db, "BEGIN TRANSACTION") OR die_status("Impossibile iniziare la transazione");      while ($res_array=pg_fetch_array($rsql)) {
428          while (!gzeof($zp)) {          $package = $res_array['name'];
429              $line = gzgets ($zp,4096) ;  
430              if (preg_match($regexp,$line,$matches)) {          if (!dba_exists('p:' .  $package)) {
431                  #print "\rName => $matches[1] Install => $matches[2] Vote => $matches[3]";              continue;
                 @pg_exec($db, "UPDATE binpkgs SET pop_inst='$matches[2]',pop_vote='$matches[3]' WHERE bin_name='$matches[1]'");  
                 $prcessed++;  
                 /*$elapsed_time=time()-$tin;  
                 if (($elapsed_time % 20)==0 AND $updtime!=$elapsed_time) {  
                     $updtime=$elapsed_time;  
                     $wprocessed=$processed-$wprocessed;  
                     $avg_time=$wprocessed/20;  
                     $wprocessed=$processed;  
                     $countdown=(34701- $processed)/$avg_time;  
                     $last_time=time();  
                 }  
                 print "\rProcessing Popcon: " .  date("i:s",$countdown=$countdown-(time()-$last_time))   . " =>" . (34701-$processed) . " Media $avg_time";  
                 $last_time=time();*/  
             }  
432          }          }
433          #pg_exec($db, "COMMIT") OR die_status("Impossibile commsionare la transazione");  
434            $inst = dba_fetch("pi:$package", $popcon_db);
435            $vote = dba_fetch("pv:$package", $popcon_db);
436    
437            @pg_exec($db, "UPDATE pkgs SET pop_inst='$inst',pop_vote='$vote' WHERE name='$package'");
438      }      }
439    
440        dba_close($popcon_db);
441      @pg_close($db);      @pg_close($db);
442  }  }
443  function db_popcon_test() {  function dl_popcon() {
444      global $dirs,$dbconn;      global $dirs,$dbconn;
445      $db = pg_pconnect($dbconn)  or  die_status(pg_last_error($db));  
446      $filename=$dirs[popcon_dir] . "/all-popcon-results.txt.gz";      $localtempfile=$dirs[popcon_dir] . "/popcon.db.new";
447      $regexp="/Package:\s(\S+)\s+(\d+)\s+(\d+)/";      $localfile=$dirs[popcon_dir] . "/popcon.db";
448      $zp = gzfile($filename, "r") or die_status("Could not open $filename");      $remotefile='http://qa.debian.org/data/popcon/popcon.db';
449      if(filesize($filename)>20) {  
450          foreach ($zp as $line) {      $return = 0;
451              if (preg_match($regexp,$line,$matches)) {      $output = null;
452                  # print "Name => $matches[1] \n Install => $matches[2] \n Vote => $matches[3]\n";      exec('/usr/bin/wget -qNc -O'.escapeshellarg($localtempfile).' ' . escapeshellarg($remotefile), $output, $return);
453                  print "\r" . $i++;  
454                  #pg_unbuffered_query($db, "UPDATE binpkgs SET pop_inst='$matches[2]',pop_vote='$matches[3]' WHERE bin_name='$matches[1]'");      if ($return != 0) {
455              }          echo __FUNCTION__ . "wget exited with status $return!\n";
456          }          return false;
457      }      }
458      @pg_close($db);  
459        return copy($localtempfile, $localfile);
460  }  }
461  function dl_popcon() {  function is_updated ($up_vers,$debian_vers, $dversionAsIs = false) {
462      global $dirs,$dbconn;      if ($up_vers=='') return 1;
463      $localfile=$dirs[popcon_dir] . "/all-popcon-results.txt.gz";  
464      $remotefile="http://popcon.debian.org/all-popcon-results.txt.gz";      $extendedConv = true;
465      @file_put_contents($localfile,file_get_contents($remotefile),'w') or die_status("Errore nello scaricare il file popcon\n");  
466  }      if ($up_vers === $debian_vers) $dversionAsIs = true;
467  function is_updated ($up_vers,$debian_vers) {  
468      if ($up_vers=='') return 0;      if (strpos(strtolower($up_vers), 'dfsg') !== false && strpos(strtolower($debian_vers), 'dfsg') !== false) {
469      passthru("dpkg --compare-versions '".escapeshellarg($up_vers)."' le '" . escapeshellarg(vers_conv($debian_vers)) . "'",$great);          $extendedConv = false;
470      if ($great!=0) return 1;      }
471      else return 0;  
472        passthru("dpkg --compare-versions ".escapeshellarg($up_vers)." le " . escapeshellarg($dversionAsIs?$debian_vers:vers_conv($debian_vers, $extendedConv)),$great);
473    
474        return (int)!($great);
475  }  }
476  function db_upstream($initial='%') {  function db_upstream($initial='%', $checkStamps = false, $limit = null) {
477      global $dirs,$dbconn;      global $dirs, $dbconn, $minimumAge;
478    
479      check_db();      check_db();
480      $db = pg_pconnect($dbconn) ;      $db = pg_pconnect($dbconn) ;
481      $rsql=pg_exec($db, "SELECT id, pkgs.name,pkgs.dist,up_version,version,watch FROM pkgs WHERE watch is not null AND name LIKE '$initial%' ORDER BY name DESC");      events::DB($db);
482    
483        $postWHERE = '';
484        if ($checkStamps) {
485            $postWHERE = "AND (lastcheck<='".sqldate(time() - ($minimumAge*24*3600))."' OR lastcheck IS NULL)";
486        }
487    
488        $postORDER = '';
489        if ($limit !== null && is_int($limit)) {
490            $postORDER = 'LIMIT ' . $limit;
491        }
492    
493        $rsql=pg_exec($db, "SELECT id, name,dist,up_version,version,watch,lastupvsdebsync FROM pkgs WHERE watch is not null AND name LIKE '$initial' $postWHERE ORDER BY lastcheck DESC $postORDER");
494      $tot=pg_numrows($rsql);      $tot=pg_numrows($rsql);
495    
496      while ($res_array=pg_fetch_array($rsql)) {      while ($res_array=pg_fetch_array($rsql)) {
497    
498          $uscan_res=uscan_foo($res_array['name'],$res_array['version'],$res_array['watch']);          $uscan_res=uscan_foo($res_array['name'],$res_array['version'],$res_array['watch']);
499          #print $uscan_res[0] . "\n Name => $res_array[name]\n";  
500          $version=$res_array[version];          #print $uscan_res['uversion'] . "\n Name => $res_array[name]\n";
501          $dversionmangled=$res_array['dversionmangled'];          $version         = $res_array['version'];
502          print "\rVersion=>" . $uscan_res[3];          $dversionmangled = $res_array['version'];
503          if ($uscan_res[3]!=null) $version=$uscan_res[3];          $lastupvsdebsync = $res_array['lastupvsdebsync'];
504          if ($uscan_res[5]!=null) $dversionmangled=$uscan_res[5];          $mangle = true;
505          $updated=$uscan_res[4];  
506          if ($updated) {          print "\rVersion=>" . $uscan_res['dversion'];
507              $updated=is_updated($uscan_res[0],$dversionmangled);          if ($uscan_res['dversion']!=null) $version=$uscan_res['dversion'];
508            if ($uscan_res['dversionmangled']!=null && $uscan_res['dversionmangled'] != vers_conv($res_array['version'])) {
509                $dversionmangled=$uscan_res['dversionmangled'];
510                $mangle = false;
511            }
512    
513            $up_url=iconv("ISO-8859-1","UTF-8",$uscan_res['uurl']);
514            $up_version=iconv("ISO-8859-1","UTF-8",$uscan_res['uversion']);
515    
516            $updated = $uscan_res['updated'];
517    
518            /*if (!$updated)*/ {
519                $updated=is_updated($uscan_res['uversion'], $dversionmangled, !$mangle);
520          }          }
521    
522          if (!$updated) {          if (!$updated) {
523              events::newVersion($res_array['name'], $res_array['version'], $uscan_res[0], $res_array['dist']);              events::newVersion($res_array['name'], $res_array['version'], $uscan_res['uversion'], $res_array['dist'], $up_url);
524            } else {
525                $lastupvsdebsync = sqldate();
526          }          }
527    
528          if ($uscan_res[0]!=$res_array[up_version]) ($keep_changes=1);          if ($lastupvsdebsync === null) {
529                $lastupvsdebsync = sqldate(0);
530            }
531    
532            if ($uscan_res['uversion']!=$res_array[up_version]) ($keep_changes=1);
533          else $keep_changes=0;          else $keep_changes=0;
534          $up_url=iconv("ISO-8859-1","UTF-8",$uscan_res[2]);  
         $up_version=iconv("ISO-8859-1","UTF-8",$uscan_res[0]);  
535          $watch_warn='';          $watch_warn='';
536          if($uscan_res[1] != null) {          if($uscan_res['warnings'] != null) {
537              $watch_warn=pg_escape_string(iconv("ISO-8859-1","UTF-8",$uscan_res[1]));              $watch_warn=pg_escape_string(iconv("ISO-8859-1","UTF-8", $uscan_res['warnings']));
538          }          }
539          pg_exec($db, "UPDATE pkgs SET up_version='" . pg_escape_string($up_version) . "', dversionmangled='".pg_escape_string($dversionmangled)."',up_url='" . pg_escape_string($up_url) . "', watch_warn='" . $watch_warn . "',keep_changes='$keep_changes', wwiz_version=NULL, wwiz_type=NULL, wwiz=NULL, updated='$updated' WHERE id=$res_array[id]") or die_status("Error in update pkgs upstream");  
540          #print "\rUpdated " . $res_array['name'] .  " => $updated Up Version => ". $uscan_res[0];          pg_exec($db, "UPDATE pkgs SET up_version='" . pg_escape_string($up_version) . "', dversionmangled='".pg_escape_string($dversionmangled)."',up_url='" . pg_escape_string($up_url) . "', watch_warn='" . $watch_warn . "',keep_changes='$keep_changes', wwiz_version=NULL, wwiz_type=NULL, wwiz=NULL, updated='$updated', lastcheck=now(), lastupvsdebsync='$lastupvsdebsync'  WHERE id=$res_array[id]") or die_status("Error in update pkgs upstream");
541          print "\tUpstream left => " . $tot --;          #print "\rUpdated " . $res_array['name'] .  " => $updated Up Version => ". $uscan_res['uversion'];
542            print "\t Upstream left => " . $tot --;
543          #                               }          #                               }
544          #                                                       else print "Added ". $res_array['name'] ."\n";          #                                                       else print "Added ". $res_array['name'] ."\n";
545          #       if ($great==0) {          #       if ($great==0) {
546    
547          #               print "Package=> " . $res_array['name'] . "\n";          #               print "Package=> " . $res_array['name'] . "\n";
548          #               print "Version => " . $res_array['version'] . "\n";          #               print "Version => " . $res_array['version'] . "\n";
549          #               print "Upstream Ver=> " . $uscan_res[0] . "\n";          #               print "Upstream Ver=> " . $uscan_res['uversion'] . "\n";
550          #print "Watch warings=> " . $uscan_res[1]  . "\n";          #print "Watch warings=> " . $uscan_res['warnings']  . "\n";
551          #       }          #       }
552      }      }
553      print "\n";      print "\n";
# Line 537  function up_changes($src_name='%', $forc Line 594  function up_changes($src_name='%', $forc
594      global $dbconn, $fetchUpstreamChanges;      global $dbconn, $fetchUpstreamChanges;
595    
596      if (!$fetchUpstreamChanges && !$force) {      if (!$fetchUpstreamChanges && !$force) {
597          print "\nSkipping download of upstream sources to grab changelogs\n";          //print "\nSkipping download of upstream sources to grab changelogs\n";
598          return;          return;
599      }      }
600    
601      $changes_files=array("CHANGES","NEWS","Changelog","ChangeLog","changelog");      $changes_files=array("CHANGES","NEWS","Changelog","ChangeLog","changelog");
602      $db = pg_pconnect($dbconn) ;      $db = pg_pconnect($dbconn) ;
603      $rsql=pg_exec($db, "SELECT id,up_url FROM pkgs WHERE up_url!=''  AND keep_changes='t' AND name LIKE '$src_name%'");      $rsql=pg_exec($db, "SELECT id,up_url FROM pkgs WHERE up_url!=''  AND keep_changes='t' AND name LIKE '$src_name'");
604      $tot=pg_numrows($rsql);      $tot=pg_numrows($rsql);
605      while ($res_array=pg_fetch_array($rsql)) {      while ($res_array=pg_fetch_array($rsql)) {
606          $localfile=tempnam("/tmp/", "dehs-" . $res_array[id] . ".tar.gz");          $localfile=tempnam("/tmp/", "dehs-" . $res_array[id] . ".tar.gz");
# Line 608  function uscan_foo($name,$version,$watch Line 665  function uscan_foo($name,$version,$watch
665      $warnings=$vals[$index['WARNINGS'][0]][value];      $warnings=$vals[$index['WARNINGS'][0]][value];
666      $updated=$vals[$index['STATUS'][0]][value];      $updated=$vals[$index['STATUS'][0]][value];
667    
668      if ($updated=="up to date")  $updated=0;      if ($updated=="up to date")  $updated=1;
669      else $updated=1;      else $updated=0;
670    
671      if ($upstream=='') $upstream=null;      if ($upstream=='') $upstream=null;
672      if ($up_url=='')  $up_url=null;      if ($up_url=='')  $up_url=null;
# Line 617  function uscan_foo($name,$version,$watch Line 674  function uscan_foo($name,$version,$watch
674      if ($warnings=='') $warnings=null;      if ($warnings=='') $warnings=null;
675      if ($deb_mangled_vers=='') $deb_mangled_vers=null;      if ($deb_mangled_vers=='') $deb_mangled_vers=null;
676    
677      return array($upstream, $warnings, $up_url, $deb_vers, $updated, $deb_mangled_vers);      $ret = array();
678        $ret['uversion']        = $upstream;
679        $ret['warnings']        = $warnings;
680        $ret['uurl']            = $up_url;
681        $ret['dversion']        = $deb_vers;
682        $ret['dversionmangled'] = $deb_mangled_vers;
683        $ret['updated']         = $updated;
684    
685        return $ret;
686  }  }
687  function db_up_error() {  function db_up_error() {
688      global $dbconn;      global $dbconn;
# Line 651  function db_up_error() { Line 716  function db_up_error() {
716      }      }
717      pg_close($db);      pg_close($db);
718  }  }
719  function watch_wizard($src_name='%'){  function watch_wizard($src_name='%', $checkStamps = false, $limit = null){
720      global $dirs,$dbconn,$sfIgnore,$watchFileExts,$watchFileDversionMangle,$watchFormat;      global $dirs,$dbconn,$sfIgnore,$watchFileExts,$watchFileDversionMangle,$watchFormat,$minimumAge;
721      $db = pg_pconnect($dbconn) or die_status ("Db error");      $db = pg_pconnect($dbconn) or die_status ("Db error");
722      $checked=$errors=$notfound=$verok=$notmatch=0;      $checked=$errors=$notfound=$verok=$notmatch=0;
723    
# Line 668  function watch_wizard($src_name='%'){ Line 733  function watch_wizard($src_name='%'){
733    
734      if ($exts != '') {      if ($exts != '') {
735          $opts[] = 'uversionmangle=s/\.(' . substr($exts, 0, -1) . ')$//i';          $opts[] = 'uversionmangle=s/\.(' . substr($exts, 0, -1) . ')$//i';
736            $exts = '(' . $exts . ')';
737      }      }
738    
739      foreach ($watchFileDversionMangle as $dvmangler) {      foreach ($watchFileDversionMangle as $dvmangler) {
# Line 679  function watch_wizard($src_name='%'){ Line 745  function watch_wizard($src_name='%'){
745          $opts[] = 'dversionmangle=s/[-.+~]?(' . substr($dvmanglers, 0, -1) . ')(.*)$//i';          $opts[] = 'dversionmangle=s/[-.+~]?(' . substr($dvmanglers, 0, -1) . ')(.*)$//i';
746      }      }
747    
748        $opts[] = 'pasv';
749    
750      if (is_array($opts)) {      if (is_array($opts)) {
751          $_opts = '';          $_opts = '';
752          foreach ($opts as $opt) {          foreach ($opts as $opt) {
# Line 690  function watch_wizard($src_name='%'){ Line 758  function watch_wizard($src_name='%'){
758          }          }
759      }      }
760    
761      $sqlstring="SELECT mpop_inst,name,pkgs.version,pkgs.dversionmangled,pkgs.section,pkgs.dist,tot_up_error, tot_avg_error_date, wwiz_version FROM pkgs INNER JOIN      $postWHERE = '';
762          (Select max(pop_inst) as mpop_inst,SUM(up_error) as tot_up_error,AVG(avg_error_date) as tot_avg_error_date,name,dist FROM binpkgs GROUP BY name,dist HAVING max(pop_inst) IS NOT NULL) as binpkgs using(name,dist)      if ($checkStamps) {
763          WHERE (watch IS NULL OR watch='') AND name LIKE '$src_name%' ORDER BY mpop_inst DESC";          $postWHERE = "AND (lastcheck<='".sqldate(time() - ($minimumAge*24*3600))."' OR lastcheck IS NULL)"
764                       . " AND wwiz_type!='no_cright' AND wwiz_type!='notmatch'";
765        }
766    
767        $postORDER = '';
768        if ($limit !== null && is_int($limit)) {
769            $postORDER = 'LIMIT ' . $limit;
770        }
771    
772        $sqlstring="SELECT name,version,dversionmangled,section,dist, wwiz_version FROM pkgs
773            WHERE (watch IS NULL OR watch='') AND name LIKE '$src_name' $postWHERE ORDER BY lastcheck DESC $postORDER";
774      $rsql=pg_exec($db, $sqlstring);      $rsql=pg_exec($db, $sqlstring);
775    
776      while ($res_array=pg_fetch_array($rsql)) {      while ($res_array=pg_fetch_array($rsql)) {
# Line 775  function watch_wizard($src_name='%'){ Line 853  function watch_wizard($src_name='%'){
853              if (empty($generatedWatches)) {              if (empty($generatedWatches)) {
854                  $notmatch++;                  $notmatch++;
855                  $contents=iconv("ISO-8859-1","UTF-8",$contents);                  $contents=iconv("ISO-8859-1","UTF-8",$contents);
856                  pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($contents) . "', wwiz_type='notmatch', up_url='', up_changes='',keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");                  pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($contents) . "', wwiz_type='notmatch', up_url='', up_changes='', lastcheck=now(), keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");
857    
858              } else {              } else {
859    
# Line 789  function watch_wizard($src_name='%'){ Line 867  function watch_wizard($src_name='%'){
867    
868                      $tWatch = array_merge($defs, $tWatch);                      $tWatch = array_merge($defs, $tWatch);
869    
   
870                      $watch = sprintf($watchFormat, $tWatch['url'], $tWatch['space'], $tWatch['name'], $exts, $opts);                      $watch = sprintf($watchFormat, $tWatch['url'], $tWatch['space'], $tWatch['name'], $exts, $opts);
871    
872                      $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$watch);                      $uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$watch);
873    
874                      if ($uscan_res[0]) {                      if ($uscan_res['uversion'] && levenshtein($uscan_res['uversion'], $res_array['version']) < strlen($res_array['version'])) {
875                          break;                          break;
876                      }                      }
877                  }                  }
878    
879                  if ($uscan_res[1] && !$uscan_res[0]) {                  if ($uscan_res['warnings'] && !$uscan_res['uversion']) {
880                      pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($uscan_res[1]) . "', wwiz_type='error', up_url='', up_changes='', keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");                      pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($uscan_res['warnings']) . "', wwiz_type='error', up_url='', up_changes='', lastcheck=now(), keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");
881                      $errors++;                      $errors++;
882                  } else {                  } else {
883                      $verok++;                      $verok++;
884                      if ($uscan_res[0] != $res_array['wwiz_version']) {                      if ($uscan_res['uversion'] != $res_array['wwiz_version']) {
885                          $keep_changes = 1;                          $keep_changes = 1;
886                      } else {                      } else {
887                          $keep_changes = 0;                          $keep_changes = 0;
888                      }                      }
889    
890                      $dversionmangled = $res_array[version];                      $dversionmangled = $res_array[version];
891                      if ($uscan_res[5]!=null) $dversionmangled=$uscan_res[5];                      if ($uscan_res['dversionmangled']!=null && $uscan_res['dversionmangled'] != vers_conv($res_array['version'])) $dversionmangled=$uscan_res['dversionmangled'];
892    
893                      $updated=$uscan_res[4];                      $updated = $uscan_res['updated'];
894                      if ($updated) {                      /*if ($updated)*/ {
895                          $updated=is_updated($uscan_res[0],$dversionmangled);                          $updated = is_updated($uscan_res['uversion'], $dversionmangled, $dversionmangled != $uscan_res['dversionmangled']);
896                      }                      }
897    
898                      if (!$updated) {                      /*if (!$updated) {
899                          events::newVersion($res_array['name'], $res_array['version'], $uscan_res[0], $res_array['dist']);                          events::newVersion($res_array['name'], $res_array['version'], $uscan_res['uversion'], $res_array['dist']);
900                      }                      }*/
901    
902                      pg_exec($db, "UPDATE pkgs SET wwiz='" . pg_escape_string($watch) ."', wwiz_type='watch', wwiz_version='" . pg_escape_string($uscan_res[0]) . "',dversionmangled='".pg_escape_string($dversionmangled)."', up_url='" . pg_escape_string($uscan_res[2]) . "', keep_changes='$keep_changes', updated='$updated' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");                      pg_exec($db, "UPDATE pkgs SET wwiz='" . pg_escape_string($watch) ."', wwiz_type='watch', wwiz_version='" . pg_escape_string($uscan_res['uversion']) . "',dversionmangled='".pg_escape_string($dversionmangled)."', up_url='" . pg_escape_string($uscan_res['uurl']) . "', keep_changes='$keep_changes', updated='$updated', lastcheck=now() where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'");
903                  }                  }
904              }              }
905          } else {          } else {
# Line 851  function dehsqa_db () { Line 928  function dehsqa_db () {
928      foreach ($dists as $dist) {      foreach ($dists as $dist) {
929          $id=dbqa_conn($dir1 . "dehs_qa_" . $dist . ".db",'n');          $id=dbqa_conn($dir1 . "dehs_qa_" . $dist . ".db",'n');
930          $db = pg_pconnect($dbconn) or die_status ("Db error");          $db = pg_pconnect($dbconn) or die_status ("Db error");
931          $sql="SELECT name, id, up_version, wwiz_version, watch, wwiz_type, watch_warn, version, dversionmangled FROM pkgs WHERE dist='$dist'";          $sql="SELECT name, id, up_version, wwiz_version, watch, wwiz_type, watch_warn, version, dversionmangled, updated FROM pkgs WHERE dist='$dist'";
932          $rsql=pg_exec($db, $sql);          $rsql=pg_exec($db, $sql);
933          while($res_array=pg_fetch_array($rsql)) {          while($res_array=pg_fetch_array($rsql)) {
934    
# Line 862  function dehsqa_db () { Line 939  function dehsqa_db () {
939              if ($res_array['wwiz_type']=="watch") $wwiz=$res_array['wwiz_version'];              if ($res_array['wwiz_type']=="watch") $wwiz=$res_array['wwiz_version'];
940              else $wwiz=$res_array[wwiz_type];              else $wwiz=$res_array[wwiz_type];
941    
942                $updated = $res_array['updated']? 'yes' : 'no';
943    
944              $xml="<data><id>$res_array[id]</id>" .              $xml="<data><id>$res_array[id]</id>" .
945              "<up_version>$version</up_version>" .              "<up_version>$version</up_version>" .
946              "<dversion>$res_array[version]</dversion>" .              "<dversion>$res_array[version]</dversion>" .
947              "<dversionmangled>$res_array[dversionmangled]</dversionmangled>" .              "<dversionmangled>$res_array[dversionmangled]</dversionmangled>" .
948                "<updated>$updated</updated>" .
949              "<wwiz>$wwiz</wwiz>" .              "<wwiz>$wwiz</wwiz>" .
950              "</data>";              "</data>";
951              $value=addslashes($xml);              $value=addslashes($xml);
# Line 884  function md5_of_file($inFile) { Line 964  function md5_of_file($inFile) {
964      }      }
965  }  }
966  function update_all() {  function update_all() {
967      global $email;      global $email, $timeStamp_basedCheck;
968      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);
969        echo __FUNCTION__ . ' started the ' . $intime . "\n";
970      db_add();      db_add();
     dl_popcon();  
     db_popcon();  
971      dl_diffs();      dl_diffs();
972      db_up_error();      db_up_error();
973      db_upstream();      db_upstream('%', in_array('all', $timeStamp_basedCheck));
974      watch_wizard();      watch_wizard('%', in_array('all', $timeStamp_basedCheck));
975      up_changes();      up_changes();
976      dehsqa_db();      dehsqa_db();
977      $endtime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);      $endtime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);
# Line 905  function update_all() { Line 984  function update_all() {
984  function update_new() {  function update_new() {
985      global $email_all;      global $email_all;
986      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);
987      db_add('',false);      echo __FUNCTION__ . ' started the ' . $intime . "\n";
988      dl_popcon();      db_add();
     db_popcon();  
989    
990      global $dbconn;      global $dbconn;
991      check_db();      check_db();
992      $db = pg_pconnect($dbconn);      $db = pg_pconnect($dbconn);
993      $sql="SELECT name FROM pkgs WHERE (md5_diff!=md5_atsource or md5_diff is null)";      $sql="SELECT name FROM pkgs WHERE (md5_diff!=md5_atsource or md5_diff is null) or (lastcheck is null and watch is not null)";
994      $rsql=pg_exec($db, $sql);      $rsql=pg_exec($db, $sql);
995      $res_array=pg_fetch_all($rsql);      $res_array=pg_fetch_all($rsql);
996      pg_close($db);      pg_close($db);
# Line 937  function update_new() { Line 1015  function update_new() {
1015  function update_bogus() {  function update_bogus() {
1016      global $email_all,$dbconn;      global $email_all,$dbconn;
1017      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);      $intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2);
1018        echo __FUNCTION__ . ' started the ' . $intime . "\n";
1019      check_db();      check_db();
1020      $db = pg_pconnect($dbconn);      $db = pg_pconnect($dbconn);
1021      $sql="SELECT name FROM pkgs WHERE up_version='' AND watch!=''";      $sql="SELECT name FROM pkgs WHERE up_version='' AND watch!=''";
# Line 970  function die_status($msg = '', $status = Line 1049  function die_status($msg = '', $status =
1049      } else if (is_int($msg) && $status == 1 /* default */) {      } else if (is_int($msg) && $status == 1 /* default */) {
1050          die($msg);          die($msg);
1051      } else {      } else {
1052          echo $msg;          fwrite(STDERR, $msg);
1053          die($status);          die($status);
1054      }      }
1055  }  }
1056    
1057  class events  function sqldate($timestamp=null) {
1058  {          if ($timestamp===null) $timestamp=time();
1059      function newVersion($sourcePackage, $currentVersion, $newVersion, $distribution, $downloadLink = '')          return gmdate("Y-m-d H:i:s", $timestamp);
     {  
         global $base, $sendNotifications;  
   
         if (!$sendNotifications) {  
             return null;  
         }  
   
         $tpl = file_get_contents($base . '/tpls/new_version.mail.tpl');  
   
         $search  = array();  
         $replace = array();  
   
         $search [] = '#PACKAGE#';  
         $replace[] = $sourcePackage;  
         $search [] = '#DVERSION#';  
         $replace[] = $currentVersion;  
         $search [] = '#UVERSION#';  
         $replace[] = $newVersion;  
         $search [] = '#DISTRO#';  
         $replace[] = $distribution;  
   
         $message = str_replace($search, $replace, $tpl);  
         $subject = events::_extractHeader('subject', $message);  
         $to      = events::_extractHeader('to', $message);  
   
         $extraHeaders = events::_getTefaultExtraHeaders();  
         $extraHeaders[] = 'X-DEHS-UVERSION: ' . $newVersion;  
   
         return mail($to, $subject, $message, implode("\r\n", $extraHeaders));  
     }  
   
     function _extractHeader($header, &$message)  
     {  
         $regex  = '/^' . preg_quote($header, '/') . ':([ \t]*)(.*)$/i';  
   
         $matches = array();  
   
         if (preg_match($regex, $message, $matches)) {  
   
             $spacer = $matches[1];  
             $value  = $matches[2];  
   
             $message = ltrim(preg_replace($regex, '', $message));  
   
             return $value;  
   
         }  
         return false;  
     }  
   
     function _getTefaultExtraHeaders()  
     {  
         global $notificationsMailFrom;  
         $headers = array();  
   
         $headers[] = 'From: ' . $notificationsMailFrom;  
         $headers[] = 'X-PTS-Approved: sure';  
         $headers[] = 'X-BY-DEHS: sure';  
   
         return $headers;  
     }  
   
1060  }  }
1061    
1062  ?>  ?>

Legend:
Removed from v.77  
changed lines
  Added in v.123

  ViewVC Help
Powered by ViewVC 1.1.5