Hi Nuno,

I have done it. Look at these patchs.
I haven't tested them but they seem to work.

Tell me what you think about it.
If you agree with it, commit it, i haven't docweb cvs karma.

PS : Sorry again for my very bad english... :)

Le Samedi 2 Juillet 2005 21:00, Nuno Lopes a écrit :
> Hi Yannick,
>
> Thanks for your work! Just go ahead and commit it (or do you want me to do
> it?).
>
> And if you have some time, please port this fix to docweb (this isn't easy,
> because it parses the files in a different way AFAIR).
>
> Nuno


-- 
Yannick
Index: include/lib_revcheck.inc.php
===================================================================
RCS file: /repository/docweb/include/lib_revcheck.inc.php,v
retrieving revision 1.9
diff -U3 -r1.9 lib_revcheck.inc.php
--- include/lib_revcheck.inc.php        5 Nov 2004 09:41:56 -0000       1.9
+++ include/lib_revcheck.inc.php        4 Jul 2005 19:57:46 -0000
@@ -217,6 +217,32 @@
     }
 }
 
+function get_oldfiles($idx, $lang)
+{
+    $sql = 'SELECT
+     dir, file, size
+
+     FROM
+     old_files
+
+     WHERE
+     lang="' . $lang . '"
+     ';
+
+    $result = sqlite_query($idx, $sql);
+    $num = sqlite_num_rows($result);
+    if ($num == 0) {
+        // only 'null' will produce a 0 with sizeof()
+        return null;
+    } else {
+        $tmp = array();
+        while ($r = sqlite_fetch_array($result, SQLITE_ASSOC)) {
+            $tmp[] = array('dir' => $r['dir'], 'size' => $r['size'], 'file' => 
$r['file']);
+        }
+        return $tmp;
+    }
+}
+
 function get_description($idx, $lang)
 {
     $sql = 'SELECT intro FROM description WHERE lang = "' . $lang . '";';
Index: www/revcheck.php
===================================================================
RCS file: /repository/docweb/www/revcheck.php,v
retrieving revision 1.17
diff -U3 -r1.17 revcheck.php
--- www/revcheck.php    22 May 2005 10:40:33 -0000      1.17
+++ www/revcheck.php    4 Jul 2005 19:55:44 -0000
@@ -120,6 +120,7 @@
   <li<?php echo ($PART == 'files' ) ? ' class="liSelected"' : ''; ?>><a 
href="<?php echo BASE_URL . '/revcheck.php?p=files">Files</a>'; ?></li>
   <li<?php echo ($PART == 'misstags' ) ? ' class="liSelected"' : ''; ?>><a 
href="<?php echo BASE_URL . '/revcheck.php?p=misstags">Missing revision 
numbers</a>'; ?></li>
   <li<?php echo ($PART == 'missfiles' ) ? ' class="liSelected"' : ''; ?>><a 
href="<?php echo BASE_URL . '/revcheck.php?p=missfiles">Untranslated 
files</a>'; ?></li>
+  <li<?php echo ($PART == 'oldfiles' ) ? ' class="liSelected"' : ''; ?>><a 
href="<?php echo BASE_URL . '/revcheck.php?p=oldfiles">Not in EN tree</a>'; 
?></li>
   <li<?php echo ($PART == 'graph' ) ? ' class="liSelected"' : ''; ?>><a 
href="<?php echo BASE_URL . '/revcheck.php?p=graph">Graph</a>'; ?></li>
  </ul>
 <?php
@@ -233,6 +234,43 @@
         }
         break;
 
+        case 'oldfiles' :
+        $oldfiles = get_oldfiles($dbhandle, $LANG);
+        if (!$oldfiles) {
+            echo 'No old file info';
+        } else {
+            $num = count($missfiles);
+            echo <<<OLDTAGS_HEAD
+<p>&nbsp;</p>
+<div style="text-align:center"> <!-- Compatibility with old IE -->
+<table width="400" border="0" cellpadding="3" cellspacing="1" class="Tc">
+        <tr class="blue">
+                <th rowspan="1">Not in EN tree ($num files):</th>
+                <th colspan="1">kB</th>
+        </tr>
+
+OLDTAGS_HEAD;
+
+            $last_dir = false;
+            $total_size = 0;
+            foreach ($oldfiles as $old) {
+                if (!$last_dir || $last_dir != $old['dir']) {
+                    echo '<tr class="blue"><th colspan="2">' . $old['dir'] . 
'</th></tr>';
+                    $last_dir = $old['dir'];
+                }
+                echo '<tr class="wip"><td>', $old['file'], '</td><td 
class="r">', $old['size'], '</td></tr>';
+                $total_size += $old['size'];
+                // flush every 200 kbytes
+                if (($total_size % 200) == 0) {
+                    flush();
+                }
+            }
+            echo '<tr class="blue">
+                      <th colspan="2">Total Size ('.$num.' files): 
'.$total_size.' kB</th>
+                  </tr>';
+            echo '</table></div>';
+        }
+        break;
 
         case 'misstags' :
         $sql = 'select
