diff options
-rw-r--r-- | src/PhpBB3.php | 74 | ||||
-rw-r--r-- | src/PhpBB3Lib.php | 70 | ||||
-rw-r--r-- | test/PhpBB3Test.php (renamed from test/PhpBB3LibTest.php) | 35 |
3 files changed, 92 insertions, 87 deletions
diff --git a/src/PhpBB3.php b/src/PhpBB3.php new file mode 100644 index 0000000..d8b9ba4 --- /dev/null +++ b/src/PhpBB3.php @@ -0,0 +1,74 @@ +<?php + +# phpBB setup +define('IN_PHPBB', true); +require_once(__DIR__ . '/PhpBB3Conf.php'); +$phpEx = substr(strrchr(__FILE__, '.'), 1); +require_once($phpbb_root_path . 'common.' . $phpEx); +require_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); +require_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); + +class PhpBB3 { + public function __construct() { + } + + public function getUserId($from) { + global $db; + + $sql = 'SELECT user_id FROM ' . USERS_TABLE . + ' WHERE user_email = "' . $db->sql_escape($from) . '"'; + + $row = $this->get_exactly_one_row($sql); + return $row['user_id']; + } + + public function getUserName($id) { + # NB: user_get_id_name is pass-by-reference; we copy $id to prevent + # it from being modified, as we might need it for error messages + $ids = array($id); + $err = user_get_id_name($ids, $names); + if ($err) { + trigger_error("Could not resolve user id $id: $err", E_USER_ERROR); + } + + if (!array_key_exists($id, $names)) { + trigger_error("Unknown user id: $id", E_USER_ERROR); + } + + return $names[$id]; + } + + public function getTopicAndForumIds($post_id) { + global $db; + + $sql = 'SELECT topic_id, forum_id FROM ' . POSTS_TABLE . + ' WHERE post_id = "' . $db->sql_escape($post_id) . '"'; + + $row = get_exactly_one_row($sql); + return $row; + } + + protected function get_exactly_one_row($sql) { + global $db; + + $result = $db->sql_query($sql); + + $rows = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + switch (count($rows)) { + case 0: + trigger_error("No rows returned: $sql", E_USER_ERROR); + break; + + case 1: + return $rows[0]; + + default: + trigger_error("Too many rows returned: $sql", E_USER_ERROR); + break; + } + } +} + +?> diff --git a/src/PhpBB3Lib.php b/src/PhpBB3Lib.php deleted file mode 100644 index 5d39ae0..0000000 --- a/src/PhpBB3Lib.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -# phpBB setup -define('IN_PHPBB', true); -require_once(__DIR__ . '/PhpBB3Conf.php'); -$phpEx = substr(strrchr(__FILE__, '.'), 1); -require_once($phpbb_root_path . 'common.' . $phpEx); -require_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); -require_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); - - -function get_user_id($from) { - global $db; - - $sql = 'SELECT user_id FROM ' . USERS_TABLE . - ' WHERE user_email = "' . $db->sql_escape($from) . '"'; - - $row = get_exactly_one_row($sql); - return $row['user_id']; -} - -function get_user_name($id) { - # NB: user_get_id_name is pass-by-reference; we copy $id to prevent - # it from being modified, as we might need it for error messages - $ids = array($id); - $err = user_get_id_name($ids, $names); - if ($err) { - trigger_error("Could not resolve user id $id: $err", E_USER_ERROR); - } - - if (!array_key_exists($id, $names)) { - trigger_error("Unknown user id: $id", E_USER_ERROR); - } - - return $names[$id]; -} - -function get_topic_and_forum_ids($post_id) { - global $db; - - $sql = 'SELECT topic_id, forum_id FROM ' . POSTS_TABLE . - ' WHERE post_id = "' . $db->sql_escape($post_id) . '"'; - - $row = get_exactly_one_row($sql); - return $row; -} - -function get_exactly_one_row($sql) { - global $db; - - $result = $db->sql_query($sql); - - $rows = $db->sql_fetchrowset($result); - $db->sql_freeresult($result); - - switch (count($rows)) { - case 0: - trigger_error("No rows returned: $sql", E_USER_ERROR); - break; - - case 1: - return $rows[0]; - - default: - trigger_error("Too many rows returned: $sql", E_USER_ERROR); - break; - } -} - -?> diff --git a/test/PhpBB3LibTest.php b/test/PhpBB3Test.php index 21fe862..8f06170 100644 --- a/test/PhpBB3LibTest.php +++ b/test/PhpBB3Test.php @@ -2,7 +2,7 @@ require_once('PHPUnit/Framework.php'); -class PhpBB3LibTest extends PHPUnit_Framework_TestCase { +class PhpBB3Test extends PHPUnit_Framework_TestCase { /** * phpBB3 uses many globals; due to the way tests are run, we cannot @@ -13,8 +13,9 @@ class PhpBB3LibTest extends PHPUnit_Framework_TestCase { protected function exec_kludge($run) { $prog = <<<EOF try { - require_once("src/PhpBB3Lib.php"); - \$result = serialize($run); + require_once("src/PhpBB3.php"); + \$phpBB = new PhpBB3(); + \$result = serialize(\$phpBB->$run); } catch (Exception \$e) { \$result = serialize(\$e); @@ -33,47 +34,47 @@ EOF; } /** - * @dataProvider provider_get_user_id + * @dataProvider provider_GetUserId */ - public function test_get_user_id($from, $expected, $ex) { + public function testGetUserId($from, $expected, $ex) { if ($ex) $this->setExpectedException($ex); - $run = 'get_user_id("' . $from . '")'; + $run = 'getUserId("' . $from . '")'; $this->assertEquals($expected, $this->exec_kludge($run)); } - public function provider_get_user_id() { + public function providerGetUserId() { return array( - array('bogus', null, 'PHPUnit_Framework_Error'), + array('bogus', null, 'PHPUnit_Framework_Error'), array('uckelman@nomic.net', 2, null) ); } /** - * @dataProvider provider_get_user_name + * @dataProvider providerGetUserName */ - public function test_get_user_name($id, $expected, $ex) { + public function testGetUserName($id, $expected, $ex) { if ($ex) $this->setExpectedException($ex); - $run = 'get_user_name(' . $id . ')'; + $run = 'getUserName(' . $id . ')'; $this->assertEquals($expected, $this->exec_kludge($run)); } - public function provider_get_user_name() { + public function providerGetUserName() { return array( - array(0, null, 'PHPUnit_Framework_Error'), + array(0, null, 'PHPUnit_Framework_Error'), array(2, 'admin', null ) ); } /** - * @dataProvider provider_get_topic_id + * @dataProvider providerGetTopicAndForumIds */ - public function test_get_topic_and_forum_ids($post_id, $expected, $ex) { + public function testGetTopicAndForumIds($post_id, $expected, $ex) { if ($ex) $this->setExpectedException($ex); - $run = 'get_topic_and_forum_ids(' . $post_id . ')'; + $run = 'getTopicAndForumIds(' . $post_id . ')'; $this->assertEquals($expected, $this->exec_kludge($run)); } - public function provider_get_topic_id() { + public function providerGetTopicAndForumIds() { return array( array(0, null, 'PHPUnit_Framework_Error'), array(2, array('topic_id' => 2, 'forum_id' => 2), null) |