Re: Patch for revcheck.php script
| From: | Yannick Torres | Date: | Mon, 04 Jul 2005 20:04:15 +0000 |
| Subject: | Re: Patch for revcheck.php script | ||
| References: | 1 2 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969368929@lists.php.net to get a copy of this message | ||
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> </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( !@is_file($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');
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> </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( !@is_file($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');