News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

No 'last edit' for Administrators

Started by Durr, October 27, 2009, 10:11:51 AM

Previous topic - Next topic

Durr

Hello there,

Is there any mod that disables 'Last edit' for when Administrators edit a post?
I use SMF 2 Final

Arantor

Do other members have the ability to edit posts?

There isn't a mod currently available for this AFAIK but it shouldn't be a huge edit if you wanted to do so.

SoLoGHoST

This is not as easy as it sounds since the id_group of the member who modified the message isn't stored within the messages table, however, is possible.  Will need to do a JOIN on the messages table in the Display() function within Display.php where $messages_request gets defined.  You can do a LEFT JOIN {db_prefix}members table and check for modified_name (from messages table) = real_name (from members table).  Where the id_group != 1 (from the members table) which will return all but the Administrators, and then you can use it for the $message[] array here:
'modified' => array(
'time' => timeformat($message['modified_time']),
'timestamp' => forum_time(true, $message['modified_time']),
'name' => $message['modified_name']
),

you can add another index to it like so: 'modified' => array(
'time' => timeformat($message['modified_time']),
'timestamp' => forum_time(true, $message['modified_time']),
'name' => $message['modified_name'],
'group' => !empty($message['modified_group'])
),

and than in Display.template.php, you can check for this at around here:// Show "« Last Edit: Time by Person »" if this post was edited.
if ($settings['show_modify'] && !empty($message['modified']['name']))
echo '
&#171; <em>', $txt['last_edit'], ': ', $message['modified']['time'], ' ', $txt['by'], ' ', $message['modified']['name'], '</em> &#187;';

Which you can change to:// Show "« Last Edit: Time by Person »" if this post was edited.
if ($settings['show_modify'] && !empty($message['modified']['name']) && $message['modified']['group'])
echo '
&#171; <em>', $txt['last_edit'], ': ', $message['modified']['time'], ' ', $txt['by'], ' ', $message['modified']['name'], '</em> &#187;';


Well good luck with it :)

And you can also just get all id_group if you want and just compare it using && $message['modified']['group'] != 1

SoLoGHoST

#3
Sorry, for the double post.

Doing it this way will prevent your previous posts from displaying last modified by Admin, but another way to do this for future posts, would be to do it in Subs-Post.php in the modifyPost() function.  Look here...
if (!empty($msgOptions['modify_time']))
{
$messages_columns['modified_time'] = $msgOptions['modify_time'];
$messages_columns['modified_name'] = $msgOptions['modify_name'];
$messages_columns['id_msg_modified'] = $modSettings['maxMsgID'];
}


You can check for $user_info['is_admin'] and if so, don't add them...

Cheers :)

Durr

#4
Thanks Sologhost, I've done the following:

Display.php

$messages_request = $smcFunc['db_query']('', '
SELECT
id_msg, icon, subject, poster_time, poster_ip, id_member, modified_time, modified_name, body,
smileys_enabled, poster_name, poster_email, approved,
id_msg_modified < {int:new_from} AS is_read
FROM {db_prefix}messages
WHERE id_msg IN ({array_int:message_list})
ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),
array(
'message_list' => $messages,
'new_from' => $topicinfo['new_from'],
)
);

to

$messages_request = $smcFunc['db_query']('', '
SELECT
msgs.id_msg, msgs.icon, msgs.subject, msgs.poster_time, msgs.poster_ip, msgs.id_member, msgs.modified_time, msgs.modified_name, msgs.body,
msgs.smileys_enabled, msgs.poster_name, msgs.poster_email, msgs.approved,
msgs.id_msg_modified < {int:new_from} AS is_read,
mmbrs.id_group AS modified_group
FROM {db_prefix}messages AS msgs
LEFT JOIN {db_prefix}members AS mmbrs ON msgs.modified_name = mmbrs.real_name
WHERE msgs.id_msg IN ({array_int:message_list})
ORDER BY msgs.id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),
array(
'message_list' => $messages,
'new_from' => $topicinfo['new_from'],
)
);


and

'modified' => array(
'time' => timeformat($message['modified_time']),
'timestamp' => forum_time(true, $message['modified_time']),
'name' => $message['modified_name']
),

to

'modified' => array(
'time' => timeformat($message['modified_time']),
'timestamp' => forum_time(true, $message['modified_time']),
'name' => $message['modified_name'],
'group' => $message['modified_group']
),


