1c3437056SNickeau<?php 2c3437056SNickeau 3c3437056SNickeau 4c3437056SNickeaunamespace ComboStrap; 5c3437056SNickeau 6c3437056SNickeau 7c3437056SNickeauuse renderer_plugin_combo_analytics; 8c3437056SNickeau 9c3437056SNickeauabstract class PathAbs implements Path 10c3437056SNickeau{ 11c3437056SNickeau 12c3437056SNickeau 13c3437056SNickeau public function getExtension() 14c3437056SNickeau { 15c3437056SNickeau return pathinfo($this->getLastName(), PATHINFO_EXTENSION); 16c3437056SNickeau } 17c3437056SNickeau 18c3437056SNickeau /** 19c3437056SNickeau * 20c3437056SNickeau * @return Mime based on the {@link PathAbs::getExtension()} 21c3437056SNickeau */ 22c3437056SNickeau public function getMime(): ?Mime 23c3437056SNickeau { 24c3437056SNickeau $extension = $this->getExtension(); 25c3437056SNickeau switch ($extension) { 26c3437056SNickeau case ImageSvg::EXTENSION: 27c3437056SNickeau /** 28c3437056SNickeau * Svg is authorized when viewing but is not part 29c3437056SNickeau * of the {@link File::getKnownMime()} 30c3437056SNickeau */ 31c3437056SNickeau return new Mime(Mime::SVG); 32c3437056SNickeau case JavascriptLibrary::EXTENSION: 33c3437056SNickeau return new Mime(Mime::JAVASCRIPT); 34c3437056SNickeau case renderer_plugin_combo_analytics::RENDERER_NAME_MODE: 35c3437056SNickeau case Json::EXTENSION: 36c3437056SNickeau return new Mime(Mime::JSON); 37c3437056SNickeau case "txt": 38c3437056SNickeau return new Mime(Mime::PLAIN_TEXT); 39c3437056SNickeau case "xhtml": 40c3437056SNickeau case "html": 41c3437056SNickeau return new Mime(Mime::HTML); 42c3437056SNickeau case "png": 43c3437056SNickeau return new Mime(Mime::PNG); 44*4cadd4f8SNickeau case "css": 45*4cadd4f8SNickeau return new Mime(Mime::CSS); 46c3437056SNickeau default: 47c3437056SNickeau $mime = mimetype($this->getLastName(), true)[1]; 48c3437056SNickeau if ($mime === null || $mime === false) { 49c3437056SNickeau return null; 50c3437056SNickeau } 51c3437056SNickeau return new Mime($mime); 52c3437056SNickeau } 53c3437056SNickeau } 54c3437056SNickeau 55c3437056SNickeau public function getLastNameWithoutExtension() 56c3437056SNickeau { 57c3437056SNickeau return pathinfo($this->getLastName(), PATHINFO_FILENAME); 58c3437056SNickeau } 59c3437056SNickeau 60c3437056SNickeau public function __toString() 61c3437056SNickeau { 62*4cadd4f8SNickeau return $this->toUriString(); 63*4cadd4f8SNickeau } 64*4cadd4f8SNickeau 65*4cadd4f8SNickeau 66*4cadd4f8SNickeau public function toUriString(): string 67*4cadd4f8SNickeau { 68c3437056SNickeau return $this->toString(); 69c3437056SNickeau } 70c3437056SNickeau 71*4cadd4f8SNickeau /** 72*4cadd4f8SNickeau * @throws ExceptionCombo 73*4cadd4f8SNickeau */ 74*4cadd4f8SNickeau function toDokuPath(): DokuPath 75*4cadd4f8SNickeau { 76*4cadd4f8SNickeau if($this instanceof DokuPath){ 77*4cadd4f8SNickeau return $this; 78*4cadd4f8SNickeau } 79*4cadd4f8SNickeau if($this instanceof LocalPath){ 80*4cadd4f8SNickeau return $this->toDokuPath(); 81*4cadd4f8SNickeau } 82*4cadd4f8SNickeau throw new ExceptionCombo("This is not a doku path or local path"); 83*4cadd4f8SNickeau } 84*4cadd4f8SNickeau 85c3437056SNickeau 86c3437056SNickeau} 87