PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 4.0.2
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v4.0.2
4.0.2 4.0.1 4.0.0 3.16.6 3.16.5 3.16.4 3.16.3 3.16.2 3.16.1 3.16.0 3.15.9 3.9.9 3.9.5 3.9.6 3.9.7 3.9.8 1.1.7 1.1.8 1.1.9 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 All 340 releases
profile-builder / assets / lib / Mustache / Cache / FilesystemCache.php

FilesystemCache.php in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 4.0.2, at assets/lib/Mustache/Cache/FilesystemCache.php

162 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of Mustache.php.
5 *
6 * (c) 2010-2017 Justin Hileman
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 /**
13 * Mustache Cache filesystem implementation.
14 *
15 * A FilesystemCache instance caches Mustache Template classes from the filesystem by name:
16 *
17 * $cache = new Mustache_Cache_FilesystemCache(dirname(__FILE__).'/cache');
18 * $cache->cache($className, $compiledSource);
19 *
20 * The FilesystemCache benefits from any opcode caching that may be setup in your environment. So do that, k?
21 */
22 class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
23 {
24 private $baseDir;
25 private $fileMode;
26
27 /**
28 * Filesystem cache constructor.
29 *
30 * @param string $baseDir Directory for compiled templates
31 * @param int $fileMode Override default permissions for cache files. Defaults to using the system-defined umask
32 */
33 public function __construct($baseDir, $fileMode = null)
34 {
35 $this->baseDir = $baseDir;
36 $this->fileMode = $fileMode;
37 }
38
39 /**
40 * Load the class from cache using `require_once`.
41 *
42 * @param string $key
43 *
44 * @return bool
45 */
46 public function load($key)
47 {
48 $fileName = $this->getCacheFilename($key);
49 if (!is_file($fileName)) {
50 return false;
51 }
52
53 require_once $fileName;
54
55 return true;
56 }
57
58 /**
59 * Cache and load the compiled class.
60 *
61 * @param string $key
62 * @param string $value
63 */
64 public function cache($key, $value)
65 {
66 $fileName = $this->getCacheFilename($key);
67
68 $this->log(
69 Mustache_Logger::DEBUG,
70 'Writing to template cache: "{fileName}"',
71 array('fileName' => $fileName)
72 );
73
74 $this->writeFile($fileName, $value);
75 $this->load($key);
76 }
77
78 /**
79 * Build the cache filename.
80 * Subclasses should override for custom cache directory structures.
81 *
82 * @param string $name
83 *
84 * @return string
85 */
86 protected function getCacheFilename($name)
87 {
88 return sprintf('%s/%s.php', $this->baseDir, $name);
89 }
90
91 /**
92 * Create cache directory.
93 *
94 * @throws Mustache_Exception_RuntimeException If unable to create directory
95 *
96 * @param string $fileName
97 *
98 * @return string
99 */
100 private function buildDirectoryForFilename($fileName)
101 {
102 $dirName = dirname($fileName);
103 if (!is_dir($dirName)) {
104 $this->log(
105 Mustache_Logger::INFO,
106 'Creating Mustache template cache directory: "{dirName}"',
107 array('dirName' => $dirName)
108 );
109
110 @mkdir($dirName, 0777, true);
111 // @codeCoverageIgnoreStart
112 if (!is_dir($dirName)) {
113 throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName));
114 }
115 // @codeCoverageIgnoreEnd
116 }
117
118 return $dirName;
119 }
120
121 /**
122 * Write cache file.
123 *
124 * @throws Mustache_Exception_RuntimeException If unable to write file
125 *
126 * @param string $fileName
127 * @param string $value
128 */
129 private function writeFile($fileName, $value)
130 {
131 $dirName = $this->buildDirectoryForFilename($fileName);
132
133 $this->log(
134 Mustache_Logger::DEBUG,
135 'Caching compiled template to "{fileName}"',
136 array('fileName' => $fileName)
137 );
138
139 $tempFile = tempnam($dirName, basename($fileName));
140 if (false !== @file_put_contents($tempFile, $value)) {
141 if (@rename($tempFile, $fileName)) {
142 $mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask());
143 @chmod($fileName, $mode);
144
145 return;
146 }
147
148 // @codeCoverageIgnoreStart
149 $this->log(
150 Mustache_Logger::ERROR,
151 'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"',
152 array('tempName' => $tempFile, 'fileName' => $fileName)
153 );
154 // @codeCoverageIgnoreEnd
155 }
156
157 // @codeCoverageIgnoreStart
158 throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName));
159 // @codeCoverageIgnoreEnd
160 }
161 }
162