svn: /web/doc-editor/trunk/php/ AccountManager.php DBConnection.php DictionaryManager.php File.php LogManager.php RepositoryFetcher.php RepositoryManager.php ToolsCheckDoc.php ToolsCheckEntities.php ToolsError.php TranslationStatistic.php TranslatorStatistic.php UserNotes.php

[email protected] (Neal Poole)
Newsgroups php.doc.web
Message-ID <[email protected]>
nbpoole                                  Wed, 22 Jun 2011 20:00:24 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=312387

Log:
Major changes to how SQL is handled. The database query method will now perform sprintf-like replacements, but will escape parameters beforehand using real_escape_string. Developers should be very careful to write their SQL queries with this in mind: strings should be properly quoted and integers should be cast as such using %d. In other news, getInstance calls for the DB have been moved to the constructor for various classes and are stored in a private instance field called conn.

Changed paths:
    U   web/doc-editor/trunk/php/AccountManager.php
    U   web/doc-editor/trunk/php/DBConnection.php
    U   web/doc-editor/trunk/php/DictionaryManager.php
    U   web/doc-editor/trunk/php/File.php
    U   web/doc-editor/trunk/php/LogManager.php
    U   web/doc-editor/trunk/php/RepositoryFetcher.php
    U   web/doc-editor/trunk/php/RepositoryManager.php
    U   web/doc-editor/trunk/php/ToolsCheckDoc.php
    U   web/doc-editor/trunk/php/ToolsCheckEntities.php
    U   web/doc-editor/trunk/php/ToolsError.php
    U   web/doc-editor/trunk/php/TranslationStatistic.php
    U   web/doc-editor/trunk/php/TranslatorStatistic.php
    U   web/doc-editor/trunk/php/UserNotes.php
