Your IP : 216.73.216.79


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

<?php

namespace backend\modules\menu\models\frontend;

use Yii;

/**
 * This is the model class for table "frontend_role_mapping".
 *
 * @property int $id
 * @property string $role_code
 * @property int $menu_id
 * @property int $parent_id
 * @property string $created_by
 * @property string $created_at
 * @property string $updated_by
 * @property string $updated_at
 *
 * @property FrontendMenu $menu
 */
class RoleMapping extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'frontend_role_mapping';
    }
    
    /**
     * 
     * @var string $baseparam set "param" that will be used
     */
    public static $baseparam;
    
    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['role_code', 'menu_id', 'parent_id', 'page_id', 'site_id'], 'required'],
            [['menu_id', 'parent_id', 'status'], 'integer'],
            [['created_at', 'updated_at','sort'], 'safe'],
            [['role_code', 'created_by', 'updated_by'], 'string', 'max' => 255],
            [['menu_id'], 'exist', 'skipOnError' => true, 'targetClass' => Menu::className(), 'targetAttribute' => ['menu_id' => 'menu_id']],
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => Yii::t('app', 'ID'),
            'role_code' => Yii::t('app', 'Role Code'),
            'menu_id' => Yii::t('app', 'Menu ID'),
            'parent_id' => Yii::t('app', 'Parent ID'),
            'created_by' => Yii::t('app', 'Created By'),
            'created_at' => Yii::t('app', 'Created At'),
            'updated_by' => Yii::t('app', 'Updated By'),
            'updated_at' => Yii::t('app', 'Updated At'),
        ];
    }
    
    /**
     * @return \yii\db\ActiveQuery
     */
    public function getMenu()
    {
        return $this->hasOne(Menu::className(), ['menu_id' => 'menu_id']);
    }
    
    public static function nestedmenu(int $id, string $role, $status=1, $i=0){
        
        /*model*/
        $model = self::find()->where(['role_code'=>$role,'parent_id'=>$id, 'menu_set' => self::getParam()['set']])->orderBy('sort ASC')->all();
        
        /*increment level*/
        $i++;
        if(!empty($model)){
            foreach ($model as $menu) {
                if (!$menu->menu->menu_status) {
                    continue;
                }
                
                /*base param */
                $bparam = self::$baseparam . '&id=' . $menu->id . '&role=' . $menu->role_code;

                /* disabled */
                $class = "list-disabled";
                $icons = "exclamation-triangle";
                $child = 0;
                if($status===1 && $menu->status) {
                   $class=null;
                   $icons = "check-square-o";
                    $child = 1;
                }
                
                echo '<div class="listmenu '.$class.'" style="margin-left:'.($i * 5).'em">
                        <span>'.$menu->menu->menu_name.'</span>
                        <div class="input-group pull-right">
                            <a class="btn btn-default" title="'. Yii::t('app','To top') .'" href="level?pos=<&sort=DESC'. $bparam .'"><i class="fa fa-arrow-up"></i></a>
                            <a class="btn btn-default" title="'. Yii::t('app','To bottom') .'" href="level?pos=>&sort=ASC'. $bparam .'"><i class="fa fa-arrow-down"></i></a>
                            <a class="btn btn-default" title="'.Yii::t('app','Add Submenu').'" href="assign-menu?parent_id='.$menu->id . $bparam .'"><i class="fa fa-plus"></i></a>
                            <a class="btn btn-default" title="'.Yii::t('app','Disabled').'" href="disabled?id='.$menu->id . $bparam .'"><i class="fa fa-'. $icons .'"></i></a>
                            <a class="btn btn-default" title="'.Yii::t('app','Delete').'" href="roledelete?id='.$menu->id . $bparam .'" data-method="post"><i class="fa fa-trash"></i></a>
                        </div>
                        <div class="clearfix"></div>
                    </div>';
                
                self::nestedmenu($menu->id, $role, $child, $i);
            }
        }
        return;
    }
    
    public function beforeSave($insert)
    {
        if ($insert) {
            $this->created_at = date('Y-m-d');
            $this->created_by = Yii::$app->user->identity->id;
        } else {
            $this->updated_at = date('Y-m-d');
            $this->updated_by = Yii::$app->user->identity->id;
        }
        return parent::beforeSave($insert);
    }
    
    public static function getParam(){
        /* get */
        $get = Yii::$app->request->get();
        $get = filter_var_array($get, FILTER_SANITIZE_STRING);
        
        /*default value for params*/
        $default = [
            'site_id' => 0,
            'page_id' => 0,
            'set'   => 'DEFAULT',
            'parent_id' => 0,
            'role' => 0
        ];
        
        foreach ($default as $dk => $dv) {
            if(!empty($get[$dk])) {
                $param[$dk] = $get[$dk];
            } else {
                $param[$dk] = $dv;
            }
        }
        return $param;
    }
    
    
    
    public static function setBaseParam($array){
        foreach($array as $key => $val){
            if ($val) {
                $arr[] = $key . '=' . $val;
            }
        }
        self::$baseparam = '&' .implode('&', $arr);
    }
}