<?php

namespace App\Libraries\MyStorage;

use App\Models\Mangboard\FileModel;

class MangboardStorage extends FileStorage
{
    private $_model = null;
    public function __construct(string $path)
    {
        parent::__construct($path);
    }
    public function getBasePath(): string
    {
        return getenv("mangboard.uploads.path");
    }
    public function getUploadPath(): string
    {
        return parent::getUploadPath() . DIRECTORY_SEPARATOR . $this->getBasePath();
    }
    public function getUploadURL(): string
    {
        return sprintf("/wp-content/%s/%s", parent::getUploadURL(), $this->getBasePath());
    }
    public function getModel(): FileModel
    {
        if ($this->_model === null) {
            return $this->_model = new FileModel();
        }
        return $this->_model;
    }
    final public function getHTMLTag(string $content = ""): string
    {
        //Board 게시판 image_path , content용 데이터 배열에 추가 후 modifyBoard에서 처리
        switch ($this->getOrintginType()) {
            case "image":
                $content = sprintf(
                    "<img src=\"%s/%s/%s\" alt=\"%s\">",
                    $this->getUploadURL(),
                    $this->getPath(),
                    $this->getOriginName(),
                    $this->getOriginName()
                );
                break;
            case "video":
                $content = sprintf(
                    "<video alt=\"%s\" controls autoplay>
                        <source src=\"%s/%s/%s\" type=\"%s\">
                        Your browser does not support the video tag.
                    </video>",
                    $this->getOriginName(),
                    $this->getUploadURL(),
                    $this->getPath(),
                    $this->getOriginName(),
                    $this->getMimeType(),
                );
                break;
        }
        log_message("debug", sprintf(
            "\n--------%s--------\n%s\n--------------------\n",
            __FUNCTION__,
            $content
        ));
        return $content;
    }
}