svn-diffs-312387.txt (text/x-diff, 98.8 KB)
Modified: web/doc-editor/trunk/php/AccountManager.php
===================================================================
--- web/doc-editor/trunk/php/AccountManager.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/AccountManager.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -11,6 +11,7 @@
 class AccountManager
 {
     private static $instance;
+    private $conn;

     public static function getInstance()
     {
@@ -100,6 +101,8 @@
         );

         $this->appConf = Config::getInstance()->getConf();
+
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -116,11 +119,9 @@
      */
     public function updateLastConnect()
     {
-        $s = sprintf(
-            'UPDATE `users` SET `last_connect`=now() WHERE `userID`="%s"',
-            $this->userID
-        );
-        DBConnection::getInstance()->query($s);
+        $s = 'UPDATE `users` SET `last_connect`=now() WHERE `userID`=%d';
+        $params = array($this->userID);
+        $this->conn->query($s, $params);
     }

     /**
@@ -231,21 +232,10 @@
            $this->vcsLang   = $lang;
            $this->email     = $email;

-	       $s = sprintf(
-	           'SELECT
-	              *
-	           FROM
-	              `users`
-	           WHERE
-	              `project`        = "%s" AND
-	              `vcs_login`      = "%s" AND
-	              `anonymousIdent` = "%s" ',
-	           $project,
-	           $this->vcsLogin,
-	           $this->anonymousIdent
-	       );
+           $s = 'SELECT * FROM `users` WHERE `project` = "%s" AND `vcs_login` = "%s" AND `anonymousIdent` = "%s"';
+           $params = array($project, $this->vcsLogin, $this->anonymousIdent);

-           $r = DBConnection::getInstance()->query($s);
+           $r = $this->conn->query($s, $params);

            if ($r->num_rows == 1) {

@@ -373,22 +363,17 @@

     public function updateEmail()
     {
-        $db = DBConnection::getInstance();
-
-        $s = sprintf(
-            'UPDATE `users` SET `email`="%s" WHERE `userID`="%s"',
-            $this->email, $this->userID
-        );
-        $db->query($s);
+        $s = 'UPDATE `users` SET `email`="%s" WHERE `userID`=%d';
+        $params = array($this->email, $this->userID);
+        $this->conn->query($s, $params);
     }

     public function getVCSUsers()
     {
-        $db = DBConnection::getInstance();
+        $s = 'SELECT DISTINCT(`vcs_login`) as userName FROM `users` WHERE project="%s" AND vcs_login != "anonymous"';
+        $params = array($this->project);
+        $r = $this->conn->query($s, $params);

-        $s = 'SELECT DISTINCT(`vcs_login`) as userName FROM `users` WHERE project="'.$this->project.'" AND vcs_login != "anonymous"';
-        $r = $db->query($s);
-
         $result = array();
         $i=0;

@@ -402,19 +387,10 @@

     public function setFileOwner($fileIdDB, $newOwner)
     {
-        $db = DBConnection::getInstance();
-
-        $s = sprintf(
-            'UPDATE
-                `work`
-             SET
-                `user` = "%s"
-             WHERE
-                `id` = "%s"',
-            $db->real_escape_string($newOwner),
-            $fileIdDB
-        );
-        $db->query($s);
+        $s = 'UPDATE `work` SET `user` = "%s" WHERE `id` = %d';
+        $params = array($newOwner, $fileIdDB);
+
+        $this->conn->query($s, $params);
     }


@@ -428,17 +404,10 @@
         $am      = AccountManager::getInstance();
         $project = $am->project;

-        $s = sprintf(
-            'SELECT
-                `email`
-             FROM
-                `users`
-             WHERE
-                `project`   = "%s" AND
-                `vcs_login` = "%s"',
-            $project, $user
-        );
-        $r = DBConnection::getInstance()->query($s);
+        $s = 'SELECT `email` FROM `users` WHERE `project` = "%s" AND `vcs_login` = "%s"';
+        $params = array($project, $user);
+
+        $r = $this->conn->query($s, $params);
         $nb = $r->num_rows;

         // We have found an email
@@ -458,14 +427,11 @@
      */
     private function register()
     {
-        $db = DBConnection::getInstance();
+        $s = 'INSERT INTO `users` (`project`, `vcs_login`, `email`, `anonymousIdent`, `conf`) VALUES ("%s","%s","%s","%s","%s")';
+        $params = array($this->project, $this->vcsLogin, $this->email, $this->anonymousIdent, json_encode($this->defaultConf));

-        $s = sprintf(
-            'INSERT INTO `users` (`project`, `vcs_login`, `email`, `anonymousIdent`, `conf`) VALUES ("%s","%s","%s","%s","%s")',
-            $this->project, $this->vcsLogin, $this->email, $this->anonymousIdent, $db->real_escape_string(json_encode($this->defaultConf))
-        );
-        $db->query($s);
-        return $db->insert_id();
+        $this->conn->query($s, $params);
+        return $this->conn->insert_id();
     }

     /**
@@ -490,21 +456,15 @@
         unset($_SESSION['userConf']->{$module}->{$itemName});
         $_SESSION['userConf']->{$module}->{$itemName} = ( is_numeric($value) ) ? (int) $value : $value;

-        $db = DBConnection::getInstance();
-
         // In DB
         if( $this->isAnonymous ) {
-            $s = sprintf(
-                'UPDATE `users` SET `conf`="%s" WHERE `vcs_login`="%s" AND `anonymousIdent`="%s"',
-                $db->real_escape_string(json_encode($this->userConf)), "anonymous", $this->anonymousIdent
-            );
+            $s = 'UPDATE `users` SET `conf`="%s" WHERE `vcs_login`="anonymous" AND `anonymousIdent`="%s"';
+            $params = array(json_encode($this->userConf), $this->anonymousIdent);
         } else {
-            $s = sprintf(
-                'UPDATE `users` SET `conf`="%s" WHERE `vcs_login`="%s"',
-                $db->real_escape_string(json_encode($this->userConf)), $this->vcsLogin
-            );
+            $s = 'UPDATE `users` SET `conf`="%s" WHERE `vcs_login`="%s"';
+            $params = array(json_encode($this->userConf), $this->vcsLogin);
         }
-        $db->query($s);
+        $this->conn->query($s, $params);
     }

     /**
@@ -513,19 +473,13 @@
      */
     public function eraseData()
     {
-        $db = DBConnection::getInstance();
+        $s = 'DELETE FROM `commitMessage` WHERE `user`="%s"';
+        $params = array($this->vcsLogin);
+        $this->conn->query($s, $params);

-        $s = sprintf(
-            'DELETE FROM `commitMessage` WHERE `user`="%s"',
-            $this->vcsLogin
-        );
-        $db->query($s);
-
-        $s = sprintf(
-            'DELETE FROM `users` WHERE `userID`="%s"',
-            $this->userID
-        );
-        $db->query($s);
+        $s = 'DELETE FROM `users` WHERE `userID`=%d';
+        $params = array($this->userID);
+        $this->conn->query($s, $params);
     }

     /**

Modified: web/doc-editor/trunk/php/DBConnection.php
===================================================================
--- web/doc-editor/trunk/php/DBConnection.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/DBConnection.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -38,9 +38,11 @@
         }
     }

-    public function query($s)
-    {
-        $r = $this->conn->query($s) or die('Error: '.$this->conn->error.'|'.$s);
+    public function query($s, array $params)
+    {
+        $params = array_map(array($this, 'real_escape_string'), $params);
+        $query = vsprintf($s, $params);
+        $r = $this->conn->query($query) or die('Error: '.$this->conn->error.'|'.$query);
         return $r;
     }


Modified: web/doc-editor/trunk/php/DictionaryManager.php
===================================================================
--- web/doc-editor/trunk/php/DictionaryManager.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/DictionaryManager.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -4,11 +4,14 @@
  *
  */

+require_once dirname(__FILE__) . '/DBConnection.php';
+
 class DictionaryManager {

     private static $instance;
     public $acronyms;
     public $entities;
+    private $conn;

     public static function getInstance()
     {
@@ -21,6 +24,7 @@

     public function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -30,16 +34,10 @@
      */
     public function delWord($wordId)
     {
-        $s = sprintf(
-            'DELETE FROM
-                `dictionary`
-             WHERE
-                `id` = "%s"',
+        $s = 'DELETE FROM `dictionary` WHERE `id`=%d';
+        $params = array($wordId);

-            $wordId
-        );
-
-        DBConnection::getInstance()->query($s);
+        $this->conn->query($s, $params);
     }

     /**
@@ -52,20 +50,11 @@
         $project = $am->project;
         $vcsLang = $am->vcsLang;

-        $s = sprintf(
-            'SELECT
-                `id`, `valueEn`, `valueLang`, `lastUser`, `lastDate`
-             FROM
-                `dictionary`
-             WHERE
-                `project` = "%s" AND `lang`="%s"',
+        $s = 'SELECT `id`, `valueEn`, `valueLang`, `lastUser`, `lastDate` FROM `dictionary` WHERE `project` = "%s" AND `lang`="%s"';
+        $params = array($project, $vcsLang);

-            $project,
-            $vcsLang
-        );
+        $r = $this->conn->query($s, $params);

-        $r = DBConnection::getInstance()->query($s);
-
         $infos = array();
         while ($a = $r->fetch_assoc()) {
             $infos[] = $a;
@@ -84,7 +73,6 @@
      */
     public function manageDictionaryWord($wordId, $valueEn, $valueLang)
     {
-        $db = DBConnection::getInstance();
         $am = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;
@@ -93,43 +81,14 @@
         $time = @date("Y-m-d H:i:s");

         if( $wordId == 'new' ) {
-
-            $s = sprintf(
-                'INSERT INTO
-                    `dictionary`
-                 (`project`, `lang`, `valueEn`, `valueLang`, `lastUser`, `lastDate`)
-                 VALUES ("%s", "%s", "%s", "%s", "%s", "%s")',
-                $project,
-                $vcsLang,
-                $db->real_escape_string($valueEn),
-                $db->real_escape_string($valueLang),
-                $db->real_escape_string($vcsLogin),
-                $time
-            );
-
+            $s = 'INSERT INTO `dictionary` (`project`, `lang`, `valueEn`, `valueLang`, `lastUser`, `lastDate`) VALUES ("%s", "%s", "%s", "%s", "%s", "%s")';
+            $params = array($project, $vcsLang, $valueEn, $valueLang, $vcsLogin, $time);
         } else {
-
-            $s = sprintf(
-                'UPDATE
-                    `dictionary`
-                 SET
-                    `valueEn`  = "%s",
-                    `valueLang`= "%s",
-                    `lastUser` = "%s",
-                    `lastDate` = "%s"
-                 WHERE
-                    `id` = %s',
-
-                $db->real_escape_string($valueEn),
-                $db->real_escape_string($valueLang),
-                $db->real_escape_string($vcsLogin),
-                $time,
-                $wordId
-            );
-
+            $s = 'UPDATE `dictionary` SET `valueEn` = "%s", `valueLang`= "%s", `lastUser` = "%s", `lastDate` = "%s" WHERE `id` = %d';
+            $params = array($valueEn, $valueLang, $vcsLogin, $time, $wordId);
         }

-        $db->query($s);
+        $this->conn->query($s, $params);

         return $time;
     }

Modified: web/doc-editor/trunk/php/File.php
===================================================================
--- web/doc-editor/trunk/php/File.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/File.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -19,6 +19,8 @@

     public $isDir;
     public $isFile;
+
+    private $conn;

     /**
      * Constructor will normalize the lang and the path as specified as parameters.
@@ -77,7 +79,7 @@
             $this->full_path_dir = $appConf[$project]['vcs.path'].$lang.'/';
             $this->full_path_fallback = $appConf[$project]['vcs.path'].'en/'.$this->name;
         }
-
+        $this->conn = DBConnection::getInstance();
     }

     public function exist()
@@ -294,7 +296,6 @@
     public function isModified()
     {
         $am      = AccountManager::getInstance();
-        $db      = DBConnection::getInstance();
         $project = $am->project;

         // If the current file is a .new file, we must escape the .new otherwise, we haven't any result from the database
@@ -304,8 +305,7 @@
             $hereName = $this->name;
         }

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `id` as fidDB,
                 `user`,
                 `anonymousIdent`,
@@ -317,14 +317,15 @@
                 `project` = "%s" AND
                 `lang`="%s" AND
                 `path`="%s" AND
-                `name`="%s"',
-            $db->real_escape_string($project),
-            $db->real_escape_string($this->lang),
-            $db->real_escape_string($this->path),
-            $db->real_escape_string($hereName)
+                `name`="%s"';
+        $params = array(
+            $project,
+            $this->lang,
+            $this->path,
+            $hereName
         );

-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 ) {
             return false;

Modified: web/doc-editor/trunk/php/LogManager.php
===================================================================
--- web/doc-editor/trunk/php/LogManager.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/LogManager.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -6,6 +6,8 @@
 {
     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -17,6 +19,7 @@

     private function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -34,11 +37,9 @@

         $result = array();

-        $s = sprintf(
-            'SELECT `id`, `text` FROM `commitMessage` WHERE `project`="%s" AND `user`="%s"',
-            $project, $vcsLogin
-        );
-        $r = DBConnection::getInstance()->query($s);
+        $s = 'SELECT `id`, `text` FROM `commitMessage` WHERE `project`="%s" AND `user`="%s"';
+        $params = array(project, $vcsLogin);
+        $r = $this->conn->query($s, $params);
         while ($a = $r->fetch_assoc()) {
             $result[] = $a;
         }
@@ -55,23 +56,17 @@
     public function addCommitLog($log)
     {
         $am       = AccountManager::getInstance();
-        $db       = DBConnection::getInstance();
-        $log      = $db->real_escape_string($log);
         $project  = $am->project;
         $vcsLogin = $am->vcsLogin;

-        $s = sprintf(
-            'SELECT id FROM `commitMessage` WHERE `project`="%s" AND `text`="%s" AND `user`="%s"',
-            $project, $log, $vcsLogin
-        );
-        $r = $db->query($s);
+        $s = 'SELECT id FROM `commitMessage` WHERE `project`="%s" AND `text`="%s" AND `user`="%s"';
+        $params = array($project, $log, $vcsLogin);
+        $r = $this->conn->query($s, $params);

         if ($r->num_rows == 0 ) {
-            $s = sprintf(
-                'INSERT INTO `commitMessage` (`project`, `text`,`user`) VALUES ("%s", "%s", "%s")',
-                $project, $log, $vcsLogin
-            );
-            $db->query($s);
+            $s = 'INSERT INTO `commitMessage` (`project`, `text`,`user`) VALUES ("%s", "%s", "%s")';
+            $params = array($project, $log, $vcsLogin);
+            $this->conn->query($s, $params);
         }
     }

@@ -83,12 +78,9 @@
      */
     public function updateCommitLog($logID, $log)
     {
-        $db= DBConnection::getInstance();
-        $s = sprintf(
-            'UPDATE `commitMessage` SET `text`="%s" WHERE `id`="%s"',
-            $db->real_escape_string($log), $logID
-        );
-        $db->query($s);
+        $s = 'UPDATE `commitMessage` SET `text`="%s" WHERE `id`=%d';
+        $params = array($log, $logID);
+        $this->conn->query($s, $params);
     }

     /**
@@ -98,10 +90,9 @@
      */
     public function delCommitLog($logID)
     {
-        $s = sprintf(
-            'DELETE FROM `commitMessage` WHERE `id`="%s"', $logID
-        );
-        DBConnection::getInstance()->query($s);
+        $s = 'DELETE FROM `commitMessage` WHERE `id`=%d';
+        $params = array($logID);
+        $this->conn->query($s, $params);
     }

     /**
@@ -145,15 +136,12 @@
      */
     public function saveFailedBuild($lang, $log)
     {
-        $db      = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

-        $s = sprintf(
-            'INSERT INTO `failedBuildLog` (`project`, `lang`, `log`, `date`)
-             VALUES ("%s","%s", "%s", now())',
-            $project, $lang, $db->real_escape_string(json_encode($log))
-        );
-        $db->query($s);
+        $s = 'INSERT INTO `failedBuildLog` (`project`, `lang`, `log`, `date`)
+             VALUES ("%s","%s", "%s", now())';
+        $params = array($project, $lang, json_encode($log));
+        $this->conn->query($s, $params);
     }

     /**
@@ -203,8 +191,9 @@
     {
         $project = AccountManager::getInstance()->project;

-        $s = 'SELECT `id`, `lang`, `date` FROM `failedBuildLog` WHERE `project` = \''.$project.'\'';
-        $r  = DBConnection::getInstance()->query($s);
+        $s = 'SELECT `id`, `lang`, `date` FROM `failedBuildLog` WHERE `project` = "%s"';
+        $params = array($project);
+        $r  = $this->conn->query($s, $params);

         $node = array();
         while ($a = $r->fetch_assoc()) {
@@ -223,8 +212,9 @@
      */
     public function getFailedBuildData($id, $highlight=true)
     {
-        $s = 'SELECT `log` FROM `failedBuildLog` WHERE `id`=\''.$id.'\'';
-        $r  = DBConnection::getInstance()->query($s);
+        $s = 'SELECT `log` FROM `failedBuildLog` WHERE `id`=%d';
+        $params = array($id);
+        $r  = $this->conn->query($s, $params);

         $a = $r->fetch_object();


Modified: web/doc-editor/trunk/php/RepositoryFetcher.php
===================================================================
--- web/doc-editor/trunk/php/RepositoryFetcher.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/RepositoryFetcher.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -9,6 +9,8 @@
 {
     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -20,6 +22,7 @@

     private function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }


@@ -33,8 +36,7 @@
         $am      = AccountManager::getInstance();
         $project = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `date`
              FROM
                 `staticValue`
@@ -42,11 +44,10 @@
                 `project` = "%s" AND
                 `type`="info"
              ORDER BY `date` DESC
-             LIMIT 0, 1',
+             LIMIT 0, 1';
+        $params = array($am->project);

-            $am->project
-        );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $a = $r->fetch_assoc();

@@ -65,24 +66,21 @@

         $infos = array();

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 count(*) as total
              FROM
                 `staticValue`
              WHERE
                 `project` = "%s" AND
-                `type`="info"',
+                `type`="info"';
+        $params = array($am->project);

-            $am->project
-        );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $a = $r->fetch_assoc();
         $infos['total'] = $a['total'];

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `field`, `value`, `date`
              FROM
                 `staticValue`
@@ -90,11 +88,10 @@
                 `project` = "%s" AND
                 `type`="info"
              ORDER BY `date` DESC
-             LIMIT %s, %s',
+             LIMIT %d, %d';
+        $params = array($am->project, (int)$start, (int)$limit);

-            $am->project, (int)$start, (int)$limit
-        );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $i=0;
         while ($a = $r->fetch_assoc()) {
@@ -139,20 +136,19 @@
     {
         $am = AccountManager::getInstance();

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `work`
              WHERE
                 `project` = "%s" AND
-                ( `lang`="%s" OR `lang`="en" ) ',
-
+                ( `lang`="%s" OR `lang`="en" ) ';
+        $params = array(
             $am->project,
             $am->vcsLang
         );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $infos = array();
         while ($a = $r->fetch_assoc()) {
@@ -173,27 +169,27 @@
         $am = AccountManager::getInstance();
         $infos = array();

-        $ids = is_array($id) ? implode($id, ',') : $id;
+        $ids = is_array($id) ? implode(array_map('intval', $id), ',') : (int)$id;

         if( empty( $ids ) ) {
             return $infos;
         }

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `work`
              WHERE
                 `project` = "%s" AND
-               (`lang`="%s" OR `lang`="en" OR `lang`="doc-base") AND `id` IN (%s)',
-
+               (`lang`="%s" OR `lang`="en" OR `lang`="doc-base") AND `id` IN (%s)';
+
+        $params = array(
             $am->project,
             $am->vcsLang,
             $ids
         );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         while ($a = $r->fetch_assoc()) {
             $infos[] = $a;
@@ -210,8 +206,7 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 count(*) as total
              FROM
                 `files`
@@ -219,11 +214,12 @@
                 `project`   = "%s" AND
                 `lang`      = "%s"  AND
                 `revision` != `en_revision` AND
-                `status` is not null',
+                `status` is not null';
+        $params = array(
             $project,
             $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return ( $a->total > $am->userConf->needUpdate->nbDisplay && $am->userConf->needUpdate->nbDisplay != 0 ) ? $am->userConf->needUpdate->nbDisplay : $a->total;
@@ -241,12 +237,11 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $limit = ( $am->userConf->needUpdate->nbDisplay ) ? 'LIMIT '.$am->userConf->needUpdate->nbDisplay : '';
+        $limit = ( $am->userConf->needUpdate->nbDisplay ) ? 'LIMIT '.(int)$am->userConf->needUpdate->nbDisplay : '';

         $m = $this->getModifies();

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `files`
@@ -255,12 +250,13 @@
                 `lang` = "%s" AND
                 `revision` != `en_revision` AND
                 `status` is not NULL
-                %s',
+                %s';
+        $params = array(
             $project,
             $vcsLang,
             $limit
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array();
         while ($a = $r->fetch_object()) {
@@ -322,19 +318,19 @@
         $project = $am->project;

         $m = $this->getModifies();
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 count(*) as total
              FROM
                 `files`
              WHERE
                 `project`="%s" AND
                 `lang` = "%s" AND
-                reviewed != \'yes\'',
+                reviewed != \'yes\'';
+        $params = array(
             $project,
             $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return ( $a->total > $am->userConf->reviewed->nbDisplay && $am->userConf->reviewed->nbDisplay != 0 ) ? $am->userConf->reviewed->nbDisplay : $a->total;
@@ -351,11 +347,10 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $limit = ( $am->userConf->reviewed->nbDisplay ) ? 'LIMIT '.$am->userConf->reviewed->nbDisplay : '';
+        $limit = ( $am->userConf->reviewed->nbDisplay ) ? 'LIMIT '.(int)$am->userConf->reviewed->nbDisplay : '';

         $m = $this->getModifies();
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `files`
@@ -366,12 +361,13 @@
              ORDER BY
                 `path`,
                 `name`
-                %s',
+                %s';
+        $params = array(
             $project,
             $vcsLang,
             $limit
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array();
         while ($a = $r->fetch_object()) {
@@ -418,19 +414,20 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf('
-            SELECT
+        $s = 'SELECT
                count(*) as total
             FROM
                `files`
             WHERE
                `project`="%s" AND
                `lang`="%s" AND
-               `status`="NotInEN"',
+               `status`="NotInEN"';
+        $params = array(
             $project,
-            $vcsLang);
+            $vcsLang
+        );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return $a->total;
@@ -448,8 +445,7 @@

         $m = $this->getModifies();

-        $s = sprintf('
-            SELECT
+        $s = 'SELECT
                `id`,
                `path`,
                `name`
@@ -458,11 +454,13 @@
             WHERE
                `project`="%s" AND
                `lang`="%s" AND
-               `status`="NotInEN"',
+               `status`="NotInEN"';
+        $params = array(
             $project,
-            $vcsLang);
+            $vcsLang
+        );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array();
         while ($a = $r->fetch_object()) {
@@ -486,8 +484,7 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf('
-            SELECT
+        $s = 'SELECT
                 count(*) as total
             FROM
                 `files`
@@ -495,12 +492,13 @@
                 `project`="%s" AND
                 `lang`="%s" AND
                 `status` is NULL AND
-                `revision` is NULL',
+                `revision` is NULL';
+        $params = array(
             $project,
             $vcsLang
         );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return ( $a->total > $am->userConf->newFile->nbDisplay && $am->userConf->newFile->nbDisplay != 0 ) ? $am->userConf->newFile->nbDisplay : $a->total;
@@ -518,11 +516,10 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $limit = ( $am->userConf->newFile->nbDisplay ) ? 'LIMIT '.$am->userConf->newFile->nbDisplay : '';
+        $limit = ( $am->userConf->newFile->nbDisplay ) ? 'LIMIT '.(int)$am->userConf->newFile->nbDisplay : '';

         $m = $this->getModifies();
-        $s = sprintf('
-            SELECT
+        $s = 'SELECT
                 `id`, `path`, `name`
             FROM
                 `files`
@@ -531,13 +528,15 @@
                 `lang`="%s" AND
                 `status` is NULL AND
                 `revision` is NULL
-                %s',
+                %s';
+
+        $params = array(
             $project,
             $vcsLang,
             $limit
         );

-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array();
         while ($a = $r->fetch_object()) {
@@ -563,18 +562,19 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 count(*) as total
              FROM
                 `pendingPatch`
              WHERE
                 `project`="%s" AND
-                (`lang`="%s" OR `lang`=\'en\')',
+                (`lang`="%s" OR `lang`=\'en\')';
+        $params = array(
             $project,
             $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);
+
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return $a->total;
@@ -593,11 +593,12 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT `id`, CONCAT(`lang`, `path`) AS `path`, `name`, `posted_by` AS \'by\', `uniqID`, `date` FROM `pendingPatch` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\')',
-            $project, $vcsLang
+        $s = 'SELECT `id`, CONCAT(`lang`, `path`) AS `path`, `name`, `posted_by` AS \'by\', `uniqID`, `date` FROM `pendingPatch` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\')';
+        $params = array(
+            $project,
+            $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array();
         while ($row = $r->fetch_assoc()) {
@@ -619,12 +620,14 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT * FROM `work` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\') AND `name`=\'-\' ORDER BY id ASC',
-            $project, $vcsLang
+        $s = 'SELECT * FROM `work` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\') AND `name`=\'-\' ORDER BY id ASC';
+        $params = array(
+            $project,
+            $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);

+        $r = $this->conn->query($s, $params);
+
         if( $r->num_rows == 0 ) {
             return false;
         }
@@ -648,11 +651,13 @@
         $project = $am->project;

         // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-        $s = sprintf(
-            'SELECT count(*) as total FROM `pendingCommit` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\') AND `name` != \'-\'',
-            $project, $vcsLang
+        $s = 'SELECT count(*) as total FROM `pendingCommit` WHERE `project`="%s" AND (`lang`="%s" OR `lang`=\'en\') AND `name` != \'-\'';
+        $params = array(
+            $project,
+            $vcsLang
         );
-        $r = DBConnection::getInstance()->query($s);
+
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         return $a->total;
@@ -673,8 +678,7 @@
         /**** We start by the work in progress module ****/

         // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 CONCAT(`lang`, `path`, `name`) as filePath,
                 `user`,
                 `date`,
@@ -686,11 +690,12 @@
                 `lang` = "%s" AND
                 `project`  = "%s"
                 ORDER BY
-                type, date',
+                type, date';
+        $params = array(
             $lang,
             $project
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $workInProgress = Array('nb'=>0,'data'=>Array());

@@ -705,8 +710,7 @@
         /**** then, by the patches for review module ****/

         // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 CONCAT(`lang`, `path`, `name`) as filePath,
                 `user`,
                 `date`,
@@ -718,11 +722,12 @@
                 `lang` = "%s" AND
                 `project`  = "%s"
                 ORDER BY
-                type, date',
+                type, date';
+        $params = array(
             $lang,
             $project
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $PatchesForReview = Array('nb'=>0,'data'=>Array());

@@ -759,8 +764,7 @@
         if( $module == 'PatchesForReview' ) {

             // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-            $s = sprintf(
-                'SELECT
+            $s = 'SELECT
                     `id`,
                     `name` as patchName,
                     `user`,
@@ -768,10 +772,11 @@
                  FROM
                     `patches`
                  WHERE
-                    `project`  = "%s"',
+                    `project`  = "%s"';
+            $params = array(
                 $project
             );
-            $r = DBConnection::getInstance()->query($s);
+            $r = $this->conn->query($s, $params);

             $patches = Array();

@@ -786,6 +791,11 @@
                 $node[$a->user][$a->patchName]['folders'] = array();
             }

+            // Bugfix: if we don't have any patches, the query below will fail.
+            // So we return immediately if that's the case.
+            if (empty($patches))
+                return '[]';
+
             // Do we need to display EN Work ?
             if( isset($am->userConf->main->displayENWork) && $am->userConf->main->displayENWork === true ) {
                 $langFilter = '(`lang` = "%s" OR `lang`="en")';
@@ -794,8 +804,7 @@
             }

             // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-            $s = sprintf(
-                'SELECT
+            $s = 'SELECT
                     *
                  FROM
                     `work`
@@ -804,14 +813,15 @@
                     '.$langFilter.' AND
                     `name`   != "-"  AND
                     `module`  = "%s" AND
-                    `patchID` IN (%s)',
+                    `patchID` IN (%s)';
+            $params = array(
                 $project,
                 $vcsLang,
                 $module,
-                implode(",", array_keys($patches))
+                implode(",", array_map('intval', array_keys($patches)))
             );

-            $r = DBConnection::getInstance()->query($s);
+            $r = $this->conn->query($s, $params);

             while ($a = $r->fetch_object()) {

@@ -905,8 +915,7 @@


             // We exclude item witch name == '-' ; this is new folder ; We don't display it.
-            $s = sprintf(
-                'SELECT
+            $s = 'SELECT
                     *
                  FROM
                     `work`
@@ -915,12 +924,13 @@
                     '.$langFilter.' AND
                     `name`   != "-" AND
                     `module`  = "%s" AND
-                    `patchID` IS NULL',
+                    `patchID` IS NULL';
+            $params = array(
                 $project,
                 $vcsLang,
                 $module
             );
-            $r = DBConnection::getInstance()->query($s);
+            $r = $this->conn->query($s, $params);

             while ($a = $r->fetch_object()) {

@@ -1009,12 +1019,12 @@
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT `path`, `name` FROM `files` WHERE `path`
-             LIKE \'/reference/%s/%%\' AND `lang`="%s" AND `project`="%s" ORDER BY `path`, `name`',
+        $s = 'SELECT `path`, `name` FROM `files` WHERE `path`
+             LIKE \'/reference/%s/%%\' AND `lang`="%s" AND `project`="%s" ORDER BY `path`, `name`';
+        $params = array(
             $ext, $vcsLang, $project
         );
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $node = array(); $i=0;
         while ($a = $r->fetch_object()) {
@@ -1035,7 +1045,6 @@
      */
     public function getFileByXmlID($lang, $id)
     {
-        $db = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

         // If user forget ".php" at this end of the permlink, this is "function" how is search into DB.
@@ -1045,20 +1054,20 @@
         }

         // We start by searching file witch only this ID
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `lang`, `path`, `name`
              FROM
                  `files`
              WHERE
                  `project`="%s" AND
                  `lang` = "%s" AND
-                 `xmlid` = "%s"',
+                 `xmlid` = "%s"';
+        $params = array(
             $project,
             $lang,
             $id
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);
         $nb = $r->num_rows;

         if( $nb >= 1 ) {
@@ -1066,20 +1075,20 @@
         } else {

             // We now search file which contain this ID
-            $s = sprintf(
-                'SELECT
+            $s = 'SELECT
                     `lang`, `path`, `name`
                 FROM
                     `files`
                 WHERE
                     `project`="%s" AND
                     `lang` = "%s" AND
-                    `xmlid` LIKE "%%%s%%"',
+                    `xmlid` LIKE "%%%s%%"';
+            $params = array(
                 $project,
                 $lang,
                 $id
             );
-            $r = $db->query($s);
+            $r = $this->conn->query($s, $params);
             $nb = $r->num_rows;

             if( $nb == 0 ) {
@@ -1100,19 +1109,18 @@
     public function getFileByKeyword($key)
     {
         $am      = AccountManager::getInstance();
-        $db      = DBConnection::getInstance();
         $vcsLang = $am->vcsLang;
         $project = $am->project;

-        $s = sprintf(
-            'SELECT `lang`, `path`, `name` FROM `files` WHERE `project`="%s" AND  (`lang`="%s" OR `lang`=\'en\')
-             AND ( `name` LIKE \'%%%s%%\' OR `xmlid` LIKE \'%%%s%%\' ) ORDER BY `lang`, `path`, `name`',
+        $s = 'SELECT `lang`, `path`, `name` FROM `files` WHERE `project`="%s" AND  (`lang`="%s" OR `lang`=\'en\')
+             AND ( `name` LIKE \'%%%s%%\' OR `xmlid` LIKE \'%%%s%%\' ) ORDER BY `lang`, `path`, `name`';
+        $params = array(
             $project,
             $vcsLang,
-            $db->real_escape_string($key),
-            $db->real_escape_string($key)
+            $key,
+            $key
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         $files = array();
         while ($a = $r->fetch_object()) {
@@ -1235,12 +1243,16 @@
     {

         // Save in DB
-        $s = "SELECT id, value FROM staticValue WHERE
-             `project`='".AccountManager::getInstance()->project."' AND
-             `type`='".$type."' AND
-             `field`= '".$field."'
-             ";
-        $r = DBConnection::getInstance()->query($s);
+        $s = 'SELECT id, value FROM staticValue WHERE
+             `project` = "%s" AND
+             `type` = "%s" AND
+             `field`= "%s"';
+        $params = array(
+            AccountManager::getInstance()->project,
+            $type,
+            $field
+        );
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 ) {
             return false;

Modified: web/doc-editor/trunk/php/RepositoryManager.php
===================================================================
--- web/doc-editor/trunk/php/RepositoryManager.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/RepositoryManager.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -14,6 +14,8 @@
 {
     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -61,6 +63,7 @@

     private function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }

     public function getAvailableLanguage()
@@ -143,13 +146,12 @@
      */
     public function cleanUp()
     {
-        $db      = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

         // We cleanUp the database before update vcs and apply again all tools
         foreach (array('files', 'translators', 'errorfiles') as $table) {
-            $db->query("DELETE FROM `$table` WHERE `project`='$project'");
-            $db->query("OPTIMIZE TABLE `$table` ");
+            $this->conn->query("DELETE FROM `$table` WHERE `project`='%s'", array($project));
+            $this->conn->query("OPTIMIZE TABLE `$table` ", array());
         }
     }

@@ -163,7 +165,7 @@
     {
         $project = AccountManager::getInstance()->project;

-        DBConnection::getInstance()->query("DELETE FROM `failedBuildLog` WHERE `project`= '$project' AND `date` < date_sub(now(),interval 1 month)");
+        $this->conn->query("DELETE FROM `failedBuildLog` WHERE `project`= '%s' AND `date` < date_sub(now(),interval 1 month)", array($project));
     }


@@ -172,7 +174,6 @@
      */
     public function updateFolder($path)
     {
-        $db      = DBConnection::getInstance();
         $rf      = RepositoryFetcher::getInstance();
         $am      = AccountManager::getInstance();
         $project = $am->project;
@@ -375,14 +376,12 @@
      */
     public function addProgressWork($file, $revision, $en_revision, $reviewed, $maintainer, $type='update')
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $anonymousIdent = $am->anonymousIdent;
         $project  = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 id
              FROM
                 `work`
@@ -390,23 +389,24 @@
                 `project`="%s" AND
                 `lang`="%s" AND
                 `path`="%s" AND
-                `name`="%s"',
+                `name`="%s"';
+        $params = array(
             $project,
             $file->lang,
             $file->path,
             $file->name
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         // We insert or update the work table
         if ($r->num_rows == 0) {

-            $s = sprintf(
-                'INSERT into
+            $s = 'INSERT into
                     `work`
                     (`project`, `lang`, `path`, `name`, `revision`, `en_revision`, `reviewed`, `maintainer`, `user`, `anonymousIdent`, `date`, `type`)
                  VALUES
-                    ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", now(), "%s")',
+                    ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", now(), "%s")';
+            $params = array(
                 $project,
                 $file->lang,
                 $file->path,
@@ -419,15 +419,14 @@
                 $anonymousIdent,
                 $type
             );
-            $db->query($s);
-            $fileID = $db->insert_id();
+            $this->conn->query($s, $params);
+            $fileID = $this->conn->insert_id();

         } else {

             $a = $r->fetch_object();

-            $s = sprintf(
-                'UPDATE
+            $s = 'UPDATE
                     `work`
                  SET
                     `revision`="%s",
@@ -440,7 +439,8 @@
                     `module`="workInProgress",
                     `patchID` = NULL
                  WHERE
-                    `id`="%s"',
+                    `id`="%s"';
+            $params = array(
                 $revision,
                 $en_revision,
                 $reviewed,
@@ -449,7 +449,7 @@
                 $am->anonymousIdent,
                 $a->id
             );
-            $db->query($s);
+            $this->conn->query($s, $params);
             $fileID = $a->id;
         }

@@ -463,22 +463,24 @@
      */
     public function delWork($files)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $project  = $am->project;

         while( list($path, $data) = each($files))
         {
-            $query = sprintf('DELETE FROM `work`
+            $query = 'DELETE FROM `work`
                 WHERE
                     `project` = "%s" AND
                     `lang` = "%s" AND
                     `path` = "%s" AND
-                    `name` = "%s"',
+                    `name` = "%s"';
+            $params = array(
                 $project,
-                $data->lang, $data->path, $data->name
+                $data->lang,
+                $data->path,
+                $data->name
             );
-            $db->query($query);
+            $this->conn->query($query, $params);
         }
     }

@@ -491,32 +493,30 @@
      */
     public function moveToPatch($patchID, $filesID)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;

-        $s = sprintf(
-             'SELECT
+        $s = 'SELECT
                  `name`
               FROM
                  `patches`
               WHERE
                  `project` = "%s" AND
                  `id`      = "%s" AND
-                 `user`    = "%s"',
+                 `user`    = "%s"';
+        $params = array(
              $project,
              $patchID,
              $vcsLogin
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

-        if( $db->affected_rows() == 0 ) {
+        if( $this->conn->affected_rows() == 0 ) {
             return 'Patches unknow for this project or for this user';
         }

-        $s = sprintf(
-            'UPDATE
+        $s = 'UPDATE
                 `work`
              SET
                 `patchID` = "%s",
@@ -524,16 +524,16 @@
             WHERE
                 `project` = "%s" AND
                 `user`    = "%s" AND
-                `id` IN (%s)',
-
+                `id` IN (%s)';
+        $params = array(
             $patchID,
             $project,
             $vcsLogin,
-            $filesID
+            implode(',', array_map('intval', explode(',', $filesID)))
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

-        if( $db->affected_rows() < 1 ) {
+        if( $this->conn->affected_rows() < 1 ) {
             return 'Error. Is this file(s) is(are) own by you ?';
         } else {
             return true;
@@ -549,13 +549,11 @@
      */
     public function moveToWork($filesID)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;

-        $s = sprintf(
-            'UPDATE
+        $s = 'UPDATE
                 `work`
              SET
                 `patchID` = NULL,
@@ -563,15 +561,16 @@
             WHERE
                 `project` = "%s" AND
                 `user`    = "%s" AND
-                `id` IN (%s)',
+                `id` IN (%s)';

+        $params = array(
             $project,
             $vcsLogin,
-            $filesID
+            implode(',', array_map('intval', explode(',', $filesID)))
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

-        if( $db->affected_rows() < 1 ) {
+        if( $this->conn->affected_rows() < 1 ) {
             return 'Error. Is this file(s) is(are) own by you ?';
         } else {
             return true;
@@ -587,7 +586,6 @@
      */
     public function deletePatch($patchID)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;
@@ -609,31 +607,31 @@
         }

         // We start by change files for this patch.
-        $s = sprintf(
-            'UPDATE
+        $s = 'UPDATE
                 `work`
             SET
                 `patchID` = NULL,
                 `module`  = "workInProgress"
             WHERE
                 `project` = "%s" AND
-                `patchID` =  %s',
+                `patchID` =  %d';
+        $params = array(
             $project,
             $patchID
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

         // We now delete this patch
-        $s = sprintf(
-            'DELETE FROM
+        $s = 'DELETE FROM
                 `patches`
             WHERE
                 `project` = "%s" AND
-                `id`      =  %s',
+                `id`      =  %d';
+        $params = array(
             $project,
             $patchID
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

         return true;
     }
@@ -646,21 +644,20 @@
      */
     public function getPatchInfo($patchID)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `patches`
             WHERE
-                `id` = "%s"',
+                `id` = "%s"';
+        $params = array(
             $patchID
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 ) {
             return false;
@@ -677,26 +674,24 @@
      */
     public function createPatch($name)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;

-        $s = sprintf(
-            'INSERT INTO
+        $s = 'INSERT INTO
                 `patches`
                 (`project`, `name`, `user`, `anonymousIdent`, `date`)
             VALUES
-                ("%s", "%s", "%s", "%s", %s)',
+                ("%s", "%s", "%s", "%s", now())';
+        $params = array(
             $project,
             $name,
             $vcsLogin,
-            $am->anonymousIdent,
-            "now()"
+            $am->anonymousIdent
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

-        return $db->insert_id();
+        return $this->conn->insert_id();

     }

@@ -708,28 +703,27 @@
      */
     public function modPatch($patchID, $name)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;

-        $s = sprintf(
-            'UPDATE
+        $s = 'UPDATE
                 `patches`
              SET
                 `name` = "%s"
              WHERE
                 `project` = "%s" AND
                 `user`    = "%s" AND
-                `id`      = %s',
+                `id`      = %d';
+        $params = array(
             $name,
             $project,
             $vcsLogin,
             $patchID
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

-        if( $db->affected_rows() != 1 ) {
+        if( $this->conn->affected_rows() != 1 ) {
             return 'Error';
         } else {
             return true;
@@ -744,7 +738,6 @@
      */
     public function addPendingDelete($file)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $vcsLogin = $am->vcsLogin;
         $project  = $am->project;
@@ -752,12 +745,12 @@

         $date = @date("Y-m-d H:i:s");

-        $s = sprintf(
-            'INSERT INTO
+        $s = 'INSERT INTO
                 `work`
                 (`project`, `lang`, `path`, `name`, `revision`, `en_revision`, `reviewed`, `maintainer`, `user`, `anonymousIdent`, `date`, `type`)
             VALUES
-                ("%s", "%s", "%s", "%s", "-", "-", "-", "-", "%s", "%s", "%s", "delete")',
+                ("%s", "%s", "%s", "%s", "-", "-", "-", "-", "%s", "%s", "%s", "delete")';
+        $params = array(
             $project,
             $file->lang,
             $file->path,
@@ -766,10 +759,10 @@
             $anonymousIdent,
             $date
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

         return array(
-            'id'   => $db->insert_id(),
+            'id'   => $this->conn->insert_id(),
             'by'   => Array("user"=> $vcsLogin, "anonymousIdent" => $anonymousIdent),
             'date' => $date
         );
@@ -1144,26 +1137,25 @@
      */
     public function SetFileProgress($idDB, $progress)
     {
-        $db       = DBConnection::getInstance();
         $am       = AccountManager::getInstance();
         $project  = $am->project;
         $vcsLogin = $am->vcsLogin;
         $anonymousIdent = $am->anonymousIdent;

         // We start by get the current row
-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `user`,
                 `anonymousIdent`
              FROM
                 `work`
              WHERE
                 `project` = "%s" AND
-                `id`      = %s',
+                `id`      = %d';
+        $params = array(
             $project,
             $idDB
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 ) {
             return 'file_dont_exist_in_workInProgress';
@@ -1176,23 +1168,23 @@
             }
         }

-        $s = sprintf(
-            'UPDATE
+        $s = 'UPDATE
                 `work`
              SET
-                `progress` = %s
+                `progress` = "%s"
              WHERE
                 `project`        = "%s" AND
                 `user`           = "%s" AND
                 `anonymousIdent` = "%s" AND
-                `id`             = %s',
+                `id`             = %d';
+        $params = array(
             $progress,
             $project,
             $vcsLogin,
             $anonymousIdent,
             $idDB
         );
-        $db->query($s);
+        $this->conn->query($s, $params);

         return true;
     }
@@ -1206,7 +1198,6 @@
      */
     public function clearLocalChange($type, $file)
     {
-        $db      = DBConnection::getInstance();
         $am      = AccountManager::getInstance();
         $appConf = $am->appConf;
         $project = $am->project;
@@ -1227,8 +1218,7 @@
         $return['errorFirst'] = 0;

         // We need select row from work table
-        $s = sprintf("
-              SELECT
+        $s = "SELECT
                  `id`,
                  `user`,
                  `anonymousIdent`
@@ -1238,14 +1228,15 @@
                  `project`        = '%s' AND
                  `lang`           = '%s' AND
                  `path`           = '%s' AND
-                 `name`           = '%s'",
+                 `name`           = '%s'";
+        $params = array(
               $project,
               $lang,
               $path,
               $name
         );

-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 ) {

@@ -1272,10 +1263,10 @@
         $return['oldIdDB'] = $a->id;

         // We need delete row from work table
-        $s = 'DELETE FROM `work` WHERE `id`="' .$a->id. '"';
+        $s = 'DELETE FROM `work` WHERE `id`=%d';
+        $params = array($a->id);
+        $this->conn->query($s, $params);

-        $db->query($s);
-
         // If type == delete, we stop here and return
         if ($type == 'delete') {
             return $return;
@@ -1309,8 +1300,9 @@

         // We need reload original information
         $s = "SELECT `revision`, `en_revision`, `maintainer`, `reviewed` FROM `files`
-              WHERE `project`='$project' AND `lang`='$lang' AND `path`='$path' AND `name`='$name'";
-        $r = $db->query($s);
+              WHERE `project`='%s' AND `lang`='%s' AND `path`='%s' AND `name`='%s'";
+        $params = array($project, $lang, $path, $name);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         $return['rev']        = $a->revision;
@@ -1358,7 +1350,6 @@
     public function updateFileInfo($files)
     {

-        $db = DBConnection::getInstance();
         $am = AccountManager::getInstance();

         foreach ($files as $file) {
@@ -1369,8 +1360,7 @@

             if ($file->lang == 'en') { // en file
                 // update EN file info
-                $s = sprintf(
-                    'UPDATE `files`
+                $s = 'UPDATE `files`
                         SET
                             `xmlid`    = "%s",
                             `revision` = "%s",
@@ -1380,24 +1370,25 @@
                             `project` = "%s" AND
                             `lang` = "%s" AND
                             `path` = "%s" AND
-                            `name` = "%s"',
+                            `name` = "%s"';
+                $params = array(
                     $info['xmlid'], $info['rev'], $size, $date, $am->project, $file->lang, $file->path, $file->name
                 );
-                $db->query($s);
+                $this->conn->query($s, $params);

                 // update LANG file info
-                $s = sprintf(
-                    'UPDATE `files`
+                $s = 'UPDATE `files`
                         SET
                             `en_revision` = "%s"
                         WHERE
                             `project` = "%s" AND
                             `lang` != "%s" AND
                             `path`  = "%s" AND
-                            `name`  = "%s"',
+                            `name`  = "%s"';
+                $params = array(
                     $info['rev'], $am->project, $file->lang, $file->path, $file->name
                 );
-                $db->query($s);
+                $this->conn->query($s, $params);

             } else { // lang file

@@ -1416,8 +1407,7 @@
                                - (intval((time() - $date)   / 86400));

                     // update LANG file info
-                    $s = sprintf(
-                        'UPDATE `files`
+                    $s = 'UPDATE `files`
                             SET
                                 `xmlid`      = "%s",
                                 `revision`   = "%s",
@@ -1433,12 +1423,13 @@
                                 `project` = "%s" AND
                                 `lang` = "%s" AND
                                 `path` = "%s" AND
-                                `name` = "%s"',
+                                `name` = "%s"';
+                    $params = array(
                         $info['xmlid'], $info['en-rev'], $enInfo['rev'], trim($info['reviewed']), $size, $date,
                         trim($info['maintainer']), trim($info['status']),   $size_diff,
                         $date_diff, $am->project, $file->lang, $file->path, $file->name
                     );
-                    $db->query($s);
+                    $this->conn->query($s, $params);

                     // Run the errorTools under this file
                     $tmpFile[0]['en_content']   = $en->read(true);
@@ -1455,8 +1446,7 @@
                 {

                     // update LANG file info
-                    $s = sprintf(
-                        'UPDATE `files`
+                    $s = 'UPDATE `files`
                             SET
                                 `xmlid`      = "%s",
                                 `revision`   = "%s",
@@ -1472,12 +1462,13 @@
                                 `project` = "%s" AND
                                 `lang` = "%s" AND
                                 `path` = "%s" AND
-                                `name` = "%s"',
+                                `name` = "%s"';
+                    $params = array(
                         $info['xmlid'], $info['en-rev'], 0, trim($info['reviewed']), $size, $date,
                         trim($info['maintainer']), trim($info['status']),   0,
                         0, $am->project, $file->lang, $file->path, $file->name
                     );
-                    $db->query($s);
+                    $this->conn->query($s, $params);

                     // Run the errorTools under this file
                         // If the EN file don't exist, it's because we have a file witch only exist into LANG, for example, translator.xml
@@ -1504,7 +1495,6 @@
     public function updateTranslatorInfo()
     {
         $ExistingLanguage = $this->getExistingLanguage();
-        $db = DBConnection::getInstance();
         $am = AccountManager::getInstance();

         foreach ($ExistingLanguage as $lang) {
@@ -1547,26 +1537,26 @@
                         $person = array_merge($default, $person);

                         // We try to remove this record if it exist
-                        $query = sprintf(
-                            'DELETE FROM `translators` WHERE `project`="%s" AND `lang`="%s" AND `nick`="%s"',
+                        $query = 'DELETE FROM `translators` WHERE `project`="%s" AND `lang`="%s" AND `nick`="%s"';
+                        $params = array(
                             $am->project,
                             $lang,
-                            $db->real_escape_string($person['nick'])
+                            $person['nick']
                         );
-                        $db->query($query);
+                        $this->conn->query($query, $params);

-                        $query = sprintf(
-                            'INSERT INTO `translators` (`project`, `lang`, `nick`, `name`, `mail`, `vcs`, `editor`)
-                             VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s")',
+                        $query = 'INSERT INTO `translators` (`project`, `lang`, `nick`, `name`, `mail`, `vcs`, `editor`)
+                             VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s")';
+                         $params = array(
                             $am->project,
                             $lang,
-                            $db->real_escape_string($person['nick']),
-                            $db->real_escape_string($name),
-                            $db->real_escape_string($person['email']),
-                            $db->real_escape_string($person['vcs']),
-                            $db->real_escape_string($person['editor'])
+                            $person['nick'],
+                            $name,
+                            $person['email'],
+                            $person['vcs'],
+                            $person['editor']
                         );
-                        $db->query($query);
+                        $this->conn->query($query, $params);

                     }
                 }
@@ -1678,13 +1668,13 @@
                 $lang_file = $appConf[$project]['vcs.path'] .$lang .$f->path .$f->name;

                 if (!@is_file($en_file)) {
-                    $query = sprintf(
-                        'INSERT INTO `files` (`project`, `lang`, `path`, `name`, `status`)
-                         VALUES ("%s", "%s", "%s", "%s", "%s")',
+                    $query = 'INSERT INTO `files` (`project`, `lang`, `path`, `name`, `status`)
+                         VALUES ("%s", "%s", "%s", "%s", "%s")';
+                    $params = array(
                         $project,
                         $lang, $f->path, $f->name, 'NotInEN'
                     );
-                    DBConnection::getInstance()->query($query);
+                    $this->conn->query($query, $params);
                 }
             }

@@ -1704,7 +1694,6 @@
      */
     public function applyRevCheck($path = '/', $revType='new', $revLang='all')
     {
-        $db      = DBConnection::getInstance();
         $am      = AccountManager::getInstance();
         $appConf = $am->appConf;
         $project = $am->project;
@@ -1764,34 +1753,34 @@
                 if( $revType == 'update' )
                 {
                     //... table `files`
-                    $query = sprintf(
-                            'DELETE FROM `files`
+                    $query = 'DELETE FROM `files`
                              WHERE `project`="%s" AND
-                                   `lang`="%s" AND
+                                   `lang`="en" AND
                                    `path`="%s" AND
-                                   `name`="%s"',
-                            $am->project, 'en', $f->path, $f->name
+                                   `name`="%s"';
+                    $params = array(
+                            $am->project, $f->path, $f->name
                             );
-                    $db->query($query);
+                    $this->conn->query($query, $params);

                     //... table `errorfiles`
-                    $query = sprintf(
-                            'DELETE FROM `errorfiles`
+                    $query = 'DELETE FROM `errorfiles`
                              WHERE `project`="%s" AND
-                                   `lang`="%s" AND
+                                   `lang`="en" AND
                                    `path`="%s" AND
-                                   `name`="%s"',
-                            $am->project, 'en', $f->path, $f->name
+                                   `name`="%s"';
+                    $params = array(
+                            $am->project, $f->path, $f->name
                             );
-                    $db->query($query);
+                    $this->conn->query($query, $params);
                 }

                 // Sql insert.
-                $query = sprintf(
-                    'INSERT INTO `files` (`project`, `lang`, `xmlid`, `path`, `name`, `revision`, `size`, `mdate`, `maintainer`, `status`, `check_oldstyle`,  `check_undoc`, `check_roleerror`, `check_badorder`, `check_noseealso`, `check_noreturnvalues`, `check_noparameters`, `check_noexamples`, `check_noerrors`)
-                        VALUES ("%s", "%s", "%s", "%s", "%s", "%s", %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',
+                $query = 'INSERT INTO `files` (`project`, `lang`, `xmlid`, `path`, `name`, `revision`, `size`, `mdate`, `maintainer`, `status`, `check_oldstyle`,  `check_undoc`, `check_roleerror`, `check_badorder`, `check_noseealso`, `check_noreturnvalues`, `check_noparameters`, `check_noexamples`, `check_noerrors`)
+                        VALUES ("%s", "en", "%s", "%s", "%s", "%s", "%s", "%s", NULL, NUL, "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")';
+                $params = array(
                     $am->project,
-                    'en', $xmlid, $f->path, $f->name, $en_revision, $en_size, $en_date, 'NULL', 'NULL',
+                    $xmlid, $f->path, $f->name, $en_revision, $en_size, $en_date,
                     $ToolsCheckDocResult['check_oldstyle'],
                     $ToolsCheckDocResult['check_undoc'],
                     $ToolsCheckDocResult['check_roleerror'],
@@ -1802,7 +1791,7 @@
                     $ToolsCheckDocResult['check_noexamples'],
                     $ToolsCheckDocResult['check_noerrors']
                 );
-                $db->query($query);
+                $this->conn->query($query, $params);

                 $error = new ToolsError();
                 $error->setParams($infoEN['content'], '', 'en', $f->path, $f->name, '');
@@ -1841,26 +1830,26 @@
                     if( $revType == 'update' )
                     {
                         // ... `file`
-                        $query = sprintf(
-                                'DELETE FROM `files`
+                        $query = 'DELETE FROM `files`
                                  WHERE `project`="%s" AND
                                        `lang`="%s" AND
                                        `path`="%s" AND
-                                       `name`="%s"',
+                                       `name`="%s"';
+                        $params = array(
                                 $project, $lang, $lang_file->path, $lang_file->name
                                 );
-                        $db->query($query);
+                        $this->conn->query($query, $params);

                         //... table `errorfiles`
-                        $query = sprintf(
-                                'DELETE FROM `errorfiles`
+                        $query = 'DELETE FROM `errorfiles`
                                  WHERE `project`="%s" AND
                                        `lang`="%s" AND
                                        `path`="%s" AND
-                                       `name`="%s"',
+                                       `name`="%s"';
+                        $params = array(
                                 $project, $lang, $lang_file->path, $lang_file->name
                                 );
-                        $db->query($query);
+                        $this->conn->query($query, $params);
                     }

                     if ( $lang_file->exist() ) {
@@ -1879,16 +1868,16 @@
                         $xmlid      = ($infoLANG['xmlid']      == 'NULL') ? 'NULL' : $infoLANG['xmlid'];
                         $reviewed   = ($infoLANG['reviewed']   == 'NULL') ? 'NULL' : $infoLANG['reviewed'];

-                        $query = sprintf(
-                            'INSERT INTO `files` (`project`, `lang`, `xmlid`, `path`, `name`, `revision`, `en_revision`, `reviewed`, `size`, `size_diff`, `mdate`, `mdate_diff`, `maintainer`, `status`)
-                                VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", %s, %s, %s, %s, "%s", "%s")',
+                        $query = 'INSERT INTO `files` (`project`, `lang`, `xmlid`, `path`, `name`, `revision`, `en_revision`, `reviewed`, `size`, `size_diff`, `mdate`, `mdate_diff`, `maintainer`, `status`)
+                                VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")';
+                         $params = array(
                             $project,
                             $lang, $xmlid, $lang_file->path, $lang_file->name,
                             $revision, $en_revision, $reviewed,
                             $size, $size_diff, $date, $date_diff,
                             $maintainer, $status
                         );
-                        $db->query($query);
+                        $this->conn->query($query, $params);

                         // Check for error in this file ONLY if this file is uptodate
                         if ($revision == $en_revision &&  $revision != 0 ) {
@@ -1901,16 +1890,16 @@
                             $error->saveError();
                         }
                     } else {
-                        $query = sprintf(
-                            'INSERT INTO `files` (`project`, `lang`, `path`, `name`, `size`)
-                                VALUES ("%s", "%s", "%s", "%s", %s)',
+                        $query = 'INSERT INTO `files` (`project`, `lang`, `path`, `name`, `size`)
+                                VALUES ("%s", "%s", "%s", "%s", "%s")';
+                        $params = array(
                             $project,
                             $lang,
                             $lang_file->path,
                             $lang_file->name,
                             $en_size
                         );
-                        $db->query($query);
+                        $this->conn->query($query, $params);
                     }
                 }
             }
@@ -1931,16 +1920,17 @@
     {

         for ($i = 0; $i < count($files); $i++) {
-            $query = sprintf('DELETE FROM files
+            $query = 'DELETE FROM files
                 WHERE
                     `project` = "%s" AND
                     `lang` = "%s" AND
                     `path` = "%s" AND
-                    `name` = "%s"',
+                    `name` = "%s"';
+            $params = array(
                 AccountManager::getInstance()->project,
                 $files[$i]->lang, $files[$i]->path, $files[$i]->name
             );
-            DBConnection::getInstance()->query($query);
+            $this->conn->query($query, $params);
         }
     }

@@ -1955,23 +1945,29 @@
      */
     public function setStaticValue($type, $field, $value, $forceNew=false)
     {
-        $db      = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

         $s = "SELECT id FROM staticValue WHERE
-              `project` = '".$project."' AND
-              `type`    = '".$type."' AND
-              `field`   = '".$field."'
+              `project` = '%s' AND
+              `type`    = '%s' AND
+              `field`   = '%s'
              ";
-        $r = $db->query($s);
+        $params = array(
+            $project,
+            $type,
+            $field
+        );
+        $r = $this->conn->query($s, $params);

         if( $r->num_rows == 0 || $forceNew) {
-            $s = "INSERT INTO staticValue (`project`, `type`, `field`, `value`, `date`) VALUES ('".$project."' , '".$type."' , '".$field."', '".$db->real_escape_string($value)."', now())";
-            $db->query($s);
+            $s = "INSERT INTO staticValue (`project`, `type`, `field`, `value`, `date`) VALUES ('%s', '%s', '%s', '%s', now())";
+            $params = array($project, $type, $field, $value);
+            $this->conn->query($s, $params);
         } else {
             $a = $r->fetch_object();
-            $s = "UPDATE staticValue SET `value`= '".$db->real_escape_string($value)."', `date`=now() WHERE `id`='".$a->id."'";
-            $db->query($s);
+            $s = "UPDATE staticValue SET `value`= '%s', `date`=now() WHERE `id`=%d";
+            $params = array($value, $a->id);
+            $this->conn->query($s, $params);
         }
     }


Modified: web/doc-editor/trunk/php/ToolsCheckDoc.php
===================================================================
--- web/doc-editor/trunk/php/ToolsCheckDoc.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/ToolsCheckDoc.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -10,12 +10,15 @@
  */
 class ToolsCheckDoc {

+    private $conn;
+
     /**
      * Initialise
      *
      */
     function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -27,9 +30,15 @@
      */
     function getCheckDocFiles($path, $errorType)
     {
-        $s = sprintf('SELECT name FROM `files` WHERE `lang`="en" AND `path`="%s" AND `%s`=1', $path, $errorType);
-        $r = DBConnection::getInstance()->query($s);
+        $errorTypes = array('check_oldstyle', 'check_undoc', 'check_roleerror', 'check_badorder', 'check_noseealso', 'check_noreturnvalues', 'check_noparameters', 'check_noexamples', 'check_noerrors');

+        if (!in_array($errorType, $errorTypes))
+            return array();
+
+        $s = 'SELECT name FROM `files` WHERE `lang`="en" AND `path`="%s" AND `%s`=1';
+        $params = array($path, $errorType);
+        $r = $this->conn->query($s, $params);
+
         $node = array();
         while ($row = $r->fetch_assoc()) {
             $node[] = $row;
@@ -69,7 +78,7 @@

                   ORDER BY path';

-        $r  = DBConnection::getInstance()->query($s);
+        $r  = $this->conn->query($s, array());
         $nb = $r->num_rows;
         $i = 0;
         while ($a = $r->fetch_object()) {

Modified: web/doc-editor/trunk/php/ToolsCheckEntities.php
===================================================================
--- web/doc-editor/trunk/php/ToolsCheckEntities.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/ToolsCheckEntities.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -25,6 +25,7 @@
     private $entityNames;
     private $entityUrls;

+    private $conn;

     /**
      * Initialise
@@ -52,6 +53,7 @@
             $this->supportedSchemes[] = 'ftp';
         }

+        $this->conn = DBConnection::getInstance();
     }

     public static function getInstance()
@@ -83,10 +85,10 @@
               FROM
                   `checkEntities`
               WHERE
-                  `project` = \''.$project.'\'
+                  `project` = "%s"
              ';
-
-        $r  = DBConnection::getInstance()->query($s);
+        $params = array($project);
+        $r  = $this->conn->query($s, $params);
         $nb = $r->num_rows;
         $i = 0;
         while ($a = $r->fetch_array()) {
@@ -107,7 +109,7 @@
     {
         $project = ProjectManager::getInstance()->project;

-        DBConnection::getInstance()->query('DELETE FROM `checkEntities` WHERE `project`="'.$project.'"');
+        $this->conn->query('DELETE FROM `checkEntities` WHERE `project`="%s"', array($project));
     }


@@ -169,15 +171,15 @@

                         $r = $this->checkUrl($num, $url);

-                        $query = sprintf(
-                            'INSERT INTO `checkEntities` (`project`, `entities`, `url`, `result`, `date`)
-                            VALUES ("%s", "%s", "%s", "%s", now())',
+                        $query = 'INSERT INTO `checkEntities` (`project`, `entities`, `url`, `result`, `date`)
+                            VALUES ("%s", "%s", "%s", "%s", now())';
+                        $params = array(
                             $project,
                             $name,
                             $url,
                             $r[0]
                         );
-                        DBConnection::getInstance()->query($query);
+                        $this->conn->query($query, $params);

                         exit();
                     }
@@ -202,15 +204,15 @@

                 $r = $this->checkUrl($num, $entityUrl);

-                $query = sprintf(
-                    'INSERT INTO `checkEntities` (`project`, `entities`, `url`, `result`, `date`)
-                    VALUES ("%s", "%s", "%s", "%s", now())',
+                $query = 'INSERT INTO `checkEntities` (`project`, `entities`, `url`, `result`, `date`)
+                    VALUES ("%s", "%s", "%s", "%s", now())';
+                $params = array(
                     $project,
                     $this->entityNames[$num],
                     $entityUrl,
                     $r[0]
                 );
-                DBConnection::getInstance()->query($query);
+                $this->conn->query($query, $params);
             }
             ++$num; // (for the count)
         }

Modified: web/doc-editor/trunk/php/ToolsError.php
===================================================================
--- web/doc-editor/trunk/php/ToolsError.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/ToolsError.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -59,14 +59,15 @@
      */
     private $errorStack;

+    private $conn;
+
     /**
      * Initialise the check
-     *
-     * @param resource $db Database connexion
      */
     function __construct()
     {
         $this->errorStack = array();
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -108,10 +109,10 @@
             $FileName = $nodes[$i]['name'];

             // Remove all row in errorfiles tables
-            $s = 'DELETE FROM errorfiles WHERE `project`=\''.$project.'\' AND lang=\''.$FileLang.'\' AND path=\''.$FilePath.'\' AND name=\''.$FileName.'\'';
+            $s = 'DELETE FROM errorfiles WHERE `project`="%s" AND lang="%s" AND path="%s" AND name="%s"';
+            $params = array($project, $FileLang, $FilePath, $FileName);
+            $this->conn->query($s, $params);

-            DBConnection::getInstance()->query($s);
-
             if( $FileLang != 'en' ) {
                 $this->setParams($nodes[$i]['en_content'], $nodes[$i]['lang_content'], $FileLang, $FilePath, $FileName, $nodes[$i]['maintainer']);
             } else {
@@ -172,14 +173,19 @@
                    `errorfiles`
                 WHERE
                    '.$type.'
-                   `project` = \''.$project.'\' AND
-                   `lang` = \''.$this->lang.'\' AND
-                   `path` = \''.$this->filePath.'\' AND
-                   `name` = \''.$this->fileName.'\'
+                   `project` = "%s" AND
+                   `lang` = "%s" AND
+                   `path` = "%s" AND
+                   `name` = "%s"
                ';
+        $params = array(
+            $project,
+            $this->lang,
+            $this->filePath,
+            $this->fileName
+        );
+        $r = $this->conn->query($s, $params);

-        $r = DBConnection::getInstance()->query($s);
-
         $return = array();

         while ($record = $r->fetch_object()) {
@@ -207,27 +213,27 @@
         $project = $am->project;

         if ( $am->userConf->error->skipNbLiteralTag ) {
-            $type = ' type != \'nbLiteralTag\' AND ';
+            $type = 'type != "nbLiteralTag" AND ';
         } else {
             $type = '';
         }

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 *
              FROM
                 `errorfiles`
              WHERE
-                %s
+                ' . $type . '
                 `project`=  "%s" AND
                 `lang`   =  "%s" AND
-                `type`   != "-No error-"',
+                `type`   != "-No error-"';
+        $params = array(
             $type,
             $project,
             $this->lang
         );

-        $r    = DBConnection::getInstance()->query($s);
+        $r    = $this->conn->query($s, $params);
         $node = array();

         $alreadyNode = array();
@@ -296,21 +302,28 @@
      */
     function saveError()
     {
-        $db      = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

         if( count($this->errorStack) > 0 ) {

-            $sql = 'INSERT INTO errorfiles (`project`, `lang`, `path`, `name`, `maintainer`, `value_en`,`value_lang`,`type`) VALUES';
-            $pattern = ' ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s"),';
+            $sql = 'INSERT INTO errorfiles (`project`, `lang`, `path`, `name`, `maintainer`, `value_en`,`value_lang`,`type`) VALUES ';

+            $errorSQL = array();
+            $params = array();
             foreach ($this->errorStack as $error) {
-                $sql .= sprintf($pattern, $project, $this->lang, $this->filePath, $this->fileName, trim($this->maintainer,"'"), $db->real_escape_string($error['value_en']),
-                $db->real_escape_string($error['value_lang']), $error['type']);
+                $errorSQL[] = '("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")';
+
+                $params[] = $project;
+                $params[] = $this->lang;
+                $params[] = $this->filePath;
+                $params[] = $this->fileName;
+                $params[] = $this->maintainer;
+                $params[] = $error['value_en'];
+                $params[] = $error['value_lang'];
+                $params[] = $error['type'];
             }

-            $sql = substr($sql, 0, -1);
-            $db->query($sql);
+            $this->conn->query($sql . implode(', ', $error_sql), $params);

         }


Modified: web/doc-editor/trunk/php/TranslationStatistic.php
===================================================================
--- web/doc-editor/trunk/php/TranslationStatistic.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/TranslationStatistic.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -8,6 +8,8 @@
 {
     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -19,6 +21,7 @@

     private function __construct()
     {
+       $this->conn = DBConnection::getInstance();
     }

     /**
@@ -32,26 +35,31 @@
         $project = AccountManager::getInstance()->project;

         if( $lang == 'all' ) {
-            $where = '';
-            $groupBy = 'GROUP BY `lang`';
+            $s = 'SELECT
+                    COUNT(*) AS total,
+                    SUM(`size`) AS total_size,
+                    `lang`
+                  FROM
+                    `files`
+                  WHERE
+                    (`status` != "NotInEN" OR `status` IS NULL ) AND
+                    `project` = "%s"
+                  GROUP BY `lang`';
+            $params = array($project);
         } else {
-            $where = '`lang` = \''.$lang.'\' AND';
-            $groupBy = '';
-        }
-
-        $s = 'SELECT
+            $s = 'SELECT
                     COUNT(*) AS total,
                     SUM(`size`) AS total_size,
                     `lang`
-                FROM
+                  FROM
                     `files`
-                WHERE
-                    ' . $where . '
-                    ( `status` != "NotInEN" OR `status` IS NULL ) AND
-                    `project` = \''.$project.'\'
-                ' . $groupBy . '
-        ';
-        $res = DBConnection::getInstance()->query($s);
+                  WHERE
+                    `lang` = "%s" AND
+                    (`status` != "NotInEN" OR `status` IS NULL ) AND
+                    `project` = "%s"';
+            $params = array($lang, $project);
+        }
+        $res = $this->conn->query($s, $params);

         while( $r = $res->fetch_array() ) {
             $result[$r['lang']]['total']      = $r['total'];
@@ -73,27 +81,34 @@
         $result = array();

         if( $lang == 'all' ) {
-            $where = '';
-            $groupBy = 'GROUP BY `lang`';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    SUM(`size`)   AS total_size,
+                    `lang`
+                  FROM
+                    `files`
+                  WHERE
+                    `revision` = `en_revision` AND
+                    `revision` != 0 AND
+                    `project` = "%s"
+                  GROUP BY `lang`';
+            $params = array($project);
         } else {
-            $where = '`lang` = \''.$lang.'\' AND';
-            $groupBy = '';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    SUM(`size`) AS total_size,
+                    `lang`
+                  FROM
+                    `files`
+                  WHERE
+                    `lang` = "%s" AND
+                    `revision` = `en_revision` AND
+                    `revision` != 0 AND
+                    `project` = "%s"';
+            $params = array($lang, $project);
         }

-        $s = 'SELECT
-                COUNT(`name`) AS total,
-                SUM(`size`)   AS total_size,
-                `lang`
-            FROM
-                files
-            WHERE
-                ' . $where . '
-                `revision` = `en_revision` AND
-                `revision` != 0 AND
-                `project` = \''.$project.'\'
-            ' . $groupBy . '
-        ';
-        $res = DBConnection::getInstance()->query($s);
+        $res = $this->conn->query($s, $params);

         while( $r = $res->fetch_array() ) {
             $result[$r['lang']]['total']      = $r['total'];
@@ -115,29 +130,34 @@
         $result = array();

         if( $lang == 'all' ) {
-            $where = '';
-            $groupBy = 'GROUP BY `lang`';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    SUM(`size`)   AS total_size,
+                    `lang`
+                  FROM
+                    `files`
+                  WHERE
+                    `en_revision` != `revision` AND
+                    `size` is not NULL AND
+                    `project` = "%s"
+                  GROUP BY `lang`';
+            $params = array($project);
         } else {
-            $where = '`lang` = \''.$lang.'\' AND';
-            $groupBy = '';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    SUM(`size`) AS total_size,
+                    `lang`
+                  FROM
+                    `files`
+                  WHERE
+                    `lang` = "%s" AND
+                    `en_revision` != `revision` AND
+                    `size` is not NULL AND
+                    `project` = "%s"';
+            $params = array($lang, $project);
         }

-        $s = 'SELECT
-                COUNT(`name`) AS total,
-                SUM(`size`) AS total_size,
-                `lang`
-            FROM
-                `files`
-            WHERE
-                ' . $where . '
-                `en_revision` != `revision`
-            AND
-                `size` is not NULL
-            AND
-                `project` = \''.$project.'\'
-            ' . $groupBy . '
-        ';
-        $res = DBCOnnection::getInstance()->query($s);
+        $res = $this->conn->query($s, $params);

         while( $r = $res->fetch_array() ) {
             $result[$r['lang']]['total']      = $r['total'];
@@ -154,39 +174,48 @@
      */
     public function getNoTransFileCount($lang='all')
     {
-        $db      = DBConnection::getInstance();
         $project = AccountManager::getInstance()->project;

         $result = $summary = array();

-        if( $lang == 'all' ) {
-            $where = '`lang` != \'en\' AND';
-        } else {
-            $where = '`lang` = \''.$lang.'\' AND';
-        }
-
         // We get EN files

-       $s = 'SELECT * FROM files WHERE `lang`=\'en\' AND `project`=\''.$project.'\'';
+       $s = 'SELECT * FROM files WHERE `lang`="en" AND `project`="$project"';
+       $params = array($project);
+       $r = $this->conn->query($s, $params);

-       $r = $db->query($s);
-
        while( $a = $r->fetch_object() ) {
           $resultEN[$a->path.$a->name] = $a->size;
        }

-       $s = 'SELECT
-                 `path`, `name`, `lang`
-             FROM
-                 `files`
-             WHERE
-                 ' . $where . '
-                 `revision` is NULL AND
-                 `status` is NULL AND
-                 `project` = \''.$project.'\'
-       ';
+       if( $lang == 'all' ) {
+           $s = 'SELECT
+                     `path`, `name`, `lang`
+                 FROM
+                     `files`
+                 WHERE
+                     `lang` != "en" AND
+                     `revision` is NULL AND
+                     `status` is NULL AND
+                     `project` = "%s"
+           ';
+           $params = array($project);
+       }
+       else {
+           $s = 'SELECT
+                     `path`, `name`, `lang`
+                 FROM
+                     `files`
+                 WHERE
+                     `lang` = "%s" AND
+                     `revision` is NULL AND
+                     `status` is NULL AND
+                     `project` = "%s"
+           ';
+           $params = array($lang, $project);
+       }

-       $r = $db->query($s);
+       $r = $this->conn->query($s, $params);

        while( $a = $r->fetch_object() ) {
           $result[$a->lang][$a->path.$a->name] = 'exist';

Modified: web/doc-editor/trunk/php/TranslatorStatistic.php
===================================================================
--- web/doc-editor/trunk/php/TranslatorStatistic.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/TranslatorStatistic.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -8,6 +8,8 @@
 {
     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -19,6 +21,7 @@

     private function __construct()
     {
+        $this->conn = DBConnection::getInstance();
     }

     /**
@@ -32,22 +35,28 @@
         $project = AccountManager::getInstance()->project;

         if( $lang == 'all' ) {
-            $where = '';
+            $s =  'SELECT
+                     `id`, `nick`, `name`, `mail`, `vcs`, `lang`
+                   FROM
+                     `translators`
+                   WHERE
+                     `project` = "%s"
+            ';
+            $params = array($project);
         } else {
-            $where = 'AND `lang`="'.$lang.'"';
+            $s =  'SELECT
+                     `id`, `nick`, `name`, `mail`, `vcs`, `lang`
+                   FROM
+                     `translators`
+                   WHERE
+                     `project` = "%s" AND
+                     `lang` = "%s"
+            ';
+            $params = array($project, $lang);
         }

-        $s =  'SELECT
-                 `id`, `nick`, `name`, `mail`, `vcs`, `lang`
-               FROM
-                 `translators`
-               WHERE
-                 `project` = \''.$project.'\'
-               '.$where.'
-        ';
+        $result = $this->conn->query($s, $params);

-        $result = DBConnection::getInstance()->query($s);
-
         $persons = array();

         while ($r = $result->fetch_object()) {
@@ -72,27 +81,41 @@
         $project = AccountManager::getInstance()->project;

         if( $lang == 'all' ) {
-            $where = '';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    `maintainer`,
+                    `lang`
+                FROM
+                    `files`
+                WHERE
+                    `revision` = `en_revision` AND
+                    `project` = "%s"
+                GROUP BY
+                    `maintainer`
+                ORDER BY
+                    `maintainer`
+            ';
+            $params = array($project);
         } else {
-            $where = '`lang`="'.$lang.'" AND';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    `maintainer`,
+                    `lang`
+                FROM
+                    `files`
+                WHERE
+                    `lang` = "%s"
+                    `revision` = `en_revision` AND
+                    `project` = "%s"
+                GROUP BY
+                    `maintainer`
+                ORDER BY
+                    `maintainer`
+            ';
+            $params = array($lang, $project);
         }

-        $s = 'SELECT
-                COUNT(`name`) AS total,
-                `maintainer`,
-                `lang`
-            FROM
-                `files`
-            WHERE
-                ' . $where . '
-                `revision` = `en_revision` AND
-                `project` = \''.$project.'\'
-            GROUP BY
-                `maintainer`
-            ORDER BY
-                `maintainer`
-        ';
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $result = array();
         while ($a = $r->fetch_object()) {
@@ -112,30 +135,49 @@
         $project = AccountManager::getInstance()->project;

         if( $lang == 'all' ) {
-            $where = '';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    `maintainer`,
+                    `lang`
+                FROM
+                    `files`
+                WHERE
+                    ' . $where . '
+                    `en_revision` != `revision`
+                AND
+                    `size` is not NULL
+                AND
+                    `project` = "%s"
+                GROUP BY
+                    `maintainer`
+                ORDER BY
+                    `maintainer`
+            ';
+            $params = array($project);
         } else {
-            $where = '`lang`="'.$lang.'" AND';
+            $s = 'SELECT
+                    COUNT(`name`) AS total,
+                    `maintainer`,
+                    `lang`
+                FROM
+                    `files`
+                WHERE
+                    `lang` = "%s"
+                AND
+                    `en_revision` != `revision`
+                AND
+                    `size` is not NULL
+                AND
+                    `project` = "%s"
+                GROUP BY
+                    `maintainer`
+                ORDER BY
+                    `maintainer`
+            ';
+            $params = array($lang, $project);
         }

-        $s = 'SELECT
-                COUNT(`name`) AS total,
-                `maintainer`,
-                `lang`
-            FROM
-                `files`
-            WHERE
-                ' . $where . '
-                `en_revision` != `revision`
-            AND
-                `size` is not NULL
-            AND
-                `project` = \''.$project.'\'
-            GROUP BY
-                `maintainer`
-            ORDER BY
-                `maintainer`
-        ';
-        $r = DBConnection::getInstance()->query($s);
+        $r = $this->conn->query($s, $params);

         $result = array();
         while ($a = $r->fetch_object()) {
@@ -188,4 +230,4 @@
     }
 }

-?>
\ No newline at end of file
+?>

Modified: web/doc-editor/trunk/php/UserNotes.php
===================================================================
--- web/doc-editor/trunk/php/UserNotes.php	2011-06-22 18:10:50 UTC (rev 312386)
+++ web/doc-editor/trunk/php/UserNotes.php	2011-06-22 20:00:24 UTC (rev 312387)
@@ -1,13 +1,13 @@
 <?php
-/*
- *
- *
- */

+require_once dirname(__FILE__) . '/DBConnection.php';
+
 class UserNotes {

     private static $instance;

+    private $conn;
+
     public static function getInstance()
     {
         if (!isset(self::$instance)) {
@@ -19,27 +19,26 @@

     public function __construct()
     {
-
+        $this->conn = DBConnection::getInstance();
     }

     public function getNotes($file)
     {
         $am = AccountManager::getInstance();
-        $db = DBConnection::getInstance();
         $project = $am->project;

-        $s = sprintf(
-            'SELECT
+        $s = 'SELECT
                 `id`, `user`, `date`, `note`
              FROM
                 `userNotes`
              WHERE
-                `project` = "%s" AND `file`="%s"',
+                `project` = "%s" AND `file`="%s"';
+       $params = array(
             $project,
-            $db->real_escape_string($file) // must be like this : fr/reference/cairo/cairocontext/appendpath.xml
+            $file // must be like this : fr/reference/cairo/cairocontext/appendpath.xml
         );

-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);

         $infos = array();
         while ($a = $r->fetch_assoc()) {
@@ -53,52 +52,50 @@
     public function addNote($file, $note)
     {
         $am = AccountManager::getInstance();
-        $db = DBConnection::getInstance();
         $project  = $am->project;
         $vcsLogin = $am->vcsLogin;

-        $s = sprintf(
-            'INSERT INTO
+        $s = 'INSERT INTO
                 `userNotes`
                 (`project`, `file`, `user`, `date`, `note`)
              VALUES
-                ("%s", "%s", "%s", now(), "%s")',
+                ("%s", "%s", "%s", now(), "%s")';
+        $params = array(
             $project,
             $file,
             $vcsLogin,
-            $db->real_escape_string($note)
+            $note
         );

-        $db->query($s);
+        $this->conn->query($s, $params);
     }

     public function delNote($noteID)
     {
         $am = AccountManager::getInstance();
-        $db = DBConnection::getInstance();
         $vcsLogin = $am->vcsLogin;

         // A user can only delete his note. Not those of others users.
-        $s = sprintf(
-            'SELECT user FROM
+        $s = 'SELECT user FROM
                 `userNotes`
              WHERE
-                id = "%s"',
+                id = %d';
+        $params = array(
             $noteID
         );
-        $r = $db->query($s);
+        $r = $this->conn->query($s, $params);
         $a = $r->fetch_object();

         if( $a->user == $vcsLogin ) {
             // We can delete it
-            $s = sprintf(
-                'DELETE FROM
+            $s = 'DELETE FROM
                     `userNotes`
                  WHERE
-                    id = "%s"',
+                    id = %d';
+            $params = array(
                 $noteID
             );
-            $db->query($s);
+            $this->conn->query($s, $params);
             return true;
         } else {
             return false;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.