com web/bugs: Remove dependency on PEAR/Tree package: README.md include/functions.php
| From: | sobak@php.net | Date: | Wed, 06 Aug 2014 07:46:48 +0000 |
| Subject: | com web/bugs: Remove dependency on PEAR/Tree package: README.md include/functions.php | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-19641@lists.php.net to get a copy of this message | ||
Commit: 51faf6f6ecd278c375dfffb935b2828f00b0b43f
Author: Sobak <msobaczewski@gmail.com> Wed, 6 Aug 2014 09:46:48 +0200
Parents: c9782aa0d14f4e3648849d2314bb2284f66cf7c0
Branches: master
Link: http://git.php.net/?p=web/bugs.git;a=commitdiff;h=51faf6f6ecd278c375dfffb935b2828f00b0b43f
Log:
Remove dependency on PEAR/Tree package
Changed paths:
M README.md
M include/functions.php
Diff:
diff --git a/README.md b/README.md
index 93dc3ca..7bf2d07 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,6 @@ Requirements
- DB_DataObject
- Text_CAPTCHA_Numeral
- Text_Diff
- - Tree
- HTTP
- HTTP_Upload
@@ -21,7 +20,7 @@ Installation
============
1. Copy
local_config.php.sample to local_config.php and modify
accordingly
2. Install all required packages:
-pear install MDB2 MDB2#mysql MDB2#mysqli DB_DataObject Text_CAPTCHA_Numeral Text_Diff
Tree-beta HTTP HTTP_Upload
+pear install MDB2 MDB2#mysql MDB2#mysqli DB_DataObject Text_CAPTCHA_Numeral Text_Diff HTTP
HTTP_Upload
3. Import SQL schema from sql/bugs.sql
TODO
diff --git a/include/functions.php b/include/functions.php
index a0ef41f..4fa0176 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -202,39 +202,39 @@ function bugs_authenticate (&$user, &$pw, &$logged_in,
&$user_flags)
*/
function get_pseudo_packages($project, $return_disabled = true)
{
- global $project_types;
-
- require_once 'Tree/Tree.php';
+ global $dbh, $project_types;
+ $pseudo_pkgs = $nodes = $tree = array();
$where = '1=1';
$project = strtolower($project);
if ($project !== false && in_array($project, $project_types)) {
- $where .= " AND project IN ('', '". $project ."')";
+ $where .= " AND project IN ('', '$project')";
}
if (!$return_disabled) {
$where.= " AND disabled = 0";
}
- $pseudo_pkgs = array();
- $tree = Tree::setup (
- 'Memory_MDB2simple',
- DATABASE_DSN,
- array (
- 'order' => 'disabled, id',
- 'whereAddOn' => $where,
- 'table' => 'bugdb_pseudo_packages',
- 'columnNameMaps' => array (
- 'parentId' => 'parent',
- ),
- )
- );
- $tree->setup();
+ $data = $dbh->queryAll("SELECT * FROM bugdb_pseudo_packages WHERE $where ORDER BY parent,
disabled, id", null, MDB2_FETCHMODE_ASSOC);
- foreach ($tree->data as $data)
+ // Convert flat array to nested strucutre
+ foreach ($data as &$node)
{
- if (isset($data['children']))
- {
+ $node['children'] = array();
+ $id = $node['id'];
+ $parent_id = $node['parent'];
+ $nodes[$id] =& $node;
+
+ if (array_key_exists($parent_id, $nodes)) {
+ $nodes[$parent_id]['children'][] =& $node;
+ } else {
+ $tree[] =& $node;
+ }
+ }
+
+ foreach ($tree as $data)
+ {
+ if (isset($data['children'])) {
$pseudo_pkgs[$data['name']] = array($data['long_name'],
$data['disabled']);
$long_names = array();
foreach ($data['children'] as $k => $v) {
@@ -246,8 +246,9 @@ function get_pseudo_packages($project, $return_disabled = true)
$pseudo_pkgs[$child['name']] =
array(" {$child['long_name']}",
$child['disabled']);
}
- } else if (!isset($pseudo_pkgs[$data['name']]))
+ } elseif (!isset($pseudo_pkgs[$data['name']])) {
$pseudo_pkgs[$data['name']] = array($data['long_name'],
$data['disabled']);
+ }
}
return $pseudo_pkgs;