/includes/patTemplate/patTemplate/TemplateCache/File.php

https://github.com/Arkadiy-Sedelnikov/joostina-1.4 · PHP · 64 lines · 47 code · 4 blank · 13 comment · 9 complexity · ad757cf97f92ae07f1f8b63595154562 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joostina
  4. * @copyright ��������� ����� (C) 2008 Joostina team. ��� ����� ��������.
  5. * @license �������� http://www.gnu.org/licenses/gpl-2.0.htm GNU/GPL, ��� help/license.php
  6. * Joostina! - ��������� ����������� ����������� ���������������� �� �������� �������� GNU/GPL
  7. * ��� ��������� ���������� � ������������ ����������� � ��������� �� ��������� �����, �������� ���� help/copyright.php.
  8. * @version 3.1.0
  9. * @package patTemplate
  10. * @author Stephan Schmidt <schst@php.net>
  11. * @license LGPL
  12. * @link http://www.php-tools.net
  13. */
  14. // ������ ������� �������
  15. defined('_JLINDEX') or die();
  16. class patTemplate_TemplateCache_File extends patTemplate_TemplateCache{
  17. var $_params = array('cacheFolder' => './cache', 'lifetime' => 'auto', 'prefix' => '', 'filemode' => null);
  18. function load($key, $modTime = -1){
  19. $filename = $this->_getCachefileName($key);
  20. if(!file_exists($filename) || !is_readable($filename)){
  21. return false;
  22. }
  23. $generatedOn = filemtime($filename);
  24. $ttl = $this->getParam('lifetime');
  25. if($ttl == 'auto'){
  26. if($modTime < 1){
  27. return false;
  28. }
  29. if($modTime > $generatedOn){
  30. return false;
  31. }
  32. return unserialize(file_get_contents($filename));
  33. } elseif(is_int($ttl)){
  34. if($generatedOn + $ttl < time()){
  35. return false;
  36. }
  37. return unserialize(file_get_contents($filename));
  38. }
  39. return false;
  40. }
  41. function write($key, $templates){
  42. $cacheFile = $this->_getCachefileName($key);
  43. $fp = @fopen($cacheFile, 'w');
  44. if(!$fp){
  45. return false;
  46. }
  47. flock($fp, LOCK_EX);
  48. fputs($fp, serialize($templates));
  49. flock($fp, LOCK_UN);
  50. $filemode = $this->getParam('filemode');
  51. if($filemode !== null){
  52. chmod($cacheFile, $filemode);
  53. }
  54. return true;
  55. }
  56. function _getCachefileName($key){
  57. return $this->getParam('cacheFolder') . '/' . $this->getParam('prefix') . $key . '.cache';
  58. }
  59. }
  60. ?>