2 namespace sfjp\Wiki\Storage;
3 class File extends Base {
4 protected $datadir = './wikitexts';
6 function __construct($context = array()) {
7 parent::__construct($context);
8 if (!empty($context['storage.file.datadir']))
9 $this->datadir = $context['storage.file.datadir'];
12 public function get($page) {
13 return file_get_contents("{$this->datadir}/{$page}");
16 public function set($page, $text) {
17 if (!is_dir($this->datadir))
18 mkdir($this->datadir, 0755, true);
19 $file = "{$this->datadir}/{$page}";
20 $tmp = "{$this->datadir}/.{$page}.tmp.".getmypid();
21 file_put_contents($tmp, $text);
25 public function exists($page) {
26 file_exists("{$this->datadir}/{$page}");
29 public function remove($page) {
30 unlink("{$this->datadir}/{$page}");
33 public function get_list() {
34 $dh = opendir($this->datadir);
35 if (!$dh) return array();
38 while ($ent = readdir($dh)) {
39 if (substr($ent, 0, 1) == '.')
41 if (substr($ent, -1) == '~')
46 sort($ret, SORT_NATURAL|SORT_FLAG_CASE);