diff --git a/include/lib_revcheck.inc.php b/include/lib_revcheck.inc.php index 938c1d1..0c35349 100644 --- a/include/lib_revcheck.inc.php +++ b/include/lib_revcheck.inc.php @@ -217,6 +217,32 @@ function get_missfiles($idx, $lang) } } +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 . '";'; diff --git a/scripts/rev.php b/scripts/rev.php index ea0a2c9..560809b 100644 --- a/scripts/rev.php +++ b/scripts/rev.php @@ -147,6 +147,13 @@ CREATE TABLE files ( UNIQUE(lang, dir, name) ); +CREATE TABLE old_files ( + lang TEXT, + dir TEXT, + file TEXT, + size INT +); + SQL; /** @@ -252,6 +259,23 @@ function dir_sort($a, $b) { } } +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 @@ function do_revcheck($dir = '') { 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 @@ foreach ($LANGS as $id => $lang) { // 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'); diff --git a/www/revcheck.php b/www/revcheck.php index 2db2542..6262c63 100644 --- a/www/revcheck.php +++ b/www/revcheck.php @@ -120,6 +120,7 @@ array (REV_NOTRANS, "Files available for translation")
Not in EN tree ($num files): | +kB | +
---|---|
' . $old['dir'] . ' | |
', $old['file'], ' | ', $old['size'], ' |
Total Size ('.$num.' files): '.$total_size.' kB | +