diff --git a/lib/zerobin/abstract.php b/lib/zerobin/abstract.php index ad9cfe57..d6d46a6a 100644 --- a/lib/zerobin/abstract.php +++ b/lib/zerobin/abstract.php @@ -122,4 +122,24 @@ abstract class zerobin_abstract * @return void */ abstract public function existsComment($pasteid, $parentid, $commentid); + + /** + * Get next free slot for comment from postdate. + * + * @access public + * @param array $comments + * @param int|string $postdate + * @return void + */ + protected function getOpenSlot(&$comments, $postdate) + { + if (array_key_exists($postdate, $comments)) + { + $parts = explode('.', $postdate, 2); + if (!array_key_exists(1, $parts)) $parts[1] = 0; + ++$parts[1]; + return $this->addComment($comments, implode('.', $parts)); + } + return $postdate; + } } diff --git a/lib/zerobin/data.php b/lib/zerobin/data.php index 89f029c5..47511904 100644 --- a/lib/zerobin/data.php +++ b/lib/zerobin/data.php @@ -181,7 +181,8 @@ class zerobin_data extends zerobin_abstract $comment->meta->parentid = $items[2]; // Store in array - $comments[$comment->meta->postdate] = $comment; + $key = $this->getOpenSlot($comments, (int) $comment->meta->postdate); + $comments[$key] = $comment; } } $dir->close(); diff --git a/lib/zerobin/db.php b/lib/zerobin/db.php index 89bedfdd..d6d62495 100644 --- a/lib/zerobin/db.php +++ b/lib/zerobin/db.php @@ -378,7 +378,7 @@ class zerobin_db extends zerobin_abstract { foreach ($rows as $row) { - $i = (int) $row['postdate']; + $i = $this->getOpenSlot($comments, (int) $row['postdate']); $comments[$i] = clone $commentTemplate; $comments[$i]->data = $row['data']; $comments[$i]->meta->nickname = $row['nickname'];