| Current Path : /var/www/html/drsa/backend/modules/menu/models/frontend/ |
| 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);
}
}