Your IP : 216.73.216.79


Current Path : /var/www/html/dosm/backend/modules/menu/models/frontend/
Upload File :
Current File : /var/www/html/dosm/backend/modules/menu/models/frontend/Menu.php

<?php

namespace backend\modules\menu\models\frontend;

use Yii;
use backend\modules\mimin\models\Route;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
use yii\behaviors\BlameableBehavior;
use yii\db\Expression;
use yii\db\ActiveRecord;
use asinfotrack\yii2\audittrail\behaviors\AuditTrailBehavior;

// use backend\modules\mimin\models\AuthItem;

/**
 * This is the model class for table "frontend_menu".
 *
 * @property integer $menu_id
 * @property string $menu_name
 * @property integer $menu_order
 * @property integer $page_id
 * @property string $menu_link
 * @property integer $menu_parent_id
 */
class Menu extends \yii\db\ActiveRecord {

    public $page_id;
    public $param;
    public $param_item;

    /**
     *
     * @inheritdoc
     */
    public static function tableName() {
        return 'frontend_menu';
    }

    public function behaviors() {
        return [
            'audittrail' => [
                'class' => AuditTrailBehavior::className(),
                // some of the optional configurations
                'ignoredAttributes' => ['created_at', 'updated_at'],
                'consoleUserId' => 1,
                'attributeOutput' => [
                    'desktop_id' => function ($value) {
                        $model = Desktop::findOne($value);
                        return sprintf('%s %s', $model->manufacturer, $model->device_name);
                    },
                    'last_checked' => 'datetime',
                ],
            ],
        ];
    }

    /**
     *
     * @inheritdoc
     */
    public function rules() {
        return [
            [
                [
                    'menu_name',
                    'menu_link',
                    'menu_class',
                    'menu_field_id',
                    'menu_name'
                ],
                'string'
            ],
            [['menu_icon', 'menu_type', 'new_label', 'new_tab', 'menu_name2'], 'safe'],
            [
                [
                    'menu_parent_id',
                    'menu_status',
                ],
                'integer'
            ]
        ];
    }

    /**
     *
     * @inheritdoc
     */
    public function attributeLabels() {
        return [
            'menu_id' => 'Menu ID',
            'menu_name' => 'Menu Name',
            'menu_name2' => 'Menu Name (Malay)',
            'menu_link' => 'Menu Link',
            'menu_field_id' => 'Menu ID',
            'menu_parent_id' => 'Menu Parent ID',
            'menu_icon' => 'Menu Icon',
            'menu_type' => 'Menu Type',
            'new_label' => 'New Label',
            'new_tab' => 'Open New Tab'
        ];
    }

    public static function dropdown($parent_id = 0) {
        static $dropdown;
        if ($dropdown == null) {
            $dropdown[0] = "Without parent menu";
            $models = static::find()->all();
            foreach ($models as $model) {
                $dropdown[$model->menu_id] = $model->menu_name;
            }
        }

        return $dropdown;
    }

    public static function listofmenu() {
        $menu = self::find()->all();
        $arr = [];
        array_walk($menu, function ($v, $i) use (&$arr) {
            return $arr[$v->menu_id] = $v->menu_name;
        });
        return $arr;
    }

    public static function getPage() {
        $page = Yii::$app->db->createCommand('SELECT site_id, page_id, page_name FROM frontend_page')->queryAll();
        $arr = [];
        array_walk($page, function ($v, $i) use (&$arr) {
            $arr[json_encode([
                        $v['site_id'],
                        $v['page_id']
                    ])] = $v['page_name'];
        });

        return $arr;
    }

    public static function getPageList() {
        $page = Yii::$app->db->createCommand('SELECT page_id, page_name FROM frontend_page')->queryAll();
        $arr = [];
        array_walk($page, function ($v, $i) use (&$arr) {
            $arr[$v['page_id']] = $v['page_name'];
        });
        return $arr;
    }

    public static function getSiteList() {
        $page = Yii::$app->db->createCommand('SELECT site_id, site_name FROM frontend_site')->queryAll();
        $arr = [];
        array_walk($page, function ($v, $i) use (&$arr) {
            $arr[$v['site_id']] = $v['site_name'];
        });
        return $arr;
    }

    public static function getArticleList() {
        return Yii::$app->db->createCommand('SELECT content_article_id, content_article_title_my FROM content_article')->queryAll();
    }

    public static function getImageSliderList() {
        return Yii::$app->db->createCommand('SELECT content_image_slider_id, content_image_slider_title FROM content_image_slider')->queryAll();
    }

    // require mimin modules
    public static function getRoute() {
        $r = Route::find()->where('alias NOT LIKE "%*%" AND status = 1')
                ->orderBy('name')
                ->all();
        $arr = [];
        array_walk($r, function ($v, $i) use (&$arr) {
            return $arr[$v->name] = $v->name;
        });
        return $arr;
    }

    public static function getRole() {
        $arr = ArrayHelper::map(\backend\modules\refdynawebv2\models\Ref::find()->where(['cat' => 'FRONTUSER_ROLE'])->orderBy(['descr_en' => SORT_ASC])->all(), 'code', 'descr_en');
        return array_merge(['public' => 'Public'], $arr);
//return [
        //    'PUBLIC' => 'Public'
        //]; // add more role if frontend support it
    }

    public static function paramProvider() {
        return [
            'index.php?r=menu/frontend/article-item' => 'article',
            'index.php?r=menu/frontend/slider-item' => 'slider'
        ];
    }

}