<?php

use Acms\Services\Blog\BlogRepository;
use Acms\Services\Facades\Application;

class ACMS_POST_Blog_Delete extends ACMS_POST
{
    public function post()
    {
        $this->Post->reset(true);
        $this->Post->setMethod('blog', 'subBlogExists', !isBlogGlobal(BID));
        $this->Post->setMethod('blog', 'operable', Blog::canDelete(BID));
        $this->Post->validate();

        if ($this->Post->isValidAll()) {
            $blogRepository = Application::make('blog.repository');
            assert($blogRepository instanceof BlogRepository);

            // 親 ID とブログ名は削除前に取得しておく（削除後はリダイレクト先 / ログに使えない）
            $parentBlogId = ACMS_RAM::blogParent(BID);
            $blogName = ACMS_RAM::blogName(BID);

            $blogRepository->delete(BID);

            Cache::flush('temp');

            AcmsLogger::info('「' . $blogName . '」ブログを削除しました');

            $this->redirect(acmsLink([
                'bid'   => $parentBlogId,
                'admin' => 'blog_edit',
            ]));
        } else {
            AcmsLogger::info('「' . ACMS_RAM::blogName(BID) . '」ブログの削除に失敗しました');
        }

        return $this->Post;
    }
}
