svn: /web/doc-editor/trunk/php/ RepositoryFetcher.php
[email protected] (Neal Poole)
| Newsgroups | php.doc.web |
|---|---|
| Message-ID | <[email protected]> |
nbpoole Sun, 26 Jun 2011 15:54:57 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=312497
Log:
Revert previous commit.
Changed paths:
U web/doc-editor/trunk/php/RepositoryFetcher.php
svn-diffs-312497.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:48:11 UTC (rev 312496)
+++ web/doc-editor/trunk/php/RepositoryFetcher.php 2011-06-26 15:54:57 UTC (rev 312497)
@@ -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()) {
@@ -117,6 +114,10 @@
$return = array();
+ if( !isset($appConf[$project]['skeletons.folder']) ) {
+ return $return;
+ }
+
$dir = realpath($appConf[$project]['skeletons.folder']);
$d = dir($dir);
while (false !== ($entry = $d->read())) {
@@ -139,20 +140,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 +173,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 +210,7 @@
$vcsLang = $am->vcsLang;
$project = $am->project;
- $s = sprintf(
- 'SELECT
+ $s = 'SELECT
count(*) as total
FROM
`files`
@@ -219,11 +218,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 +241,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 +254,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 +322,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 +351,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 +365,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 +418,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 +449,7 @@
$m = $this->getModifies();
- $s = sprintf('
- SELECT
+ $s = 'SELECT
`id`,
`path`,
`name`
@@ -458,11 +458,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 +488,7 @@
$vcsLang = $am->vcsLang;
$project = $am->project;
- $s = sprintf('
- SELECT
+ $s = 'SELECT
count(*) as total
FROM
`files`
@@ -495,12 +496,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 +520,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 +532,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 +566,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 +597,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 +624,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 +655,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 +682,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 +694,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 +714,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 +726,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 +768,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 +776,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,16 +795,20 @@
$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" OR `lang`="doc-base")';
+ $langFilter = '(`lang` = "%s" OR `lang`="en")';
} else {
- $langFilter = '(`lang` = "%s" OR `lang`="doc-base")';
+ $langFilter = '(`lang` = "%s")';
}
// We exclude item witch name == '-' ; this is new folder ; We don't display it.
- $s = sprintf(
- 'SELECT
+ $s = 'SELECT
*
FROM
`work`
@@ -804,14 +817,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()) {
@@ -898,15 +912,14 @@
// Do we need to display EN Work ?
if( $am->userConf->main->displayENWork ) {
- $langFilter = '(`lang` = "%s" OR `lang`="en" OR `lang`="doc-base")';
+ $langFilter = '(`lang` = "%s" OR `lang`="en")';
} else {
- $langFilter = '(`lang` = "%s" OR `lang`="doc-base")';
+ $langFilter = '(`lang` = "%s")';
}
// We exclude item witch name == '-' ; this is new folder ; We don't display it.
- $s = sprintf(
- 'SELECT
+ $s = 'SELECT
*
FROM
`work`
@@ -915,12 +928,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 +1023,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 +1049,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 +1058,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 +1079,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 +1113,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()) {
@@ -1231,17 +1243,22 @@
* @param $field The name of the field for this value
* @return The value.
*/
- public function getStaticValue($type, $field)
+ public static function getStaticValue($type, $field)
{
// 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 = DBConnection::getInstance()->query($s, $params);
+
if( $r->num_rows == 0 ) {
return false;
} else {