Open Journal Systems  3.3.0
TemplateBasedFilter.inc.php
1 <?php
2 
17 import('lib.pkp.classes.filter.PersistableFilter');
18 
24  function __construct($filterGroup) {
25  parent::__construct($filterGroup);
26  }
27 
28 
29  //
30  // Abstract template methods
31  //
38  function getBasePath() {
39  // Must be implemented by sub-classes.
40  assert(false);
41  }
42 
47  function getTemplateName() {
48  // Must be implemented by sub-classes.
49  assert(false);
50  }
51 
60  function addTemplateVars($templateMgr, &$input, $request, &$locale) {
61  // Must be implemented by sub-classes.
62  assert(false);
63  }
64 
65 
66  //
67  // Implement template methods from Filter
68  //
72  function &process(&$input) {
73  // Initialize view
74  $locale = AppLocale::getLocale();
75  $request = Application::get()->getRequest();
76  $templateMgr = TemplateManager::getManager($request);
77 
78  // Add the filter's directory as additional template dir so that
79  // templates can include sub-templates in the same folder.
80  array_unshift($templateMgr->template_dir, $this->getBasePath());
81 
82  // Give sub-filters a chance to add their variables
83  // to the template.
84  $this->addTemplateVars($templateMgr, $input, $request, $locale);
85 
86  // Use a base path hash as compile id to make sure that we don't
87  // get namespace problems if several filters use the same
88  // template names.
89  $previousCompileId = $templateMgr->compile_id;
90  $templateMgr->compile_id = md5($this->getBasePath());
91 
92  // Let the template engine render the citation.
93  $output = $templateMgr->fetch($this->getTemplateName());
94 
95  // Remove the additional template dir
96  array_shift($templateMgr->template_dir);
97 
98  // Restore the compile id.
99  $templateMgr->compile_id = $previousCompileId;
100 
101  return $output;
102  }
103 }
104 
TemplateBasedFilter\getTemplateName
getTemplateName()
Definition: TemplateBasedFilter.inc.php:47
TemplateBasedFilter\getBasePath
getBasePath()
Definition: TemplateBasedFilter.inc.php:38
TemplateBasedFilter\process
& process(&$input)
Definition: TemplateBasedFilter.inc.php:72
TemplateBasedFilter
Abstract base class for all filters that transform their input via smarty templates.
Definition: TemplateBasedFilter.inc.php:19
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
TemplateBasedFilter\__construct
__construct($filterGroup)
Definition: TemplateBasedFilter.inc.php:24
TemplateBasedFilter\addTemplateVars
addTemplateVars($templateMgr, &$input, $request, &$locale)
Definition: TemplateBasedFilter.inc.php:60
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
PersistableFilter
A filter that can be persisted to the database.
Definition: PersistableFilter.inc.php:44