Display.template.php:

if ($settings['show_modify'] && !empty($message['modified']['name']))

to

if ($settings['show_modify'] && !empty($message['modified']['name']) && ($message['modified']['group'] != 1))



It worked
I use SMF 2 Final

SoLoGHoST


MultiformeIngegno

RockCiclopedia (wiki - forum), Tutta la storia del rock, scritta da voi ...
Rimanere aggiornati sul mondo della musica grazie al nuovo feed "RockCiclopedia Music News"!

Durr

I use SMF 2 Final

SoLoGHoST

You are welcome to go ahead and create it bro.  It's too small for my liking...

MultiformeIngegno

I've found this, but it adds a link to remove the "last edit", doesn't remove it automatically...
http://custom.simplemachines.org/mods/index.php?mod=982
RockCiclopedia (wiki - forum), Tutta la storia del rock, scritta da voi ...
Rimanere aggiornati sul mondo della musica grazie al nuovo feed "RockCiclopedia Music News"!

Kruss

Hi everyone
This may sound really noobish...but I need help getting this to work on my forums. :(
I can't seem to find the code to modify in Display.php [from Durr's post] and I was a bit confused by SoLoGHoST post's where I have to join tables. I also tried the "Last Edit" mod linked by lorenzone92 and it doesn't seem to work.

I'd really appreciate if someone would please help me with this. :)
I'm using SMF 1.1.10 and the Helios skin (Not sure if that's relevant to know but I figured it wouldn't hurt to tell anyway).

Regards,
Kruss

SoLoGHoST

for 1.1.10, just search for the $messages_request within Display.php and change the following table so that it is similar to what Durr has posted.  The column names may be slightly different, I'm not sure as I don't have an SMF 1.1.10 to look at for this edit.  But I'm pretty sure the $messages_request array is still there.  And do the rest of the edits, looking for where it gets defined.  For example, search for:  'modified' => array( in Display.php and do similar changes as what is already defined in there.  Just add the group index in here at the end.  And do a search for:  &#171; <em>', $txt['last_edit'] within Display.template.php and do similar changes to it that Durr has posted in that post as well.

Please try the following, if you still have problems, I'll take a look at it more deeply and give you exact FIND/REPLACE edits for SMF 1.1.10.

Cheers :)

Kruss

Thanks SoLoGHoST, I've done the following:

Display.php
$messages_request = db_query("
SELECT
msgs.ID_MSG, msgs.icon, msgs.subject, msgs.posterTime, msgs.posterIP, msgs.ID_MEMBER, msgs.modifiedTime, msgs.modifiedName, msgs.body,
msgs.smileysEnabled, msgs.posterName, msgs.posterEmail,
msgs.ID_MSG_MODIFIED < $topicinfo[new_from] AS isRead
FROM {$db_prefix}messages AS msgs
LEFT JOIN ($db_prefix)members AS mmbrs ON msgs.modifiedName = mmbrs.realName
WHERE msgs.ID_MSG IN (" . implode(',', $messages) . ")
ORDER BY msgs.ID_MSG" . (empty($options['view_newest_first']) ? '' : ' DESC'), __FILE__, __LINE__);

// Go to the last message if the given time is beyond the time of the last message.
if (isset($context['start_from']) && $context['start_from'] >= $topicinfo['numReplies'])
$context['start_from'] = $topicinfo['numReplies'];

// Since the anchor information is needed on the top of the page we load these variables beforehand.
$context['first_message'] = isset($messages[$firstIndex]) ? $messages[$firstIndex] : $messages[0];
if (empty($options['view_newest_first']))
$context['first_new_message'] = isset($context['start_from']) && $_REQUEST['start'] == $context['start_from'];
else
$context['first_new_message'] = isset($context['start_from']) && $_REQUEST['start'] == $topicinfo['numReplies'] - $context['start_from'];
}
else
{
$messages_request = false;
$context['first_message'] = 0;
$context['first_new_message'] = false;
}


'modified' => array(
'time' => timeformat($message['modifiedTime']),
'timestamp' => forum_time(true, $message['modifiedTime']),
'name' => $message['modifiedName']
'group' => $message['modifiedGroup']
),


Display.template.php

