summaryrefslogtreecommitdiff
path: root/src/Bridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Bridge.php')
-rw-r--r--src/Bridge.php159
1 files changed, 11 insertions, 148 deletions
diff --git a/src/Bridge.php b/src/Bridge.php
index dd0a1f1..a84c304 100644
--- a/src/Bridge.php
+++ b/src/Bridge.php
@@ -20,163 +20,26 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-require_once(__DIR__ . '/BridgeConf.php');
-require_once(__DIR__ . '/Util.php');
+interface Bridge {
+ public function getPostId($messageId);
-class Bridge {
- protected $db;
+ public function getMessageId($postId);
- public function __construct($db = FALSE) {
- $this->db = $db ? $db :
- new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB, DB_USER, DB_PASS);
+ public function setPostId($messageId, $postId);
- $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- }
+ public function getDefaultForumId($list);
- public function getPostId($messageId) {
- throw_if_null($messageId);
+ public function getLists($forumId);
- $sql = 'SELECT post_id FROM posts ' .
- 'WHERE message_id = ' . $this->db->quote($messageId);
+ public function reserveEditId($postId);
- $row = $this->get_exactly_one_row($sql);
- return $row ? $row['post_id'] : false;
- }
+ public function registerByEditId($editId, $messageId, $inReplyTo);
- public function getMessageId($postId) {
- throw_if_null($postId);
+ public function registerByMessageId($messageId, $inReplyTo);
- $sql = 'SELECT p1.message_id FROM posts AS p1 ' .
- 'LEFT OUTER JOIN posts AS p2 ON (' .
- 'p1.post_id = p2.post_id AND ' .
- 'p1.edit_id < p2.edit_id' .
- ') WHERE p1.post_id = ' . $postId . ' AND ' .
- 'p2.post_id IS NULL';
+ public function unregisterMessage($editId);
- $row = $this->get_exactly_one_row($sql);
- return $row ? $row['message_id'] : false;
- }
-
- public function setPostId($messageId, $postId) {
- throw_if_null($messageId);
- throw_if_null($postId);
-
- $sql = 'UPDATE posts SET ' .
- 'post_id = ' . $postId . ' ' .
- 'WHERE message_id = ' . $this->db->quote($messageId);
-
- $count = $this->db->exec($sql);
-
- if ($count != 1) {
- throw new Exception('Failed to set post id: ' . $messageId);
- }
- }
-
- public function getDefaultForumId($list) {
- throw_if_null($list);
-
- $sql = 'SELECT forum_id FROM forums ' .
- 'WHERE list_name = ' . $this->db->quote($list);
-
- $row = $this->get_exactly_one_row($sql);
- return $row ? $row['forum_id'] : false;
- }
-
- public function getLists($forumId) {
- throw_if_null($forumId);
-
- $sql = 'SELECT list_name FROM lists ' .
- 'WHERE forum_id = ' . $forumId;
-
- $result = $this->db->query($sql);
-
- $rows = $result->fetchAll(PDO::FETCH_COLUMN);
- $result->closeCursor();
- return $rows;
- }
-
- public function reserveEditId($postId) {
- throw_if_null($postId);
-
- $sql = 'INSERT INTO posts (post_id) VALUES (' . $postId . ')';
-
- $count = $this->db->exec($sql);
- if ($count != 1) {
- throw new Exception('Failed to register post id: ' . $postId);
- }
-
- return $this->db->lastInsertId();
- }
-
- public function registerByEditId($editId, $messageId, $inReplyTo) {
- throw_if_null($messageId);
-
- $sql = 'UPDATE posts SET ' .
- 'message_id = ' . $this->db->quote($messageId) . ', ' .
- 'in_reply_to = ' . $this->quote($inReplyTo) . ' ' .
- 'WHERE edit_id = ' . $editId;
-
- $count = $this->db->exec($sql);
- return $count == 1;
- }
-
- public function registerByMessageId($messageId, $inReplyTo) {
- throw_if_null($messageId);
-
- $sql = 'INSERT IGNORE INTO posts ' .
- '(message_id, in_reply_to) ' .
- 'VALUES (' .
- $this->db->quote($messageId) . ', ' .
- $this->quote($inReplyTo) .
- ')';
-
- $count = $this->db->exec($sql);
- return $count == 1 ? $this->db->lastInsertId() : false;
- }
-
- public function unregisterMessage($editId) {
- throw_if_null($editId);
-
- $sql = 'DELETE FROM posts WHERE edit_id = ' . $editId;
-
- $count = $this->db->exec($sql);
-
- if ($count != 1) {
- throw new Exception('Failed to delete edit id: ' . $editId);
- }
- }
-
- public function removePost($postId) {
- throw_if_null($postId);
-
- $sql = 'DELETE FROM posts WHERE post_id = ' . $postId;
-
- $count = $this->db->exec($sql);
-
- return $count > 0;
- }
-
- protected function get_exactly_one_row($sql) {
- $result = $this->db->query($sql);
-
- $rows = $result->fetchAll(PDO::FETCH_ASSOC);
- $result->closeCursor();
-
- switch (count($rows)) {
- case 0:
- return false;
-
- case 1:
- return $rows[0];
-
- default:
- throw new Exception("Too many rows returned: $sql");
- }
- }
-
- protected function quote($arg) {
- return $arg === null ? 'NULL' : $this->db->quote($arg);
- }
+ public function removePost($postId);
}
?>