summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/PhpBB3Lib.php19
-rw-r--r--test/PhpBB3LibTest.php16
2 files changed, 35 insertions, 0 deletions
diff --git a/src/PhpBB3Lib.php b/src/PhpBB3Lib.php
index 874591c..ccaa527 100644
--- a/src/PhpBB3Lib.php
+++ b/src/PhpBB3Lib.php
@@ -42,4 +42,23 @@ function get_user_name($id) {
return $names[$id];
}
+function get_topic_id($post_id) {
+ global $db;
+
+// FIXME: should get topic_id, forum_id at the same time
+ $sql = 'SELECT topic_id FROM ' . POSTS_TABLE .
+ ' WHERE post_id = "' . $db->sql_escape($post_id) . '"';
+
+ $result = $db->sql_query($sql);
+// FIXME: what to do if more than one row is returned?
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (!$row) {
+ trigger_error("Unknown post id: $post_id", E_USER_ERROR);
+ }
+
+ return $row['topic_id'];
+}
+
?>
diff --git a/test/PhpBB3LibTest.php b/test/PhpBB3LibTest.php
index 76e5bdc..22f6e0e 100644
--- a/test/PhpBB3LibTest.php
+++ b/test/PhpBB3LibTest.php
@@ -63,4 +63,20 @@ EOF;
array(2, 'admin', null )
);
}
+
+ /**
+ * @dataProvider provider_get_topic_id
+ */
+ public function test_get_topic_id($post_id, $expected, $ex) {
+ if ($ex) $this->setExpectedException($ex);
+ $run = 'get_topic_id(' . $post_id . ')';
+ $this->assertEquals($expected, $this->exec_kludge($run));
+ }
+
+ public function provider_get_topic_id() {
+ return array(
+ array(0, null, 'PHPUnit_Framework_Error'),
+ array(2, 2, null )
+ );
+ }
}