LangSwitch.php 1.65 KB
<?php

namespace backend\widgets\LangSwitch;

use Yii;
//
use thread\app\base\widgets\Widget;
use thread\app\base\models\ActiveRecord;

/**
 * Class LangSwitch
 * @package backend\widgets\LangSwitch
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class LangSwitch extends Widget
{

    /**
     * @var string
     */
    public $view = 'LangSwitch';
    /**
     * @var string
     */
    public $name = 'LangSwitch';

    /**
     * @var string
     */
    public $current = '';
    /**
     * @var null
     */
    protected $items = null;

    /**
     *
     */
    public function init()
    {
        parent::init();
        $langModel = Yii::$app->languages;
        $items = $langModel->getAll();
        foreach ($items as $k => $item) {
            if ($item['deleted'] == ActiveRecord::STATUS_KEY_ON) {
                unset($items[$k]);
            }
        }
        $this->items = $items;
        $this->current = $langModel->getCurrent()['label'];
    }

    /**
     * @return string
     */
    public function run()
    {
        $items = [];
        $request = Yii::$app->getRequest();
        $baseUrl = $request->getBaseUrl();
        $url = substr($request->getUrl(), strlen($baseUrl));

        foreach ($this->items as $lang) {
            if (!$lang['by_default']) {
                $items[] = ['label' => $lang['label'], 'url' => $baseUrl . '/' . $lang['alias'] . $url];
            } else {
                $items[] = ['label' => $lang['label'], 'url' => $baseUrl . $url];
            }
        }
        return $this->render($this->view, [
            'models' => $items,
            'current' => $this->current,
        ]);
    }
}