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
bdef2707b4 and the unused autoload code
introduced in f4cee92890.
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.
Now it is possible to have TinyMCE in the backend and SimpleMDE on the forum pages.
wysiwyg() got a new parameter $returnEditor to return the name of the editor.
wysiwyg() now checks if the choosen editor is installed.
wysiwyg() setting a value is not systemwide anymore (static var instead of registry)
Use the bbarea() $options array to define the editor to use e.g. $options['wysiwyg'] = 'tinymce4';
Updated forum_admin.php to support SimpleMDE.
Updated tinymce4/e_footer.php to support the new return value (editor name)
New prefs for forum: editor & quickreply
editor makes it possible to choose between bbcode or tinymce (if installed and html enabled)
quickreply gives the option to choose between the standard textarea or the choosen editor (from pref editor)
This is the least intrusive solution I could come up with.
Anything else I tried to reduce technical debt would break the very
tangled dependency web, so I settled for this.
Fixes: #3033