diff options
| -rw-r--r-- | src/PhpBB3Lib.php | 19 | ||||
| -rw-r--r-- | test/PhpBB3LibTest.php | 16 | 
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                     ) +    ); +  }  }  | 
