<?php
/**
 * @brief importExport, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!defined('DC_RC_PATH')) {
    return;
}

abstract class dcIeModule
{
    public $type;
    public $id;
    public $name;
    public $description;

    protected $import_url;
    protected $export_url;
    protected $core;
    protected $url;

    public function __construct($core)
    {
        $this->core = &$core;
        $this->setInfo();

        if (!in_array($this->type, ['import', 'export'])) {
            throw new Exception(sprintf('Unknown type for module %s', get_class($this)));
        }

        if (!$this->name) {
            $this->name = get_class($this);
        }

        $this->id  = get_class($this);
        $this->url = sprintf('plugin.php?p=importExport&type=%s&module=%s', $this->type, $this->id);
    }

    public function init()
    {
    }

    abstract protected function setInfo();

    final public function getURL($escape = false)
    {
        return $escape ? html::escapeHTML($this->url) : $this->url;
    }

    abstract public function process($do);

    abstract public function gui();

    protected function progressBar($percent)
    {
        $percent = ceil($percent);
        if ($percent > 100) {
            $percent = 100;
        }

        return '<div class="ie-progress"><div style="width:' . $percent . '%">' . $percent . ' %</div></div>';
    }

    protected function autoSubmit()
    {
        return form::hidden(['autosubmit'], 1);
    }

    protected function congratMessage()
    {
        return
        '<h3>' . __('Congratulation!') . '</h3>' .
        '<p class="success">' . __('Your blog has been successfully imported. Welcome on Dotclear 2!') . '</p>' .
        '<ul><li><strong><a href="' . $this->core->adminurl->decode('admin.post') . '">' . __('Why don\'t you blog this now?') . '</a></strong></li>' .
        '<li>' . __('or') . ' <a href="' . $this->core->adminurl->decode('admin.home') . '">' . __('visit your dashboard') . '</a></li></ul>';
    }
}
