smarty_internal_resource_registered.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Smarty Internal Plugin Resource Registered
  4. *
  5. * @package Smarty
  6. * @subpackage TemplateResources
  7. * @author Uwe Tews
  8. * @author Rodney Rehm
  9. */
  10. /**
  11. * Smarty Internal Plugin Resource Registered
  12. * Implements the registered resource for Smarty template
  13. *
  14. * @package Smarty
  15. * @subpackage TemplateResources
  16. * @deprecated
  17. */
  18. class Smarty_Internal_Resource_Registered extends Smarty_Resource
  19. {
  20. /**
  21. * populate Source Object with meta data from Resource
  22. *
  23. * @param Smarty_Template_Source $source source object
  24. * @param Smarty_Internal_Template $_template template object
  25. *
  26. * @return void
  27. */
  28. public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
  29. {
  30. $source->filepath = $source->type . ':' . $source->name;
  31. $source->uid = sha1($source->filepath);
  32. if ($source->smarty->compile_check) {
  33. $source->timestamp = $this->getTemplateTimestamp($source);
  34. $source->exists = !!$source->timestamp;
  35. }
  36. }
  37. /**
  38. * populate Source Object with timestamp and exists from Resource
  39. *
  40. * @param Smarty_Template_Source $source source object
  41. *
  42. * @return void
  43. */
  44. public function populateTimestamp(Smarty_Template_Source $source)
  45. {
  46. $source->timestamp = $this->getTemplateTimestamp($source);
  47. $source->exists = !!$source->timestamp;
  48. }
  49. /**
  50. * Get timestamp (epoch) the template source was modified
  51. *
  52. * @param Smarty_Template_Source $source source object
  53. *
  54. * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
  55. */
  56. public function getTemplateTimestamp(Smarty_Template_Source $source)
  57. {
  58. // return timestamp
  59. $time_stamp = false;
  60. call_user_func_array($source->smarty->registered_resources[$source->type][0][1], array($source->name, &$time_stamp, $source->smarty));
  61. return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
  62. }
  63. /**
  64. * Load template's source by invoking the registered callback into current template object
  65. *
  66. * @param Smarty_Template_Source $source source object
  67. *
  68. * @return string template source
  69. * @throws SmartyException if source cannot be loaded
  70. */
  71. public function getContent(Smarty_Template_Source $source)
  72. {
  73. // return template string
  74. $t = call_user_func_array($source->smarty->registered_resources[$source->type][0][0], array($source->name, &$source->content, $source->smarty));
  75. if (is_bool($t) && !$t) {
  76. throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
  77. }
  78. return $source->content;
  79. }
  80. /**
  81. * Determine basename for compiled filename
  82. *
  83. * @param Smarty_Template_Source $source source object
  84. *
  85. * @return string resource's basename
  86. */
  87. protected function getBasename(Smarty_Template_Source $source)
  88. {
  89. return basename($source->name);
  90. }
  91. }