Template class passes extension manager to template compiler.
Template compiler passes extension manager to template filter.
Template filter will use extension manager to locate hooks
as it is compiling templates.
All extension manager arguments are optional. If an extension
manager is not given, template hooks will not be invoked.
PHPBB3-9550
* p/ticket/10933:
[ticket/10933] Prose for get_first_file_location.
[ticket/10933] Remaining documentation for added functions in resource locator
[ticket/10933] Update template locator test to use style resource locator.
[ticket/10933] Dispose of locate function in template class.
[ticket/10933] Add mutators for template_path to style resource locator.
[ticket/10933] Delete template_path assignment.
[ticket/10933] Delete template_path from template class.
[ticket/10933] Add get_first_template_location.
There is no apparent reason for either initializing or clearing
the context in set_style/set_custom_style.
Initially the initialization there was added in
0501640d5db158a010741e27803191ab469834c4, for reasons that
presently I do not see.
This permits making context property back private.
PHPBB3-10933
Allow the helper function call_hook() of class phpbb_template to be called
from more than once location and thus for more than one hook (although there is
only one) by adding the method name as a parameter.
PHPBB3-11043
This commit adds a template path provider to separate the process of locating
(cached) paths in extensions from the template engine. The locator is supplied
with a list of paths from the path provider.
Admin templates can now be created in ext/<ext>/adm/style/ and regular
templates go into ext/<ext>/styles/<style>/template/. Extension templates
override regular templates. So if an extension supplies a file with a name
used in phpBB, the extension's file will be used.
A side-effect of this commit: Locator and Provider are now able to deal with
arbitrary levels of template inheritance. So we can expose this through
phpbb_template if we choose to, and allow styles to inherit from inherited
styles.
PHPBB3-10323
The origins of orig_tpl_* are not pretty. Please see the following commits
and associated tickets: r9823, r9839, r9847, r10150, r10460.
In short, multiple hacks were required due to template engine reading
inheritance/storedb flags from $user (global) even when the template that
was being looked up or rendered was not the "active style of the
current user".
We no longer store templates in the database, removing half of the problem.
This commit fixes the second half of the problem by deleting
set_template_path function from template locator, and moving that logic
back into the template class' set_template. set_template now calls
set_custom_template, the latter only taking the template path and the
fallback paths as parameters. With this change template locator no longer
uses $user and does not use phpbb root path either.
All logic involving setting the user's "active" template is now
encapsulated in a single template class's function, set_template.
Setting other templates is done via set_custom_template and the caller
is responsible for determining and passing in fallback/inheritance path,
if any.
PHPBB3-9726
Template locator is responsible for maintaining mapping from template
handles to filenames and paths, and provides resolution services
using these mappings.
Template locator is aware of template inheritance and is capable of
checking template file existence on the filesystem.
PHPBB3-9726