Hmm, I think they do..? (Once you ucfirst them, of course...)
And an autoloader wouldn't help in wedit, wezip, westr, wesql or similar cases (but most of those aren't dynamically loading) or any similar 5-letter class naming scheme because there's no way to derive the filename from those class names.
And in any case, an autoloader is going to be largely screwed if you want plugins to use them because the plugin folders aren't part of the autoload list. (XenForo solves this aspect by essentially expecting plugins to add to the master Library/ folder so then you have Library/Author/System/Component deals, giving you classes named Author_System_Component, which IMHO is hideously long) And plugins will want to declare their own notifications at times.
It's actually quite tempting to ditch media ratings in favor of likes, but in that situation, things like fox.noisen.com lose some of their interest, at least for me -- since I like giving very precise ratings to these audio files. But really, in 95% of the cases, a like would even be preferable, because it's much easier to 'grasp' for users, who these days are so incredibly lazy...
Dunno if it matters that much -- if id_object is included as "AND id_object ...", MySQL will prioritize the first test (if it's keyed) before this one, right..?
In hindsight my index suggestion was probably naive but I'm kind of thinking on the hoof a bit here. If you have two clauses in a WHERE, MySQL is going to run them in that order. That means if you're doing two WHEREs on table contents, the WHERE clauses should follow the index.
This is kind of a chicken/egg scenario, the query should follow the index but the index is for the query's benefit. What is ideal is the characteristic of selectivity. The more selective something is - i.e. the criteria that lets you select a suitably useful subset of rows with the fewest characters - the better the index will be.
I suggested notification then what the notification is about, because that's logically the direction of selectivity, but I suspect on profiling it, putting the index on id_object then the type of notification (but making the index cover both fields in all cases) would be even better. It's still selecting the same rows, still selecting the same data, but the way it goes about it (which is what EXPLAIN will tell you) is faster. If you have to go through something row by row, better to have the fewest rows possible first.
Oh, you have no idea how many times I regretted including AeMe by default in Wedge... :^^;:
Not because it's not maintainable -- it is -- but for two reasons:
- too many 'loose licenses' in the code, meaning it's currently not compatible with Wedge's, and it will eventually force me to change most of the libraries to make it work, while I wouldn't have had to do it (so soon), had it been a plugin...
- my original plan was to ditch the attachment system, and replace it with media items uploaded to a default, fallback 'attachments' folder. Hmm... Well, I never got around to do that. Too much attachment code, too many things to change entirely. I could have done it at the beginning... But three years later, I'm just wary of huge code overhauls, and I don't see myself ever doing it, which is a pity...
And I suspect it wouldn't be such a big deal to do the replacement - the real issue is doing it for *here* at this point in time. Though I'd suggest refactoring Aeva's code at this point so that action=media itself might still delegate tasks everywhere but it doesn't need to load hundreds of KB of code to do so every time (for busy galleries it can actually hammer a server, to the point where one 'firewall' mod for SMF typically considers it a DOS risk)
If you like, it's something I can tackle when I'm back?
Why is Notifications a plural, and Class-Notification a singular, for instance..? :P
Why is weNotif called that way (Wedge standard is "wefirstletters", all lowercase[1]), and why is it an object to begin with?
Of course it would also encourage standardisation of the naming system like you wanted to do.
I'm currently holding my changes, been doing so for a week now, I don't know where to go...
(Mind you, this isn't the only thing I've been stuck on; I'm very, extremely stuck on getting infinite scrolling to work 100%, and despite several internal rewrites, I still can't get it to behave better than it currently does.)
I do have some of the changes fixed for the /e modifier deprecation but I'm not yet ready to commit them for a similar sort of reason