Link to the mod (https://custom.simplemachines.org/index.php?mod=4203)
For SMF 2.0.x
Shows the user a list of people that have quoted them.
Has built in option to rebuild quote history for all old posts
Install Information:
Install via the SMF's Package Manager via upload package.
License: BSD License
What's the license? I want to add this to my site but with a slightly different implementation.
You can treat it as BSD/same as SMF.
oh okay.
I see a few problems (haven't tested)
- The hooks must go into the code tag. The database tag only executes on uninstall if the checkmark is checked. See SimpleDesk (http://custom.simplemachines.org/mods/index.php?mod=2491) for a godo example.
- Admin area, try manually writing an unknown subaaction in the url; may get an undefined index
- The regex to get the quoted author assumes all parameters are present when they're all really optional. Just search for the author.
Fixed the first two.
Regex have to think about. Was just handling the quote button on posts when quoting someone.
Very good @vbgamer45 great work!!!
Interesting, why not use the approach that 2.1 does where it looks for a quite with a message id?
didn't look at it. It looks like they do it differently
protected static function getQuotedMembers($msgOptions, $posterOptions)
{
global $smcFunc;
$blocks = preg_split('/(\[quote.*?\]|\[\/quote\])/i', $msgOptions['body'], -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$quote_level = 0;
$message = '';
foreach ($blocks as $block)
{
if (preg_match('/\[quote(.*)?\]/i', $block, $matches))
{
if ($quote_level == 0)
$message .= '[quote' . $matches[1] . ']';
$quote_level++;
}
elseif (preg_match('/\[\/quote\]/i', $block))
{
if ($quote_level <= 1)
$message .= '[/quote]';
if ($quote_level >= 1)
{
$quote_level--;
$message .= "\n";
}
}
elseif ($quote_level <= 1)
$message .= $block;
}
preg_match_all('/\[quote.*?link=msg=([0-9]+).*?\]/i', $message, $matches);
$id_msgs = $matches[1];
foreach ($id_msgs as $k => $id_msg)
$id_msgs[$k] = (int) $id_msg;
if (empty($id_msgs))
return array();
// Get the messages
$request = $smcFunc['db_query']('', '
SELECT m.id_member, mem.email_address, mem.lngfile, mem.real_name
FROM {db_prefix}messages AS m
INNER JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)
WHERE id_msg IN ({array_int:msgs})
LIMIT {int:count}',
array(
'msgs' => array_unique($id_msgs),
'count' => count(array_unique($id_msgs)),
)
);
$members = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
if ($posterOptions['id'] == $row['id_member'])
continue;
$members[$row['id_member']] = $row;
}
return $members;
}
Quote from: Arantor on February 05, 2019, 02:47:42 AM
Interesting, why not use the approach that 2.1 does where it looks for a quite with a message id?
because some quotes use only author, such as a quote from a pm.
I will say this mod just handles quotes from messages in posts does not handle pm's or in other areas.
Of course. Some people actually do post a pm in public; rare, but it happens.
Quote from: live627 on February 05, 2019, 04:27:35 PM
Quote from: Arantor on February 05, 2019, 02:47:42 AM
Interesting, why not use the approach that 2.1 does where it looks for a quite with a message id?
because some quotes use only author, such as a quote from a pm.
I'd honestly suggest it would be better not to rely on that (especially as users so rarely use it that way) but I can see why you might not.
What is the changelog of todays update? ???
Nothing just changed the license.
Thanks. :)
Nothing here on this post... move along. ;D
Thanks for this mod. Quite useful. I went ahead and rebuilt the quote database after I installed it and with 1.3 million posts, well, let's just say that took a while, heh heh. Actually, about 30 hours to be precise.
Russian translation
Added translation to mod. Thanks for making it easier. I will to try to get better adding them to my mods.
it's working for new quotes but the historical quotes don't show anything.
You have to rebuild the old quote history in the mod's settings
go to "Click here to rebuild quote log history"
sorry, yeah i did that and it took about 1/2 hour.
and the new quotes seem to disappear over time (?)
is that right ? otherwise the list would be huge after time and require pruning, i'm expecting (?)
No they don't' disappear. It's small log table that just logs the message id and member id.
well they did for me and i am sure of that.
strange.
it's working better now but i'm still wondering why the Historical quotes weren't found.
any idea ?
Now it's working with the historical data.
The only thing I did differently is to create some test quotes first.
Can you provide a pruning function please ?
How would the pruning work? X amount of days old?
Either that or the last n number of quotes ... I like just a number rather than a data but either will do.
If you can make it a scheduled task like the Track User Logins mod then people can still have the option of keeping everything if they don't enable the Scheduled Task.
Oh, and one more thing - i feel that the list should be in reverse order so that latest are at the top. You could make the Date column sortable.
Sorry to give you all this extra work :-[
The latest quotes should always be at the top...Unless you had a old version. Which had a bug on on importing old data not keeping the post time.
The data is sorted by by post time desc by default
Actually, it is sorting correctly. Thank you.
Are you still interesting to coding a pruning facility so I can get rid of some of the bulk and unwanted quote information ?
Possibly at some point.
Now supports SMF 1.1.x
I hate to ask, but ... why?
Was from client request job.
Understandable but it's things like this that hold back 2.1...
Love this mod.
I added a who quoted me icon to the upper bar in my custom theme. it works great. Would it be possible to add something like I red notification or circle or something that stands out on the button when someone quotes a post?
I'm using the Sunrise theme
thanks
Update
1.0b Fixed a PHP error with optional parameter