22
33namespace UndefinedOffset \Markdown \Model \FieldTypes ;
44
5- use SilverStripe \ Core \ Cache ;
5+ use Psr \ SimpleCache \ CacheInterface ;
66use SilverStripe \Core \ClassInfo ;
7+ use SilverStripe \Core \Injector \Injector ;
78use SilverStripe \ORM \FieldType \DBText ;
89use UndefinedOffset \Markdown \Renderer \GithubMarkdownRenderer ;
10+ use UndefinedOffset \Markdown \Renderer \IMarkdownRenderer ;
911
10- class Markdown extends DBText
12+ /**
13+ * Class Markdown
14+ * @package UndefinedOffset\Markdown\Model\FieldTypes
15+ */
16+ class DBMarkdown extends DBText
1117{
1218 /**
1319 * {@inheritDoc}
1420 */
15- public static $ casting = array (
21+ private static $ casting = [
1622 'AsHTML ' => 'HTMLText ' ,
17- 'Markdown ' => 'DBText '
18- ) ;
23+ 'Markdown ' => 'DBText ' ,
24+ ] ;
1925
2026 /**
2127 * @var string
2228 */
23- public static $ escape_type = 'xml ' ;
29+ private static $ escape_type = 'xml ' ;
2430
2531 /**
2632 * @var string
2733 */
28- private static $ renderer = ' UndefinedOffset \\ Markdown \\ Renderer \\ GithubMarkdownRenderer ' ;
34+ private static $ renderer = GithubMarkdownRenderer::class ;
2935
3036 /**
31- * @var \UndefinedOffset\Markdown\Renderer\ IMarkdownRenderer
37+ * @var IMarkdownRenderer
3238 */
3339 private $ renderInst ;
3440
@@ -41,7 +47,7 @@ class Markdown extends DBText
4147 /**
4248 * Checks cache to see if the contents of this field have already been loaded from github, if they haven't
4349 * then a request is made to the github api to render the markdown
44- * @param bool $useGFM Use Github Flavored Markdown or render using plain markdown defaults to false just like
50+ * @param bool $useGFM Use Github Flavored Markdown or render using plain markdown defaults to false just like
4551 * how readme files are rendered on github
4652 * @return string Markdown rendered as HTML
4753 */
@@ -66,13 +72,14 @@ public function AsHTML($useGFM = false)
6672 }
6773
6874 //Init cache stuff
69- $ cacheKey = $ this ->getCacheKey ();
70- $ cache = Cache:: factory ( ' Markdown ' );
71- $ cachedHTML = $ cache ->load ($ cacheKey );
75+ /* $cacheKey = $this->getCacheKey();
76+ $cache = Injector::inst()->get(CacheInterface::class . '.markdown ');
77+ $cachedHTML = $cache->load($cacheKey);//*/
7278
7379 //Check cache, if it's good use it instead
74- if ($ cachedHTML !== false ) {
80+ if (isset ( $ cachedHTML ) && $ cachedHTML !== false ) {
7581 $ this ->parsedHTML = $ cachedHTML ;
82+
7683 return $ this ->parsedHTML ;
7784 }
7885
@@ -88,10 +95,12 @@ public function AsHTML($useGFM = false)
8895 $ this ->parsedHTML = $ response ;
8996
9097 //Cache response to file system
91- $ cache ->save ($ this ->parsedHTML , $ cacheKey );
98+ if (isset ($ cache ) && isset ($ cacheKey )) {
99+ $ cache ->save ($ this ->parsedHTML , $ cacheKey );
100+ }
92101
93102 //Reset GFM
94- if ($ renderer instanceof GithubMarkdownRenderer) {
103+ if ($ renderer instanceof GithubMarkdownRenderer && isset ( $ beforeUseGFM ) ) {
95104 GithubMarkdownRenderer::setUseGFM ($ beforeUseGFM );
96105 }
97106
@@ -116,15 +125,15 @@ public function forTemplate()
116125 */
117126 public static function setRenderer ($ renderer )
118127 {
119- if (ClassInfo::classImplements ($ renderer , ' SilverStripe \\ Markdown \\ Renderer \\ IMarkdownRenderer ' )) {
128+ if (ClassInfo::classImplements ($ renderer , IMarkdownRenderer::class )) {
120129 self ::$ renderer = $ renderer ;
121130 } else {
122131 user_error ('The renderer ' . $ renderer . ' does not implement IMarkdownRenderer ' , E_USER_ERROR );
123132 }
124133 }
125134
126135 /**
127- * Gets the active mardown renderer
136+ * Gets the active markdown renderer
128137 * @return IMarkdownRenderer An implementation of IMarkdownRenderer
129138 */
130139 private function getRenderer ()
0 commit comments