svn: /web/doc-editor/trunk/php/ RepositoryFetcher.php

[email protected] (Yannick Torres)
Newsgroups php.doc.web
Message-ID <[email protected]>
yannick                                  Sun, 26 Jun 2011 15:46:20 +0000

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

Log:
Fix doc-base issue

Changed paths:
    U   web/doc-editor/trunk/php/RepositoryFetcher.php
svn-diffs-312495.txt (text/x-diff, 22.7 KB)
Modified: web/doc-editor/trunk/php/RepositoryFetcher.php
===================================================================
--- web/doc-editor/trunk/php/RepositoryFetcher.php	2011-06-26 15:10:30 UTC (rev 312494)
+++ web/doc-editor/trunk/php/RepositoryFetcher.php	2011-06-26 15:46:20 UTC (rev 312495)
@@ -9,8 +9,6 @@
 {
     private static $instance;

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

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


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

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

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

         $a = $r->fetch_assoc();

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

         $infos = array();

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

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

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

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

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

         $i=0;
         while ($a = $r->fetch_assoc()) {
@@ -114,10 +117,6 @@

         $return = array();

-        if( !isset($appConf[$project]['skeletons.folder']) ) {
-            return $return;
-        }
-
         $dir = realpath($appConf[$project]['skeletons.folder']);
         $d = dir($dir);
         while (false !== ($entry = $d->read())) {
@@ -140,19 +139,20 @@
     {
         $am = AccountManager::getInstance();

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

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

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

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

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

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

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

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

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

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

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

         $m = $this->getModifies();

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

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

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

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

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

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

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

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

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

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

         $m = $this->getModifies();

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

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

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

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

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

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

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

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

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

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

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

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

-        $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
+        $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
         );
-        $r = $this->conn->query($s, $params);
+        $r = DBConnection::getInstance()->query($s);

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

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

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

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

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

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

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

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

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

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

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

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

             $patches = Array();

@@ -795,20 +786,16 @@
                 $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")';
+                $langFilter = '(`lang` = "%s" OR `lang`="en" OR `lang`="doc-base")';
             } else {
-                $langFilter = '(`lang` = "%s")';
+                $langFilter = '(`lang` = "%s" OR `lang`="doc-base")';
             }

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

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

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

@@ -912,14 +898,15 @@

             // Do we need to display EN Work ?
             if( $am->userConf->main->displayENWork ) {
-                $langFilter = '(`lang` = "%s" OR `lang`="en")';
+                $langFilter = '(`lang` = "%s" OR `lang`="en" OR `lang`="doc-base")';
             } else {
-                $langFilter = '(`lang` = "%s")';
+                $langFilter = '(`lang` = "%s" OR `lang`="doc-base")';
             }


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

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

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

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

         $node = array(); $i=0;
         while ($a = $r->fetch_object()) {
@@ -1049,6 +1035,7 @@
      */
     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.
@@ -1058,20 +1045,20 @@
         }

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

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

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

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

-        $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(
+        $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`',
             $project,
             $vcsLang,
-            $key,
-            $key
+            $db->real_escape_string($key),
+            $db->real_escape_string($key)
         );
-        $r = $this->conn->query($s, $params);
+        $r = $db->query($s);

         $files = array();
         while ($a = $r->fetch_object()) {
@@ -1243,22 +1231,17 @@
      * @param $field The name of the field for this value
      * @return The value.
      */
-    public static function getStaticValue($type, $field)
+    public function getStaticValue($type, $field)
     {

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

-        $r = DBConnection::getInstance()->query($s, $params);
-
         if( $r->num_rows == 0 ) {
             return false;
         } else {
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.