diff options
Diffstat (limited to 'phpBB/phpbb/tree')
-rw-r--r-- | phpBB/phpbb/tree/nestedset.php | 70 | ||||
-rw-r--r-- | phpBB/phpbb/tree/nestedset_forum.php | 16 | ||||
-rw-r--r-- | phpBB/phpbb/tree/tree_interface.php (renamed from phpBB/phpbb/tree/interface.php) | 12 |
3 files changed, 53 insertions, 45 deletions
diff --git a/phpBB/phpbb/tree/nestedset.php b/phpBB/phpbb/tree/nestedset.php index 4d851a87a8..9aaee9e468 100644 --- a/phpBB/phpbb/tree/nestedset.php +++ b/phpBB/phpbb/tree/nestedset.php @@ -7,20 +7,14 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\tree; -abstract class phpbb_tree_nestedset implements phpbb_tree_interface +abstract class nestedset implements \phpbb\tree\tree_interface { - /** @var phpbb_db_driver */ + /** @var \phpbb\db\driver\driver_interface */ protected $db; - /** @var phpbb_lock_db */ + /** @var \phpbb\lock\db */ protected $lock; /** @var string */ @@ -58,15 +52,15 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface /** * Construct * - * @param phpbb_db_driver $db Database connection - * @param phpbb_lock_db $lock Lock class used to lock the table when moving forums around + * @param \phpbb\db\driver\driver_interface $db Database connection + * @param \phpbb\lock\db $lock Lock class used to lock the table when moving forums around * @param string $table_name Table name * @param string $message_prefix Prefix for the messages thrown by exceptions * @param string $sql_where Additional SQL restrictions for the queries * @param array $item_basic_data Array with basic item data that is stored in item_parents * @param array $columns Array with column names to overwrite */ - public function __construct(phpbb_db_driver $db, phpbb_lock_db $lock, $table_name, $message_prefix = '', $sql_where = '', $item_basic_data = array(), $columns = array()) + public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\lock\db $lock, $table_name, $message_prefix = '', $sql_where = '', $item_basic_data = array(), $columns = array()) { $this->db = $db; $this->lock = $lock; @@ -116,7 +110,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!$this->lock->acquire()) { - throw new RuntimeException($this->message_prefix . 'LOCK_FAILED_ACQUIRE'); + throw new \RuntimeException($this->message_prefix . 'LOCK_FAILED_ACQUIRE'); } return true; @@ -184,7 +178,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface $item_id = (int) $item_id; if (!$item_id) { - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $items = $this->get_subtree_data($item_id); @@ -192,7 +186,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (empty($items) || !isset($items[$item_id])) { - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $this->remove_subset($item_ids, $items[$item_id]); @@ -242,7 +236,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!$item) { $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } /** @@ -364,7 +358,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!$current_parent_id) { - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $this->acquire_lock(); @@ -373,7 +367,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!isset($item_data[$current_parent_id])) { $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $current_parent = $item_data[$current_parent_id]; @@ -389,7 +383,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (in_array($new_parent_id, $move_items)) { $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); } $diff = sizeof($move_items) * 2; @@ -413,7 +407,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface { $this->db->sql_transaction('rollback'); $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); } $new_right_id = $this->prepare_adding_subset($move_items, $new_parent, true); @@ -470,7 +464,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!$item_id) { - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $this->acquire_lock(); @@ -479,7 +473,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (!isset($item_data[$item_id])) { $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_ITEM'); } $item = $item_data[$item_id]; @@ -488,7 +482,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface if (in_array($new_parent_id, $move_items)) { $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); } $diff = sizeof($move_items) * 2; @@ -512,7 +506,7 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface { $this->db->sql_transaction('rollback'); $this->lock->release(); - throw new OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); + throw new \OutOfBoundsException($this->message_prefix . 'INVALID_PARENT'); } $new_right_id = $this->prepare_adding_subset($move_items, $new_parent, true); @@ -670,6 +664,32 @@ abstract class phpbb_tree_nestedset implements phpbb_tree_interface } /** + * Get all items from the tree + * + * @param bool $order_asc Order the items ascending by their left_id + * @return array Array of items (containing all columns from the item table) + * ID => Item data + */ + public function get_all_tree_data($order_asc = true) + { + $rows = array(); + + $sql = 'SELECT * + FROM ' . $this->table_name . ' ' . + $this->get_sql_where('WHERE') . ' + ORDER BY ' . $this->column_left_id . ' ' . ($order_asc ? 'ASC' : 'DESC'); + $result = $this->db->sql_query($sql); + + while ($row = $this->db->sql_fetchrow($result)) + { + $rows[(int) $row[$this->column_item_id]] = $row; + } + $this->db->sql_freeresult($result); + + return $rows; + } + + /** * Remove a subset from the nested set * * @param array $subset_items Subset of items to remove diff --git a/phpBB/phpbb/tree/nestedset_forum.php b/phpBB/phpbb/tree/nestedset_forum.php index ff09ef55d0..5973b0b6d9 100644 --- a/phpBB/phpbb/tree/nestedset_forum.php +++ b/phpBB/phpbb/tree/nestedset_forum.php @@ -7,24 +7,18 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\tree; -class phpbb_tree_nestedset_forum extends phpbb_tree_nestedset +class nestedset_forum extends \phpbb\tree\nestedset { /** * Construct * - * @param phpbb_db_driver $db Database connection - * @param phpbb_lock_db $lock Lock class used to lock the table when moving forums around + * @param \phpbb\db\driver\driver_interface $db Database connection + * @param \phpbb\lock\db $lock Lock class used to lock the table when moving forums around * @param string $table_name Table name */ - public function __construct(phpbb_db_driver $db, phpbb_lock_db $lock, $table_name) + public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\lock\db $lock, $table_name) { parent::__construct( $db, diff --git a/phpBB/phpbb/tree/interface.php b/phpBB/phpbb/tree/tree_interface.php index cc8aab2115..90ec27e024 100644 --- a/phpBB/phpbb/tree/interface.php +++ b/phpBB/phpbb/tree/tree_interface.php @@ -7,15 +7,9 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\tree; -interface phpbb_tree_interface +interface tree_interface { /** * Inserts an item into the database table and into the tree. @@ -79,7 +73,7 @@ interface phpbb_tree_interface /** * Change parent item * - * Moves the item to the bottom of the new parent's list of children + * Moves the item to the bottom of the new \parent's list of children * * @param int $item_id The item to be moved * @param int $new_parent_id The new parent item |