Pete. Why would a hook be able to test for dupes more than a handler relying on a hook?
Because right now the hook itself exposes the entire credits list. It would be trivial for any hooked function to see what else is there.
But if there's a secondary handler, by definition the handler's the one handling the credits - so what the hook sees/gets/returns is only its own. So the handler would have to do the work of figuring out duplicates. (That is, assuming the handler is being set up to prevent abuse. If not, the handler becomes unnecessary because the entire variable just gets passed directly to the hook in the first place)
Remember that Smf's credit page is well hidden, hence why no one uses it...
Not only that, but it's actually impossible to cleanly add to the list and be reliable. There is no hook in SMF to attach to, so short of some other hack introducing a layer in Who.php, that manipulates $context['copyrights'] as an _above template so that it's applied before the main layer is called, you're reliant on standard editing.
The problem with standard editing is that it's fragile, because the entirety of its code is thus:
$context['copyrights'] = array(
'smf' => sprintf($forum_copyright, $forum_version),
/* Modification Authors: You may add a copyright statement to this array for your mods.
Copyright statements should be in the form of a value only without a array key. I.E.:
'Some Mod by Thantos © 2010',
$txt['some_mod_copyright'],
*/
'mods' => array(
),
);
if (!$in_admin)
{
loadTemplate('Who');
$context['sub_template'] = 'credits';
$context['robot_no_index'] = true;
$context['page_title'] = $txt['credits'];
}That's the end of the SMF credits function after that. So the only thing you can do is rely on not hitting something else that another mod has - because if you do, while it's possible that it'll still work, it's more likely that one, or other, or both of the mods will cease to be uninstallable thereafter.
Without actually having a hook for credits, the page becomes next to useless to have.
Oh, and note the fact that it's not indexed by search engines. I'm undecided whether that should change in Wedge - but there is good reason not to.