if ($settings['show_modify'] && !empty($message['modified']['name']) && ($message['modified']['group'] != 1))

Do you mind checking what I did wrong? Or I'm missing a bracket? Because it gave me this error:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /home/a/d/0/22439/22439/public_html/forum/Sources/Display.php on line 912

I checked the  line 912 and I can't see anything wrong with it...

if (empty($options['view_newest_first']))
$context['first_new_message'] = isset($context['start_from']) && $_REQUEST['start'] == $context['start_from'];
else
$context['first_new_message'] = isset($context['start_from']) && $_REQUEST['start'] == $topicinfo['numReplies'] - $context['start_from'];
}
else
{
$messages_request = false;
$context['first_message'] = 0;
$context['first_new_message'] = false;
}


I appreciate your help! Thanks in advance. :)

SoLoGHoST

Ok, right off of the bat I see this problem...
'modified' => array(
         'time' => timeformat($message['modifiedTime']),
         'timestamp' => forum_time(true, $message['modifiedTime']),
         'name' => $message['modifiedName']
         'group' => $message['modifiedGroup']
      ),

You need a comma after $message['modifiedName'] since you are adding another value to the array, like this:'modified' => array(
         'time' => timeformat($message['modifiedTime']),
         'timestamp' => forum_time(true, $message['modifiedTime']),
         'name' => $message['modifiedName'],
         'group' => $message['modifiedGroup']
      ),

Let me know if you get anymore errors after adding in the comma.

SoLoGHoST

#14
Also, I don't see you defining modifiedGroup in the query that should be getting it from the members table, ID_GROUP column:

msgs.ID_MSG, msgs.icon, msgs.subject, msgs.posterTime, msgs.posterIP, msgs.ID_MEMBER, msgs.modifiedTime, msgs.modifiedName, msgs.body,
            msgs.smileysEnabled, msgs.posterName, msgs.posterEmail,
            msgs.ID_MSG_MODIFIED < $topicinfo[new_from] AS isRead


There is no mmbrs.ID_GROUP AS modifiedGroup being declared here, so it will never find it.

You will need to change this:msgs.ID_MSG, msgs.icon, msgs.subject, msgs.posterTime, msgs.posterIP, msgs.ID_MEMBER, msgs.modifiedTime, msgs.modifiedName, msgs.body,
            msgs.smileysEnabled, msgs.posterName, msgs.posterEmail,
            msgs.ID_MSG_MODIFIED < $topicinfo[new_from] AS isRead

to this:msgs.ID_MSG, msgs.icon, msgs.subject, msgs.posterTime, msgs.posterIP, msgs.ID_MEMBER, msgs.modifiedTime, msgs.modifiedName, msgs.body,
            msgs.smileysEnabled, msgs.posterName, msgs.posterEmail,
            msgs.ID_MSG_MODIFIED < $topicinfo[new_from] AS isRead, mmbrs.ID_GROUP AS modifiedGroup

Keep the rest of it the same as it looks fine to me, but haven't really looked over thoroughly though.

Kruss

Thanks for the quick reply! Yeah, I seem to have forgotten how easily a simply syntax error can cause trouble. Now though I'm getting a different error message...

Database Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'members AS mmbrs ON msgs.modifiedName = mmbrs.realName
WHERE
File: /home/a/d/0/22439/22439/public_html/forum/Sources/Display.php
Line: 740

Note: It appears that your database may require an upgrade. Your forum's files are currently at version SMF 1.1.10, while your database is at version 1.1.9. The above error might possibly go away if you execute the latest version of upgrade.php.


Does that mean I have to update MySQL?

SoLoGHoST

Can you please show me line #740, I'll need the whole database query for this.

Will take a look at for you once you've inputted this info from Display.php.

SoLoGHoST

Ok, just now seeing this also...

LEFT JOIN ($db_prefix)members AS mmbrs ON msgs.modifiedName = mmbrs.realName

Should be this instead:

LEFT JOIN ($db_prefix)members AS mmbrs ON (mmbrs.realName = msgs.modifiedName)

Note the parenthesis.

Arantor

Um... also ($db_prefix)members should be {$db_prefix}members...? Otherwise it'll be calling on (smf_)members...?

Kruss

Uhm, do you think it'll be better if I just post the whole Display.php for you?
I've attached it here if you want to take a look.

Thanks again!

Advertisement: