Prevents e_plugin::buildAddonPrefLists() from wiping out the variable
that is tracking the currently loaded plugin by moving the currently
loaded plugin to the end of the iterated array
Fixes: #3531Fixes: e107inc/e107-test#9
Instead of every independently operating client code figuring out its
own autoload policies, the e107 class file e107_class.php now takes care
of autoloading.
Any client that uses the e107 class will automatically benefit from
autoloading for e107.
This cuts down on potential code duplication, and e107::getSingleton()
is no longer tied to trying to figure out the class path.
This commit REMOVES support for the unused constant flag
E107_DISABLE_AUTOLOAD introduced in
bdef2707b4cafe34e5485d8733138a0e87f43a39 and the unused autoload code
introduced in f4cee9289087c0119bc6797f7dfb7792a62b0be3.
e_shims is an e107 v2-compatible class for the first namespaced core
class, e107\Shims\All.
e107\Shims\All is built from the e107\Shims\InternalShims trait.
e107\Shims\InternalShims currently implements a resilient replacement
for the PHP internal readfile(), which is needed by issue #3528.
As for how the new namespaced classes are handled, the e107 class
(e107_handlers/e107_class.php) has an updated e107::autoload() which
detects namespaced classes and goes to e107::autoload_namespaced().
Namespaced classes handled by e107 are in the \e107 top-level namespace,
and all sub-levels match directory paths under e_HANDLER.
This "inline token" is generated 30 times in my test, but it's the same
session_id() being hashed. This is wasteful and can be mitigated in two
ways:
* Reducing the time cost like so: return password_hash(session_id(),
PASSWORD_DEFAULT, ['cost' => 04]);
* Storing the hash as an instance variable the first time it's
generated
This commit applies both mitigations.