I've had a time today and tried to figure this thing out.
Well, despite it looks simple, it relays on many difficulties, which are specially related to miniBB add-ons like Premoderation or File Attachments. If you have these add-ons installed, it's impossible to use this extension. I hope, you understand, why.
The user may create a thread where many files or images will be attached with minimum comments. With your idea, all these messages should be concatenated into one. Unreal, and not corresponding with File Upload options.
Also, if you have Premoderation queue, such messages won't appear in the queue. For making them appearing, I shall reprogram the Premoderation add-on. Unreal, for such usefulness and rare "feature".
May be there are also some things related, which I didn't check. The only thing I know so far - the add-on looks like very destructing regarding the architecture of miniBB messages and topics structure. That's why there is no official release or something like that.
Here's the code you may put in
bb_plugins.php. Depending on the
$putUpdateOnTop option, if it's FALSE, the code will check for the last message the user has been posted in the certain topic. If there's still his own message, instead of posting a thread operation, the script will call edit message operation. Then the older message's text will be concatenated with the new one. If the option is TRUE, the script will just delete the older message, concatenating its text with the newer one. It could work only that way, because Recent Topics or Topics Listings display latest messages on top basing on their IDs. In the case of editing the message, nor post ID or post date are updated.
It also works only for registered users.
/* Adhesive Message */
if($action=='pthread' and $user_id>0){
$putUpdateOnTop=TRUE; //TRUE will delete the older message and replace it with the new message, that way keeping the new message on top of Recent Topics and Topics Listings. FALSE will just update the older message, adding the newest message below of it.
if($row=db_simpleSelect(0, $Tp, 'poster_id, post_text, post_id', 'topic_id', '=', $topic, 'post_id DESC', 1)){
if($row[0]==$user_id) {
require_once($pathToFiles.'bb_func_txt.php');
if(!$putUpdateOnTop){
$_POST['post']=$row[2];
$_POST['anchor']=$row[2];
$_POST['postText']=deCodeBB($row[1])."\r\n\r\n".$_POST['postText'];
$action='editmsg2';
}
else{
$_POST['postText']=deCodeBB($row[1])."\r\n\r\n".$_POST['postText'];
db_delete($Tp, 'post_id', '=', $row[2]);
}
}
}
}
/* --Adhesive Message */
Under index.php, if you have $putUpdateOnTop=FALSE, there also should be the following core change applied:
elseif($action=='editmsg2') {require_once($pathToFiles.'bb_func_txt.php');$step=1;require($pathToFiles.'bb_func_editmsg.php');}
i.e. "require" should be changed to "require_once".
For one of my customers, I also have developed the "restriction" add-on, which displays a warning message, if some user would try to post a new message next to his older message.
There is also a way to hide a posting form unless the last message belongs to the currently logged member, so he's not able to add a new message, only to edit the older one. It's another code.
In other words, what is created in other forums software, doesn't mean it's the proper and good solution. I have no recommendations to use the same thing in miniBB.