Index: scripts/rev.php
===================================================================
RCS file: /repository/docweb/scripts/rev.php,v
retrieving revision 1.15
diff -U3 -r1.15 rev.php
--- scripts/rev.php     26 Jan 2005 17:23:24 -0000      1.15
+++ scripts/rev.php     4 Jul 2005 19:56:19 -0000
@@ -147,6 +147,13 @@
     UNIQUE(lang, dir, name)
 );
 
+CREATE TABLE old_files (
+    lang TEXT,
+    dir TEXT,
+    file TEXT,
+    size INT
+);
+
 SQL;
 
 /**
@@ -252,6 +259,23 @@
     }
 }
 
+function dir_sort_old($a, $b) {
+    global $DOCS, $dir, $lang;
+    $a = $DOCS . $lang . $dir . '/' . $a;
+    $b = $DOCS . $lang . $dir . '/' . $b;
+    if (is_dir($a) && is_dir($b)) {
+        return 0;
+    } elseif (is_file($a) && is_file($b)) {
+        return 0;
+    } elseif (is_file($a) && is_dir($b)) {
+        return -1;
+    } elseif (is_dir($a) && is_file($b)) {
+        return 1;
+    } else {
+        return -1;
+    }
+}
+
 function do_revcheck($dir = '') {
     global $LANGS, $DOCS, $SQL_BUFF;
     static $id = 1;
@@ -334,6 +358,65 @@
     closedir($dh);
 }
 
+function check_old_files($dir = '', $lang) {
+    global $DOCS, $SQL_BUFF;
+    static $id = 1;
+
+    if ($dh = opendir($DOCS . $lang . $dir)) {
+
+        $entriesDir = array();
+        $entriesFiles = array();
+
+        while (($file = readdir($dh)) !== false) {
+            if (
+            (!is_dir($DOCS . $lang . $dir.'/' .$file) && 
!in_array(substr($file, -3), array('xml','ent')) && substr($file, -13) != 
'PHPEditBackup' )
+            || ($file == "functions.xml" && strpos($dir, '/reference') !== 
false)
+            || $dir == '/chmonly'
+            || $file == 'contributors.ent' || $file == 'contributors.xml'
+            || ($dir == '/appendices' && $file == 'reserved.constants.xml')) {
+                continue;
+            }
+
+            if ($file != '.' && $file != '..' && $file != 'CVS' && $dir != 
'/functions') {
+
+                if (is_dir($DOCS . $lang . $dir.'/' .$file)) {
+                    $entriesDir[] = $file;
+                } elseif (is_file($DOCS . $lang . $dir.'/' .$file)) {
+                    $entriesFiles[] = $file;
+                }
+            }
+        }
+
+        // Files first
+        if (sizeof($entriesFiles) > 0 ) {
+
+            foreach($entriesFiles as $file) {
+
+                $path_en = $DOCS . 'en/' . $dir . '/' . $file;
+                $path = $DOCS . $lang . $dir . '/' . $file;
+
+                if( [EMAIL PROTECTED]($path_en) ) {
+
+                   $size = intval(filesize($path) / 1024);
+                   $SQL_BUFF .= "INSERT INTO old_files VALUES ('$lang', 
'$dir', '$file', '$size');\n";
+
+                }
+            }
+        }
+
+        // Directories..
+        if (sizeof($entriesDir) > 0) {
+
+            usort($entriesDir, 'dir_sort_old');
+            reset($entriesDir);
+
+            foreach ($entriesDir as $Edir) {
+                check_old_files($dir . '/' . $Edir, $lang);
+            }
+        }
+    }
+    closedir($dh);
+}
 
 function get_tags($file)
 {
@@ -431,6 +514,12 @@
 // 4 - Recurse in the manual seeking for files and fill $SQL_BUFF
 do_revcheck();
 
+// 4:1 - Recurse in the manuel seeking for old files for each language and 
fill $SQL_BUFF
+
+foreach ($LANGS as $lang) {
+ check_old_files('', $lang);
+}
+
 // 5 - Query $SQL_BUFF and exit
 
 sqlite_query($idx, 'BEGIN TRANSACTION');

Reply via email to