@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 74 lines 1.7 kB view raw
1<?php 2 3final class DivinerPublishCache extends DivinerDiskCache { 4 5 private $pathMap; 6 private $index; 7 8 public function __construct($cache_directory) { 9 parent::__construct($cache_directory, 'diviner-publish-cache'); 10 } 11 12 13/* -( Path Map )----------------------------------------------------------- */ 14 15 16 public function getPathMap() { 17 if ($this->pathMap === null) { 18 $this->pathMap = $this->getCache()->getKey('path', array()); 19 } 20 return $this->pathMap; 21 } 22 23 public function writePathMap() { 24 $this->getCache()->setKey('path', $this->getPathMap()); 25 } 26 27 public function getAtomPathsFromCache($hash) { 28 return idx($this->getPathMap(), $hash, array()); 29 } 30 31 public function removeAtomPathsFromCache($hash) { 32 $map = $this->getPathMap(); 33 unset($map[$hash]); 34 $this->pathMap = $map; 35 return $this; 36 } 37 38 public function addAtomPathsToCache($hash, array $paths) { 39 $map = $this->getPathMap(); 40 $map[$hash] = $paths; 41 $this->pathMap = $map; 42 return $this; 43 } 44 45 46/* -( Index )-------------------------------------------------------------- */ 47 48 49 public function getIndex() { 50 if ($this->index === null) { 51 $this->index = $this->getCache()->getKey('index', array()); 52 } 53 return $this->index; 54 } 55 56 public function writeIndex() { 57 $this->getCache()->setKey('index', $this->getIndex()); 58 } 59 60 public function deleteAtomFromIndex($hash) { 61 $index = $this->getIndex(); 62 unset($index[$hash]); 63 $this->index = $index; 64 return $this; 65 } 66 67 public function addAtomToIndex($hash, array $data) { 68 $index = $this->getIndex(); 69 $index[$hash] = $data; 70 $this->index = $index; 71 return $this; 72 } 73 74}