com web/doc: Graphs generators and lib_revcheck optimizatio ns: .gitignore include/lib_revcheck.inc.php scr ipts/gen_picture_info.php scripts/gen_picture_info _all_lang.php
| Newsgroups | php.doc.web |
|---|---|
| Message-ID | <[email protected]> |
Commit: b28179fbd7a7023ac6b0eb29a36d7bb1fe7b5f72 Author: Sobak <[email protected]> Mon, 31 Mar 2014 08:24:42 +0200 Parents: 487e76617c8a58b47a7a592c0fd6254947cba9d3 Branches: master Link: http://git.php.net/?p=web/doc.git;a=commitdiff;h=b28179fbd7a7023ac6b0eb29a36d7bb1fe7b5f72 Log: Graphs generators and lib_revcheck optimizations * removed functions doing the same job * some functions replaced with already existing more efficient replacements * total ammount of files on language graph fixed * other improvements Charts are generated over two times faster now Changed paths: M .gitignore M include/lib_revcheck.inc.php M scripts/gen_picture_info.php M scripts/gen_picture_info_all_lang.php
diff_b28179fbd7a7023ac6b0eb29a36d7bb1fe7b5f72.txt
(text/plain, 9.9 KB)
diff --git a/.gitignore b/.gitignore
index 9eb208a..c9a1fb9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,5 @@ include/jpgraph
shared
sqlite
svn
+www/images
www/robots.txt
\ No newline at end of file
diff --git a/include/lib_revcheck.inc.php b/include/lib_revcheck.inc.php
index f346897..ff3805a 100644
--- a/include/lib_revcheck.inc.php
+++ b/include/lib_revcheck.inc.php
@@ -102,7 +102,6 @@ function get_outdated_files($idx, $lang, $dir)
}
return $tmp;
-
}
// return an array with the outdated files maintained by $user
@@ -148,41 +147,23 @@ function get_outdated_translator_files($idx, $lang, $user)
}
return $tmp;
-
}
-// Return an array of available languages for a revchecked documentation $type
+// Return an array of available languages for manual
function revcheck_available_languages($idx)
{
- $tmp = array();
-
- if (!$idx) {
- return FALSE;
- }
-
- $sql = 'SELECT lang FROM description';
- $result = @$idx->query($sql);;
-
- if (!$result) {
- return FALSE;
- }
-
- if ($result) {
- while ($r = $result->fetchArray()) {
- $tmp[] = $r['lang'];
- }
- }
- return $tmp;
+ $result = $idx->query('SELECT lang FROM description');
+ return $result->fetchArray(SQLITE3_NUM);
}
// Return en integer
-function get_nb_EN_files($idx)
+function count_en_files($idx)
{
- $sql = "SELECT COUNT(*) AS total FROM files WHERE lang = 'en'";
- $res = $idx->query($sql);;
+ $sql = "SELECT COUNT(name) FROM files WHERE lang = 'en'";
+ $res = $idx->query($sql);
$row = $res->fetchArray();
- return $row['total'];
+ return $row[0];
}
function get_missfiles($idx, $lang)
@@ -205,9 +186,9 @@ function get_missfiles($idx, $lang)
AND
b.lang="en"
AND
- a.revision is NULL
+ a.revision IS NULL
AND
- a.size is NULL
+ a.size IS NULL
AND
a.dir = d.id';
$result = $idx->query($sql);
@@ -250,7 +231,7 @@ function get_misstags($idx, $lang)
d.name AS dir, b.size AS en_size, a.size AS trans_size, a.name AS name
FROM files a, dirs d
LEFT JOIN files b ON a.dir = b.dir AND a.name = b.name
- WHERE a.lang="'.$lang.'" AND b.lang="en" AND a.revision IS NULL
+ WHERE a.lang="'.$lang.'" AND b.lang="en" AND a.revision IS NULL
AND a.size IS NOT NULL AND a.dir = d.id';
$result = $idx->query($sql);
@@ -261,30 +242,6 @@ function get_misstags($idx, $lang)
return $tmp;
}
-// Return an integer
-function get_nb_LANG_files($idx)
-{
- $sql = '
- SELECT
- lang,
- COUNT(*) as total
- FROM
- files
- WHERE
- lang != \'en\'
- GROUP BY
- lang
- ORDER BY
- lang
- ';
-
- $result = $idx->query($sql);
- while ($row = $result->fetchArray()) {
- $files[$row['lang']] = $row['total'];
- }
- return $files;
-}
-
// Return a string
function translator_get_wip($idx, $lang)
{
@@ -345,7 +302,6 @@ function translator_get_old($idx, $lang)
return $tmp;
}
-
function translator_get_critical($idx, $lang)
{
$sql = 'SELECT
@@ -425,7 +381,7 @@ function translator_get_uptodate($idx, $lang)
function get_translators($idx, $lang)
{
- $sql= "SELECT nick, name, mail, svn FROM translators WHERE lang = '$lang' ORDER BY nick COLLATE NOCASE";
+ $sql = "SELECT nick, name, mail, svn FROM translators WHERE lang = '$lang' ORDER BY nick COLLATE NOCASE";
$persons = array();
$result = $idx->query($sql);
while ($r = $result->fetchArray()) {
@@ -434,34 +390,6 @@ function get_translators($idx, $lang)
return $persons;
}
-function get_nb_LANG_files_Translated($idx, $lang)
-{
- $sql = '
- SELECT
- b.lang as language,
- COUNT(*) as total
- FROM
- files a
- LEFT JOIN
- files b
- WHERE
- b.lang="' . $lang . '"
- AND
- a.lang=\'en\'
- AND
- b.name = a.name
- AND
- b.dir = a.dir
- AND
- a.revision = b.revision
- GROUP BY
- b.lang
- ';
-
- $result = $idx->query($sql);
- return $result->fetchArray();
-}
-
// Return an array
function get_stats_uptodate($idx, $lang)
{
@@ -572,43 +500,18 @@ function get_stats_old($idx, $lang)
return $result;
}
-
+// Returns number of untranslated files for specified $lang
function get_stats_notrans($idx, $lang)
{
- $sql = 'SELECT
- COUNT(a.name) as total,
- sum(b.size) as size
- FROM
- files a,
- dirs d
- LEFT JOIN
- files b
- ON
- a.dir = b.dir
- AND
- a.name = b.name
- WHERE
- a.lang="' . $lang . '"
- AND
- b.lang="en"
- AND
- a.revision is NULL
- AND
- a.size is NULL
- AND
- a.dir = d.id';
+ $sql = "SELECT COUNT(a.name) AS total, SUM(b.size) as size
+ FROM files a, dirs d
+ LEFT JOIN files b ON a.dir = b.dir AND a.name = b.name
+ WHERE a.lang = '$lang' AND b.lang='en' AND a.revision IS NULL AND a.size IS NULL AND a.dir = d.id";
$result = $idx->query($sql);
-
$r = $result->fetchArray();
return array($r['total'], $r['size']);
- if (sqlite_num_rows($result)) {
- $r = $result->fetchArray();
- return array($r['total'], $r['size']);
- } else {
- return array(0,0);
- }
}
function get_stats_wip($idx, $lang)
diff --git a/scripts/gen_picture_info.php b/scripts/gen_picture_info.php
index c2dfe03..57b7a55 100644
--- a/scripts/gen_picture_info.php
+++ b/scripts/gen_picture_info.php
@@ -1,4 +1,6 @@
<?php
+$time_start = microtime(true);
+
include '../include/jpgraph/src/jpgraph.php';
include '../include/jpgraph/src/jpgraph_pie.php';
include '../include/jpgraph/src/jpgraph_pie3d.php';
@@ -9,27 +11,26 @@ include '../include/lib_proj_lang.inc.php';
$idx = new SQLite3(SQLITE_DIR . 'rev.php.sqlite');
+$available_langs = revcheck_available_languages($idx);
+
$langs = array_keys($LANGUAGES);
foreach ($langs as $lang) {
- if (!generate_image($lang, $idx)) {
+ if (!in_array($lang, $available_langs)) {
echo "Documentation for $lang language does not exist.\n";
} else {
- echo "Generated images/revcheck/info_revcheck_php_" . $lang . ".png\n";
+ generate_image($lang, $idx);
+ echo "Generated images/revcheck/info_revcheck_php_$lang.png\n";
}
}
+$time = round(microtime(true) - $time_start, 3);
+echo "Graphs generated in {$time}s\n";
+
function generate_image($lang, $idx) {
global $LANGUAGES;
- $Total_files = @get_nb_LANG_files($idx);
- if (!isset($Total_files[$lang]) ) {
- return FALSE;
- }
-
- $Total_files_lang = $Total_files[$lang];
- //
- $up_to_date = @get_nb_LANG_files_Translated($idx, $lang);
- $up_to_date = ($up_to_date['total'] == '') ? 0 : $up_to_date['total'];
+ $up_to_date = get_stats_uptodate($idx, $lang);
+ $up_to_date = $up_to_date[0];
//
$critical = @get_stats_critical($idx, $lang);
$critical = $critical[0];
@@ -37,22 +38,27 @@ function generate_image($lang, $idx) {
$old = @get_stats_old($idx, $lang);
$old = $old[0];
//
- $missing = sizeof(@get_missfiles($idx, $lang));
+ $missing = get_stats_notrans($idx, $lang);
+ $missing = $missing[0];
//
$no_tag = @get_stats_notag($idx, $lang);
$no_tag = $no_tag[0];
- //
- $data = array($up_to_date,$critical,$old,$missing,$no_tag);
+ $data = array(
+ $up_to_date,
+ $critical,
+ $old,
+ $missing,
+ $no_tag
+ );
+
$percent = array();
- $total = 0;
- $total = array_sum($data);
+ $total = array_sum($data); // Total ammount in EN manual (to calculate percentage values)
+ $total_files_lang = $total - $missing; // Total ammount of files in translation
foreach ($data as $value) {
$percent[] = round($value * 100 / $total);
}
-
- $noExplode = ($Total_files_lang == $up_to_date) ? 1 : 0;
$legend = array($percent[0] . '%% up to date ('.$up_to_date.')', $percent[1] . '%% critical ('.$critical.')', $percent[2] . '%% old ('.$old.')', $percent[3] . '%% missing ('.$missing.')', $percent[4] . '%% without revtag ('.$no_tag.')');
$title = 'Details for '.$LANGUAGES[$lang].' PHP Manual';
@@ -66,7 +72,7 @@ function generate_image($lang, $idx) {
$graph->legend->Pos(0.02,0.18,"right","center");
- $graph->subtitle->Set('(Total: '.$Total_files_lang.' files)');
+ $graph->subtitle->Set('(Total: '.$total_files_lang.' files)');
$graph->subtitle->Align('left');
$graph->subtitle->SetColor('darkred');
@@ -79,7 +85,7 @@ function generate_image($lang, $idx) {
$p1 = new PiePlot3D($data);
$p1->SetSliceColors(array("#68d888", "#ff6347", "#eee8aa", "#dcdcdc", "#f4a460"));
- if ($noExplode != 1) {
+ if ($total_files_lang != $up_to_date) {
$p1->ExplodeAll();
}
$p1->SetCenter(0.35,0.55);
@@ -88,8 +94,5 @@ function generate_image($lang, $idx) {
$p1->SetLegends($legend);
$graph->Add($p1);
- $graph->Stroke('../www/images/revcheck/info_revcheck_php_' . $lang . '.png');
-
-
- return TRUE;
-}
+ $graph->Stroke("../www/images/revcheck/info_revcheck_php_$lang.png");
+}
\ No newline at end of file
diff --git a/scripts/gen_picture_info_all_lang.php b/scripts/gen_picture_info_all_lang.php
index b39bad8..cec70a0 100644
--- a/scripts/gen_picture_info_all_lang.php
+++ b/scripts/gen_picture_info_all_lang.php
@@ -9,12 +9,12 @@ $idx = new SQLite3(SQLITE_DIR . 'rev.php.sqlite');
$language = revcheck_available_languages($idx);
sort($language);
-$files_EN = get_nb_EN_files($idx);
+$files_EN = count_en_files($idx);
foreach ($language as $lang) {
- $tmp = get_nb_LANG_files_Translated($idx, $lang);
+ $tmp = get_stats_uptodate($idx, $lang);
- $percent_tmp[] = round($tmp['total'] * 100 / $files_EN);
+ $percent_tmp[] = round($tmp[0] * 100 / $files_EN);
$legend_tmp[] = $lang;
}
@@ -72,5 +72,4 @@ function generate_image() {
// Display the graph
$graph->Stroke('../www/images/revcheck/info_revcheck_php_all_lang.png');
-
-}
+}
\ No newline at end of file