xref: /template/strap/ComboStrap/PathAbs.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauuse renderer_plugin_combo_analytics;
8*c3437056SNickeau
9*c3437056SNickeauabstract class PathAbs implements Path
10*c3437056SNickeau{
11*c3437056SNickeau
12*c3437056SNickeau
13*c3437056SNickeau    public function getExtension()
14*c3437056SNickeau    {
15*c3437056SNickeau        return pathinfo($this->getLastName(), PATHINFO_EXTENSION);
16*c3437056SNickeau    }
17*c3437056SNickeau
18*c3437056SNickeau    /**
19*c3437056SNickeau     *
20*c3437056SNickeau     * @return Mime based on the {@link PathAbs::getExtension()}
21*c3437056SNickeau     */
22*c3437056SNickeau    public function getMime(): ?Mime
23*c3437056SNickeau    {
24*c3437056SNickeau        $extension = $this->getExtension();
25*c3437056SNickeau        switch ($extension) {
26*c3437056SNickeau            case ImageSvg::EXTENSION:
27*c3437056SNickeau                /**
28*c3437056SNickeau                 * Svg is authorized when viewing but is not part
29*c3437056SNickeau                 * of the {@link File::getKnownMime()}
30*c3437056SNickeau                 */
31*c3437056SNickeau                return new Mime(Mime::SVG);
32*c3437056SNickeau            case JavascriptLibrary::EXTENSION:
33*c3437056SNickeau                return new Mime(Mime::JAVASCRIPT);
34*c3437056SNickeau            case renderer_plugin_combo_analytics::RENDERER_NAME_MODE:
35*c3437056SNickeau            case Json::EXTENSION:
36*c3437056SNickeau                return new Mime(Mime::JSON);
37*c3437056SNickeau            case "txt":
38*c3437056SNickeau                return new Mime(Mime::PLAIN_TEXT);
39*c3437056SNickeau            case "xhtml":
40*c3437056SNickeau            case "html":
41*c3437056SNickeau                return new Mime(Mime::HTML);
42*c3437056SNickeau            case "png":
43*c3437056SNickeau                return new Mime(Mime::PNG);
44*c3437056SNickeau            default:
45*c3437056SNickeau                $mime = mimetype($this->getLastName(), true)[1];
46*c3437056SNickeau                if ($mime === null || $mime === false) {
47*c3437056SNickeau                    return null;
48*c3437056SNickeau                }
49*c3437056SNickeau                return new Mime($mime);
50*c3437056SNickeau        }
51*c3437056SNickeau    }
52*c3437056SNickeau
53*c3437056SNickeau    public function getLastNameWithoutExtension()
54*c3437056SNickeau    {
55*c3437056SNickeau        return pathinfo($this->getLastName(), PATHINFO_FILENAME);
56*c3437056SNickeau    }
57*c3437056SNickeau
58*c3437056SNickeau    public function __toString()
59*c3437056SNickeau    {
60*c3437056SNickeau        return $this->toString();
61*c3437056SNickeau    }
62*c3437056SNickeau
63*c3437056SNickeau
64*c3437056SNickeau}
65