Advertisement:

Author Topic: More tags in extra info of log actions  (Read 1265 times)

Offline davidhs

  • Sr. Member
  • ****
  • Posts: 994
  • Gender: Male
More tags in extra info of log actions
« on: August 27, 2018, 02:27:31 PM »
Now SMF 2.0.x and 2.1 Beta x have one tag for insert message, topic and board IDs.

One of my mods inserts in Moderation log an action when something is moved from message1 to message2 and uses this:

Code: [Select]
<?php

// Language string.
$txt['modlog_ac_mymod_move'] = 'Moved the "{something}" by "{member}" from "{topic}" to "{topic2}"';

// Action logged to Moderation log.
$request $smcFunc['db_query']('''
SELECT subject
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_first_msg)
WHERE t.id_topic = {int:id_topic}'
,
array(
'id_topic' => $topic_to,
)
);
$row $smcFunc['db_fetch_assoc']($request);
$topic2 '<a href="' $scripturl '?topic=' $topic_to '.msg' $msg_to '#msg' $msg_to '">' $row['subject'] . '</a>';
$smcFunc['db_free_result']($request);

logAction('mymod_move', array('something' => $something_name'member' => $user_info['id'], 'message' => $msg_from'topic' => $topic_from'message2' => $msg_to'topic2' => $topic2));

?>

Can be added more tags to array extra?
- message2, message3,...
- topic2, topic3,...
- board2, board3,...

For example, in SMF 2.1 (GitHub version):
Code: (Search in Sources/Logging.php, function logActions() (line 547)) [Select]
<?php

if (isset($log['extra']['member_affected']))
$memID $log['extra']['member_affected'];
else
$memID $user_info['id'];

?>
Code: (Add after) [Select]
<?php

$fields = array('message''topic''board');
foreach ($fields as $field)
{
for ($i 2; isset($log['extra'][$field $i]); $i++)
{
if (!is_numeric($log['extra'][$field $i]))
{
trigger_error('logActions(): data\'s ' $field $i ' is not a number'E_USER_NOTICE);
unset($log['extra'][$field $i]);
break;
}
}
}

?>

Code: (Search in Sources/Modlog.php, function list_getModLogEntries() (line 454)) [Select]
<?php

// A message?
if (isset($row['extra']['message']))
$messages[(int) $row['extra']['message']][] = $row['id_action'];

?>
Code: (Add after) [Select]
<?php

// More messages, topics and boards. 
$fields = array('message''topic''board');
foreach ($fields as $field => $var)
{
$var $field 's';
for ($i 2; isset($row['extra'][$field $i]); $i++)
$$var[(int) $row['extra'][$field $i]][] = $row['id_action'];
}

?>

Code: (Search in Sources/Modlog.php, function list_getModLogEntries() (line 519)) [Select]
<?php

// Make the board number into a link - dealing with moving too.
if (isset($entries[$action]['extra']['board_to']) && $entries[$action]['extra']['board_to'] == $row['id_board'])
$entries[$action]['extra']['board_to'] = '<a href="' $scripturl '?board=' $row['id_board'] . '.0">' $row['name'] . '</a>';
elseif (isset($entries[$action]['extra']['board_from']) && $entries[$action]['extra']['board_from'] == $row['id_board'])
$entries[$action]['extra']['board_from'] = '<a href="' $scripturl '?board=' $row['id_board'] . '.0">' $row['name'] . '</a>';
elseif (isset($entries[$action]['extra']['board']) && $entries[$action]['extra']['board'] == $row['id_board'])
$entries[$action]['extra']['board'] = '<a href="' $scripturl '?board=' $row['id_board'] . '.0">' $row['name'] . '</a>';

?>
Code: (Add after) [Select]
<?php

else
{
for ($i 2; isset($entries[$action]['extra']['board' $i]); $i++)
{
if ($entries[$action]['extra']['board' $i] == $row['id_board'])
{
$entries[$action]['extra']['board' $i] = '<a href="' $scripturl '?board=' $row['id_board'] . '.0">' $row['name'] . '</a>';
break;
}
}
}

?>

Code: (Search in Sources/Modlog.php, function list_getModLogEntries() (line 569)) [Select]
<?php

// Make the topic number into a link - dealing with splitting too.
if (isset($this_action['extra']['topic']) && $this_action['extra']['topic'] == $row['id_topic'])
$this_action['extra']['topic'] = '<a href="' $scripturl '?topic=' $row['id_topic'] . '.' . (isset($this_action['extra']['message']) ? 'msg' $this_action['extra']['message'] . '#msg' $this_action['extra']['message'] : '0') . '">' $row['subject'] . '</a>';
elseif (isset($this_action['extra']['new_topic']) && $this_action['extra']['new_topic'] == $row['id_topic'])
$this_action['extra']['new_topic'] = '<a href="' $scripturl '?topic=' $row['id_topic'] . '.' . (isset($this_action['extra']['message']) ? 'msg' $this_action['extra']['message'] . '#msg' $this_action['extra']['message'] : '0') . '">' $row['subject'] . '</a>';

?>
Code: (Add after) [Select]
<?php

else
{
for ($i 2; isset($this_action['extra']['topic' $i]); $i++)
{
if ($this_action['extra']['topic' $i] == $row['id_topic'])
{
$this_action['extra']['topic' $i] = '<a href="' $scripturl '?topic=' $row['id_topic'] . '.' . (isset($this_action['extra']['message' $i]) ? 'msg' $this_action['extra']['message' $i] . '#msg' $this_action['extra']['message' $i] : '0') . '">' $row['subject'] . '</a>';
break;
}
}
}

?>

Code: (Search in Sources/Modlog.php, function list_getModLogEntries() (line 616)) [Select]
<?php

// Make the message number into a link.
if (isset($this_action['extra']['message']) && $this_action['extra']['message'] == $row['id_msg'])
$this_action['extra']['message'] = '<a href="' $scripturl '?msg=' $row['id_msg'] . '">' $row['subject'] . '</a>';

?>
Code: (Add after) [Select]
<?php

else
{
for ($i 2; isset($this_action['extra']['message' $i]); $i++)
{
if ($this_action['extra']['message' $i] == $row['id_msg'])
{
$this_action['extra']['message' $i] = '<a href="' $scripturl '?msg=' $row['id_msg'] . '">' $row['subject'] . '</a>';
break;
}
}
}

?>

Offline Kindred

  • The Mean One
  • Support Specialist
  • SMF Legend
  • *
  • Posts: 57,235
  • Gender: Male
    • Kindred-999 on GitHub
Re: More tags in extra info of log actions
« Reply #1 on: August 27, 2018, 03:39:22 PM »
At this point, I would say that this is beyond the scope of what remains to be done - we are working on getting an RC ready and there has to be a moratorium on new code and code changes at some point.
Please do not PM, IM or Email me with support questions.  You will get better and faster responses in the support boards.  Thank you.